[TUTORIAL] Instalando o Debian em uma jaula chroot e dando boot por ela

Esse tutorial pode ser útil caso esteja buscando uma maneira de instalar o Debian sem necessitar reparticionar o disco ao lado da distro atual ou criar um sistema descartável para testes.

Instale o pacote debootstrap

sudo apt install debootstrap

Instale o sistema base na pasta jaula-bookworm com o comando abaixo

sudo debootstrap bookworm jaula-bookworm http://deb.debian.org/debian

Dependendo da distro que você estiver utilizando e necessário instalar os pacotes debian-archive-keyring e debian-keyring
Você também pode utilizar outras versões do Debian, basta substituir o bookworm com o codinome correspondente, lembrando que versões sem suporte é necessário alterar o repositório para https://archive.debian.org/debian/
Se for alterar o local ou o nome da pasta jaula-bookworm, não se esqueça de fazer isso nos comandos correspondentes.
Talvez o tutorial também sirva para o Ubuntu, com as única mudança sendo o codinome da versão, o repositório, pasta e o pacote do kernel, além dos pacotes ubuntu-keyring e ubuntu-archive-keyring instalados no sistema utilizado como base

Entre na jaula com o comando chroot

sudo chroot jaula-bookworm

Agora dentro do sistema enjaulado montamos essas partições

mount proc /proc -t proc
mount devpts /dev/pts -t devpts

Opcional: adicionar os repositórios bookworm-updates/bookworm-security + non-free, contrib e non-free-firmware

nano /etc/apt/sources.list
deb http://deb.debian.org/debian bookworm main non-free contrib non-free-firmware
deb http://security.debian.org/debian-security bookworm-security main contrib non-free non-free-firmware
deb http://deb.debian.org/debian/ bookworm-updates main contrib non-free non-free-firmware

Atualize os repositórios

apt update
apt upgrade

Instale o pacote do kernel

apt install linux-image-amd64

Na minha máquina preciso dos pacotes firmware-amd-graphics e firmware-realtek

apt install firmware-amd-graphics firmware-realtek

Crie uma senha para o usuário root

passwd

Opcional: crie um usuário comum

adduser test #Substitua test pelo nome do seu usuário

Opcional: instale o sudo

apt install sudo
adduser test sudo #substitua test pelo nome do seu usuário

Caso o wget não esteja instale-o

apt install wget

E baixe esse arquivo .patch

Source

Adaptado de GitHub - lemonsqueeze/boot-chroot: Boot debian/ubuntu based distributions installed in a chroot.

wget -P ~/ https://gist.githubusercontent.com/flydiscohuebr/cb8a74cb09f168fd67a1ad6bc09d498c/raw/fee0a0e90196407d6d90c908779348d825b21a18/initrd_buster.patch

Instale o pacote patch

apt install patch

Entre no diretório /usr/share/initramfs-tools/

cd /usr/share/initramfs-tools/

E rode esse comando

patch -p1 <~/initrd_buster.patch

Em seguida atualize o initramfs

update-initramfs -u -k all

Saia do sistema enjaulado apertando ctrl+d

Adicione esse conteúdo no arquivo /etc/grub.d/40_custom
OBS.: dependendo da distro esse caminho pode ser diferente

menuentry "Debian (FROM A FOLDER)" {
  set chroot="/jaula-bookworm"
  search --no-floppy --fs-uuid --set=root af1b4e81-4323-4664-aa09-25bca222130e
  linux $chroot/vmlinuz root=UUID=af1b4e81-4323-4664-aa09-25bca222130e chroot=$chroot rw
  initrd $chroot/initrd.img
}

Substitua o af1b4e81-4323-4664-aa09-25bca222130e pelo UUID do hd onde foi instalado a jaula. Para ver, basta rodar o comando sudo blkid

Atualize a configuração do grub

sudo update-grub

Reinicie o pc e tente dar boot na opção Debian (FROM A FOLDER) se tudo der certo você será contemplado com a tela de login.

Para ter conexão com a internet cabeada precisei criar um arquivo em /etc/network/interfaces.d substitua enp3s0 pelo nome da sua interface de rede, você pode ver isso utilizando o comando ip a ou ls /sys/class/net/

nano /etc/network/interfaces.d/enp3s0.conf

Com o conteúdo

auto enp3s0
allow-hotplug enp3s0
iface enp3s0 inet dhcp

E reiniciar logo em seguida.

3 curtidas

Eu tenho uma duvida sobre oque seria um chroot que eu ja pesquisei mas não entendi e qual seria a utilidade dele?

Deixa eu ver se entendi, esse procedimento instala o Debian dentro de uma pasta da sua distro principal, e dá boot no Debian dentro dessa pasta?

1 curtida

O chroot e um método de enjaulamento num sistema raiz usando um livecd por exemplo ou até outro sistema, vc pode manipular o sistema sem precisar de inicializar ele no enjaulamento

Deixa ver se entendi eu estaria instalando um sistema operacional sem instalar em meu hd mas sim dentro de outro SO tipo um container? certo?

No contexto do posto sim, mas em outro situação não
O Arch Linux e um bom exemplo pra ver como o chroot funciona, vc instala uma base e usa o chroot pra configurar sem ter que sair do livecd