Como criar o Debian bootável e persistente em dispositivo externo

Como criar o Debian bootável e persistente em dispositivo externo

O Debian é um sistema estável, customizável, seguro, livre e completo. Com isso, vamos ver nesse post como criar o Debian bootável e persistente em dispositivo externo.

Como muitos já sabem, o GNU/Linux Debian é um sistema universal, livre e completo. O sistema além de ser seguro e estável, ele tem um vasto suporte a hardware, grandes números de pacotes e softwares, servindo assim de base para muitas outras distribuições.

O Sistema Debian além de fornecer atualizações suaves, ele tem suporte de toda uma comunidade, o Debian é uma comunidade, qualquer pessoa pode fazer parte da comunidade. E como todo os membros do projeto Debian possuem direitos iguais, o Debian não pode ser controlado por uma única empresa.

Para saber mais, clique no botão abaixo e vá para a página do projeto que mostra as razões para escolher o Debian.

Como criar o Debian bootável e persistente em dispositivo externo

No desenvolvimento desse post estamos usando o GNU/Linux Debian 11 (bullseye) e vamos forma a instalação com o debootstrap, usando o chroot para acessar outro ambiente, que nesse caso, podemos chamar de container. Em seguida vamos copiar a imagem do Debian criada para o dispositivo externo.

Uma grande vantagem com isso é que todo o sistema poderá ser atualizado, mantendo o sistema sempre com a persistência das modificações feitas no mesmo, sendo instalando ou removendo pacotes.

Desse modo, poderá ser criado um sistema customizável e padronizado para poder ser instalado em várias esferas, seja elas instituições corporativas ou públicas.

Portanto, veja como criar o Debian bootável e persistente em dispositivo externo.

Para isso, vamos executar 6 etapas, que são:

  1. Criar disco virtual;
  2. Criar partições;
  3. Instalar o Debian;
  4. Configurar o sistema com o chroot;
  5. Configurar o boot; e
  6. Copiar a imagem para o dispositivo externo.

Agora é hora de começar a ‘brincadeira’, vamos lá!

1. Criar disco virtual

Para começar, vamos instalar o grml-debootstrap que cria um wrapper (empacotador) em torno do debootstrap para instalar o Debian puro.

Terminal
$ sudo apt install grml-debootstrap

Agora, vamos criar um arquivo local com o tamanho necessário para o disco virtual, usando o fallocate que é um utilitário que pré-aloca ou desaloca espaço em um arquivo.

Terminal
$ sudo fallocate -l 5G disco-debian

Seguindo, devemos criar com losetup (loopback) o disco virtual no arquivo disco-debian que foi criado anteriormente. O parâmetro -P (–partscan) força o kernel a escanear a tabela de partições em um dispositivo de loop criado. Se o arquivo já estiver particionado ele já conseguirá criar as devidas partições como sda1/sda2/sda3 etc.

Terminal
$ sudo losetup /dev/loop0 -P disco-debian

2. Criar partições

Para conseguirmos dar o boot via UEFI e/ou BIOS, devemos criar partições para o arranque de boot do Grub. Nesse caso, vamos usar o cfdisk que é um programa para exibir ou manipular uma tabela de partição de disco.

Terminal
$ sudo cfdisk /dev/loop0

Agora criaremos uma tabela de partição GPT (GUID Partition Table) para ser válido tanto para boot BIOS como boot UEFI. Selecione a opção gpt e pressione a tecla Enter.

cfdisk

Em seguida, vemos na tela do cfdisk que foi criado um disco com o tamanho de 5GB com todo espaço livre sem nenhuma partição.

cfdisk

Agora vamos criar partições para o boot. A primeira partição será para o boot do Grub BIOS e a segunda será para o boot do Grub EFI.

No cfdisk escolha New para criar uma nova partição no disco. Nesse caso para o Grub BIOS vamos criar o tamanho de 1MiB. Em seguida vamos criar a segunda partição, essa para o Grub EFI com o tamanho de 50MiB. No restante do espaço livre, criaremos a partição para ser instalado o sistema GNU/Linux Debian. Após a criação, salve a mesma escolhendo a opção Write e escrevendo yes.

cfdisk

Agora vamos escolher o tipo de boot para cada partição criada. No cfdisk, selecionado a partição 1 (loop0p1), escolha o Tipo de boot na lista, nesse caso BIOS boot. A mesma coisa será feita para a partição 2 (loop0p2), escolha o Tipo de boot, nesse caso escolha EFI System. Salve escolhendo a opção Write e escrevendo yes.

cfdisk

3. Instalar o Debian

Nessa etapa, vamos instalar o Debian na partição 3 (loop0p3) criada no espaço vazio.

cfdisk

