close Warning: Can't synchronize with repository "keplertools" (/srv/svn/keplertools does not appear to be a Subversion repository.). Look in the Trac log for more information.

Opened 6 years ago

Closed 4 years ago

#3493 closed Aufgabe (bleibt so)

Speicherort von /vmlinuz

Reported by: Rüdiger Kupper Owned by: bau
Priority: bei Gelegenheit Milestone: Image »Jovialer Jochen«
Component: Server: LML-Server (paedml) Severity: beeinträchtigt keinen Unterricht
Keywords: Cc:

Description (last modified by Rüdiger Kupper)

Der Speicherort der gepackten Kerneldatei vmlinuz hat sich zwischen LTS 18.04 und LTS 20.04 geändert:

  • in LTS 18.04: /vmlinuz
  • in LTS 20.04: /boot/vmlinuz

Das führte dazu, dass unser PXE-Boot-Skript nicht mehr den aktuellen Kernel im Inge-Image gebootet hat.

Ich habe das einstweilen durch symbolische Links behoben:

  • /vmlinuz -> /boot/vmlinuz
  • /vmlinuz.old -> /boot/vmlinuz.old
  • /initrd.img -> /boot/initrd.img
  • /initrd.img.old -> /boot/initrd.img.old

Damit bootet das PXE-Skript sowohl die Rechner im alten Henrike-Image (18.04), als auch im neuen Inge-Image (20.04). Nach den vollständigen Umstieg auf 20.04 können wir das Skript ändern und die Links entfernen.

Change History (11)

comment:1 by Rüdiger Kupper, 6 years ago

Description: modified (diff)

comment:2 by bau, 6 years ago

Der Boot per PXE wird in /var/linbo/boot/grub/grub.cfg konfiguriert:

#Ergänzt für Netzwerk-Boot
menuentry 'Start Ubuntu' {
   set root="(hd0,1)"
   linux  /vmlinuz root=/dev/sda1 ro splash intel_idle.max_cstate=1 net.ifnames=0
   initrd /initrd.img
}

Hier ersetzen:

  • /vmlinuz durch /boot/vmlinuz
  • /initrd.img durch /boot/initrd.img
#Ergänzt für Netzwerk-Boot
menuentry 'Start Ubuntu' {
   set root="(hd0,1)"
   linux  /boot/vmlinuz root=/dev/sda1 ro splash intel_idle.max_cstate=1 net.ifnames=0
   initrd /boot/initrd.img
}

Bootet der Rechner lokal, so benutzt er die grub-Datei, die LINBO automatisch erstellt, dazu muss die entsprechende start.conf in /var/linbo/ angepasst werden:

Kernel = vmlinuz
Initrd = initrd.img

wahrscheinlich erstzen durch:

Kernel = /boot/vmlinuz
Initrd = /boot/initrd.img

!! WICHTIG !! Wir haben in die Gruppen-Konfiguration des Grub eingegriffen, deshalb ändern in: /var/linbo/boot/grub/[Gruppe].cfg:

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

 set root="(hd0,1)"
 set win_efiloader="/EFI/Microsoft/Boot/bootmgfw.efi"
 
 if [ -e /vmlinuz -a -e /initrd.img ]; then
  linux /vmlinuz root=/dev/sda1 root=/dev/sda1 ro splash intel_idle.max_cstate=1 net.ifnames=0
  initrd /initrd.img
 elif [ -e /vmlinuz -a -e /initrd ]; then
  linux /vmlinuz root=/dev/sda1 root=/dev/sda1 ro splash intel_idle.max_cstate=1 net.ifnames=0
  initrd /initrd
 elif [ -e /vmlinuz -a -e /initrd.img ]; then
  linux /vmlinuz root=/dev/sda1 root=/dev/sda1 ro splash intel_idle.max_cstate=1 net.ifnames=0
  initrd /initrd.img
 elif [ -e /vmlinuz ]; then
  linux /vmlinuz root=/dev/sda1 root=/dev/sda1 ro splash intel_idle.max_cstate=1 net.ifnames=0
 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

}

Das könnte man auch kürzen auf:

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

 set root="(hd0,1)"
 linux  /boot/vmlinuz root=/dev/sda1 ro splash intel_idle.max_cstate=1 net.ifnames=0
 initrd /boot/initrd.img

}

Last edited 6 years ago by bau (previous) (diff)

