Tabela de conteúdos
Configurando um chroot do Slackware
Existem vários motivos pelos quais você pode querer configurar um chroot do Slackware:
- construir pacotes de 32 bits em um sistema multilib de 64 bits
- construir pacotes -stable em um sistema -current
- construir (e testar) pacotes para SBo em um sistema limpo
Para este guia, vamos criar um chroot em /chroot_folder a partir de slackware-14.1-install-dvd.iso.
Obtendo uma instalação do Slackware de sua arquitetura desejada
Comece com um DVD de instalação do Slackware. Baixe-o em http://www.slackware.com/getslack/ via torrent.
Instalado os pacotes
Automático
Você pode criar seu chroot e instalar o Slackware nele usando o seguinte script elegante: http://tty1.uk/scripts/slackware/mkchroot
Manual
Primeiro, crie uma pasta que conterá o chroot:
mkdir /chroot_folder
Monte a ISO de instalação:
mount -o loop slackware-14.1-install-dvd.iso /mnt/cdrom cd /mnt/cdrom
Após a montagem do ISO, os pacotes (encontrados na pasta slackware ou slackware64) podem ser instalados na pasta chroot com:
installpkg --root /chroot-folder */*.t?z
Em seguida, desmonte o ISO:
umount /mnt/cdrom
Configurando os arquivos necessários
fstab
O seguinte snippet mínimo pode ser usado para /chroot_folder/etc/fstab
# <file system> <mount point> <type> <options> <dump> <pass> tmpfs /dev/shm tmpfs defaults 0 0 devpts /dev/pts devpts noexec,nosuid,gid=tty,mode=0620 0 0 sysfs /sys sysfs defaults 0 0 proc /proc proc defaults 0 0
Entrar com Chroot
Montagem automática
Para ter o chroot montado permanentemente, adicione o seguinte em seu sistema host /etc/fstab:
/dev chroot_folder/dev none bind,auto 0 0 /proc chroot_folder/proc none bind,auto 0 0 /sys chroot_folder/sys none bind,auto 0 0 /etc/resolv.conf chroot_folder/etc/resolv.conf none bind,auto 0 0
E reinicie. Em seguida, execute o seguinte comando para montar a pasta chroot:
mount /chroot_folder
Montagem manual
Referência: (volume_mounting).
Entrando no Chroot
Agora que o chroot está configurado, pode-se fazer o chroot nele:
chroot /chroot_folder /bin/bash
Nota
Foi escrito um pequeno script para automatizar as etapas do chroot.
https://raw.githubusercontent.com/aadityabagga/scripts/master/chroot.sh
Atualizando pacotes
Depois disso, você pode executar o slackpkg e atualizar os pacotes: (configure_a_package_manager).
Saindo do chroot
Quando terminar, saia do chroot pressionando Ctrl+d.
Criando pacotes de 32 bits
Montagem de partições
Eu uso um chroot para construir pacotes de 32 bits em um sistema de 64 bits. Eu precisava montar a partição que continha os SlackBuilds para os quais eu queria fazer um pacote, como meu ponto de montagem do host do Slackware está (neste exemplo) em /slackware_host_mount_point, utilizei o comando:
mount -B /slackware_host_mount_point /chroot_folder
(http://www.thegeekstuff.com/2013/01/mount-umount-examples/)
Então eu construí o pacote executando o Slackbuild da seguinte maneira:
ARCH=i686 ./my_package.SlackBuild
Uma maneira alternativa de construir outros pacotes ARCH
Em vez de usar `ARCH=i686' antes de executar um slackbuild, podemos usar um programa chamado `setarch', que, entre outras coisas, pode definir o ARCH e o kernel versão no shell. Possui alguns links simbólicos úteis, como linux32 ou i586, o que economiza alguma digitação. O comando `linux32 'irá definir o kernel relatado ARCH como `i686'.f
SINOPSE
setarch arch [options] [program [argument...]]
Quando executamos o `linux32', ele inicia um novo shell, portanto, também podemos usá-lo para fazer o chroot:
chroot /path/to/chroot linux32 /bin/zsh
ou pode ser executado após fazer o chroot em nossa nova raiz. As configurações serão revertidas para normal quando saímos do novo shell. Uma opção útil é mudar o kernel versão relatada:
chroot /path/to/chroot linux32 --uname-2.6 /bin/zsh
Que `–uname-2.6' não é um erro de digitação, deve haver um traço entre a flag e a versão. A página do manual setarch (8) mostra todas as opções.
– Dave