UEFI boot ip4 wird übersprungen

Hallo,

ich habe ein Problem mit einem EFI bootenden Laptop. Habe ich ihn nicht als Gerät eingetragen bootet er via ip4 ganz normal und linbo zeigt an, dass er noch nicht registriert ist.
Registriere ich ihn und boot sagt er zwar dass er die NPB file via ip4 erfolgreich heruntergeladen hat, versucht es dann aber nochmal per ip6. Das schlägt natürlich fehlt und dann wird lokal gebootet. Woran kann das liegen? Die grub-Datei ist die Orignal von lmn erzeugt.

Vielen Dank, Martin

Hallo Martin,

kann man vielleicht im BIOS IPV6 abschalten?

Gruß

Alois

Hallo,

nein geht nicht. Man kann nur sagen, was zuerst genommen wird.
Es muss aber auch ein Problem der Bootdatei seine. da es ja ohne Eintrag in lmn funktioniert. Hier nochmal die zugehörige Datei

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

# 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

# 32bit pae, non pae or 64bit kernel
if cpuid -l; then
 set linbo_kernel=/linbo64
 set linbo_initrd=/linbofs64.lz
elif cpuid -p; then
 set linbo_kernel=/linbo
 set linbo_initrd=/linbofs.lz
else
 set linbo_kernel=/linbo-np
 set linbo_initrd=/linbofs-np.lz
fi

# 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 LenovoMedien2021
 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 quiet splash dhcpretry=10 $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 "Windows 10" directly
menuentry 'Windows 10 (Start)' --class win10_start {

 set oslabel="windows"
 if [ -n "$oslabel" ]; then
  search --label "$oslabel" --set osroot
 fi
 if [ -n "$osroot" ]; then
  set root="$osroot"
 else
  set root="(hd0,3)"
 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  root=/dev/nvme0n1p3
  initrd /boot/initrd.img
 elif [ -e /vmlinuz -a -e /initrd.img ]; then
  linux /vmlinuz  root=/dev/nvme0n1p3
  initrd /initrd.img
 elif [ -e /boot/vmlinuz -a -e /boot/initrd ]; then
  linux /boot/vmlinuz  root=/dev/nvme0n1p3
  initrd /boot/initrd
 elif [ -e /vmlinuz -a -e /initrd ]; then
  linux /vmlinuz  root=/dev/nvme0n1p3
  initrd /initrd
 elif [ -e /auto -a -e / ]; then
  linux /auto  root=/dev/nvme0n1p3
  initrd /
 elif [ -e /auto ]; then
  linux /auto  root=/dev/nvme0n1p3
 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 "Windows 10"
menuentry 'Windows 10 (Linbo-Start)' --class win10_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 LenovoMedien2021
  echo
  echo -n "Loading $linbo_kernel ..."
  linux $linbo_kernel quiet splash dhcpretry=10 linbocmd=start:1 $bootflag
  echo
  echo -n "Loading $linbo_initrd ..."
  initrd $linbo_initrd
  boot
 fi

}

# boot LINBO, sync and start "Windows 10"
menuentry 'Windows 10 (Sync+Start)' --class win10_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 LenovoMedien2021
  echo
  echo -n "Loading $linbo_kernel ..."
  linux $linbo_kernel quiet splash dhcpretry=10 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 "Windows 10"
menuentry 'Windows 10 (Neu+Start)' --class win10_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 LenovoMedien2021
  echo
  echo -n "Loading $linbo_kernel ..."
  linux $linbo_kernel quiet splash dhcpretry=10 linbocmd=format:3,sync:1,start:1 $bootflag
  echo
  echo -n "Loading $linbo_initrd ..."
  initrd $linbo_initrd
  boot
 fi

}

Hallo Martin,

wir haben auch das Problem, dass die UEFI-Geräte nach einem Neustart immer zuerst von grub anstatt über PXE booten.
Ich teste (nach einem freundlichen Hinweis von @baumhof) aktuell den efibootmgr
https://wiki.ubuntuusers.de/efibootmgr/
und habe in onBoot.d ein entsprechendes Skript geschrieben, das die Boot-Reihenfolge wieder zurücksetzen soll.
Sobald ich es außerhalb meines Test-Clients testen konnte (als am Montag), kann ich über die Ergebnisse berichten.

Liebe Grüße,
Wolfgang

Hallo @Wolfgang

Ja, bitte!

Danke und viele Grüße,
Jochen

Hallo Jochen,

kurze Rückmeldung:
Ich kann noch nicht sicher sagen, ob es mit dem onBoot.d funktioniert, oder ob das evtl. zu früh ausgeführt wird (bevor die BootOrder wieder geändert wird).
Ich werde demnächst noch einen Testlauf starten, wenn ich das Skript in onBoot, in onLogin und in onShutdown packe, ob es an irgendeiner Stelle greift.
Erschwerend kam hinzu, dass das Bios an meinem ursprünglichen Testrechner gänzlich andere Optionen als das meiner tatsächlichen Geräte anbot und ich das Skript jetzt vermutlich über postsync abhängig von einzelnen Geräte(gruppen) ausliefern muss.
Ich melde mich, wenn ich was neues weiß.

