This is Gentoo's testing wiki. It is a non-operational environment and its textual content is outdated.

Please visit our production wiki at https://wiki.gentoo.org

Chroot

From Gentoo Wiki (test)
Jump to:navigation Jump to:search
This page is a translated version of the page Chroot and the translation is 81% complete.
Outdated translations are marked like this.
Resources

Chroot (Change root) é um utilitário do sistema Unix usado para alterar o diretório aparente do root para criar um novo ambiente logicamente separado do diretório root do sistema principal. Este novo ambiente é conhecido como "jaula chroot". Um usuário operando de dentro da jaula não pode ver ou acessar arquivos fora do ambiente que tenha sido bloqueado.

Um dos principais usos para chrooting é criar um sistema Linux em cima de um atual para fins de teste ou compatibilidade de software. Chroot é frequentemente visto como uma alternativa leve para a virtualização, porque é capaz de funcionar sem a sobrecarga de um hypervisor.

Pré-requisitos

Configurando o ambiente

Ao criar uma nova configuração de chroot, a primeira coisa necessária é um diretório para o chroot residir. Por exemplo, um chroot pode ser criado em /mnt/mychroot:

user $mkdir /mnt/mychroot
user $cd /mnt/mychroot

Para montar uma instalação existente de uma partição o seguinte comando pode ser executado. Certifique-se de substituir <DEVICE> no exemplo abaixo com o drive e partição da instalação existente:

user $mkdir /mnt/mychroot
user $mount /dev/<DEVICE> /mnt/mychroot

Se uma instalação já tenha sido criada anteriormente em um sub-diretório do sistema de arquivo atual do root, os passos acima podem ser ignorados.

Desempacotando sistema de arquivos e a árvore do Portage (novas instalações)

Ao criar uma nova instalação, o próximo passo é baixar os tarballs do stage3 e do Portage e configurá-los no chroot. Para maiores informações nestes processos, por favor, veja Baixando o arquivo tar do stage e Desempacotando o arquivo tar de stage

root #tar xvjpf stage3-*.tar.bz2 -C /mnt/mychroot
root #tar xvjf portage-*.tar.bz2 -C /mnt/mychroot/usr

Configuração

Antes de entrar no chroot um número de diretórios precisam ser montados:

root #mount --rbind /dev /mnt/mychroot/dev
root #mount --make-rslave /mnt/mychroot/dev
root #mount -t proc /proc /mnt/mychroot/proc
root #mount --rbind /sys /mnt/mychroot/sys
root #mount --make-rslave /mnt/mychroot/sys
root #mount --rbind /tmp /mnt/mychroot/tmp

Alguns arquivos básicos de configuração terão ser copiados a partir do host, não copie mais do make.conf ao usar uma instalação existente:

user $cp /etc/portage/make.conf /mnt/mychroot/etc/portage # Quando usar uma instalação existente, ignore este comando.
user $cp /etc/resolv.conf /mnt/mychroot/etc

copypasta option (optional)

It's possible to invoke this command to save time if you're able to copy+paste.

Warning
Do not forgett to change /mnt/mychrooto AND /dev/sda4 for your variables if neccesary!!
root # mkdir /mnt/mychroot && cd /mnt/mychroot && mount /dev/sda4 /mnt/mychroot && mount --rbind /dev /mnt/mychroot/dev && mount --make-rslave /mnt/mychroot/dev && mount -t proc /proc /mnt/mychroot/proc && mount --rbind /sys /mnt/mychroot/sys && mount --make-rslave /mnt/mychroot/sys && mount --rbind /tmp /mnt/mychroot/tmp && chroot /mnt/mychroot /bin/bash

In Chroot environment do not forgett on:

root #source /etc/profile
root #env-update
root #export PS1="(chroot) $PS1"

Uso

Uma vez feito, entre no ambiente de chroot executando os seguintes comandos:

root #chroot /mnt/mychroot /bin/bash
root #env-update
root #source /etc/profile
root #export PS1="(chroot) $PS1"

Ao criar uma nova instalação o Portage deve ser sincronizado para garantir que tudo está atualizado.

root #emerge --sync

O sistema agora está pronto; fique à vontade para instalar softwares, mexer com as configurações, pacotes experimentais de teste e configurações sem ter qualquer efeito sobre o sistema principal. Para sair do chroot simplesmente digite exit ou pressione Ctrl+d. Fazendo isto, irá retornar o console de volta ao ambiente normal. Não se esqueça de executar umount nos diretórios que foram montados.

Scripts de inicialização

Se a definição de chroots é uma tarefa que é necessária ser realizada frequentemente, é possível acelerar a montagem dos diretórios usando um script de inicialização. O script precisa ser adicionado ao runlevel default e portanto configurado automaticamente na inicialização do sistema:

FILE /etc/init.d/mychroot
#!/sbin/openrc-run
 
depend() {
   need localmount
   need bootmisc
}
 
start() {
     ebegin "Mounting chroot directories"
     mount -o rbind /dev /mnt/mychroot/dev > /dev/null &
     mount -t proc none /mnt/mychroot/proc > /dev/null &
     mount -o bind /sys /mnt/mychroot/sys > /dev/null &
     mount -o bind /tmp /mnt/mychroot/tmp > /dev/null &
     eend $? "An error occurred while mounting chroot directories"
}
 
stop() {
     ebegin "Unmounting chroot directories"
     umount -f /mnt/mychroot/dev > /dev/null &
     umount -f /mnt/mychroot/proc > /dev/null &
     umount -f /mnt/mychroot/sys > /dev/null &
     umount -f /mnt/mychroot/tmp > /dev/null &
     eend $? "An error occurred while unmounting chroot directories"
}

Ao usar um diretório ou partição diferente, adicione os comandos de montagem necessários na função start() e altere /mnt/chroot para o nome apropriado.

Veja também