Linux/Saját linux live CD készítése/ZFS root fájlrendszerű gép UEFI módban

Ez a szócikk arról szól, hogyan telepítsünk kézzel (a debootstrap paranccsal) UEFI-s rendszerű gépet. Az UEFI a BIOS korlátait kiküszöbölő új rendszerű firmware.

A kérdés ZFS root fájlrendszerű gépnél kerül elő; egyéb esetekben jóval kényelmesebb a debian gyári telepítőjét használni.

Kiindulási helyzet

szerkesztés

Üres (virtuális) gépen vagyunk, bebootoltunk a live CD-vel, bejelentkeztünk ssh-val. Van egy partícionálatlan üres diszkünk:

root@ZFS-live:~# cat /proc/partitions 
major minor  #blocks  name
  11        0     518966 sr0
   8        0    8388608 sda
   7        0     490984 loop0

Partícionálás

szerkesztés

GUID partíciós táblát hozunk létre. Az első partíció azonos a BIOS-rendszerben létrehozottal (de ott DOS/MBR-ben). Az UEFI számára külön partícióra van szükség. Ezúttal nem hozunk létre swap partíciót; a BIOS-os szócikkben is csak a partíciós tábla átalakításának bemutatására szolgált.

Disk /dev/sda: 8 GiB, 8589934592 bytes, 16777216 sectors
…
Disklabel type: gpt
Disk identifier: 1EF8015C-ECDC-4D1B-B5C3-7D64A276C02E

Device        Start      End  Sectors  Size Type
/dev/sda1      2048 15362047 15360000  7.3G Linux filesystem
/dev/sda2  15362048 15464447   102400   50M EFI System

Az UEFI szabványos fájlrendszere a 32-bites vfat, aminek a legkisebb mérete 32M. Ebből kb. 200K-t használunk.

Pool létrehozás, debian installálás

szerkesztés

Minden azonos a BIOS-rendszerben leírtakkal, kivéve a bootolhatóvá tételt.

Bootolhatóvá tétel

szerkesztés

chroot-ban vagyunk. Átmásoltuk a debiant a live CD-ről, javítottuk /etc/default/zfs-t, létrehoztuk initrd-t:

apt-get install zfs-initramfs     # ZFS root-hoz kell
update-initramfs -u -t -k all     # generaljuk initrd-t

Ahhoz, hogy a grub-ot az UEFI partícióba tegyük, először fájlrendszert kell rajta létrehozni és mountolni:

mkfs.vfat -F 32 /dev/sda2         # ha nem lenne fenn: dosfstools csomag
mkdir /boot/EFI
mount /dev/sda2 /boot/EFI
apt-get install grub-efi          # a grub UEFI-s változata
update-grub                       # létrehozzuk grub menüjét
grub-install --target=x86_64-efi /dev/sda    # létrehozza /boot/EFI/EFI/debian/grubx64.efi-t
cd /boot/EFI/EFI
mv debian boot
cd boot
mv grubx64.efi bootx64.efi        #64-bites PC-n az UEFI default boot fájlja sda2-ben: \efi\boot\bootx64.efi
cd
umount /boot/EFI /proc /sys /dev  # lecsatolunk mindent /mnt alatt
apt-get clean                     # töröljük apt feleslegessé vált fájljait
exit
zpool export -f helyi             # lecsatolnánk a ZFS-t, de szerinte foglalt. Saját magát használja.

A grub-install --target=x86_64-efi /dev/sda létrehoz egy /boot/EFI/EFI/debian/grubx64.efi nevű fájlt, miközben az UEFI alaphelyzetben a \efi\boot\bootx64.efi-ből bootol.[1] Ez megoldható átnevezéssel, mint fenn, vagy a /boot/EFI/startup.nsh létrehozásával:

\EFI\debian\grubx64.efi

Az utóbbi hátránya, hogy a startup.nsh indulása előtt néhány másodpercig várakozik az UEFI shellben. Az idő állítólag állítható, akár 0-ra is… rejtély, hogyan.

Bootolás, ellenőrzés

szerkesztés

Az alábbi szkript a legfontosabb dolgokat kiírja ZFS-ről:

zfs list -o name,mountpoint,mounted,compressratio,avail,used,usedsnap,usedds,usedrefreserv,usedchild, \
       -t all -S mounted

A kimenet:

NAME           MOUNTPOINT  MOUNTED  RATIO  AVAIL   USED  USEDSNAP  USEDDS  USEDREFRESERV  USEDCHILD
helyi/ROOT     /               yes  1.83x  6.47G   396M         0    396M              0          0
helyi/tmp      /tmp            yes  1.00x  6.47G   120K         0    120K              0          0
helyi/var      /var            yes  2.45x  6.47G  33.5M         0   1.39M              0      32.2M
helyi/var/lib  /var/lib        yes  2.45x  6.47G  32.2M         0   32.2M              0          0
helyi          /                no  1.88x  6.47G   631M         0     96K              0       631M
helyi/swap     -                 -  1.14x  6.66G   200M         0    248K           200M          0

Ezután a szokásos konfigurálások jönnek: hálózat, hosztnév, systemd-szolgáltatások tiltása/engedélyezése, stb.

  1. A vfat fájlrendszerben \ választja el egymástól a könyvtárneveket. A kis- és nagybetűk azonosnak számítanak.