Du bist nicht angemeldet.

#1 08.05.2020 21:50:17

sprague
Mitglied

Grub und Kernelversion anzeigen

Ich hab mal den alten Thread https://bbs.archlinux.de/viewtopic.php?id=31567 ausprobiert und dabei meine Arch-VM geschrottet. Er zeigt zwar in den Advanced Options jetzt die Kernelversion an, es kommt beim Boot nur kurz "Loading ..." und dann steht da nur noch die "VirtualBox" als Hintergrund. In der VBox komme ich nicht auf die anderen Konsolen.

Geht diese Lösung noch? Oder hab ich da etwas falsch eingetragen?

Danke, Lyon

Offline

#2 09.05.2020 22:32:30

SUSEDJAlex
Mitglied

Re: Grub und Kernelversion anzeigen

in einer virtuellen Maschine kannst du schrotten wie du willst, aber so lernst du aus den Fehlern....

Installiere das in der virtuellen Maschine einfach neu

Ist meine Meinung

LG SUSEDJAlex

Offline

#3 09.05.2020 23:49:40

schard
Moderator

Re: Grub und Kernelversion anzeigen

Virtualbox hat ein Snapshot Feature. Just saying.

Offline

#4 10.05.2020 00:59:12

SUSEDJAlex
Mitglied

Re: Grub und Kernelversion anzeigen

@schard: hatte ich glatt vergessen

Gute Idee wie man sagt....

Schönen Sonntag wünscht

SUSEDJAlex

Offline

#5 10.05.2020 16:40:48

sprague
Mitglied

Re: Grub und Kernelversion anzeigen

Werd wohl neu installieren müssen, nen Snapshot habe ich nicht von der Arch-VM. Egal.

Aus Fehlern lernen ..... Leider war da bisher kein Hinweis drauf ob der 2 Jahre alte Tipp noch geht oder nicht. Hab jetzt mal an meinem Arch-PC rumgespielt. Der ist verschlüsselt.

grub-mkconfig liefert ohne den Patch den Output:

Generating grub configuration file ...
Found background: /boot/grub/themes/starfield/starfield.png
Found linux image: /boot/vmlinuz-linux
Found initrd image: /boot/amd-ucode.img /boot/initramfs-linux.img
Found fallback initrd image(s) in /boot: initramfs-linux-fallback.img 
done

Patche ich die Zeile 190 in der 10_linux ist das ganze deutlich kürzer:

Generating grub configuration file ...
Found background: /boot/grub/themes/starfield/starfield.png
Found linux image: /boot/vmlinuz-linux
Found initrd image: /boot/amd-ucode.img
done

Hab den Patch wieder auskommentiert und bin zurück auf den Ursprungszustand.

Ich hab die Anweisung

-  version=`echo $basename | sed -e "s,vmlinuz-,,g"`
+  version=`file $linux | cut -d " " -f 9`

so interpretiert und manuell in der Datei geändert:

#  version=`echo $basename | sed -e "s,vmlinuz-,,g"`
   version=`file $linux | cut -d " " -f 9`

Ist daran was falsch?

Lyon

Offline

#6 10.05.2020 17:08:29

equ5tieZ
Gast

Re: Grub und Kernelversion anzeigen

sprague schrieb:

grub-mkconfig liefert ohne den Patch den Output:

Interessanter wäre zu wissen, was grub-mkconfig tatsächlich in die Konfiguration schreibt, also in die Datei, die durch -o angegeben wird, um zu sehen, ob und wie die Variablen aufgelöst werden, und die geschriebenen Konfigurationsdaten mal auf Unterschiede zu vergleichen.

Ich hab die Anweisung

-  version=`echo $basename | sed -e "s,vmlinuz-,,g"`
+  version=`file $linux | cut -d " " -f 9`

so interpretiert und manuell in der Datei geändert:

#  version=`echo $basename | sed -e "s,vmlinuz-,,g"`
   version=`file $linux | cut -d " " -f 9`

Ist daran was falsch?

Grundsätzlich nicht, bringt dich nur in der Sache nicht weiter, weil es im Ergebnis das gleiche ist, ob man die Änderungen selber macht oder "patch" das überlässt.

#7 10.05.2020 17:17:16

equ5tieZ
Gast

Re: Grub und Kernelversion anzeigen

SUSEDJAlex schrieb:

in einer virtuellen Maschine kannst du schrotten wie du willst, aber so lernst du aus den Fehlern....

Aus Fehlern lernt man nichts, wenn

Installiere das in der virtuellen Maschine einfach neu

der einzige Lösungsansatz ist.

