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:
- Criar disco virtual;
- Criar partições;
- Instalar o Debian;
- Configurar o sistema com o chroot;
- Configurar o boot; e
- 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.
$ 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.
$ 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.
$ 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.
$ 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.
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.
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.
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.
3. Instalar o Debian
Nessa etapa, vamos instalar o Debian na partição 3 (loop0p3) criada no espaço vazio.
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.
$ 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.
$ 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.
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.
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
.
$ 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.
$ 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.
$ sudo chroot debian/
Em seguida vamos adicionar a linha do repositório bullseye-updates.
deb http://deb.debian.org/debian bullseye-updates main
# 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.
# apt install locales
Em seguida, execute o comando dpkg-reconfigure.
# 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.
Agora vamos selecionar o locale pt_BR.UTF-8 e de OK.
Caso na instalação do pacote keyboard-configuration não solicitar a escolha do layout do teclado, reconfigure o mesmo com o comando abaixo.
# 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.
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!
# adduser debian
Caso queria adicionar o usuário que criamos ao sudo para ter privilégio de root, execute o comando.
# 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.
# 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.
# chmod -x /etc/grub.d/30_os-prober
Em seguida atualizar o Grub.
# update-grub
Voltar com a permissão de execução do arquivo 30_os-prober.
# 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.
# 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.
$ 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.
$ sudo umount ./debian
$ sudo losetup -d /dev/loop0
Verificando o arquivo identificando para criar o dispositivo externo bootável.
$ 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
.
$ sudo dd if=disco-debian of=/dev/sde bs=16M oflag=sync status=progress
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).
$ ssh [email protected]
Em seguida set o teclado para abnt2.
$ 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.
$ 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.
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!