Guida Fixiamo Linux con chroot

22 Febbraio 2022
475
42
353
350
Ultima modifica:
chroot, fixiamo Linux
Facciamo caso che dopo aver modificato un file di configurazione la macchina non parte più, subito potremmo montare il disco da una live e modificare il file;
per la maggior parte dei casi va bene, ma mettiamo caso che rompiamo il conf di grub, li non basta modificarlo, devi far partire update-grub per rendere effetive le modifiche, il punto è che se modifichiamo il file conf e lanciamo quest'ultimo comando, aggiornerà il nostro grub anzichè quello sul disco montato, per ovviare a questo problema, possiamo chrootarci nel disco.

Preparazione ambiente
Per seguire questa guida basta una distro Linux installata con grub e un'altra distro live con la quale ripareremo la prima, potete usare una macchina virtuale oppure direttamente il pc, senza passare da VM e tutto il resto.
Apriamo il file di grub col nostro editor preferito e commentiamo tutte le voci:
Bash:
sudo cp /etc/default/grub /etc/default/grub.bak # Backup
vim /etc/default/grub
grub_000.png

Fatto questo eseguiamo:
Bash:
update-grub
Per rendere effettive le modifiche, spegniamo il pc e riavviamo all'interno della live.

Montaggio del disco e dei filesystem virtuali
Una volta nella live apriamo il terminale e da root facciamo
Bash:
fdisk -l
Appuntiamoci la nostra partizione, la root(/) e montiamolo in /mnt, facciamo la stesa cosa per /sys, /dev, /proc:
Bash:
mount -o exec /dev/nvme0n1p4 /mnt
mount --rbind /dev /mnt/dev
mount --rbind /sys /mnt/sys
mount --rbind /proc /mnt/proc
Con la flag "-o exec" ci assicuriamo che il disco abbia i diritti di esecuzione.
Fatto ciò scriviamo "chroot /mnt /bin/bash" e siamo dentro al sistema come root:
mount.png

Da qui apriamo il conf di grub e decommentiamo le parti che avevamo commentato, facciamo "update-grub" e riavviamo la macchina.
 
Si potrebbe anche avviare linux in maintenance mode cambiando il runlevel, o al boot, dal menù di GRUB modifichi una riga nel kernel e fai partire all'avvio del sistema una shell in bash con utente root.