Man sollte vielmehr das Problem analysieren und versuchen, dem System wieder auf die Beine zu helfen. Bei einer Neuinstallation hat man keinerlei neue Erkenntnisse gewonnen sondern nur wieder ein funktionierendes System für den nächsten Versuch, der dann wahrscheinlich genau so in die Hose geht wie der erste, weil man eben nicht weiß, was man falsch gemacht hat sondern nach der "trial-and-error"-Methode nur wild im Nebel stochert.

#8 10.05.2020 18:02:28

sprague
Mitglied

Re: Grub und Kernelversion anzeigen

Warum hab ich an die grub.cfg nicht gedacht? Danke für den Wink mit dem Zaunpfahl.

Ausschnitt aus der normalen grub.cfg:

menuentry 'Arch Linux' --class arch --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-4472952d-3d98-40bc-bd45-f3aede56170d' {
	load_video
	set gfxpayload=keep
	insmod gzio
	insmod part_gpt
	insmod fat
	if [ x$feature_platform_search_hint = xy ]; then
	  search --no-floppy --fs-uuid --set=root  F98C-DB50
	else
	  search --no-floppy --fs-uuid --set=root F98C-DB50
	fi
	echo	'Loading Linux linux ...'
	linux	/vmlinuz-linux root=/dev/mapper/vgAsys-1_root rw cryptdevice=/dev/nvme0n1p2:vgAsys root=/dev/mapper/vgAsys-1_root lang=de locale=de_DE.UTF-8 cryptkey=/dev/usb..... loglevel=3 quiet
	echo	'Loading initial ramdisk ...'
	initrd	/amd-ucode.img /initramfs-linux.img
}
submenu 'Advanced options for Arch Linux' $menuentry_id_option 'gnulinux-advanced-4472952d-3d98-40bc-bd45-f3aede56170d' {
	menuentry 'Arch Linux, with Linux linux' --class arch --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-linux-advanced-4472952d-3d98-40bc-bd45-f3aede56170d' {
		load_video
		set gfxpayload=keep
		insmod gzio
		insmod part_gpt
		insmod fat
		if [ x$feature_platform_search_hint = xy ]; then
		  search --no-floppy --fs-uuid --set=root  F98C-DB50
		else
		  search --no-floppy --fs-uuid --set=root F98C-DB50
		fi
		echo	'Loading Linux linux ...'
		linux	/vmlinuz-linux root=/dev/mapper/vgAsys-1_root rw cryptdevice=/dev/nvme0n1p2:vgAsys root=/dev/mapper/vgAsys-1_root lang=de locale=de_DE.UTF-8 cryptkey=/dev/usb..... loglevel=3 quiet
		echo	'Loading initial ramdisk ...'
		initrd	/amd-ucode.img /initramfs-linux.img
	}
	menuentry 'Arch Linux, with Linux linux (fallback initramfs)' --class arch --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-linux-fallback-4472952d-3d98-40bc-bd45-f3aede56170d' {
		load_video
		set gfxpayload=keep
		insmod gzio
		insmod part_gpt
		insmod fat
		if [ x$feature_platform_search_hint = xy ]; then
		  search --no-floppy --fs-uuid --set=root  F98C-DB50
		else
		  search --no-floppy --fs-uuid --set=root F98C-DB50
		fi
		echo	'Loading Linux linux ...'
		linux	/vmlinuz-linux root=/dev/mapper/vgAsys-1_root rw cryptdevice=/dev/nvme0n1p2:vgAsys root=/dev/mapper/vgAsys-1_root lang=de locale=de_DE.UTF-8 cryptkey=/dev/usb..... loglevel=3 quiet
		echo	'Loading initial ramdisk ...'
		initrd	/initramfs-linux-fallback.img
	}
}

und das gleiche aus der modifizierten grub.cfg mit der Kernelversion:

menuentry 'Arch Linux' --class arch --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-4472952d-3d98-40bc-bd45-f3aede56170d' {
	load_video
	set gfxpayload=keep
	insmod gzio
	insmod part_gpt
	insmod fat
	if [ x$feature_platform_search_hint = xy ]; then
	  search --no-floppy --fs-uuid --set=root  F98C-DB50
	else
	  search --no-floppy --fs-uuid --set=root F98C-DB50
	fi
	echo	'Loading Linux 5.6.11-arch1-1 ...'
	linux	/vmlinuz-linux root=/dev/mapper/vgAsys-1_root rw cryptdevice=/dev/nvme0n1p2:vgAsys root=/dev/mapper/vgAsys-1_root lang=de locale=de_DE.UTF-8 cryptkey=/dev/usb..... loglevel=3 quiet
	echo	'Loading initial ramdisk ...'
	initrd	/amd-ucode.img
}
submenu 'Advanced options for Arch Linux' $menuentry_id_option 'gnulinux-advanced-4472952d-3d98-40bc-bd45-f3aede56170d' {
	menuentry 'Arch Linux, with Linux 5.6.11-arch1-1' --class arch --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-5.6.11-arch1-1-advanced-4472952d-3d98-40bc-bd45-f3aede56170d' {
		load_video
		set gfxpayload=keep
		insmod gzio
		insmod part_gpt
		insmod fat
		if [ x$feature_platform_search_hint = xy ]; then
		  search --no-floppy --fs-uuid --set=root  F98C-DB50
		else
		  search --no-floppy --fs-uuid --set=root F98C-DB50
		fi
		echo	'Loading Linux 5.6.11-arch1-1 ...'
		linux	/vmlinuz-linux root=/dev/mapper/vgAsys-1_root rw cryptdevice=/dev/nvme0n1p2:vgAsys root=/dev/mapper/vgAsys-1_root lang=de locale=de_DE.UTF-8 cryptkey=/dev/usb..... loglevel=3 quiet
		echo	'Loading initial ramdisk ...'
		initrd	/amd-ucode.img
	}
}

