Windows startet nicht aus GRUB - GRUB-Datei vereinfachen

Hallo,

ich habe unsere Rechner so eingestellt, dass sie nicht erst in Linbo booten sondern direkt das Betriebssystem. Dazu nutze ich die *.cfg Dateien, die für jede Gruppe unter /var/linbo/boot/grub angelegt werden und erhöhe das Timeout wie hier http://docs.linuxmuster.net/de/latest/about/release-information/linbo.html beschrieben.
Ein Beispiel für eine Datei ist unten.
Leider startet eine bestimmte Hardwaregruppe nicht immer Windows, alles anderen Einträge funktionieren problemlos. Wenn man Windows auswählt, wird der Bildschirm kurz dunkel und dann bekommt man das linuxmuster-linbo-Hintergrundbild als Standbild und sonst nichts.
Man kann den Fehler umgehen, wenn man im Menü mit der Maus ein paar Mal hoch und runter geht und dann mehrfach mit Enter die Auswahl Windows bestätigt.
Außerdem fällt noch auf, dass die Maus sehr träge reagiert, wir sie gedrückt, vergeht ca 0,5-1 Sekunde, bis etwas passiert.
Kann man die Grub Datei vereinfachen (kein Hintergrundbild, kein Schnickschnack)?

Hier die Datei:

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

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


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

set gfxpayload=800x600x16

# 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
#set font=/boot/grub/themes/linbo/unifont-regular-16.pf2

# load theme
#if [ -e "$theme" -a -e "$font" ]; then
# loadfont "$font"
## export theme
#fi

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,5)"
fi

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

 echo LINBO $bootflag for group pcs
 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
# 20171107
#

# start "Windows 10" directly
menuentry 'Windows 10 (Start)' --class win_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,1)"
 fi
 set win_efiloader="/EFI/Microsoft/Boot/bootmgfw.efi"

 if [ -e /vmlinuz -a -e /initrd.img ]; then
  linux /vmlinuz root=LABEL=windows 
  initrd /initrd.img
 elif [ -e /vmlinuz -a -e /initrd ]; then
  linux /vmlinuz root=LABEL=windows 
  initrd /initrd
 elif [ -e /grub.exe -a -e /noinitrd_placeholder ]; then
  linux /grub.exe root=LABEL=windows 
  initrd /noinitrd_placeholder
 elif [ -e /grub.exe ]; then
  linux /grub.exe root=LABEL=windows 
 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

}





# 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"

 if [ -e /vmlinuz -a -e /initrd.img ]; then
  linux /vmlinuz root=LABEL=ubuntu ro splash
  initrd /initrd.img
 elif [ -e /vmlinuz -a -e /initrd ]; then
  linux /vmlinuz root=LABEL=ubuntu ro splash
  initrd /initrd
 elif [ -e /vmlinuz -a -e /initrd.img ]; then
  linux /vmlinuz root=LABEL=ubuntu ro splash
  initrd /initrd.img
 elif [ -e /vmlinuz ]; then
  linux /vmlinuz root=LABEL=ubuntu ro splash
 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

}

Danke, Martin

Hallo,

offensichtlich liegt es an den Einträgen

insmod png
insmod gfxterm
insmod gfxmenu

in der grub.cfg-Datei auf dem Client. Nehme ich die raus, bootet der Client in ein textbasiertes Bootmenü und alles klappt wie gewollt. Allerdings habe ich gerade festgestellt, dass die /var/linbo/boot/grub/grub.cfg (das ist nur die für den pxe-Boot) nicht der grub.cfg-Datei auf dem Client entspricht. Wo muss ich diese Änderungen auf dem Server machen, das Linbo bei nächsten Update die richtige grub.cfg anlegt.

Danke, Martin

Hallo Martin,

in der grub.cfg-Datei auf dem Client. Nehme ich die raus, bootet der
Client in ein textbasiertes Bootmenü und alles klappt wie gewollt.
Allerdings habe ich gerade festgestellt, dass die
/var/linbo/boot/grub/grub.cfg (das ist nur die für den pxe-Boot) nicht
der grub.cfg-Datei auf dem Client entspricht. Wo muss ich diese
Änderungen auf dem Server machen, das Linbo bei nächsten Update die
richtige grub.cfg anlegt.

die richtige ist die /var/linbo/boot/grub/.cfg
Die von dir genannte ist nur die Vorlage, die linbo verwendet um die
anderen beim import_workstations zu erschaffen.
Ich nehme an, dass die gruppe.cfg dann auf dem Client grub.cfg heißt.

LG

Holger

Hallo,

nein auf dem Client liegt dann die Datei gruppe.cfg als custom.cfg vor. Es gibt eine grub.cfg die auch beim initcache neu erzeugt wird. Die lädt dann die custom.cfg. Darin müsste ich die Sachen von oben auskommentieren. Ich weiß aber nicht woher die kommt. Es ist auf jeden Fall nicht die /var/linbo/boot/grub/grub.cfg. Sieht auch etwas anders aus. Ddie /var/linbo/boot/grub/grub.cfg wird anscheind nur für den pxe-Boot benötigt.

Es gibt die Datei /usr/share/linuxmuster-linbo/templates/grub.cfg.local, das ist dieselbe, die dann auf dem Client liegt. Es ist aber nicht die, die beim initcache dorthin kopiert wird.

Im Filesystem linbofs scheint sie auch nicht zu sein.

Also wo kommt die grub.cfg auf dem Client her?

Besten Dank, Martin

Hallo,

habe die Date gefunden, die liegt doch im filesystem (linbofs.lz), und zwar unter /usr/share/grub und wird bei Aufruf von initcache neu angelegt. Auf dem Server ist sie unter /var/cache/linuxmuster-linbo/#filesystem#/usr/share/grub abgelegt. Wenn man eine Änderung macht, muss man also das Dateisystem neu bauen. Reicht es, wenn ich /usr/share/linuxmuster-linbo/make-linbo-iso.sh und die neu generierten linbofs* datei nach /var/linbo zu kopieren?

Oder gibt es eine Möglichkeit für ein postsync um Dateien auf /cache zu kopieren oder zu ändern?

Besten Dank, Martin

Hallo,

wenn jemand mal vor dem gleichen Problem steht, hier das Vorgehen:
Ruft man make-linbo-iso.sh auf, so wird die Datei von /usr/share/linuxmuster-linbo/templates/grub.cfg.local in die neu zu erstellenden Dateisysteme eingebunden. Also muss man dort die Änderungen machen. Die neuen Dateisysteme kopiert man dann nach /var/linbo, erstellt die zugehörigen Prüfsummen neu und beim nächsten update bzw initcache wird es auf den Client kopiert.

Hier alle Schritte als script:

## Änderungen in /usr/share/linuxmuster-linbo/templates/grub.cfg.local machen

# Neuen kernel und neues Filesystem erstellen.
/usr/share/linuxmuster-linbo/make-linbo-iso.sh

# Alte Dateisysteme sichern (Endung .orig)
for i in /var/linbo/linbofs*.lz; do mv $i "$i.orig"; done

# Prüfsummen entfernen
rm /var/linbo/linbofs*.md5

# Neue Filesystems nach /var/linbo kopieren.
cp /var/cache/linuxmuster-linbo/iso/linbofs*.lz /var/linbo/

# Prüfsummen neu berechnen.
for i in linbofs*.lz; do echo $(md5sum "$i" | awk '{ print $1 }') > $i.md5; done;

besten Gruß, Martin