Aqui estão alguns recursos:
- Wiki do ArchLinux em "Change Root"
- ArchLinux Wiki em "Reinstalando o GRUB"
- Wiki do Gentoo em "Chroot de uma vida"
"Alterar raiz" ou "chrooting" é um método para ampliar parte do seu sistema de arquivos, para que, por exemplo, /path
se refira ao que anteriormente estava acessível em /mnt/path
. A "raiz" na expressão "chroot" refere-se ao sistema de arquivos raiz /
, não ao usuário root. (Normalmente, você precisará de privilégios de usuário root para fazer chroot.)
Preparação
-
Todas as etapas deste guia precisarão ser executadas como usuário root.
-
Supomos que seu disco rígido esteja em / dev / sda1 e seu tipo de arquivo seja ext3. Se você não souber o local e o tipo de arquivo do seu disco, leia o saída de
fdisk -l
. -
Certifique-se de que as arquiteturas do sistema em que você inicializou (por exemplo, 32bit LiveCD) eo sistema que você deseja inserir (por exemplo, é um instalação no seu disco rígido). Você pode determinar o arquitetura que você inicializou usando
uname -m
. -
Certifique-se de que os módulos do kernel necessários foram carregados.
-
Configure sua rede se você precisar dela (por exemplo, para instalar pacotes atualizados).
-
Inicialize sua partição de troca, se necessário (por exemplo,
swapon /dev/sda3
).
Executando o chroot
cd /
mount -t ext3 /dev/sda1 /mnt
mount -t proc proc /mnt/proc
mount -t sysfs sys /mnt/sys
mount -o bind /dev /mnt/dev
Se o seu diretório /boot
estiver em uma partição diferente do seu /
e você quiser manipular os arquivos nele (por exemplo, se você estiver trabalhando com o GRUB, executando uma atualização do kernel, etc.), Também precisará montar essa partição. Se estiver em / dev / sda2 e seu tipo de arquivo for ext2, faça:
mount -t ext2 /dev/sda2 /mnt/boot
Da mesma forma, para qualquer outra parte do sistema de arquivos ( /var
, /usr
) que resida em partições separadas, mas que você precisa acessar. Geralmente quando você está fazendo chrooting para consertar algo, você não precisa acessar / home, então você não precisa se preocupar com isso.
(Também é possível montar sistemas de arquivos depois de ter chrootado, mas é mais inteligente fazê-lo de antemão. O motivo é que quando você o faz depois, o ambiente externo / kernel não saberá sobre os sistemas de arquivos montados, portanto você se esquece de desmontá-los antes de sair do chroot, o sistema também não saberá desmontá-los quando eles forem desligados. Isso pode danificar esses sistemas de arquivos.)
Se você configurou sua rede e deseja usá-la no sistema chrooted, copie /etc/resolv.conf
para poder resolver nomes de domínio:
cp -L /etc/resolv.conf /mnt/etc/resolv.conf
Agora você está pronto para migrar para o sistema de arquivos montado:
chroot /mnt /bin/bash
(Se isso retornar um erro chroot: cannot run command '/bin/bash': Exec format error
, isso geralmente indica que você inicializou com uma arquitetura (por exemplo, x86_32) e está tentando fazer chroot em outro (por exemplo, x86_64). A solução é usar um LiveCD que tenha a mesma arquitetura como o sistema que você quer chroot.)
Neste ponto, você ainda está executando o kernel com o qual iniciou, mas todos os caminhos /path
se referem ao que costumava ser /mnt/path
.
Se você estiver fazendo algo com o GRUB, será necessário ter certeza de que o arquivo /etc/mtab
está atualizado:
grep -v rootfs /proc/mounts > /etc/mtab
Também pode ser útil fazer isso agora:
source /etc/profile
export PS1="(chroot) $PS1" # add a reminder to your prompt
Faça o seu trabalho sujo
Neste momento, você pode realizar qualquer solução de problemas que você precise fazer:
- resintall o GRUB no MBR do seu disco
- redefinir uma senha esquecida
- executar uma atualização do kernel (ou downgrade)
- reconstrua seu initramdisk
- corrija seu / etc / fstab
- reinstale pacotes usando seu gerenciador de pacotes
- qualquer que seja
Limpar
Quando terminar, verifique se todos os programas em execução foram interrompidos. Então saia do chroot:
exit
Agora desmonte todas as partições que você montou:
umount /mnt/boot # if you mounted this or any other separate partitions
umount /mnt/{proc,sys,dev}
Finalmente, tente desmontar seu disco rígido:
umount /mnt
Se você receber um erro dizendo que / mnt (ou qualquer outra partição) está ocupado, isso pode significar uma de duas coisas:
-
Um programa foi deixado rodando dentro do chroot.
-
Ou com mais frequência: ainda existe um ponto de montagem nessa montagem. Por exemplo, / mnt / usr ainda está montado ao tentar desmontar / mnt.
No último caso, simplesmente desmonte o ponto de montagem ofensivo primeiro. Para obter um lembrete de todos os pontos de montagem atuais, execute mount
sem parâmetros.
Finalmente:
reboot