Előszó
A chroot futtatja a parancsot vagy az interaktív shell-t a paraméterben megadott speciális gyökérkönyvtár értékkel. Haszna az, hogy miután "chroot"-oltunk egy speciálisan felkészített mappába, onnantól kezdve az aktuális héjon belül, a gyökérkönyvtárnak a rendszer az adott mappát, és nem a valódit tekinti. Ezzel egy kisebb rendszert hozhatunk létre a nagyobbik rendszeren belül. Gyakran jelen van Linux telepítőkészletekben, és ún. LiveCD-k használatakor.
Forrás: https://web.archive.org/web/20191020235722/http://wiki.hup.hu/index.php/Chroot
Arról van szó tehát, hogy Live (CD-ről indított, a memóriában futó) rendszerről 'chroot'-olsz a telepített rendszer gyökér partíciójára. A művelet előnyét a fenti leírásból is sejtheted, de pontosítom a fogalmat;
a telepített rendszer indításakor használt héjba lépsz (futtatod 'kívülről'),
chroot = change root (vonatkozik --> parancs illetőleg shell; folyamat és annak gyerekfolyamatai)
ezáltal a telepített rendszert úgy tudod használni, mintha azt indítottad volna el. Mount-olod a telepített rendszered gyökér, azaz rendszer könyvtárát, a futásához feltétlen szükséges fizikai eszközöket és interaktív fájlrendszereket (utóbbiak általában speciális célú ál-fájlrendszerek [pseudo-filesystems]), a hálózatot, stb.. A chroot használata egyszerű, előnyös és mindössze egy LiveCD kell hozzá. LiveCD-ről használva rendszer javításhoz, frissítéshez vagy hasonló tevékenységekhez használhatod.
Fontos tudni, hogy az architektúráknak általában egyeznie kell, tehát a 32 bit-es rendszert 32 bit-es, a 64 bit-es rendszert 64 bit-es LiveCD-ről javíts, ellenkező esetben előfordulhat, hogy a kísérleted egy hibaüzenettel meghiúsul.
Vannak más előnyei, lehet másra is használni, a 'chroot' használata nem merül ki a LiveCD-ről való futtatással, ez csak egy kisebb részlete.
A telepítő képfájlokról (ISO) az kell tudni, hogy nem mindegyik LiveCD, de a legtöbb mégis az. Létezik olyan telepítő képfájl amely kizárólag telepítőként használható, ám LiveCD-ként nem működik. Az ismertebb linux kiadások (disztribúciók) mindegyikének van azonban elérhető LiveCD képfájlja, keresd és töltsd le tehát azt. A nevében sokszor megtalálod a 'live' szót.
Azt mondják, hogy a disztribúciókat se keverd. Én viszont javítottam már Crunchbang Linux LiveCD-velLinux Mintet, Ubuntu-t.
Ez a leírás Debian-alapú rendszekre készült. Más, például RPM csomagokat használó rendszerek esetén a 'chroot' módszere, nem sokban, de kicsit más lehet.
Chroot
Live rendszert indítva a linux-szod gyökér partíciójába 'chroot'-olsz. Ehhez tudnod kell, melyik partíció ez: '/'
A linux
-- a lemezeket (HDD, SSD) sda, sdb, sdc, sdd ésatöbbi 'ABC' felsorolással jelzi, melynél az 'sda' az első lemezt jelenti
-- a partíciókat az sdx után látható számozással jelzi, így például az sda1 az első partíció (itt az 'x' most az 'a') ... az első lemezen
Nem bonyolult. Ha egyetlen lemezt használsz, akkor csak az 'sda'-val fogsz találkozni.
A telepített rendszered gyökere a boot zászlóval ellátott ('boot flag').
Mutatom, hogy néz ki, hogyan ismered fel
(az én rendszerem az 'sda'-n található, kukucs)
-- ha kiadod a
sudo fdisk -l
parancsot akkor így.
sudo fdisk -l [sudo] password for cave: Disk /dev/sda: 81 GB, 81956689920 bytes 255 heads, 63 sectors/track, 9964 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot Start End Blocks Id System /dev/sda1 1 274 2200873 82 Linux swap /dev/sda3 2890 9965 56829937 5 Extended /dev/sda5 * 2890 5807 23430802 83 Linux # a csillag jelzi /dev/sda6 5807 9965 33399135 83 Linux
-- ha kiadod a
sudo parted -l
parancsot, akkor így.
sudo parted -l [sudo] password for cave: Model: ATA Maxtor 6Y080L0 (scsi) Disk /dev/sda: 82,0GB Sector size (logical/physical): 512B/512B Partition Table: msdos Number Start End Size Type File system Flags 1 32,3kB 2254MB 2254MB primary linux-swap(v1) 3 23,8GB 82,0GB 58,2GB extended 5 23,8GB 47,8GB 24,0GB logical ext4 boot # a 'boot' jelzi 6 47,8GB 82,0GB 34,2GB logical ext4
No látod is, hogy nálam az 'sda5' partíción található a rendszerem gyökere.
Ránézhetsz esetleg a
sudo blkid
vagy a
mount | column -t
parancsok információra is.
-- ha meglett a root partíció (!példámban: /dev/sda5), azt behelyettesíted az alábbi parancsba (mount),
(az EXT2/3/4 fájlrendszerekre jó módszer)
sudo mount /dev/sdxY /mnt
ahol -az előbb megbeszéltük- az 'x' a lemez -Hard/Solid State Disk- sorszáma (első vagy második), és az 'Y' a partíció száma.
De azt kell tudnod, hogy az újabb LiveCD-k már olyan 'intelligensek', hogy már eleve csatolják a telepített rendszer partícóit, és naná, hogy a 'media' könyvtár alá. Ezt ellenőrizd, és akkor a 'mount'-ot, a csatolást már megcsinálta a LiveCD helyetted, így nem szükséges az előbbi parancs.
Ha készítettél 'home' partíciót, azt és a 'swap' partíciót sem kell csatolnod.
Viszont
-- ha létezik, azaz készítettél '/boot' partíciót (nem szokás) és a rendszerbetöltőd az MBR
akkor add ki a következő parancsot - a logika ugyanaz ('z|Y')
sudo mount /dev/sdzY /mnt/boot
-- ha a rendszerbetöltőd az (U)EFI - a logika ugyanaz ('w|Y')
sudo mount /dev/sdwY /mnt/boot/efi
-- ha használod a LUKS-ot, akkor így csatolj - a logika ugyanaz ('x|Y')
sudo cryptsetup luksOpen /dev/sdxY sdxY_crypt
-- ha EXT fájrendszer helyett BRTFS-t használsz, akkor így - a logika ugyanaz ('x|Y')
sudo mount -o subvol=@ /dev/sdxY /mnt
Majd a következő parancsokat add ki - a sorrend fontos
-- ez a legfontosabb rész
sudo mount -t devtmpfs /dev /mnt/dev sudo mount -t devpts /dev/pts /mnt/dev/pts sudo mount -t sysfs /sys /mnt/sys sudo mount -t proc /proc /mnt/proc sudo mount -t tmpfs /run /mnt/run for i in /dev /dev/pts /proc /sys /run; do sudo mount -B $i /mnt$i; done sudo cp /proc/mounts /mnt/etc/mtab sudo mount -o bind /etc/resolv.conf /mnt/etc/resolv.conf sudo chroot /mnt /bin/bash
és az utolsó paranccsal 'benn vagy' a telepített linux-ban (Mint-ben), mintha azt indítottad volna.
A 'sudo' használatát ezután elhagyhatod, mert rendszergazda környezetben vagy.
Végrehajthatsz frissítést, telepítést, GRUB telepítést, újratelepítést, javítást ('sudo' nélkül). Ezekről is szó lesz egy következő blogban
Kilépés a 'chroot' környezetből
-- a Ctrl + D billentyűk megközelítőleg egy időben történő megnyomásával vagy
-- az 'exit' paranccsal
-- ezután még le kell választanod a korábban csatolt eszközöket és ál-fájlrendszereket
sudo umount tmpfs /run /mnt/run sudo umount proc /proc /mnt/proc sudo umount sysfs /sys /mnt/sys sudo umount devpts /dev/pts /mnt/dev/pts sudo umount devtmpfs /dev /mnt/dev
# Lecsatolás, ha /boot partíciót csatoltál
(!az egyik módszert mutatom csak)
sudo umount /mnt/boot
-- lecsatolod az utolsó eszközt
sudo umount /mnt
-- újraindítod a rendszert
(kilépsz az általad indított LiveCD-rendszeréből)
sudo reboot