Você está na página 1de 35

Criação de uma Live Linux

baseada no Debian
Sobre o instrutor
Claudio A. Silva
Fundador: DuZeru Community
Analista de infraestrutura

Certificações:
● ITIL (Information Technology Infrastructure Library)
● Ethical hacking
● CTFL (Certified Tester Foundation Level)
● Green IT Citizen
● ISMP (Information Security Management Professional baseado na ISO / IEC 27001)
● CompTia Linux+
● LFX (Linux Foundation professional Institute Certified)
Requisitos
Construir imagens do sistema em modo live possui pouquíssimos
requisitos de sistema:

● Utilização do Debian (opcional)


● Acesso de superusuário (raiz)
● Uma versão atualizada do live-build
● Um shell compatível com POSIX, como bash
● Internet
● Paciência
Pilares da GPL
A liberdade de executar o programa como você desejar, para

0 qualquer propósito (liberdade 0).

A liberdade de estudar como o programa funciona, e adaptá-lo às

1 suas necessidades (liberdade 1). Para tanto, acesso ao código-fonte é


um pré-requisito.

A liberdade de redistribuir cópias de modo que você possa ajudar

2 outros (liberdade 2).

A liberdade de distribuir cópias de suas versões modificadas a outros.

3 Desta forma, você pode dar a toda comunidade a chance de


beneficiar de suas mudanças. Para tanto, acesso ao código-fonte é um
pré-requisito.
Planejar o sistema
01 Aplicativos padrão

02 Interface Gráfica padrão e designer

03 Firmwares / Drivers

04 Preocupar-se com licenças

Estabilidade, base e recursos de


05 hardware
Remasterização x Distribuição
● Público alvo para Atender a
● Atender a necessidade uma necessidade
● Finalidade educacional ● Fins comerciais ou
● Adicionar pacotes comunitários.
● Não requer ● Adicionar pacotes
ecossistema de desenvolvidos ou não
continuidade ● Repositório de pacotes
● Não requer repositórios desenvolvidos ou
modificados
● Requer ecossistema de
continuidade.
● Canal(is) de suporte
Ecossistema
● Buscar atender as necessidades da interface ou Sistema por completo.

● Suporte.

● Equipes para uma finalidade.

● Atualização de pacotes.

● Desenvolvimento de pacotes.
Debian e derivados
Há vários sistemas live baseados no Debian disponíveis e eles estão fazendo um ótimo
trabalho. Do ponto de vista do Debian, a maioria deles tem diversos aspectos totalmente
diferentes do Debian e por isso não podem ser considerados Debian:

● Eles não são projetos Debian e, portanto, não possuem suporte dentro do Debian.
● Eles misturam diferentes distribuições, por exemplo, testes e instáveis .
● Eles modificam o comportamento e / ou a aparência de pacotes, desmontando-os
para economizar espaço.
● Eles incluem pacotes de fora do repositório Debian.
● Eles enviam kernels customizados com patches adicionais que não fazem parte do
Debian.
● Eles não estão disponíveis em diferentes tipos, por exemplo, CDs, DVDs, imagens
USB-stick e netboots.
O que é Live Build
live-build é um conjunto de scripts para criar imagens do sistema live.
A ideia por trás do live-build é um conjunto de ferramentas que usa um diretório de
configuração para automatizar e personalizar completamente aspectos da construção de
uma imagem live.

O trabalho real de live-build é implementado nos comandos de baixo nível, Eles não são
usados pelos usuários finais.
Os comandos mencionados no texto devem ser executados com privilégios de
superusuário que podem ser obtidos ao se tornar o usuário root via su ou usando o sudo
. Para distinguir entre comandos que podem ser executados por um usuário não
privilegiado e aqueles que requerem privilégios de superusuário, os comandos são
prefixados por $ ou # respectivamente. Este símbolo não faz parte do comando.
Tipos de imagem
Trabalharemos com o processo de construção e instruções para um dos três tipos de
imagem, a iso-hybrid, o tipo de imagem mais versátil.

Apenas por curiosidade saiba simplificadamente os três tipos de imagem:

iso-hybrid - Pode ser usado em uma máquina virtual, mídia óptica ou dispositivo de
armazenamento portátil USB.

hdd - Uma imagem HDD é similar a uma imagem híbrida ISO em todos os aspectos, mas é
adequada para inicializar a partir de pendrives USB, discos rígidos USB e vários outros
dispositivos de armazenamento portáteis. Normalmente, uma imagem iso-hybrid pode
ser utilizada para esta finalidade, mas se você tiver um BIOS que não manipule
corretamente as imagens híbridas, precisará de uma imagem de HDD.

