Failed to switch root | OS tree | AlmaLinux
Ein CentOS 8.3 Server wurde mit dem Skript almalinux-deploy.sh zu AlmaLinux 8.3 migriert. Nach dem Reboot war der Server nicht mehr erreichbar:
Apr 07 11:24:51 localhost systemd[1]: Starting Switch Root Apr 07 11:24:51 localhost systemctl[740]: Failed to switch root: Specified switch root path '/sysroot' does not seem to be an OS tree
Grubenv
Die Datei /boot/grub2/grubenv wird für den Bootvorgang benötigt und teilt dem Kernel unter anderem mit auf welchem Gerät (Festplatte/Partition) das Root-Dateisystem liegt:
[root@centos8 ~]# cat /boot/grub2/grubenv # GRUB Environment Block saved_entry=fc12345f23af4a4d8ac468012345d4c1-4.18.0-240.15.1.el8_3.x86_64 kernelopts=root=/dev/md3 ro rd.auto crashkernel=auto vga=normal nomodeset net.ifnames=0 biosdevname=0 boot_success=1
Grub config CentOS 8.3
Unter CentOS 8.3 existierte die Datei /boot/grub2/grubenv.rpmnew, die via Softlink nach ../efi/EFI/centos/grubenv verlegt wurde:
[root@centos8 ~]# ls -l /boot/grub2 total 24 -rw-r--r--. 1 root root 0 Jan 22 13:29 device.map drwxr-xr-x. 2 root root 1024 Jun 11 2020 fonts -rw-r--r--. 1 root root 8923 Jan 22 15:58 grub.cfg -rw-------. 1 root root 1024 Mar 24 20:48 grubenv lrwxrwxrwx 1 root root 25 Sep 8 2020 grubenv.rpmnew -> ../efi/EFI/centos/grubenv drwxr-xr-x. 2 root root 8192 Jun 11 2020 i386-pc [root@centos8 ~]# ls -l /boot/efi/EFI/centos/grubenv -rw-r--r--. 1 root root 1024 Mar 24 21:30 /boot/efi/EFI/centos/grubenv
Grub config AlmaLinux 8.3
Während am Server centos8 die Datei /boot/grub2/grubenv existierte, war sie am Server alma8 über einen Softlink umgeleitet. Der Pfad wurde während der Migration zwar auf ../efi/EFI/almalinux/grubenv angepasst, jedoch war am angegebenen Ort keine grubenv angelegt:
[root@alma8 ~]# ls -l /boot/grub2 total 19 drwxr-xr-x. 2 root root 1024 Oct 22 2019 fonts -rw-r--r-- 1 root root 6666 Apr 7 15:22 grub.cfg lrwxrwxrwx 1 root root 28 Mar 15 19:28 grubenv -> ../efi/EFI/almalinux/grubenv drwxr-xr-x. 2 root root 9216 Jan 26 16:04 i386-pc [root@alma8 ~]# ls -l /boot/efi/EFI/almalinux/grubenv ls: cannot access '/boot/efi/EFI/almalinux/grubenv': No such file or directory
Der Server konnte nicht mehr starten, da er ohne diese Datei nicht mitgeteilt bekam wo sein Dateisystem liegt.
Bootdateien kontrollieren und reparieren
Prinzipiell läuft die Migration vom CentOS nach AlmaLinux mit dem Skript almalinux-deploy.sh ohne Probleme durch. Prüfen Sie jedoch vor dem finalen Reboot ob die Dateien in /boot eventuell mit einem Softlink auf ein anderes Ziel verweisen und ob diese Dateien auch existieren. Falls nicht, erstellen Sie die Konfiguration manuell anhand den von CentOS generierten Dateien und übertragen Sie diese in das entsprechende almalinux Verzeichnis.