Lmn 7.2 - Kein Netzwerkboot nach Migration

Jo force-grub bringt keine Änderung bzw. so wie ich das verstehe, versucht der lokale grub ja zu starten aber das scheint nicht zu funktionieren.
Wenn ich in der Linbo-Console (nach manuellem PXE-Boot) grub-install absetzte, kommt die Fehlermeldung „no efi Device found“. Aber laut start.conf (siehe oben) gibt es ja eine efi-Partition.

LG
Daniel

Hallo Daniel,

ein wirklich delikates Problem, das du da hast.

Ich hab, nachdem ich alles nochmal gelesen habe, noch ein paar Ideen.

  1. hab ich das richtig? Die gleiche Hardwareklasse in einem anderen Raum funktioniert? Gleiche EFI BIOS Settings?

  2. Du sagst, das BIOS stellt die Bootorder zurück: wann genau macht es das?
    Vermutung zum Zurückstellen der Bootorder: wenn das EFI ein Bootdevice nimmt und da klappt das Booten nicht (bei dir das lokale GRUB), dann schreiben manche BIOSe die Standardwerte für die BootOrder zurück (hatte ich gerade Gestern hier auf einem Lenovo UEFI Bootenden Laptop). Das hörte erst auf, nachdem der Boot auch klappt.

  3. „Aber laut start.conf (siehe oben) gibt es ja eine efi-Partition.“
    kannst du mal auf dem Client die Partitionen auslesen und hier posten?
    fdisk -l
    zeigt sie alle an.

Zur Neuerstellung der GRUPPE.cfg: die /srv/linbo/boot/grub/GRUPPE.cfg
wird bei jedem lauf von linuxmuster-import-devices neu geschrieben, wenn die „managed by linuxmuster.net“ Zeile in der Datei unverletzt (orginal) ist.

Hast du mal Busters Hinweis probiert? efibootmgr auf dem Client ausführen?

Bitte beschreib aber nochmal genau, was passiert: ich brauche noch einen etwas besseren Durchblick …

LG

Holger

Hallo Holger,
sorry, dass ich so lange nicht antworte - deine Fragen sind mir durchgerutscht.

Nicht ganz: Wir haben eine komplette 7.2 Neuinstallation (also Server und Firewall). Einen neuen Client wollten wir nicht bauen, also haben wir einfach die Image Dateien, start.conf, devices und users vom 7.1 Server auf den 7.2 Server kopiert - Import devices und sophomorix durchlaufen lassen - gut ist.
Ich habe die LMN7.1 Maschinen alle noch auf dem Hypervisor (in anderen Netzwerken) und kann so direkt zwei Clients, die an 7.1 und an 7.2 angeflanscht sind vergleichen.

Ich starte die identische Hardware-Klasse mit den identischen BIOS-Einstellungen, nur eben einmal mit 7.1 und einmal mit 7.2:

LMN7.1 (Linbo 4.0.46.-0) Rechner bootet mit PXE Linbo und synct wie gewünscht.
LMN7.2 (Linbo 4.2.13-0) Rechner startet nicht PXE sondern direkt ins grub - das klappt wohl nicht gescheit und dann bootet er das OS lokal. Ich kann zwar den PXE-Boot manuell im Bios per Boot-Override anstoßen, aber beim nächsten Neustart drängelt sich der grub wieder vor… (ein Speichern der Boot-Order oder ein Boot Order Lock ist im BIOS nicht verfügbar).
Ich vermute im anderen Thread ist das Problem ähnlich (wenn auch Windows Client).Neue Clients - Selbstständiges BIOS

Mit LMN7.1 startet der Client mit PXE-Boot und synchronisiert das Image. In LMN7.2 klappt das nur manuell (d.h. im Bios manuell PXE-Boot per Boot-Override auswählen) Beim nächsten Neustart kommt o.g. Fehlermeldung und der Client startet dann wieder lokal ohne sync. Somit könntest du recht haben. Der grub boot (der dann das beim letzten PXE-Boott heruntergeladene Linbo starten sollte) haut nicht hin und bricht mit der Fehlermeldung ab.
Initiating pxe boot ...error: invalid filename 'dhcp' error: you need to load the kernel first.

Ich bin aber immernoch überfragt, warum das bei 7.2 passiert und bei 7.1 nicht?!

Hier die fstab von einem betroffenen Client:

Gerät             Anfang      Ende  Sektoren  Größe Typ
/dev/nvme0n1p1      2048    411647    409600   200M EFI-System
/dev/nvme0n1p2    411648 168183807 167772160    80G EFI-System
/dev/nvme0n1p3 168183808 235292671  67108864    32G Linux Swap
/dev/nvme0n1p4 235292672 500117503 264824832 126,3G Linux-Dateisystem

Ja, mir fällt auch auf, dass da zweimal EFI-System steht. Aber in der start.conf.gruppe ist die 2. Partition nicht als boot markiert?!

Hier noch die start.conf.gruppe:

[LINBO]
Server = 10.0.0.1
Group = ubuntu2204-efi
Cache = /dev/nvme0n1p4
RootTimeout = 600
AutoPartition = no
AutoFormat = no
AutoInitCache = no
GuiDisabled = no
UseMinimalLayout = no
Locale = de-DE
DownloadType = torrent
SystemType = efi64
KernelOptions = splash quiet dhcpretry=10 warmstart=no nomodeset forcegrub
clientDetailsVisibleByDefault = yes

[Partition]
Bootable = yes
FSType = vfat
Id = ef
Size = 200M
Label = efi
Dev = /dev/nvme0n1p1

[Partition]
Bootable = no
FSType = ext4
Id = 83
Size = 80G
Label = ubuntu
Dev = /dev/nvme0n1p2

[Partition]
Bootable = no
FSType = swap
Id = 82
Size = 32G
Label = swap
Dev = /dev/nvme0n1p3

[Partition]
Bootable = no
FSType = ext4
Id = 83
Size =
Label = cache
Dev = /dev/nvme0n1p4

[OS]
Name = Ubuntu
Version = 22.04
Description = Ubuntu 22.04
IconName = ubuntu.svg
Image =
BaseImage = ubu22.qcow2
Boot = /dev/nvme0n1p2
Root = /dev/nvme0n1p2
Kernel = boot/vmlinuz
Initrd = boot/initrd.img
Append = ro splash
StartEnabled = no
SyncEnabled = yes
NewEnabled = no
Autostart = yes
AutostartTimeout = 5
DefaultAction = sync
Hidden = yes

und hier die gruppe.cfg:

# global part of group specific grub.cfg template for linbo net boot
# thomas@linuxmuster.net
# 20231119
#

# if you don't want this file being overwritten by import_workstations remove the following line:
# ### managed by linuxmuster.net ###

# edit to your needs
set default=0
set timeout=0
set fallback=1

set gfxmode=auto
set gfxpayload=keep

insmod all_video
insmod png
insmod gfxterm
insmod gfxmenu
insmod minicmd
insmod progress

terminal_output gfxterm

background_color 42,68,87

# kernel & initrd
set linbo_kernel=/linbo64
set linbo_initrd=/linbofs64

# theme settings (modify for custom theme)
set theme=/boot/grub/themes/linbo/theme.txt
export theme

clear

# find linbo cache partition
set cachelabel="cache"
if [ -n "$cachelabel" ]; then
  search --label "$cachelabel" --set cacheroot
fi
if [ -z "$cacheroot" ]; then
  search --file /start.conf --set cacheroot
fi
if [ -z "$cacheroot" ]; then
  search --file "$linbo_initrd" --set cacheroot
fi
if [ -n "$cacheroot" ]; then
  set root="$cacheroot"
else
  set root="(hd0,4)"
fi

# linbo part, boot local or net (default #0)
menuentry 'LINBO' --class linbo {

 echo LINBO $bootflag for group ubuntu2204-efi
 echo

 if [ -e "$linbo_kernel" -a -e "$linbo_initrd" ]; then
  set bootflag=localboot
 elif [ -n "$pxe_default_server" ]; then
  set root="(tftp)"
  set bootflag=netboot
 fi

 if [ -n "$bootflag" ]; then
  echo -n "Loading $linbo_kernel ..."
  linux $linbo_kernel splash quiet dhcpretry=10 warmstart=no nomodeset forcegrub $bootflag
  echo
  echo -n "Loading $linbo_initrd ..."
  initrd $linbo_initrd
  boot
 else
  if [ "$grub_platform" = "pc" ]; then
   set ipxe="/ipxe.lkrn"
  fi
  if [ -e "$ipxe" ]; then
   echo -n "Initiating pxe boot ..."
   linux16 $ipxe dhcp
   boot
  fi
 fi

}
# group specific grub.cfg template for linbo net boot, should work with linux and windows operating systems
# thomas@linuxmuster.net
# 20201126
#

# start "Ubuntu" directly
menuentry 'Ubuntu (Start)' --class ubuntu_start {

 set oslabel="ubuntu"
 if [ -n "$oslabel" ]; then
  search --label "$oslabel" --set osroot
 fi
 if [ -n "$osroot" ]; then
  set root="$osroot"
 else
  set root="(hd0,2)"
 fi
 set win_efiloader="/EFI/Microsoft/Boot/bootmgfw.efi"

 terminal_output console
 if [ -e /boot/vmlinuz -a -e /boot/initrd.img ]; then
  linux /boot/vmlinuz ro splash root=/dev/nvme0n1p2
  initrd /boot/initrd.img
 elif [ -e /vmlinuz -a -e /initrd.img ]; then
  linux /vmlinuz ro splash root=/dev/nvme0n1p2
  initrd /initrd.img
 elif [ -e /boot/vmlinuz -a -e /boot/initrd ]; then
  linux /boot/vmlinuz ro splash root=/dev/nvme0n1p2
  initrd /boot/initrd
 elif [ -e /vmlinuz -a -e /initrd ]; then
  linux /vmlinuz ro splash root=/dev/nvme0n1p2
  initrd /initrd
 elif [ -e /boot/vmlinuz -a -e /boot/initrd.img ]; then
  linux /boot/vmlinuz ro splash root=/dev/nvme0n1p2
  initrd /boot/initrd.img
 elif [ -e /boot/vmlinuz ]; then
  linux /boot/vmlinuz ro splash root=/dev/nvme0n1p2
 elif [ -s /boot/grub/grub.cfg ] ; then
  configfile /boot/grub/grub.cfg
 elif [ "$grub_platform" = "pc" ]; then
  if [ -s /bootmgr ] ; then
   ntldr /bootmgr
  elif [ -s /ntldr ] ; then
   ntldr /ntldr
  elif [ -s /grldr ] ; then
   ntldr /grldr
  else
   chainloader +1
  fi
 elif [ -e "$win_efiloader" ]; then
  chainloader $win_efiloader
  boot
 fi
 terminal_output gfxterm

}