Da fehlt was bei der Spezifikation der initrd, das sehe ich. Ich verstehe aber zu wenig von den Skripten um da die Ursache zu erkennen und zu beheben. Wenn der Pacth vor 2 Jahren mal getan hat hat sich bis jetzt jedenfalls irgendetwas geändert. Oder ist der mit meiner Verschlüsselung nicht kompatibel?

Lyon

Beitrag geändert von sprague (10.05.2020 18:07:41)

Offline

#9 10.05.2020 19:21:29

equ5tieZ
Gast

Re: Grub und Kernelversion anzeigen

Das ist ja schon mal was... immerhin sieht man jetzt, dass die Variablen richtig aufgelöst und in "menuentry" aufgenommen wurden. Dass das System nicht mehr bootet, liegt in der Tat an dem fehlenden Verweis auf die initramfs-linux.img. Den kannst du aber beim Booten im grub-Editor temporär nachtragen, dann startet das System zumindest einmal wieder. So viel dann auch mal zum Thema "einfach neu aufsetzen", auch wenn das System mit einem Handgriff wieder zu reparieren wäre.

Bleibt die Frage, warum der Eintrag nicht komplett angelegt wird. Ich habe leider keinen grub-Bootmamanger installiert um die beteiligten Skripts weiter untersuchen zu können (ich boote seit jeher mit syslinux), dewegen reicht es nur für einen Schuß ins Blaue: möglicherweise wird die Variable $version an anderer Stelle noch zur Bildung des Dateinamens zur Suche nach der initramfs herangezogen, die dann durch die zusätzlichen Versionsinformationen nicht gefunden und dann nicht in die Konfiguration aufgenommen wird.

#10 10.05.2020 20:03:04

equ5tieZ
Gast

Re: Grub und Kernelversion anzeigen

Ich würde mal sagen, hier passiert es:

initrd_real=
  for i in "initrd.img-${version}" "initrd-${version}.img" "initrd-${version}.gz" \
	   "initrd-${version}" "initramfs-${version}.img" \
	   "initrd.img-${alt_version}" "initrd-${alt_version}.img" \
	   "initrd-${alt_version}" "initramfs-${alt_version}.img" \
	   "initramfs-genkernel-${version}" \
	   "initramfs-genkernel-${alt_version}" \
	   "initramfs-genkernel-${GENKERNEL_ARCH}-${version}" \
	   "initramfs-genkernel-${GENKERNEL_ARCH}-${alt_version}"; do
    if test -e "${dirname}/${i}" ; then
      initrd_real="${i}"
      break
    fi
  done

  initrd=
  if test -n "${initrd_early}" || test -n "${initrd_real}"; then
    initrd="${initrd_early} ${initrd_real}"

    initrd_display=
    for i in ${initrd}; do
      initrd_display="${initrd_display} ${dirname}/${i}"
    done
    gettext_printf "Found initrd image: %s\n" "$(echo $initrd_display)" >&2
  fi

Da wird der Dateiname für die initramfs inkl. Versionsinformationen gebildet, was dann zu keinen Übereinstimmungen mehr führt und in der Folge aber auch nicht als Fehler oder Warnung gemeldet wird, sondern ein Meldung gibt es nur,  wenn ein Image gefunden wurde.

#11 10.05.2020 20:26:10

sprague
Mitglied

Re: Grub und Kernelversion anzeigen

Ich weiss dass ich die VM durch ein Boot der Arch-Iso und ein chroot retten kann. Vielleicht mache ich das auch um ein bischen zu üben.

Die VM war für mich so etwas wie die Spielwiese für die reale HW, und die läuft inzwischen weitgehend. Somit hat die VM erst mal das erfüllt was sie sollte. Deswegen habe ich auch mit dem Gedanken gespielt die mit einer anderen Konfiguration neu zu installieren.

