Chroot

De la ArchWikiRo
Salt la: navigare, căutare

Chroot este procesul de schimbare a directorului root aparent (și al procesului care funcționează în acel moment împreună cu toți descendenții acestuia) către un al director root. Atunci când treceți într-un alt director root nu puteți accesa fișiere și comenzi în afara acelui director. Acest director se numește un chroot jail. Schimbarea de root este efectuată de obicei pentru întreținerea sistemului, cum ar fi reinstalarea bootloader-ului sau resetarea unei parole uitate.

Cuprins

Cerințe

  • Va trebui să bootați un alt mediu Linux funcțional (ex: de pe un LiveCD sau un suport flash USB, sau dintr-o altă distribuție de Linux instalată).
  • Sunt necesare privilegii de root pentru a efectua un chroot.
  • Asigurați-vă că arhitectura mediului Linux în care ați bootat se potrivește cu arhitectura directorului root în care doriți să intrați (cu alte cuvinte, i686, x86_64). Puteți afla arhitectura mediului dumneavoastră actual folosind:
# uname -m
  • Dacă aveți nevoie de module pentru kernel în mediul chroot, încărcați-le înainte de a efectua chroot-ul. Ar putea fi, de asemenea, util să inițializați swap-ul (swapon /dev/sdxY) și să stabiliți o conexiune de internet înainte de a efectua chroot-ul.

Montați partițiile

Partiția root a sistemului Linux pentru care doriți să intrați printr-un chroot trebuie să fie montată. Pentru a afla ce nume a fost dat dispozitivului respectiv de către kernel, executați:

# lsblk /dev/sda

Apoi creați un folder unde doriți să montați această partiție și montați-o:

# mkdir /mnt/arch
# mount /dev/sda3 /mnt/arch

Mai departe, dacă aveți partiții separate pentru alte părți ale sistemului dumneavoastră (ex: /boot, /home, /var, etc) ar trebui, de asemenea, montate:

# mount /dev/sda1 /mnt/arch/boot/
# mount /dev/sdb5 /mnt/arch/home/
# mount ...

Deși se pot monta sistemele de fișiere și după ce ați efectuat un chroot, este mai convenabil să procedați așa dinainte. Motivul pentru aceasta este pentru că va trebui să demontați sistemele de fișiere temporare după ce ieșiți din chroot, iar în felul acesta veți putea demonta toate sistemele de fișiere printr-o singură comandă. Din moment ce mediul Linux extern este conștient de toate partițiile montate, le poate demonta în siguranță la oprire.

Chroot

Montați sistemele de fișiere temporare:

Notă: Folosind o lansare Arch mai nouă (2012), următoarele comenzi mount pot fi înlocuite cu arch-chroot /mnt/arch, dacă partiția root a fost montat în această locație. Desigur, le puteți tasta în continuare, dacă doriți, sau dacă nu aveți decât altă distribuție „live” de Linux.
# cd /mnt/arch
# mount -t proc proc proc/
# mount -t sysfs sys sys/
# mount -o bind /dev dev/
# mount -t devpts pts dev/pts/

Dacă ați stabilit o conexiune de internet și doriți să o folosiți în mediul chroot, este posibil să trebuiască să copiați serverele DNS pentru a vă putea conecta la rețea:

# cp -L /etc/resolv.conf etc/resolv.conf

Acum intrați în sistemul instalat printr-un chroot și definiți consola:

# chroot . /bin/bash
Notă: Dacă vedeți eroarea chroot: cannot run command '/bin/bash': Exec format error, este probabil din cauză că arhitecturile nu se potrivesc.

Opțional, pentru a folosi configurația dumneavoastră Bash (~/.bashrc și /etc/bash.bashrc), executați:

# source ~/.bashrc
# source /etc/profile

Opțional, creați un prompter unic pentru a putea diferenția mai bine mediul chroot:

# export PS1="(chroot) $PS1"

Executați programe grafice din chroot

Dacă X merge pe sistemul dumneavoastră, puteți folosi programe grafice din mediul chroot.

Pentru a permite conectarea la serverul dumneavoastră X, trebuie să executați următoarea comandă dintr-un terminal:

# xhost +

Apoi, pentru a direcționa programele către serverul dumneavoastră X, executați:

# export DISPLAY=:0.0

Efectuați operațiuni de administrare a sistemului

În momentul acesta puteți efectua în mediul chroot orice operațiune de administrare aveți nevoie. Câteva exemple uzuale sunt:

Ieșiți din mediul chroot

După ce ați terminat cu întreținerea sistemului, ieșiți din chroot:

# exit

Apoi demontați sistemele de fișiere temporare și orice dispozitiv montat:

# umount {proc,sys,dev,boot,[...],}

La final, încercați să demontați partiția root:

# cd ..
# umount arch/
Notă: Dacă primiți o eroare care se referă la /mnt (sau orice altă partiție) că este ocupată (busy), aceasta poate să însemne una din două lucruri:
  • Un program din chroot merge în continuare.
  • Sau, mai frecvent, există în continuare o sub-montare (ex: /mnt/arch/boot în /mnt/arch). Verificați cu lsblk pentru a vedea dacă mai există vreun mountpoint:
lsblk /dev/sda
Dacă tot nu puteți demonta o partiție, folosiți opțiunea --force:
# umount -f /mnt

După aceea, veți putea da restart în siguranță.

Unelte personale