Gentoo rendszer telepítése bootolható USB pendrive adathordozóra
A Gentoo indítása USB pendrive-ról nagyon egyszerű művelet. A fő kihívás egy kezdeti ramdisk beállítása és az illesztőprogramok belefoglalása minden olyan számítógép számára, amelyet el fog indítani. Ez a cikk leírja azt hogy, miként telepíthető a Gentoo olyan USB-meghajtóra, amely aztán bármely számítógépről elindítható. Ez a telepítés olyan lesz, mint egy hagyományos asztali telepítés, és az adathordozón a változtatások is ugyanúgy tartósak lesznek.
Ez a cikk egy komplett, működőképes Gentoo rendszer USB-meghajtóra történő telepítéséről szól. Tekintse meg a LiveUSB cikket egy egyszerű rendszerindító meghajtó létrehozásához, amely például a Gentoo telepítéséhez használható.
Előkészület a műveletre
Az útmutató feltételezi, hogy a jelenlegi platform egy Gentoo Linux. A lépések többsége azonban bármilyen disztribúcióból elvégezhető, csak fordítsa le a Gentoo-specifikus cselekvési módot (például szoftver telepítési módszer) a másik Linuxos disztribúció gyakorlatára.
Kezdje néhány szükséges programcsomag telepítésével. A kernel és a sys-kernel/genkernel programcsomag a legfontosabbak:
root #
emerge --ask sys-kernel/gentoo-sources sys-kernel/genkernel
A kernel fordítása futtatható bináris kódra
Végezze el a szükséges változtatásokat a kernel forráskódján, és fordítsa azt le bináris futtatható kódra. Erről a lépésről a Linux kernel konfigurálása és a Kernel konfigurációjának az útmutatója című cikkekben olvashat bővebben. Fontos megjegyezni, hogy az általános kernel felhasználása itt jobb megoldást jelent, mert minél általánosabb a kernel, annál többfajta számítógép fog vele elindulni.
A konfiguráció során természetesen lehetőség van modulok fordítására is, mivel ezek az initramfs fájlrendszerre kerülnek rá, amelyek rendszerindításkor majd be fognak töltődni.
root #
mkdir /tmp/boot
root #
genkernel --firmware --bootdir=/tmp/boot --no-symlink --all-ramdisk-modules --install all
A fenti parancs futási ideje el fog tartani egy ideig, mivel fel fogja építeni forráskódból bináris futtatható kódra az alapértelmezett kernelt. Ezt követően létrehoz egy ramdisk fájlt is, majd az összes újonnan létrehozott futtatható fájlt átmásolja a /tmp/boot könyvtárba.
root #
ls /tmp/boot/
initramfs-genkernel-x86_64-3.5.2-gentoo kernel-genkernel-x86_64-3.5.2-gentoo System.map-genkernel-x86_64-3.5.2-gentoo
Az USB pendrive előkészítése
Az AMD64 Gentoo kézikönyv Handbook:AMD64/Installation/Disks#Partition_tables szakasza a különböző particionálási technológiákat tárgyalja.
MBR stílusú particionálás
Ez a szakasz a régi MBR particionálási stílust feltételezi.
Hozzon létre 2 partíciót az USB-adathordozón (feltételezve, hogy a telepítendő rendszernek lesz egy /boot és egy / (root) partíciója). Feltételezzük, hogy az USB-adathordozó a /dev/sdb mappában van (az USB-meghajtó csatlakoztatása után azonnal futtassa a dmesg programot, hogy megnézze, melyik eszköz van elkezdve használva).
root #
fdisk /dev/sdb
Command (m for help): d Selected partition 1 Command (m for help): n Partition type: p primary (0 primary, 0 extended, 4 free) e extended Select (default p): p Partition number (1-4, default 1): 1 First sector (2048-4001759, default 2048): Using default value 2048 Last sector, +sectors or +size{K,M,G} (2048-4001759, default 4001759): +100M Command (m for help): n Partition type: p primary (1 primary, 0 extended, 3 free) e extended Select (default p): p Partition number (1-4, default 2): Using default value 2 First sector (206848-4001759, default 206848): Using default value 206848 Last sector, +sectors or +size{K,M,G} (206848-4001759, default 4001759): Using default value 4001759 Command (m for help): a Partition number (1-4): 1 Command (m for help): p Disk /dev/sdb: 2048 MB, 2048901120 bytes 255 heads, 63 sectors/track, 249 cylinders, total 4001760 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x001663df Device Boot Start End Blocks Id System /dev/sdb1 * 2048 206847 102400 83 Linux /dev/sdb2 206848 4001759 1897456 83 Linux Command (m for help): w The partition table has been altered! Calling ioctl() to re-read partition table. Syncing disks.
Győződjön meg arról, hogy az első partíció indítható (bootolható). Az a
parancs átkapcsolja a rendszerindítási jelölőzászlót a partíción (ezáltal lesz a közönséges partíció bootolható partíciónak megjelölve. Ha ezt elfeledjük megcsinálni, akkor nem tud elindulni a rendszerünk. Fordítói megjegyzés).
Formázás
Most formázza az újonnan létrehozott partíciókat. A példában az ext4 fájlrendszert használjuk, de egy másik fájlrendszer is használható a / partícióhoz, ha azt a kernel támogatja. Figyelje meg, hogy a formázási művelet során címke rendelődik a partíciókhoz. Ez azért fontos, mert a gyökér (root) fájlrendszert a későbbiekben ez a most hozzárendelt címke alapján lehet majd észlelni, amikor olyan rendszereken lesz indítani az USB-meghajtó, ahol a meghajtóbetűjel-kiosztás teljesen más.
root #
mkfs.ext4 -L GENTOO_USB_BOOT /dev/sdb1
root #
mkfs.ext4 -L GENTOO_USB_ROOT /dev/sdb2
A Gentoo harmadik fokozatának (Stage 3) a telepítése
A kernel, a ramdisk és a fájlrendszerek létrehozása után végre kell hajtanunk egy minimális Gentoo feltelepítést. Ez magába foglal egy Gentoo telepítéskor szokásos friss stage3 (harmadik telepítőfokozat) fájlt, valamint az ilyenkor szokásos Portage csomagkezelő fájának a pillanatkép letöltését.
Ebben a példában a stage3-amd64-20120621.tar.bz2 és a portage-latest.tar.xz van használva. A következő részleírás pontosan ugyanaz, mint a normál Gentoo telepítés leírása a kézikönyvében.
root #
mount /dev/sdb2 /mnt/gentoo
root #
cd /mnt/gentoo
root #
tar -xpf ~/Download/stage3-amd64-20120621.tar.bz2
root #
cd usr
root #
tar -xpf ~/Download/portage-latest.tar.xz
root #
mount /dev/sdb1 /mnt/gentoo/boot
root #
cp /tmp/boot/* /mnt/gentoo/boot
Az alábbi szakaszok a Gentoo Linux telepítés azon vonatkozásait fedik le, amelyek kifejezetten az USB pendrive adathordozóra történő telepítésre vonatkoznak. Javasoljuk, hogy használja a Gentoo kézikönyv utasításait, miközben figyelemmel kíséri ezt a cikket.
Bootloader (rendszerbetöltő)
Az új rendszer indításához telepítsen egy bootloader-t az USB pendrive adattárolóra.
Az alábbi szakaszok példakonfigurációkat mutatnak be a GRUB vagy a lilo és a syslinux együttes használatához.
GRUB
Ez a módszer csak az UEFI rendszerindításra (UEFI boot -ra) vonatkozik!
Emerge GRUB (a chroot belsejéből):
(chroot) #
emerge sys-boot/grub
Telepítse a GRUB rendszerbetöltőt a megfelelő helyre a platform információival. Tegyük fel, hogy Ön éppen egy x86_64 architektúrájú gépet futtat, amelynek az EFI partíciója a /boot/efi könyvtárhoz van felcsatlakoztatva. Ebben az esetben a következő parancs telepíti a GRUB rendszerbetöltőt az USB pendrive adathordozóra (A fordító megjegezés: Egyszerűen mondva, a parancs kiadásával egyszerűn csak átmásolódik a GRUB az Ön működő Gentoo számítógépéről az USB adathordozóra.) :
Vegye figyelembe, hogy a
--removable
opció nagyon fontos. Azt jelzi, hogy a célhely egy cserélhető adathordozó-eszköz. Ne feledje el beírni, különben elronthatja saját működő rendszerét!Ha helyesen futtatta a fenti parancsot, és semmi baj nem történt, akkor futtassa a grub-mkconfig parancsot az USB adattárolóra másolt GRUB konfigurációs fájljának a létrehozásához:
(chroot) #
grub-mkconfig -o /boot/grub/grub.cfg
Ennek megfelelően módosítsa a célkönyvtárat, ha másik GRUB konfigurációs könyvtárat használ az USB adathordozón.
lilo
Emerge lilo (a chroot belsejéből):
(chroot) #
emerge sys-boot/lilo
Szerkessze az etc/lilo.conf fájlt úgy, hogy a megfelelő információk szerepeljenek benne.
Ezek a beállítások nagyon fontosak, és soronként tárgyaljuk őket.
/etc/lilo.conf
A lilo.conf konfigurációs fájl szerkesztéseboot=/dev/sdb # The location of the USB Stick (currently)
lba32 # use lba32 addressing (ignore)
compact # boot quickly by loading lots of blocks
# remove when there are problems with booting
prompt # Prompt for user input
timeout=20 # Time to wait before default selection
default="Gentoo-352" # Default selection after timeout
image=/boot/vmlinuz-5.10.76-gentoo-r1-x86_64
label="Gentoo-352"
read-only
root=/dev/ram0
append="root=LABEL=GENTOO_USB_ROOT scandelay=5"
initrd=/boot/initramfs-5.10.76-gentoo-r1-x86_64.img
A képfájl utáni sorok mind egyszerűek, de a hozzáfűző sor tartalmaz néhány érdekes lehetőséget.
root=LABEL=GENTOO_USB_ROOT
a lemez címkéjét fogja használni a /dev/sdb2 helyett, ami azért fontos, mert ezek az eszközszámok a számítógépben lévő merevlemezek számától vagy az USB-meghajtók számától függően változnak.- Az USB-s indításnál szintén fontos a
scandelay
opció, mivel az USB-eszközöket kis időre van szükség ahhoz, hogy a kernel észlelje őket, erre való ez a lehetőség. Ha sok modul van, a rendszerindítás hosszú időt vesz igénybe, így valószínűleg nem számít, de ha csak néhány modul van betöltve, akkor ez fontos, mert a rendszer elindulhatott, mielőtt a kernel észleli az USB-eszközt. Az újabb, USB3-as vezérlőkkel rendelkező gépeken is szükséges azxhci_hcd
meghajtó hozzáadása (a rendszermagba beépítve vagy modulként).
Most telepítse a LILO rendszerbetöltőt (a konfigurációval együtt) az USB pendrive adathordozóra:
(chroot) #
lilo
Warning: /dev/sdb is not on the first disk Warning: The initial RAM disk is too big to fit between the kernel and the 15M-16M memory hole. It will be loaded in the highest memory as though the configuration file specified "large-memory" and it will be assumed that the BIOS supports memory moves above 16M. Added Gentoo-352 ? * 2 warnings were issued.
Az első figyelmeztetés várható, mivel nem telepítjük a rendszerbetöltőt a számítógépünk merevlemezére. A második figyelmeztetés csak a régi gépeken okoz problémát. Ha gondot okoz, akkor próbálja meg kisebb méretűre vágni a kernelt a modulok eltávolításával.
syslinux
A syslinux jelenleg csak ext{2,3,4}, btrfs, ntfs és fat fájlrendszerekkel működik.
(chroot) #
emerge syslinux
Helyezze a rendszerindító szektort az USB pendrive adathordozóra.
(chroot) #
dd bs=440 count=1 conv=notrunc if=/usr/share/syslinux/mbr.bin of=/dev/sdb
Ezután konfigurálni kell a rendszerbetöltőt.
(chroot) #
mkdir /boot/syslinux
(chroot) #
nano -w /boot/syslinux/syslinux.cfg
/boot/syslinux/syslinux.cfg
PROMPT 1
TIMEOUT 50
DEFAULT gentoo
LABEL gentoo
LINUX ../vmlinuz-5.10.76-gentoo-r1-x86_64
APPEND root=LABEL=GENTOO_USB_ROOT scandelay=3 ro
INITRD ../initramfs-5.10.76-gentoo-r1-x86_64.img
A fenti
APPEND
sorban lévő ro
hatására a gyökér (root) partíció írásvédett lesz (ezt általában előnyben részesítik az USB-meghajtókon). Cserélje le a ro
jelölést az rw
jelölésre, hogy a rendszert a rendszerindítástól kezdve módosítani lehessen (ahelyett, hogy a felhasználó a fájlrendszert később olvasható-írható módban csatolná fel).Ezután telepítse a syslinux rendszerbetöltőt az USB pendrive adathordozóra. A --device /dev/sdb1
opció azonban nem feltétlenül szükséges.
(chroot) #
extlinux --device /dev/sdb1 --install /boot/syslinux
fstab
/etc/fstab
Az fstab fájlt beállítása, hogy meglegyen az együttműködés a címkékkelLABEL=GENTOO_USB_BOOT /boot ext4 noauto,noatime 1 2
LABEL=GENTOO_USB_ROOT / ext4 noatime 0 1
/dev/SWAP none swap sw 0 0
/dev/cdrom /mnt/cdrom auto noauto,ro 0 0
/dev/fd0 /mnt/floppy auto noauto 0 0
Tippek és trükkök
Bár az imént elkészült rendszert szabványos Gentoo rendszerként is lehet használni, készítéskor mégis érdemes lehet a bináris programcsomagokat egy gazdagépen lefordítani, majd azokat az USB pendrive adathordozóra feltelepíteni. Vagy ha a működő gazdagépünknek elég memóriája van, akkor csak csatlakoztassa a /var/tmp fájlt egy tmpfs-hez, mivel ezáltal a programok forráskódból binárisra történő lefordítása sokkal gyorsabb lesz!
További olvasnivaló a témában
- Installation — an overview of the principles and practices of installing Gentoo on a running system.
- LiveUSB — explains how to create a Gentoo LiveUSB or, in other words, how to emulate a x86 or amd64 Gentoo LiveCD using a USB drive.