Linux/Saját linux live CD készítése/Bootolható ISO-fájl előállítása grub-bal

Ez a szócikk arról szól, hogy egy felinstallált linux rendszerből hogyan lehet hibrid (CD-ről és USB-ről is bootolható) ISO-fájlt létrehozni.

Egy másik szócikk részletesen leírja, hogyan lehet bootolható ISO-t előállítani isolinux-szal. Ez a szócikk csak az attól való eltéréseket tartalmazza.

Az elkészült ISO tesztelése és felírása külön szócikkben található.

A kiindulási helyzet és az installált fájlrendszer tömörítése azonos az ott leírtakkal. A munkakönyvtárak létrehozásában minimális különbség van, a kernel bemásolása megint ugyanaz:

# Munkakonyvtarak letrehozasa
rm -rf live       # ha volt elozo tartalom, toroljuk
mkdir -p live/efi/boot

# A kernel bemasolasa
cp -p vmlinuz initrd live/

Bootolás BIOS-ból

szerkesztés

A grub konfigurációs fájlját (grubbios.cfg) a munkakönyvtárban hozzuk létre:

search --set=root --file /Grub-liveCD

insmod all_video

set default="0"
set timeout=5

menuentry "ZFS live" {
    linux /vmlinuz boot=live nomodeset
    initrd /initrd
}

A search utasítás azt mondja a grub-nak, hogy az általa látott diszkek közül arról bootoljon, amelyik root könyvtárában megtalálja a Grub-liveCD fájlt (amit mi teszünk majd oda, lásd alább). Összesen két diszket lát: a CD-t és a memóriadiszket,[1] és magától az utóbbit választaná.

# BIOS-bootolashoz
touch live/Grub-liveCD
GRUBALAP="linux normal search cat ls iso9660 help"
grub-mkstandalone \
    --format=i386-pc \
    --output=core.img \
    --install-modules="$GRUBALAP biosdisk memdisk minicmd" \
    --modules="$GRUBALAP biosdisk" \
    --locales="" \
    --fonts="" \
    "boot/grub/grub.cfg=grubbios.cfg"
cat /usr/lib/grub/i386-pc/cdboot.img core.img > bios.img
rm core.img

A touch hozza létre az említett (üres) fájlt, ami alapján a grub megtalálja a bootolandó diszket.

A második sorban egy shell-változóba tesszük a legfontosabb grub-modulok listáját. A modulok hajtanak végre egy-egy utasítást vagy a grub > prompt után kiadott parancsot. A listát érdemes kiegészíteni:

GRUBALAP="… ext2 lvm zfs part_msdos part_gpt"

Ha a CD grub-jával látjuk a partíciós táblát és a fájlrendszereket, be tudunk bootolni úgy, hogy a grub a CD-ről indul, az op. rendszer pedig a diszkről. Ez hasznos lehet, ha a diszken elromlik a grub. A modulokat érdemes már a bootoláskor betölteni, hogy ne kelljen tudni/keresgélni a nevüket, amikor baj van:

menuentry "ZFS live" {
    insmod part_msdos
…

A grub-mkstandalone létrehozza a core.img fájlt, amiben benne van a grub bináris program, a megadott modulok, és a fent létrehozott grub konfig. fájl.

A cat összefűzi a CD-ről bootoló grub diszk-képet az előbbi fájllal, és az eredményt a bios.img-be teszi. Ez az a diszk-kép, ami a CD-ről bootoló grub-ot és a hozzá tartozó fájlokat tartalmazza.

UEFI-bootolás

szerkesztés

Ez a rész pontosan ugyanaz, mint az isolinuxos változatban, hiszen ott is grub-ot használtunk UEFI boot loadernek.

Az ISO előállítása

szerkesztés

A live könyvtár alá a fentiekben az alábbi fájlokat másoltuk:

vmlinuz
Grub-liveCD
initrd
efi/boot/bootx64.efi
efi/boot/grub.cfg

Az efi kezdetű sorok UEFI rendszerű bootoláshoz kellenek, a Grub-liveCD BIOS-oshoz, a többi pedig mindkettőben.

Az ISO-t előállító szkript:

# ISO eloallitasa EFI-vel
xorriso -as mkisofs \
        -V 'ZFS live' \
        -boot-load-size 4 -boot-info-table \
        -c boot/grub/boot.cat \
                -b boot/grub/bios.img -no-emul-boot \
        -eltorito-alt-boot \
                -e efi/boot/bootx64.efi -no-emul-boot \
        -o zfs-live.iso \
        -graft-points \
                live \
                /boot/grub/bios.img=bios.img \
                /boot/grub/grub.cfg=grub.cfg \
                /live/filesystem.squashfs=filesystem.squashfs

A xorriso kapcsolóit már ismerjük.

Partíció létrehozás

szerkesztés

Az ISO elején van partíciós tábla, de nincs partíció. Ez USB-ről bootoláskor probléma lehet. Létrehozunk egy bootolható partíciót, ami a teljes diszket magában foglalja.

# Particio letrehozasa
parted zfs-live.iso <<!!!
mkpart primary 0 -0
set 1 boot on
!!!

Az mkpart létrehoz egy elsődleges partíciót úgy, hogy nem hagy ki helyet sem a diszk elején, sem a végén. A második sor bootolhatóvá teszi a most létrehozott 1. partíciót. Ugyanezt természetesen fdisk-kel vagy más partícionáló programmal is meg lehet tenni.

  1. Így nézhetjük meg: a visszaszámlálás alatt nyomjuk meg a c gombot. grub > promptot kapunk. Az ls kiírja a grub által látott diszkeket, a set pedig a grub környezeti változóit. A root tartalmazza a bootolásra választott diszket. Az Esc gombbal visszaléphetünk a visszaszámláláshoz.