Jedenfalls ist in dem Originalcode vmlinuz erwähnt.

version=`echo $basename | sed -e "s,vmlinuz-,,g"`

Ich hab aber nicht genug Wissen über bash-Skritpting um das mit dem Patch zu verheiraten. Und unter Debian sieht das wieder gaaaanz anders aus.

Lyon

Beitrag geändert von sprague (10.05.2020 20:51:14)

Offline

#12 10.05.2020 23:18:36

equ5tieZ
Gast

Re: Grub und Kernelversion anzeigen

sprague schrieb:

Ich weiss dass ich die VM durch ein Boot der Arch-Iso und ein chroot retten kann. Vielleicht mache ich das auch um ein bischen zu üben.

So weit muss man nicht einmal gehen, sondern es reicht, vor dem booten im grub-Editor einfach die initramfs-Zeile um "/initramfs-linux.img" zu ergänzen, dann startet das System wieder und man kann Reparaturen vornehmen, indem man die Änderungen am Skript zurücknimmt und mit "grub-mkconfig" eine gültige Konfiguration schreibt.

Jedenfalls ist in dem Originalcode vmlinuz erwähnt.

version=`echo $basename | sed -e "s,vmlinuz-,,g"`

Das fehlt in dem modifizierten Skript auch, aber nicht nur das. Der Inhalt von $version ist ja so auch nicht zu gebrauchen.

Ich hab aber nicht genug Wissen über bash-Skritpting um das mit dem Patch zu verheiraten. Und unter Debian sieht das wieder gaaaanz anders aus.

So viel anders wird Debian es auch nicht machen, weil die Skripts ja Teil von grub und weniger distributionsspezifisch sind. 

Überhaupt halte ich die Fummelei an /etc/grub.d/10_linux für ziemlichen Murks, weil Änderungen daran bei der nächsten Paketaktualisierung eh wieder überschrieben werden und damit nicht persistent sind. Für eigene Erweiterungen ist ausdrücklich /etc/grub.d/40_custom gedacht, das bei einem Paketupdate unberücksichtigt bleibt. Darin wird man aber wahrscheinlich nicht die Versionsinformationen ins grub-Menü bringen können.

Eine mögliche Lösung wäre vielleicht noch, den im ursprünglichen Posting vorgeschlagenen hook für das automatische Update um einen nachfolgenden sed auf grub.cfg zu erweitern (oder beides in einem gemeinsamen Skript zusammenzufassen), der dann nachträglich die Zeichenketten "Linux linux" durch die Versionsinformationen austauscht.

#13 11.05.2020 12:33:49

sprague
Mitglied

Re: Grub und Kernelversion anzeigen

Mit dem grub-Editor stehe ich auf Kriegsfuß. Mit dem hab ich noch nie etwas brauchbares zustande gebracht wenns nötig war.

Die VM geht wieder nach einem Boot des Arch-Isos und folgender Reparatur aus einem chroot. Allesdings habe ich noch eine heftigen Kampf gegen die Verbiegungen die der grub-customizer in den Skripten anstellt führen müssen. War schon drauf und dran ein neues Thema aufzumachen, konnte es aber so lösen. Jetzt lefts wieder rund.

Ich glaube ich stelle das Thema erst mal zurück bis ich wieder mal zu viel Zeit habe und mir die Unterschiede Arch/Debian genau ansehen kann. Lehrreich waren die Experimente aber schon.

Lyon

Offline

#14 11.05.2020 13:40:09

GerBra(offline)
Gast

Re: Grub und Kernelversion anzeigen

sprague schrieb:

Ich glaube ich stelle das Thema erst mal zurück bis ich wieder mal zu viel Zeit habe und mir die Unterschiede Arch/Debian genau ansehen kann. Lehrreich waren die Experimente aber schon.

Die Überlegung wäre halt auch, ob die Aufgabenstellung bei Archlinux überhaupt "Sinn" macht.
Es gibt jeweils nur:
- *Einen* Stock-Kernel
- *Einen* LTS-Kernel
Eine Versionsbezeichnung im Bootloader macht da IMHO keinen großen Sinn. Das mag bei anderen Distributionen mit mehreren unterstützen Kernelversionen anders sein.

Wenn man Spezialkernel oder (auch diverse) selbstkompilierte verwendet ist eine eigene (u.U. auch "händische") verwaltung der jeweiligem Bootloader-Config sowieso nötig/ratsam. Sprich: das ein grub-mkconfig "einfach so" die erwarteten Einträge generiert kann IMHO nicht erwartet werden.

Schnellantwort auf dieses Thema

Schreibe deinen Beitrag und versende ihn
Deine Antwort

Fußzeile des Forums