mywiki/linux/chroot.md

2.0 KiB

chroot

Un chroot è un'operazione che cambia la directory radice per il processo in esecuzione e i suoi figli. Questo ambiente modificato è chiamato chroot jail.

Il cambio di root viene comunemente effettuato per eseguire la manutenzione su sistemi in cui l'avvio e/o l'accesso non sono più possibili. Esempi comuni sono:

  • Reinstallazione del boot loader;
  • Ricostruzione dell'immagine initramfs;
  • Ripristino di una password dimenticata.

Procedura

  • avviare una live;
  • montare la partizione danneggiata, nella quale risiede il sistema, nella cartella /mnt;
  • se le cartelle /boot o /var si trovassero in una partizione separata è necessario montarle dentro la cartella /mnt, ad esempio:
sudo mount /dev/sda3 /mnt/var
sudo mount /dev/sda1 /mnt/boot
  • montare i restanti device:
sudo mount --bind /dev /mnt/dev # sudo mount --rbind /dev /mnt/dev
sudo mount --bind /proc /mnt/proc
sudo mount --bind /sys /mnt/sys
  • Il parametro --bind fa sì che i contenuti di /dev siano accessibili anche in /mnt/dev
  • L'approccio con --rbind è più flessibile perché monta ricorsivamente tutto il contenuto della directory specificata, mentre --bind monta solo la directory stessa;
  • Se si utilizza un sistema UEFI, è necessario accedere anche alle variabili EFI:
sudo mount --rbind /sys/firmware/efi/efivars sys/firmware/efi/efivars/
  • Lanciare il comando chroot specificando la cartella di destinazione e la shell da usare
sudo chroot /mnt /bin/bash
  • Nel caso si volesse riparare la configurazione del bootloader:
sudo grub-install
sudo update-grub2

Collegamenti