netboot - como o próprio nome diz, uma imagem de boot pela rede.
Live System
Imagem do kernel do Linux: geralmente chamada vmlinuz

Imagem de disco RAM inicial (initrd): um disco RAM configurado para a inicialização do Linux,
contendo módulos possivelmente necessários para montar a imagem do sistema e alguns
scripts para fazer isso, não o faremos manualmente, apesar de ser possível.

Imagem do sistema (System Image): A imagem do sistema de arquivos do sistema


operacional. Normalmente, um sistema de arquivos compactado SquashFS é usado para
minimizar o tamanho da imagem do Live System. Note que é somente leitura. Assim, durante a
inicialização, o sistema live utilizará um disco RAM e um mecanismo 'union' para permitir a
gravação de arquivos no sistema em execução. No entanto, todas as modificações serão
perdidas no encerramento.

Bootloader: Um pequeno pedaço de código criado para inicializar a partir do meio escolhido,
possivelmente apresentando um prompt ou menu para permitir a seleção de
opções/configurações. Ele carrega o kernel do Linux e seu initrd para rodar com um sistema de
arquivos do sistema associado. Diferentes soluções podem ser usadas, mas padronizando aqui
vamos utilizar o GRUB (GRand Unifield Bootloader) criado pela GNU.
Estrutura Live resumida
(Raiz do sistema)
|-------+boot
| |-------+grub
| | |-------menu.lst
| |-------vmlinuz
| |-------initrd.gz
|
|-------+live
| |-------filesystem.squashfs

A estrutura será guardada em uma imagem ISO 9660.


Publicado pela Organização Internacional de Normalização (ISO), o sistema de arquivos é
considerado um padrão técnico internacional. Este formato de suporte de dados de
norma industrial foi concebido originalmente para especificar o volume e as estruturas de
ficheiros de discos ópticos de memória somente leitura de CD e DVD.
Instalação do Debian
Acessar o link e efetuar do download:
https://www.debian.org/CD/netinst/

Instalar o ssh para troca de arquivos e backup


Instalação do live-build
sudo apt-get install live-build live-manual live-config schroot
Comandos do Live Build
o live-build fornece as ferramentas para gerar um diretório de configuração esqueleto.

lb config : Responsável por inicializar um diretório de configuração do sistema Live. Veja o


comando lb config para mais informações.

lb build : Responsável por iniciar uma construção do sistema Live. Veja O comando lb
build para mais informações.

lb clean : Responsável pela remoção de partes de uma compilação do sistema Live.


Consulte O comando lb clean para mais informações.
Conjuntos de scripts
live-boot : Uma coleção de scripts usados para inicializar sistemas ativos.

Live Systems Project : O projeto que mantém, entre outros, os pacotes live-boot ,
live-build , live-config , live-tools e live-manual .

live-build : Uma coleção de scripts usados para construir sistemas live personalizados

live-config : Uma coleção de scripts usados para configurar um sistema ativo durante
o processo de inicialização.

live-tools : Uma coleção de scripts adicionais usados para executar tarefas úteis
dentro de um sistema ativo em execução.

live-manual : Este documento é mantido em um pacote chamado live-manual .


Diretórios lb build
Quando você ececuta o comando lb config, é criado um conjunto de diretórios:

binary/isolinux: diretório de configuração do gerenciador de inicialização syslinux . Você


entenderá a organização dos diferentes arquivos chamados pelo syslinux no momento da
inicialização.

binary/live: Diretório live que contém o squashfs e a imagem de inicialização initrd.img ,


assim como o vmlinuz chamado pelo bootloader.

cache: como o nome sugere, é o cache live-build, com os pacotes necessários para
compilar, assim como o bootstrap básico.

chroot: o famoso subsistema no qual todo o seu live CD é construído. O Chroot se torna o
squashfs compactado em /binary/live.

config: Super diretórios no qual toda a customização será executada.


Diretórios lb build
Quando você ececuta o comando lb config, é criado um conjunto de diretórios:

binary/isolinux: diretório de configuração do gerenciador de inicialização syslinux . Você


entenderá a organização dos diferentes arquivos chamados pelo syslinux no momento da
inicialização.

binary/live: Diretório live que contém o squashfs e a imagem de inicialização initrd.img ,


assim como o vmlinuz chamado pelo bootloader.