Antes de prosseguir com a instalação do Debian, é sabido ter já configurado os pacotes a serem instalados, configure-os no arquivo localizado em /etc/debootstrap/packages.

Segue abaixo a lista dos pacotes. Insira/remova pacotes de acordo com suas necessidades.

acpi-support-base
bridge-utils
bzip2
console-common
console-data
cryptsetup
file
ifenslave
initramfs-tools
isc-dhcp-client
less
locales
lsb-release
lsof
lvm2
mdadm
most
os-prober
pciutils
postfix
resolvconf
rsync
screen
ssh
strace
usbutils
vim
vlan
w3m
zsh
zsh-autosuggestions
bash
bash-completion
sudo
task-xfce-desktop
xfce4-goodies
lightdm

Em seguida proceda com a instalação.

Terminal
$ sudo grml-debootstrap --release bullseye --efi /dev/loop0p2 --target /dev/loop0p3 --grub /dev/loop0 --hostname daughter --password son

Fique à vontade para alterar os valores dos parâmetros:

--release (Lançamento do novo sistema Debian estável)

--hostname (Nome do host do sistema Debian)

--password (Use a senha especificada como senha para o usuário root)

Como no hardware utilizado não temos suporte a EFI o comando acima retornará o seguinte erro:

* EFI option used but no EFI support detected.

Nesse caso devemos retirar o parâmetro –efi /dev/loop0p2 para EFI, caso seu hardware tenha suporte, não haverá esse problema.

Terminal
$ sudo grml-debootstrap --release bullseye --target /dev/loop0p3 --grub /dev/loop0 --hostname daughter --password son

Na lista da checagem, para confirmar a execução verá que não será instalado o EFI.

Install efi:     no

Se você tiver certeza que não haverá a necessidade de criar um sistema com suporte EFI, poderá pular as etapas anteriores em relação a segunda partição destinado ao boot do Grub EFI.

grml-debootstrap
grml-debootstrap
grml-debootstrap
grml-debootstrap

No final do processo caso haja falhas, analise cada falha de acordo com o seu cenário, podendo essas não atrapalhar o processo. Os pacotes listado no nosso arquivo packages (volte no início dessa etapa), o cenário de falha não ocorrer.

grml-debootstrap

4. Configurar o sistema com o chroot

Nessa etapa, vamos preparar o ambiente para o uso. Sendo assim, vamos montar a partição loop0p3 no diretório ./debian essa que fica em nossa raiz onde estamos executando o processo. Fique à vontade pra montar a partições no diretório de sua escolha, geralmente se monta em /mnt.

Terminal
$ sudo mount /dev/loop0p3 ./debian

Agora vamos fazer a ligação dos diretórios do sistema host /proc, /dev e /sys para dentro do sistema que criamos em loopback.

Terminal
$ sudo mount --bind /proc ./debian/proc
$ sudo mount --bind /dev ./debian/dev
$ sudo mount --bind /sys ./debian/sys

Continuando, vamos acessar o sistema com o chroot. Dentro do sistema que acabamos de acessar veja o hostname daughter que atribuímos ao instalar o Debian.

Terminal
$ sudo chroot debian/
chroot

Em seguida vamos adicionar a linha do repositório bullseye-updates.

deb http://deb.debian.org/debian bullseye-updates main

Terminal
# nano /etc/apt/sources.list

Copie e cole a linha acima no arquivo sources.list, ficando como abaixo.

deb http://deb.debian.org/debian bullseye main
deb http://security.debian.org/debian-security bullseye-security main
deb http://deb.debian.org/debian bullseye-updates main

Vamos configurar agora o idioma do sistema com o locales. Para isso deverá ter o pacote locales instalado. Caso não tenha, o instale.

Terminal
# apt install locales

Em seguida, execute o comando dpkg-reconfigure.

Terminal
# dpkg-reconfigure locales

Marque (com a tecla de espaço) o idioma pt_BR.UTF-8 e desmarque o en_US.UTF-8, em seguida de OK.

configurando locales

Agora vamos selecionar o locale pt_BR.UTF-8 e de OK.

Configurando locales

Caso na instalação do pacote keyboard-configuration não solicitar a escolha do layout do teclado, reconfigure o mesmo com o comando abaixo.

Terminal
# dpkg-reconfigure keyboard-configuration

Escolha a opção Português (Brasil) Português (Brasil,nativo). Nessa seção, modifique de acordo com o layout de teclado de sua preferência.

Configurando o teclado

Como estamos criando um sistema live, vamos criar um usuário padrão para ter acesso ao sistema. Logo, criaremos o usuário debian com a senha live. Fique à vontade pra mudar de acordo com sua necessidade!

Terminal
# adduser debian
adduser

Caso queria adicionar o usuário que criamos ao sudo para ter privilégio de root, execute o comando.

Terminal
# adduser debian sudo

