Chroot - Live Rendszer (LiveCD/DVD/USB Stick)

kimarite képe

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

Forrás: https://wiki.ubuntuusers.de/chroot/Live-CD/