Linbo: Frage zu /grub/*.cfg ... no such device (SSD) & ... failed to mount

Hallo liebe Community,

(1) nach einem „harten“ Runterfahren oder nach einem Stromausfall kann Linbo sda1 (Win 10) nicht mehr einhängen „… failed to mount“. Meine bisherige Lösung für das Kollegium ist „Neu+Start“ zu drücken und das Problem ist nach der Neuinstallation behoben.
Ich habe gelesen, dass dieses Problem nicht mehr auftritt, wenn ich Windows direkt durch den grub bootet. Stimmt das, hat jemand Erfahrung damit?

(2) Wir haben Laptops, die beim Start keine LAN-Verbindung / kein eth0 haben. Damit man nicht unnötig den Timeout abwarten muss, würde ich Windows 10 ungesycnt starten. Dies funktioniert auch, allerdings kommt zwischen durch folgende Fehlermeldung, die auch @luftikuss
angesprochen hat:

Wie kann ich diese Fehlermeldung beheben?

Meine /grub/*.cfg:
# 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=0
set fallback=0

#set gfxpayload=800x600x16
set gfxpayload=1920x1080x16

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

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

 echo LINBO $bootflag for group win10ubuntunvme
 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 dhcpretry=10 modprobe.blacklist=radeon $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


}

# boot LINBO, sync and then start "Windows 10"
menuentry 'Windows 10 (Sync+Start)' --class win_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 win10ubuntunvme
  echo
  echo -n "Loading $linbo_kernel ..."
  linux $linbo_kernel dhcpretry=10 modprobe.blacklist=radeon linbocmd=sync:1,start:1 $bootflag
  echo
  echo -n "Loading $linbo_initrd ..."
  initrd $linbo_initrd
  boot
 fi

}

# boot LINBO, format os partition, sync and then start "Windows 10"
menuentry 'Windows 10 (Neu+Start)' --class win_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 win10ubuntunvme
  echo
  echo -n "Loading $linbo_kernel ..."
  linux $linbo_kernel dhcpretry=10 modprobe.blacklist=radeon linbocmd=format:1,sync:1,start:1 $bootflag
  echo
  echo -n "Loading $linbo_initrd ..."
  initrd $linbo_initrd
  boot
 fi

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

# 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

}

# boot LINBO, sync and then 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 win10ubuntunvme
  echo
  echo -n "Loading $linbo_kernel ..."
  linux $linbo_kernel dhcpretry=10 modprobe.blacklist=radeon linbocmd=sync:2,start:2 $bootflag
  echo
  echo -n "Loading $linbo_initrd ..."
  initrd $linbo_initrd
  boot
 fi

}

# boot LINBO, format os partition, sync and then 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 win10ubuntunvme
  echo
  echo -n "Loading $linbo_kernel ..."
  linux $linbo_kernel dhcpretry=10 modprobe.blacklist=radeon linbocmd=format:2,sync:2,start:2 $bootflag
  echo
  echo -n "Loading $linbo_initrd ..."
  initrd $linbo_initrd
  boot
 fi

}
Meine start.conf:

[LINBO]
Cache = /dev/nvme0n1p4
Server = 10.16.1.1
Group = win10ubuntunvme
SystemType = bios
RootTimeout = 600
AutoPartition = no
#KernelOptions = quiet splash
AutoFormat = no
AutoInitCache = no
DownloadType = torrent
BackgroundFontColor = white
ConsoleFontColorStdout = white
ConsoleFontColorStderr = red
KernelOptions = dhcpretry=10

[Partition]
Dev = /dev/nvme0n1p1
Size = 40G
Id = 7
FSType = ntfs
Bootable = yes
Label = windows

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

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

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

[OS]
Name = Windows 10
Version =
Description = Windows 10
IconName = win10.png
Image =
BaseImage = win10v13APO.cloop
Boot = /dev/nvme0n1p1
Root = /dev/nvme0n1p1
Kernel = grub.exe
Initrd =
Append =
StartEnabled = yes
SyncEnabled = no
NewEnabled = yes
Hidden = yes
Autostart = yes
AutostartTimeout = 3
DefaultAction = start

[OS]
Name = Ubuntu
Version =
Description = Ubuntu 16.04 Xenial
IconName = ubuntu.png
Image =
BaseImage = xenial.cloop
Boot = /dev/nvme0n1p2
Root = /dev/nvme0n1p2
Kernel = vmlinuz
Initrd = initrd.img
Append = ro splash
StartEnabled = yes
SyncEnabled = yes
NewEnabled = yes
Hidden = yes
Autostart = no
AutostartTimeout = 5
DefaultAction = sync

Ich dachte mir, dass es vielleicht mit der SSD / nvme zusammenhängt und ich entsprechend die /grub/*cfg-Datei ändern muss (anstatt hd0 nvme0) oder die Reihenfolge (hd0,x). Was meint ihr?

Wäre es besser bei den Laptops das WLAN-Interface zu hinterlegen und als zweites Interface das eth0 abfragen zu lassen?

Viele Grüße,
Carina

Hallo Carina,

erstmal: tut mir Leid, dass ich nicht geantwortet habe: die Nachricht hab ich nicht per Mail bekommen. Ich lese das Forum nur im Thunderbird, weil es meien Arbeitsabläufe sehr erleichtert: nur hatten wir eben die letzten Wochen das Problem, dass manche Beiträge nicht als Mail raus gehen…
Es war eine gute Idee bei der Hotline an zu rufen und nochmal drauf hin zu weisen: so kam es doch noch bei mir an :slight_smile:

Zu deinen Fragen:
(1) ja, das behebt das Problem: kann aber andere nach sich ziehen und hat eine unschöne Nebenwirkung.
Zuerst zu den anderen Problemen: linux (und auch linbo) faßt ein unsauberes ntfs Dateisystem nicht an: das ist auch gut so, da es sein kann, dass es Dateien beschädigt im unsauberen Dateisystem.
Windows stört sich da erstmal nicht dran: was auch OK ist, da Windows ja den “orginal” Dateisystemtreiber besitzt und so robuster ist bei Fehlern. Es kann aber trotzdem passieren, dass was beschädigt wird… und das merkt man erst viel Später.
Zu der Nebenwirkung: startet man Windows direkt aus grub, wird es nicht gesynct! Und so sollte man Windows nicht in der Schule betreiben (Viren, Keylogger, vollgelaufene Partitionen).
Bessere Lösung ist, dass man Windows bei jedem Start “neu und synct”.
Dazu solltest du
sync enabeld in der start.conf auf no stellen und default Action auf New.
Neu und Start ist bei ntfs Dateisystemen sowiso schneller als sync + start: insofern mache ich das bei Windows immer.

(2) da bin ich mir jetzt nicht sicher, ob ich komplett verstanden habe, was du meinst.
Zuerst: Timeout abwarten: willst du nicht. Er kommt vom PXE (nehme ich an). Da würde ich die Bootreihenfolge im BIOS einfach auf HDD first stellen.
Zu dem “Festplatte nicht da”.
Da würde ich so vorgehen: du hast die grub.cfg der Gruppe angepaßt, damit das bootmenü erscheint.
Ich würde empfehlen die Zeile

# ### managed by linuxmuster.net

in der grub.cfg wieder herstellen.
Dann import_workstations
Das bewirkt, dass linbo die grub.cfg nochmal “geradezieht” also mit einer neuen ersetzt.
Dann kannst du die Zeile durch einfügen eines “NOT” vor dem managed deaktivieren und deine Änderungen (defaultboot) wieder einrichten (und deine gfxpayload Zeile).
Mach das mal und schau, ob der Fehler dann weg ist.
Wenn icht, schreib nochmal.

Viele Grüße

Holger

Hallo Holger,

wusste ich doch, dass Dir noch mehr dazu einfällt als mir eingefallen ist :grinning:.

Gruß

Alois

Hi Holger,
vielen Dank für die ausführliche Antwort. Ich werde es testen und Rückmeldung geben.

Grüße
Carina