comment:3 by bau, 6 years ago

!ACHTUNG! /var/ ist zu fast 100% voll!
Ich habe gerade die Images trusty-albrecht gelöscht, damit wenigstens wieder eMails rausgehen.

comment:4 by bau, 6 years ago

Ich habe nun endlich entdeckt, wie das mit Grub2 und PXE geht (​http://paedml.kg-fds.de/trac/wiki/AdminPxe). Damit ist es möglich, einzelne Clients zu syncen (also den LINBO Boot einzuschalten) ohne, dass das restliche Netz davon betroffen wäre:

  • /var/linbo/boot/grub/grub.cfg-[MAC-Adresse], z.B.:grub.cfg-80:00:27:c6:a1:16[[BR]] lässt sich umsetzen - siehe comment:7
  • /var/linbo/boot/grub/grub.cfg-[IP-Adresse in HEX], z.B.:grub.cfg-0A027501 für 10.32.175.1
    würde sich auch umsetzen lassen (wird eher nicht gebraucht) - siehe comment:7
  • /var/linbo/boot/grub/grub.cfg-[IP-Adressen-Teil in HEX], z.B.:grub.cfg-0A0275 für 10.32.175.X
    würde sich auch umsetzen lassen (wird eher nicht gebraucht) - siehe comment:7

die Konfigurationen müssen, wenn der grub2 das kann, im Verzeichnis liegen, in dem auch die core.0 liegt, bei uns können sie auch in boot/grub/ liegen.

Last edited 6 years ago by bau (previous) (diff)

in reply to:  3 comment:5 by Rüdiger Kupper, 6 years ago

Replying to bau:

!ACHTUNG! /var/ ist zu fast 100% voll!
Ich habe gerade die Images trusty-albrecht gelöscht, damit wenigstens wieder eMails rausgehen.

Aber da war doch zuletzt noch jede Menge Platz? Sollten die Nutzer mal wieder ihre Pistfächer leeren?

comment:6 by Rüdiger Kupper, 6 years ago

Habe noch alte Inge-Images gelösch, jetzt sind erst mal wieder 31GB frei.

comment:7 by bau, 6 years ago

Mist, unser Grub2 kann leider nicht spezifisch nach MAC oder IP die grub.cfg aussuchen (geht nicht bei Debian, bei RedHat und Fedora ist das möglich). Allerdings hat der grub2 eine recht nette Programmiersprache dabei, so dass man wie unter ​https://bugzilla.redhat.com/show_bug.cgi?id=873406 beschrieben, selbst die richtige grub.cfg laden kann, ergänzt um ​https://www.gnu.org/software/grub/manual/grub/grub.html#Network und ​https://lists.gnu.org/archive/html/help-grub/2016-10/msg00041.html:

in /var/linbo/boot/grub/i386-pc/grub.cfg

configfile=/boot/grub/grub.cfg-$net_default_mac
source "$configfile"

source "/boot/grub/grub.cfg"

Damit wären dann separate cfg's nach den MAC-Adressen möglich.
Ich teste das mal morgen im Laufe des Vormittags.

Version 0, edited 6 years ago by bau (next)

comment:8 by Rüdiger Kupper, 6 years ago

Klingt vielversprechend!

On 14.06.20 17:23, Kepler-Trac wrote:

comment:9 by bau, 6 years ago

OK, in der Praxis ist das aktuelle Verhalten eigentlich ganz praktisch: ist die /var/linbo/boot/grub/grub.cfg-[MAC-Adresse] vorhanden, so wird sie VOR der /var/linbo/boot/grub/grub.cfg-normal geladen, damit kann man also ganz am Anfang einen Menüeintrag einfügen, der dann wegen der Konfiguration [set default = 0] auch automatisch gestartet wird.

Wenn man einen Rechner also nach LINBO booten möchte, muss man nur einen Symlink /var/linbo/boot/grub/grub.cfg-[MAC-Adresse] zur /var/linbo/boot/grub/grub.cfg-LINBO anlegen. Muss ein Client anders gebootet werden, so kann man ebenfalls eine spezielle Config davorschalten.

comment:10 by Rüdiger Kupper, 6 years ago

Das dürfte schon ab und zu recht praktisch sein, super!

comment:11 by lehm, 4 years ago

Resolution: → bleibt so
Status: new → closed
Note: See TracTickets for help on using tickets.