5. Configurar o boot

Nessa etapa, vamos configurar o Grub para que o sistema de o boot no sistema BIOS. Execute o comando a seguir.

Terminal
# grub-install --target=i386-pc --recheck /dev/loop0

Para deixar o Grub do sistema que criamos com apenas a entrada dele sem as entradas dos sistemas que tenha na máquina onde esteja executando esse procedimento, vamos tirar provisoriamente a permissão de execução do arquivo /etc/grub.d/30_os-prober que é o script do grub onde ele procurar por outros sistemas para adicionar na entrada.

Terminal
# chmod -x /etc/grub.d/30_os-prober

Em seguida atualizar o Grub.

Terminal
# update-grub

Voltar com a permissão de execução do arquivo 30_os-prober.

Terminal
# chmod +x /etc/grub.d/30_os-prober

Agora, como parte final da criação do sistema, vamos instalar alguns pacotes. Fiquem à vontade para instalar os pacotes de acordo com suas necessidades. Caso o tamanho da imagem seja pequena, deixe pra instalar esses pacotes quanto tiver com o sistema no dispositivo externo.

Terminal
# apt install network-manager lightdm-gtk-greeter-settings firefox-esr firefox-esr-l10n-pt-br gparted libreoffice libreoffice-l10n-pt-br cmatrix s-tui ethstatus tree htop mc cmus fbcat xpdf dvtm lm-sensors memtest86+

Com isso, teremos um sistema operacional GNU/Linux Debian completo para o uso no dia a dia. Depois do boot no dispositivo externo é só refinar com mais pacotes, por que agora o sistema é persistente, rs!

6. Copiar a imagem para um dispositivo externo

Antes de copiarmos a imagem para um dispositivo externo, vamos desmontar as partições e ligações com o sistema em chroot e desfazer a ligação do arquivo como disco loopback.

Saímos do sistema em chroot (container) com as teclas Ctrl+D ou digitando exit.

Agora vamos desmontar as partições montadas de ligação do host para o sistema de container.

Terminal
$ sudo umount ./debian/proc
$ sudo umount ./debian/dev
$ sudo umount ./debian/sys

Em seguida, desmontar a partição e desfazer ligação do arquivo como disco loopback.

Terminal
$ sudo umount ./debian
$ sudo losetup -d /dev/loop0

Verificando o arquivo identificando para criar o dispositivo externo bootável.

Terminal
$ file disco-debian

Saída do comando.

disco-debian: DOS/MBR boot sector, extended partition table (last)

Finalmente, vamos criar um dispositivo externo bootável com o comando dd.

Terminal
$ sudo dd if=disco-debian of=/dev/sde bs=16M oflag=sync status=progress
dd

Após a cópia do arquivo, dê o boot pelo dispositivo externo para ser inicializado. Caso o sistema de o boot no dispositivo externo esteja com o mapa do teclado diferente, tente o seguinte.

Acessar via ssh o sistema que está sendo executado no dispositivo externo, que o mapa do teclado não é afetado (senha user debian, no nosso caso live).

Terminal
$ ssh debian@192.168.122.128

Em seguida set o teclado para abnt2.

Terminal
$ sudo setxkbmap -model pc105 -layout br -variant abnt2

Depois dessa alteração, reinicie a sessão ou de reboot no sistema do dispositivo externo.

Caso tenha algum problema com o comando acima ou caso não funcione, tente alterar o arquivo de configuração do teclado /etc/default/keyboard para o mostrado a seguir.

Terminal
$ sudo nano /etc/default/keyboard
XKBMODEL="abnt2"
XKBLAYOUT="br"
XKBVARIANT=""
XKBOPTIONS="lv3:alt_switch,compose:rctrl"

ou

XKBMODEL="pc105"
XKBLAYOUT="br"
XKBVARIANT=""
XKBOPTIONS=""

Novamente reinicie a sessão ou de reboot no sistema do dispositivo externo.

De uma forma mais emblemática, se conseguir acesso ao servidor X do sistema do dispositivo externo mesmo com o mapa do teclado diferente, altere nas configurações o mapa do teclado para usar padrões do sistema.

Debian Live Persistente

Para aproveitar o tamanho vazio do dispositivo externo, é necessário redimensionar o tamanho da partição raiz.

Esse procedimento pode ser feito de várias formas, indicamos usar o gerenciador gráfico GParted por um sistema live, assim você redimensiona o tamanho de acordo com sua necessidade, dá um nome (label) para a partição e ainda pode criar outra partição para backup no próprio dispositivo externo caso tenha espaço, assim podendo ajudar muito nas horas de sufoco.

Então é isso pessoal, vimos Como criar o Debian bootável e persistente em dispositivo externo.

Até a próxima!

Acesse a versão completa
Sair da versão mobile