cache: como o nome sugere, é o cache live-build, com os pacotes necessários para
compilar, assim como o bootstrap básico.

chroot: o famoso subsistema no qual todo o seu live CD é construído. O Chroot se torna o
squashfs compactado em /binary/live.

config: Super diretórios no qual toda a customização será executada.


Comandos Live-build 1
--debian-installer live | true|cdrom|netinst|netboot|businesscard|false
define qual tipo, se houver, do debian-installer deve ser incluído na imagem binária resultante. Por padrão,
nenhum instalador está incluído.
--debian-installer-gui true|false
define se a interface gráfica GTK do debian-installer deve ser verdadeira ou não.
--debian-installer-distribution buster
defines qual versão do debian-installer

--memtest memtest86+|memtest86|none

--parent-mirror-chroot http://packages.duzeru.orgg
define o local do espelho do pacote debian que será usado para buscar os pacotes da derivada para construir o
sistema ativo.
--parent-mirror-binary http://packages.duzeru.org
define o local do espelho do pacote derivativo que deve ser configurado na imagem final e que é aquele que um
usuário visualizaria e utilizaria.
--parent-mirror-chroot-backports | security
--parent-mirror-binary-backports | security
Comandos Live-build 2
--archive-areas “main contrib non-free"
Áreas do repositório em modo live
--parent-archive-areas “main contrib non-free"
Áreas do repositório após instalado no usuário final
--security true|false
define se os repositórios de segurança especificados nas opções de espelhamento de segurança devem ser
usados ou não.

--updates true|false
define se os arquivos do pacote debian updates devem ser incluídos na imagem ou não.

--backports true|false
define se os arquivos do pacote backports deviam ser incluídos na imagem ou não.

lb config --bootappend-live "boot=live components hostname=duzeru username=dz locales=pt_BR.UTF-8"

--parent-distribution
define a distribuição pai resultante do seu sistema live.
Tipos de Pacotes
Todos os pacotes incluídos na distribuição oficial do Debian são livres. A distribuição oficial é a que está
contida na seção main do repositório, pacotes de terceiros são oferecidos em seções separadas que não
podem ser incluídas na distribuição main por causa de licenças restritivas ou problemas legais. Eles
incluem:

Contrib: Pacotes nessa área são livremente licenciados pelo detentor


1 do copyright mas dependem de outros pacotes que não são livres.

Non-Free: Pacotes nessa área têm algumas condições na licença que


2 restringem o uso ou redistribuição do software.
Note que os mesmos pacotes podem aparecer em muitas distribuições,
mas com números de versão diferentes.
Lista de repositórios
Está no caminho /etc/apt/sources.list

um exemplo de linha de repositório:


deb http://ftp.br.debian.org/debian stretch main contrib non-free
deb-src http://ftp.br.debian.org/debian stretch main

deb = pacotes Debian


deb-src= Fontes de pacotes
http://ftp.br.debian.org/debian = URL do repositório
main = Pacotes Oficiais do Debian
contrib = livremente licenciados pelo detentor
non-free = têm algumas condições na licença que restringem o uso ou redistribuição do software.
Repositórios Adicionais
Você pode adicionar mais repositórios, ampliando suas opções de pacotes além do que
está disponível em sua distribuição de destino. Estes podem ser, por exemplo, para
backports, pacotes experimentais ou personalizados.

config/archives/your-repository.list.chroot
Permite que você instale pacotes do repositório de captura instantânea debian-live no
momento da compilação do sistema live

config/archives/your-repository.list.binary
o repositório será adicionado ao diretório /etc/apt/sources.list.d/ do seu sistema

Você também deve colocar a chave GPG utilizada para assinar o repositório em:
config/archives/your-repository.key.{binary,chroot}
Comandos Live-build 3
--apt apt|aptitude \

--architectures ARCHITECTURE \

--binary-images iso|iso-hybrid|netboot|tar|hdd

--image-name remaster
O Nome da imagem remaster.ISO
--iso-publisher NAME
Quem publica a ISO

--interactive shell
define se após o estágio chroot terá um login do shell interativo para permitir que você faça customizações
manuais. Depois de fechar a sessão com o exit, a compilação continuará como de costume. Note que é
fortemente desencorajado pois destrói a beleza de poder automatizar completamente o processo de construção
e torná-lo não interativo. Por padrão vem false.
Comandos Live-build 4
lb config --apt-indices false
Isso não influenciará as entradas em /etc/apt/sources.list, apenas em /var/lib/apt que contém os arquivos de
índices.
A desvantagem é que o APT precisa desses índices para operar no sistema quer seja live ou não, então antes de
executar o apt-cache search ou o apt-get install, o usuário deve atualizar o apt para primeiro criar esses
índices com apt-get update.

