Chroot

From Gentoo Wiki
Jump to:navigation Jump to:search
This page is a translated version of the page Chroot and the translation is 100% complete.
Resources

Chroot (Change root) är ett Unix-systemverktyg som används för att ändra den uppfattade rotkatalogen, för att skapa en logisk åtskilld miljö från huvudsystemets rotkatalog. Den här nya miljön kallas även för "chroot fängelse". En användare som arbetar inuti fängelset kan inte se eller komma åt filer utanför miljön som denne blivit inlåst i.

En av de huvudsakliga användningsområden för chroot är att skapa ett separat Linux-system ovanpå ett befintligt system, med ändamålet att testa mjukvaran eller mjukvaru kompatibilitet. Chroot brukar ses som ett lättare alternativ till virtualisering eftersom det kan köras utan belastningen av en hypervisor.

Förberedelser

Uppsättning av miljön

När man skapar en ny chroot-uppsättning är det första man behöver en katalog i vilken den nya roten ska bo i.

user $mkdir /mnt/minchroot
user $cd /mnt/minchroot

För att montera en befintlig installation från en partition kan det här kommandot köras. Se till att byta ut <ENHET> strängen i exemplet nedanför med den enheten och partitionen som det befintliga systemet befinner sig i.

user $mkdir /mnt/minchroot
user $mount /dev/<ENHET> /mnt/minchroot

Om en installation tidigare skapats i en underkatalog av det aktuella rotfilsystemet kan stegen ovanför förbigås.

Packa upp systemfiler och Portage-trädet (nya installationer)

När man sätter upp en ny installation är nästa steg att ladda ner stage3- och Portage-arkiven, och därefter packa upp dem i det nya chroot-platsen. För mer information om denna process, vänligen se Ladda ner stage-arkivet och Packa upp stage-arkivet i Gentoo-manualen.

root #links http://distfiles.gentoo.org/releases/amd64/autobuilds/
root #tar xvjpf stage3-*.tar.bz2 -C /mnt/minchroot

Konfiguration

Innan man går in i chroot:en måste en del kataloger monteras först:

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

Några grundläggande konfigurationsfiler måste kopieras från värdmaskinen, kopiera inte över make.conf när du använder en befintlig installation.

user $cp /etc/portage/make.conf /mnt/minchroot/etc/portage # När man använder en befintlig installation, hoppa över detta kommando.
user $cp /etc/resolv.conf /mnt/minchroot/etc

Användning

När det är färdigt, gå in i chroot-miljön med hjälp av följande kommandon:

root #chroot /mnt/minchroot /bin/bash
root #env-update && . /etc/profile
root #export PS1="(chroot) $PS1"

När man skapar en ny installation borde man synkronisera Portage för att hålla allt uppdaterat.

(chroot) root #emerge-webrsync
(chroot) root #emerge --sync

Systemet är nu redo; känn dig fri att installera mjukvara, justera inställningar, testa experimentella paket och konfigurationer utan att det påverkar huvudsystemet. För att lämna chroot-miljön, skriv exit eller tryck på Ctrl+d. På det sättet återvänder du konsollen till den normala miljön. Glöm inte att avmontera (umount) katalogerna som tidigare monterats.

Init-skripter

Om sätta upp en chroot-miljö är en ofta förekommande uppgift är det möjligt att påskynda monteringsprocessen med hjälp av init-skripter. Skriptet borde läggas till på standard runlevel och därför sättas up automatiskt på systemstart.

FILE /etc/init.d/minchroot
#!/sbin/openrc-run
 
depend() {
   need localmount
   need bootmisc
}
 
start() {
     ebegin "Monterar chroot-kataloger"
     mount -o rbind /dev /mnt/minchroot/dev > /dev/null &
     mount -t proc none /mnt/minchroot/proc > /dev/null &
     mount -o bind /sys /mnt/minchroot/sys > /dev/null &
     mount -o bind /tmp /mnt/minchroot/tmp > /dev/null &
     eend $? "Ett fel uppstod vid montering av chroot-kataloger"
}
 
stop() {
     ebegin "Avmonterar chroot-kataloger"
     umount -f /mnt/minchroot/dev > /dev/null &
     umount -f /mnt/minchroot/proc > /dev/null &
     umount -f /mnt/minchroot/sys > /dev/null &
     umount -f /mnt/minchroot/tmp > /dev/null &
     eend $? "Ett fel uppstod vid avmontering av chroot-kataloger"
}

När man använder en annan katalog eller partition, lägg till de nödvändiga monteringskommandon i start()-funktionen och ändra /mnt/minchroot till passande namn.

Se även