Microserver: Debian migrálás ZFS-re és UEFI-re, nem volt izgalommentes

Az előző bejegyzések folytatása. Sok parancs copy-paste más leírásokból, főleg innen. Tehát van egy pendrive-ról bootoló Debian, és egy üres zpool egy SSD-n. Sok migrálás egyszerre: pendrive-ról SSD-re, EXT4-ről ZFS-re, plusz MBR-ről GPT-re és BIOS-ról UEFI-re.

A root zpoolt (rpool) altroot-tal csatoltam fel /mnt alá. Itt rögtön egyszerűsítettem egy nagyot. Minden leírás azt mondja, hogy rpool/ROOT/valami legyen a /. Ugyanis más rendszereken (ld. beadm) boot environmentek közül lehet válogatni. Linuxon ilyen még nincs, egyszer talán lesz. Én viszont azt gondolom, hogy erre belátható időn belül nem lesz szükségem, YAGNI, ne bonyolítsuk. Bőven elég, hogy gáz esetén initramfsből vissza tudok állni korábbi snapshotra.

Következő lépés a rendszer átmásolása. Megpróbáltam lemenni systemd-vel runlevel1-be, nem sikerült, mert a root account tiltva van (sima user+sudo felállást választottam root jelszó nélkül). Ismert hiba: https://github.com/systemd/systemd/issues/7115. 2 hónapja ülnek rajta. Tehát ha egyszer majd recovery shellre lesz szükségem, az se fog menni, előtte a root accountot aktiválni kell. (Sokat olvastam már a systemd-ről, de eddig nem kellett vele foglalkoznom. Pont ilyen első találkozásra számítottam.)

No semmi baj, root account matatása helyett inkább átmásolok mindent a full rendszerről. Elvileg úgyse fut semmi, aminek ez gondot okozna. Az rsync-nek csillió paramétere van, sajnos olyan shortcut pont nincs, hogy mindent, de tényleg mindent vigyen át egy az egyben, ezért ez lett az eredmény: rsync -axHAWXS --numeric-ids --info=progress2 / /mnt. Csak pár GB-s alaprendszer van, megvolt pár perc alatt.

Átlépünk az új rendszerbe:


# mount --rbind /dev  /mnt/dev
# mount --rbind /proc /mnt/proc
# mount --rbind /sys  /mnt/sys
# chroot /mnt /bin/bash --login

Szintén a fenti leírás szerint összerakjuk az EFI partíciót:


# mkdosfs -F 32 -n EFI /dev/disk/by-id/ata-INTEL_SSDSC2KG240G7_BTYM72910E4J240AGN-part1
# mkdir /boot/efi
# echo PARTUUID=$(blkid -s PARTUUID -o value \
      /dev/disk/by-id/scsi-SATA_disk1-part3) \
      /boot/efi vfat defaults 0 1 >> /etc/fstab
# mount /boot/efi

Ráadásként az /etc/fstab-ból kivettem a régi / bejegyzést, azt már a ZFS fogja kezelni. grub-pc helyett fel kell tenni grub-efi csomagot, sima ügy. Aztán jöhet az update-initramfs, update-grub, grub-install. Nem ment simán.

Több leírás azt mondta, hogy grub-install /dev/sda. De ez nem ment, és persze hülyeség. Ez MBR boothoz való. UEFI rendszereken is működik hibrid GPT/MBR felállás mellett, ha a GRUB kap egy GPT partíciót, ami az MBR és az első igazi fájlrendszer között van, hogy odategye a core.img-t. Én ilyen partíciót direkt nem csináltam, mert csúnya. A helyes parancs:


# grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=debian --recheck --no-floppy

A Microserver gen10 kétféleképpen tud bootolni: legacy only, vagy UEFI only. Előbbi nem tud GPT-ről bootolni, utóbbi nem tud MBR-ről. Én természetesen MBR-ről voltam bootolva, pont arról szeretnék átállni. A következő gond az volt, hogy így a GRUB nem látta az EFI változókat és azt írta, hogy nem tudja magát regisztrálni. A megoldás egy GPT-ről bootolt live rendszer lett volna, de szerencsére nem kellett, mert teljesen simán ment minden a hiba ellenére is. A HP UEFI boot menüje simán látta a debiant.

Következő gond: fekete képernyő fogad az initrdben. Azt írja, hogy az "rpool/" dataset nem felcsatolható, mert fölösleges / van a végén. Először az jutott eszembe, hogy elfelejtettem a bootfs propertyt beállítani. A busyboxban szerencsére volt zfs parancs, de nem oldotta meg. Ezután kézzel szerkesztettem a grub.cfg-t, és hurrá, tudok bootolni. Jelentettem a hibát: https://savannah.gnu.org/bugs/?52746

Mivel most már UEFI alól bootoltam, lefuttattam újra az update-initramfs, update-grub, grub-install parancsokat, a grub.cfg-t megint kézzel kellett javítani, és immár lefutott hiba nélkül minden. Átállítottam a boot sorrendet, kivettem a pendrive-ot, reboot, és gyönyörűen elindul az új rendszer.

Hozzászólások