# boot LINBO and start "Ubuntu"
menuentry 'Ubuntu (Linbo-Start)' --class ubuntu_start {

 if [ -e "$linbo_kernel" -a -e "$linbo_initrd" ]; then
  set bootflag=localboot
 elif [ -n "$pxe_default_server" ]; then
  set root="(tftp)"
  set bootflag=netboot
 fi

 if [ -n "$bootflag" ]; then
  echo LINBO $bootflag for group ubuntu2204-efi
  echo
  echo -n "Loading $linbo_kernel ..."
  linux $linbo_kernel splash quiet dhcpretry=10 warmstart=no nomodeset forcegrub linbocmd=start:1 $bootflag
  echo
  echo -n "Loading $linbo_initrd ..."
  initrd $linbo_initrd
  boot
 fi

}

# boot LINBO, sync and start "Ubuntu"
menuentry 'Ubuntu (Sync+Start)' --class ubuntu_syncstart {

 if [ -e "$linbo_kernel" -a -e "$linbo_initrd" ]; then
  set bootflag=localboot
 elif [ -n "$pxe_default_server" ]; then
  set root="(tftp)"
  set bootflag=netboot
 fi

 if [ -n "$bootflag" ]; then
  echo LINBO $bootflag for group ubuntu2204-efi
  echo
  echo -n "Loading $linbo_kernel ..."
  linux $linbo_kernel splash quiet dhcpretry=10 warmstart=no nomodeset forcegrub linbocmd=sync:1,start:1 $bootflag
  echo
  echo -n "Loading $linbo_initrd ..."
  initrd $linbo_initrd
  boot
 fi

}

# boot LINBO, format os partition, sync and start "Ubuntu"
menuentry 'Ubuntu (Neu+Start)' --class ubuntu_newstart {

 if [ -e "$linbo_kernel" -a -e "$linbo_initrd" ]; then
  set bootflag=localboot
 elif [ -n "$pxe_default_server" ]; then
  set root="(tftp)"
  set bootflag=netboot
 fi

 if [ -n "$bootflag" ]; then
  echo LINBO $bootflag for group ubuntu2204-efi
  echo
  echo -n "Loading $linbo_kernel ..."
  linux $linbo_kernel splash quiet dhcpretry=10 warmstart=no nomodeset forcegrub linbocmd=format:2,sync:1,start:1 $bootflag
  echo
  echo -n "Loading $linbo_initrd ..."
  initrd $linbo_initrd
  boot
 fi

}

Nein noch nicht. würde gerne verstehen, warum es nicht einfach wie bei 7.1 läuft.

LG Daniel

Wir haben uns da jetzt nochmal rangehängt und alle vorgeschlagenen Tipps durchprobiert - hat alles keine gewünschte Änderung gebracht.
Und dann:
Manchmal ist die Lösung des Problems so simpel…
Zum Schluss haben wir einfach linbo auf dem Server nochmal neu installiert per reinstall.
Ich glaube das hats gebracht… ich vermute mal, dass wir beim Kopieren der 7.1 configs auf den 72 server irgendetwas überschrieben haben, was nicht erlaubt war.

Hallo Daniel,

gut dass du mal beschrieben hast, was da gemacht wurde: so bin ich auch auf die Lösung gekommen.
Also: einfach die start.conf nach dem upgrade zu kopieren kann zu Problemen führen, weil der Upgrade von 4.0 auf 4.2 auch in die start.confs eingreift.

Genauso das „Client mal 4.0 mal 4.2“ booten lassen ist keine gute Idee: 4.2 verändert den Client und installiert sich in den Cache. Dann kommt wieder 4.0 …

Mein Vorschlag an dich wäre gewesen, linbo zu reinstallen um die start.confs gerade zu ziehen.
Dann einen Cleint in linbo booten und ihn mit dem neuen linbo zu partitionieren, um sicher zu gehen, dass das alte weg ist und dann an dem testen.
Wenn das geht: alle mal frisch partitionieren …

Hab ich das richtig: jetzt geht alles?

LG

Holger

Ja, jetzt klappt es!
Danke fürs Helfen.
Ergänzend verlinke ich mal noch den überragenden Hinweis von Matthias:Bootreihenfolge von Linbo verhindern