--apt-options --yes
para permitir a instalação não interativa de pacotes.
Escolhendo pacotes para instalar
Existem várias maneiras de escolher quais pacotes serão instalados em sua imagem,
cobrindo uma variedade de diferentes necessidades.

Listas de pacotes
Uma maneira poderosa de expressar quais pacotes devem ser instalados. A sintaxe da
lista suporta seções condicionais que facilitam a construção de listas e adaptá-las para
uso em várias configurações.

A lista deve ser adicionada em config/package-lists/

CUIDADO COM O NOME ERRADO DO PACOTE, isto causa problemas compilando a


imagem, utilize o comando: apt-cache search para buscar o nome do pacote. As listas de
pacotes que existem neste diretório precisam ter um sufixo .list.chroot
Escolhendo pacotes para instalar
Para instalar um pacote personalizado, basta copiá-lo xfce4
para o diretório: xfce4-indicator-plugin
xfce4-power-manager
config/packages.chroot/ xfce4-battery-plugin
xfce4-datetime-plugin
Pacotes que estão dentro deste diretório serão xfce4-mount-plugin
automaticamente instalados no sistema live durante a xfce4-netload-plugin
compilação - você não precisa especificá-los em outro xfce4-wavelan-plugin
lugar. xfce4-screenshooter
xfce4-sensors-plugin
Por exemplo, para instalar uma interface gráfica, deve #xfce-theme-manager
ser adicionado o nome dos pacotes da interface em xfpanel-switch
uma lista: xfwm4-composite-editor
config/packages.chroot/interface.list.chroot xfce4-smartbookmark-plugin
xfce4-timer-plugin
Personalizando o conteúdo
config/includes.chroot

Este diretório corresponde ao diretório raiz / do sistema ativo. Um uso típico é preencher
o esqueleto do diretório ( /etc/skel ) usado pelo sistema Live para criar o diretório inicial
do usuário. Outra é fornecer arquivos de configuração que podem ser simplesmente
adicionados ou substituídos na imagem sem processamento.

Como exemplo, vamos personalizar o Xfce e adicionar os arquivos de personalização para


novos usuários.
Hooks para execução de scripts
Criar um diretório na raiz do sistema em modo em modo live ou o sistema pós instalado:
------------------------------------------------------------------------------------------------------
vim config/hooks/live/createdir.hook.chroot

#!/bin/bash
mkdir /teste-live && touch /teste-live/arquivo.txt
echo “testes para script live” >> /teste-live/arquivo.txt

echo “Olá este é um teste pos install” >> /opt/teste.txt

Para alguns exemplos, você pode acessar: /usr/share/doc/live-build/examples/hooks


Personalizando o conteúdo no DVD da ISO

vim config/includes.binary/leiame.txt

Obrigado por participar deste treinamento.


Personalizando Bootloaders
Para usar um tema completo, copie os arquivo de:

/usr/share/live/build/bootloaders/*

para

config/includes.binary

Logo em seguida edite os arquivos de acordo com a necessidade.


alterar tema instalador gráfico Debian
Exemplos de bootloaders
/usr/share/live/build/bootloaders/*

Exemplo de alteração, banner em PNG deve conter 800x75 pixels).


config/includes.installer/usr/share/graphics/logo_debian.png
Personalizando o instalador Debian
config/includes.installer/preseed.cfg

fornece uma maneira de definir respostas às perguntas feitas durante o processo de


instalação, sem ter que inserir manualmente as respostas enquanto a instalação está
sendo executada. Isso possibilita automatizar totalmente a maioria dos tipos de instalação
e até oferece alguns recursos que não estão disponíveis durante as instalações normais.
Este arquivo permitirá que você sobrescreva os passos do Instalador Debian e, assim,
acelere o processo.
Personalizando o instalador Debian
algumas opções a serem utilizadas no preseed.cfg

Alterar a imagem do instalador:


config/includes.installer/usr/share/graphics

Alterar imagem do GRUB em MBR


config/includes.binary/isolinux/splash.png
Referências
Automatizar a instalação utilizando presseding

https://www.debian.org/releases/stable/amd64/apb.html
https://wiki.debian.org/SystemBuildTools
https://manpages.debian.org/testing/live-build/lb_config.1.en.html
https://live-team.pages.debian.net/live-manual/

Você também pode gostar