Chroot
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.
/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
- Project:X86/Chroot Guide — provides instructions on how to create chroots to assist in testing Gentoo packages for stabilization.
- Chroot:a proxy-tjänster
- Chroot:ing och virtuella servrar