Liebe Grüße,
Wolfgang

So, weiter gehts.
Ich konnte heute einen etwas umfangreicheren Test machen:
Ich habe drei identische Rechner synchronisiert gestartet und bereits dort war die Reihenfolge der Boot-Optionen, die mir der efibootmgr geliefert hat, eine andere.
Deshalb hatte ich ein kleines Skript geschrieben um die richtige Reihenfolge zu setzen.

#!/bin/bash
# Skript zum Wiederherstellen der Boot-Reihenfolge mit EFI 

IPZEILE="$(efibootmgr | grep -e 'IP4' -e 'IPV4')"
IPBOOT=${IPZEILE:4:4}
#echo "IP=$IPBOOT"

UBUNTUZEILE="$(efibootmgr | grep -e 'Ubuntu')"
UBUNTUBOOT=${UBUNTUZEILE:4:4}
#echo "Ubuntu=$UBUNTUBOOT"

sudo efibootmgr -o $IPBOOT,$UBUNTUBOOT

Dieses Skript habe ich jeweils per Postsync verteilt und zwar bei einem Rechner in die onBoot.d, beim anderen in die onLogin.d und beim dritten in die onShutdown.d.
Die ersten beiden haben mir die BootOrder nach einem Neustart im efibootmgr zwar richtig angezeigt, unabhängig davon hatte es im eigentlichen BIOS aber keinerlei Einfluss und sie haben immer über die Festplatte booten wollen.

Interessanterweise haben wir noch andere (modernere) Geräte, deren Boot-Reihenfolge sich im BIOS gar nicht ändert und die völlig korrekt immer über PXE booten.

Nächster und vielleicht letzter Ansatz wäre, dass ich im BIOS noch schaue, ob sich da was machen lässt, oder ob wir doch wieder auf das normale Legacy umsteigen (solange es noch unterstützt wird).

Liebe Grüße,
Wolfgang

2 „Gefällt mir“

Hallo miteinander,
nachdem ich Ende letzter Woche eine interessante Beobachtung gemacht habe, konnte ich diese heute nochmal ausführlicher testen:

Ich hatte alle Rechner aus einem unserer Computerräume per linbo-remote gestartet (wie es auch morgens immer der Fall ist) und diese haben teilweise über Linbo das aktuelle Image bekommen.
Bei ein paar wenigen Rechner hat es nicht funktioniert und mir ist aufgefallen, dass bei diesen im BIOS/UEFI noch ein paar mehr Optionen als bei den anderen aufgelistet waren.
Nachdem ich diese aber heute über PXE gestartet und mit Linbo partitioniert habe, konnte ich auch diese per remote starten und sie haben sich synchronisiert.
Ein zweiter Testlauf hat das nochmal bestätigt und alle haben synchronisiert gestartet.

Im BIOS wird zwar (meistens) noch grub als erste Boot-Option gelistet, aber er kommt im Linbo vorbei und synchronisiert eben, weshalb es für unser tägliches Arbeiten so eigentlich ausreicht, wenn sie morgens alle wieder aktuell sind.
Mein Kollege hat dazu noch gemeint, dass sie (durch das remote) vielleicht nicht wirklich über PXE starten und es noch ein Problem werden könnte, wenn es ein Update fürs Linbo gibt, aber darüber mach ich mir Sorgen, wenn es da dann Schwierigkeiten geben sollte.

Wie im letzten Post geschrieben, ändert sich bei moderneren Geräten nichts in der Boot-Reihenfolge. :man_shrugging:

Die „Lösung“ ist vielleicht nicht 100%ig zufriedenstellend, aber ich habe aufgehört Dinge zu hinterfragen, wenn sie funktionieren und kann mich den nächsten Baustellen zuwenden.

PS: Bin aber natürlich nach wie vor an zuverlässigeren Lösungen interessiert!

Liebe Grüße,
Wolfgang

Hallo Wolfgang,

das ist kein Problem, weil es linbo egal ist, ob es per PXE oder lokal gebootet wird.
Wenn linbo bootet schaut es immer auf dem Server, ob es eine neuere linbo Version gibt.
Gibt es die, wird das lokale linbo aktualisiert und rebootet.
Ob es per PXE oder lokal gebootet wurde ist dabei unerheblich.

Der PXE boot wird eigentlich nur benötigt um linbo auf die Rechner zubekommen, wenn es selbst noch nicht drauf ist.
Ist es erstmal drauf, kann man auch lokal booten lassen: das macht keinen UNterschied.
Das haben wir extra so eingerichtet.

LG
Holger