View previous topic :: View next topic |
Author |
Message |
ji7 n00b
Joined: 21 Jan 2024 Posts: 6
|
Posted: Sun Jan 21, 2024 9:16 pm Post subject: [gelöst] initramfs Ausgabe wird nicht angezeigt |
|
|
Hallo,
vor einigen Jahren bin ich von Gentoo abgewandert, aber jetzt bin ich zurück. Es ist einfach flexibler - besonders wenn man vieles selbst machen möchte =)
Aber nun habe ich einige Probleme, oder mein Wissen ist veraltet.
Ich habe nach dieser Anleitung mein System verschlüsselt. Zum Entschlüsseln soll im Initramfs via Cryptsetup die Festplatte enschlüsselt werden und der Bootvorgang fortgesetzt werden.
Auf meinem Testsystem läuft alles wunderbar. Aber auf meinem mobilen System bootet zwar der Kernel und ich sehe die ersten Kernel-Messages dann bleibt das System stehen. Wenn ich jedoch Steuerung & ALT & Entfernen drücke bootet das System neu. Wenn der Kernel den Parameter 'nomodeset' erhält, dann sehe ich noch kurz die gewünschte Ausgabe meines Initramfs-Skriptes.
Was muss ich einstellen, damit ich statt der Kernel-Messages die Ausgabe meines Initramfs-Skript sehe?
mein Initramfs erstelle ich sinngemäß so:
Code: |
mkdir /root/initramfs
cd /root/initramfs
mkdir {bin,dev,next-root,proc,sys,run/cryptsetup}
cp /bin/busybox bin/busybox
cd bin
ln -s busybox sh
ln -s busybox mount
ln -s busybox umount
ln -s busybox cat
ln -s busybox swapon
ln -s busybox mkswap
cd ..
cp /root/init init && chmod +x init
cp /sbin/cryptsetup bin
mknod --mode=0600 dev/console c 5 1
mknod --mode=0660 dev/null c 1 3
find . | cpio --quiet -o -H newc | gzip > /boot/initramfs
|
init-script: init
Code: |
export PATH=/bin
umask 0077
mount -t proc proc /proc
mount -t sysfs sysfs /sys
mount -t tmpfs tmpfs /dev
busybox --install -s
cat /proc/sys/kernel/printk|echo -e "0\t$(cut -f 2-5)" > /proc/sys/kernel/printk && clear
echo " _ _ "
echo "| |__ ___ ___ | |_ "
echo "| '_ \ / _ \ / _ \| __|"
echo "| |_) | (_) | (_) | |_ "
echo "|_.__/ \___/ \___/ \__|"
echo " "
cryptsetup open /dev/nvme0n1p4 system
mount /dev/mapper/system /next-root
umount -l /dev /proc /sys
exec switch_root /next-root /sbin/init
|
meine /boot/grub/grub.cfg
Code: |
gfxmode=600x800x32
set gfxmode=1280x720x32
insmod all_video
menuentry 'Gentoo' {
echo "Starte Gentoo Linux"
set gfxpypayload=keep
root=hd0,1
linux /gentoo nomodeset
initrd /initramfs
}
|
Framebuffer habe ich im Kernel aktiviert (EFI-based Framebuffer, Simple framebuffer support, Framebuffer Console support).
Die verbaute Grafikkarte ist eine integrierte VEGA10 einer Ryzen mobile CPU
Anleitung: https://www.pro-linux.de/artikel/2/528/gentoo-linux-mit-festplattenverschluesselung.html
Vielen Dank für eure Hilfe
Last edited by ji7 on Mon Feb 05, 2024 10:04 pm; edited 1 time in total |
|
Back to top |
|
|
schmidicom Veteran
Joined: 09 Mar 2006 Posts: 1974 Location: Schweiz
|
Posted: Mon Jan 22, 2024 6:35 am Post subject: |
|
|
Hast du "sys-fs/cryptsetup" mit dem USE-Flag "static gebaut? Wenn nicht, musst du neben "/sbin/cryptsetup" auch die Libraries mit in das initrd kopieren. lddtree /sbin/cryptsetup: | cryptsetup => /sbin/cryptsetup (interpreter => /lib64/ld-linux-x86-64.so.2)
libcryptsetup.so.12 => /usr/lib64/libcryptsetup.so.12
libdevmapper.so.1.02 => /usr/lib64/libdevmapper.so.1.02
libudev.so.1 => /usr/lib64/libudev.so.1
libcap.so.2 => /usr/lib64/libcap.so.2
ld-linux-x86-64.so.2 => /lib64/ld-linux-x86-64.so.2
libm.so.6 => /usr/lib64/libm.so.6
libssl.so.3 => /usr/lib64/libssl.so.3
libcrypto.so.3 => /usr/lib64/libcrypto.so.3
libz.so.1 => /usr/lib64/libz.so.1
libargon2.so.1 => /usr/lib64/libargon2.so.1
libjson-c.so.5 => /usr/lib64/libjson-c.so.5
libpopt.so.0 => /usr/lib64/libpopt.so.0
libpwquality.so.1 => /usr/lib64/libpwquality.so.1
libcrack.so.2 => /usr/lib64/libcrack.so.2
libpam.so.0 => /usr/lib64/libpam.so.0
libuuid.so.1 => /usr/lib64/libuuid.so.1
libblkid.so.1 => /usr/lib64/libblkid.so.1
libc.so.6 => /usr/lib64/libc.so.6 | EDIT:
Das selbe trifft natürlich auch auf "sys-apps/busybox" zu. _________________ Lenovo - ThinkPad P16s Gen 2 - 21K9CTO1WW |
|
Back to top |
|
|
ji7 n00b
Joined: 21 Jan 2024 Posts: 6
|
Posted: Mon Jan 22, 2024 5:18 pm Post subject: |
|
|
Hi und danke für die Antwort,
selbstverständlich habe ich die Komponenten für das Iiniramfs (crypsetup und busybox) statisch gebaut =)
Mein Problem ist, dass ich die Ausgabe des Initramfs-Skriptes (init) nicht dargstellt bekomme.
Erst wenn ich Steuerung & ALT & Entfernen drücke sehe ich noch kurz mein "boot" -Text. Daher weiss ich auch, dass mein Initramfs-Skript läuft.
Aber blind das Kennwort eingeben nicht zielführend für mich....
Danke für weitere Hinweise & Ideen |
|
Back to top |
|
|
firefly Watchman
Joined: 31 Oct 2002 Posts: 5326
|
Posted: Mon Jan 22, 2024 8:23 pm Post subject: |
|
|
Kann es sein dass du auf deinem neuen System uefi nutzt zum booten des systems?
Das ganze wirkt so als ob die Grafikausgabe auf einen nicht untersstützten wert gesetzt wird, wodurch das Display "aussteigt" und dunkel bleibt.
Probier mal folgende grub config
insmod all_video
Quote: | menuentry 'Gentoo' {
echo "Starte Gentoo Linux"
root=hd0,1
linux /gentoo nomodeset
initrd /initramfs
} |
Ansonsten ist der von dir gepostete inhalt der grub.cfg so korrekt?
Denn du hast da ein schreibfehler in der zeile für "gfxpayload" drinn
statt gfxpayload steht dort gfxpypayload
Laut dieser Quelle (https://github.com/houstar/ppc64le/blob/master/sys-boot/grub/files/grub.cfg.example) wäre der video part so "korrekt"
Quote: | # Output resolution for GRUB (eg. 1024x768 or 'auto').
gfxmode=auto
# Output resolution for Linux (VESAFB only).
# 'keep' means use the same resolution as GRUB.
# For other framebuffer drivers, pass a resolution using the video= kernel param.
gfxpayload=keep
# Load all video drivers.
insmod all_video |
_________________ Ein Ring, sie zu knechten, sie alle zu finden,
Ins Dunkel zu treiben und ewig zu binden
Im Lande Mordor, wo die Schatten drohn. |
|
Back to top |
|
|
firefly Watchman
Joined: 31 Oct 2002 Posts: 5326
|
Posted: Mon Jan 22, 2024 8:31 pm Post subject: |
|
|
Und auch deine gfxmode angabe wirkt kaputt.
Zum einen gibt es keine auflösung von 600x800 in VESA (https://www.gnu.org/software/grub/manual/grub/html_node/gfxmode.html#gfxmode). Und zum anderen könnte es auch kein support für 32bit Farbtiefe geben sondern nur 24Bit
Um für deine system kompatible Werte zu finden (wenn du auto nicht verwenden möchtest) dann kannst du mit einem der folgenden befehle (auf der grub shell) die möglichen Werte dir ausgeben lassen
vbeinfo oder videoinfo (mit aktueller grub 2 version) _________________ Ein Ring, sie zu knechten, sie alle zu finden,
Ins Dunkel zu treiben und ewig zu binden
Im Lande Mordor, wo die Schatten drohn. |
|
Back to top |
|
|
ji7 n00b
Joined: 21 Jan 2024 Posts: 6
|
Posted: Tue Jan 23, 2024 5:24 pm Post subject: |
|
|
Vielen Dank,
jepp die Tippfehler bei gfxpypyload und 640 bzw 600 waren dämlich.
Leider haben die Tipps nichts bewirkt. Ich sehe nur die Kernel-Ausgaben und keine meines Initramfs-Skriptes
(erst wenn ich Strg Alt Entf drücke und einen Restart auslöse, wechselt das Bild für eine Sekunde auf den Initframfs-Ausgabebildschirm und ich kann mein BOOT-ASCII-Schriftzug erkennen. Dann jedoch startet der Computer neu )
Leider brachte auch der Kernel-Parameter quiet keine Abhilfe - es werden viel weniger Kernel-Ausgaben erzeugt, aber der Initramfs-Ausgabe-Bildschirm bleibt "verdeckt" bis ich Strg Alt Entf drücke
Danke |
|
Back to top |
|
|
firefly Watchman
Joined: 31 Oct 2002 Posts: 5326
|
Posted: Tue Jan 23, 2024 6:43 pm Post subject: |
|
|
Es wirkt so als ob da was nicht sauber initialisiert ist zum Zeitpunkt wo dein script die echo ausgaben macht.
Was ist das für ein test system? Ist das eine VM oder ein echter PC auch mit uefi?
Gut möglich dass es nur zufall ist das es auf deinem test system funktioniert.
Hier hatte jemand anders das gleiche Problem: https://forums.gentoo.org/viewtopic-t-1008506-start-0.html
Soweit ich das sehe wurde zum schluss im initramfs script deutlich mehr setup betrieben damit der framebuffer auch im initramfs context sauber initialisiert ist bzw. ausgaben auf dem framebuffer ausgegeben werden. _________________ Ein Ring, sie zu knechten, sie alle zu finden,
Ins Dunkel zu treiben und ewig zu binden
Im Lande Mordor, wo die Schatten drohn. |
|
Back to top |
|
|
ji7 n00b
Joined: 21 Jan 2024 Posts: 6
|
Posted: Sat Jan 27, 2024 5:11 pm Post subject: |
|
|
Hi,
danke für die Antwort =)
mein Testsystem ist ein Notebook mit UEFI und habe es mittlerweile auch auf einem weiteren System ausprobiert - funktioniert. Aber leider nicht auf dem gewünschten System
Der größte Unterschied zwischen den Geräten ist die CPU mit integrierter Grafikkarte. Das nicht funktionierende System hat einen AMD Ryzen integrierter AMD-VEGA-GPU. (die Firmware ist im Kernel integriert)[/code]
Auch der Thread löste nicht mein Problem, selbst wenn ich die div. Zeilen aus dem Thread
Code: |
[ -h /dev/fd ] || ln -fs /proc/self/fd /dev/fd
[ -h /dev/stderr ] || ln -fs /proc/self/fd/2 /dev/stderr
[ -h /dev/stdin ] || ln -fs /proc/self/fd/0 /dev/stdin
[ -h /dev/stdout ] || ln -fs /proc/self/fd/1 /dev/stdout
exec 0</dev/console 1>/dev/console 2>&1
|
in mein Initramfs-Skript einbinde. |
|
Back to top |
|
|
ji7 n00b
Joined: 21 Jan 2024 Posts: 6
|
Posted: Sat Jan 27, 2024 7:08 pm Post subject: |
|
|
ich habe jetzt in mein Initramfs-Skript
einen (Busybox)-Shell-Aufruf eingefügt (/bin/sh).
Tatsächlich wird dieser auch ausgeführt - allerdings genauso unsichtbar
Wenn ich "blind" tippe, dann werden die getippten Befehle auch ausgeführt. Dies kann ich zumindest sehen, sobald ich mit Steuerung Alt und Entfernen den Neustart imitiere.
ich habe zwar mit Code: | mknod --mode=0660 /dev/tty c 5 0 | ein TTY erstellt, aber trotzdem sehe ich kurz folgende Fehlermeldung.
Code: |
sh: can't access tty: job control turned off
|
Leider komme ich nicht wirklich weiter und hoffe auf eure Hilfe... |
|
Back to top |
|
|
schmidicom Veteran
Joined: 09 Mar 2006 Posts: 1974 Location: Schweiz
|
Posted: Sun Jan 28, 2024 9:10 am Post subject: |
|
|
ji7 wrote: | ...
Der größte Unterschied zwischen den Geräten ist die CPU mit integrierter Grafikkarte. Das nicht funktionierende System hat einen AMD Ryzen integrierter AMD-VEGA-GPU. (die Firmware ist im Kernel integriert)
... |
Mach das besser nicht, ich habe selbst fast nur AMD System in betrieb und ich kann es definit nicht empfehlen den Grafiktreiber fest in der Kernel zu packen. Besser als Modul konfigurieren und für den grafischen Boot Vorgang etwas kleineres verwenden das auf dem aufbaut was vom BIOS/UEFI und/oder dem Bootloader bereits initialisiert wurde.
Bei meinen Installationen ist das die Kombination von diesen beiden die fest im Kernel sind und im frühen Bootprozess eine grafische Ausgabe (würde auch für Plymouth reichen) ermöglichen:
Quote: | CONFIG_DRM_SIMPLEDRM & SYSFB_SIMPLEFB |
Die eigentlichen Grafiktreiber werden dann im Verlauf des Bootprozess als Modul nachgeladen und der Kernel kann problemlos auf diesen Treiber wechseln. Das hat dann auch den angenehmen Vorteil das man keine Firmware in den Kernel packen muss.
Vielleicht löst das ja dein Problem. _________________ Lenovo - ThinkPad P16s Gen 2 - 21K9CTO1WW |
|
Back to top |
|
|
ji7 n00b
Joined: 21 Jan 2024 Posts: 6
|
Posted: Mon Feb 05, 2024 10:03 pm Post subject: |
|
|
Danke Ihr seit großartig.
Nach euren Tipps habe ich den Kernel nun aber komplett neu "configuriert":
Code: |
CONFIG_FB=y
CONFIG_FB_EFI=y
CONFIG_FB_CORE=y
CONFIG_FB_NOTIFY=y
CONFIG_FB_CFB_FILLRECT=y
CONFIG_FB_CFB_COPYAREA=y
CONFIG_FB_CFB_IMAGEBLIT=y
CONFIG_FB_IOMEM_HELPERS=y
CONFIG_FRAMEBUFFER_CONSOLE=y
CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y
CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y
CONFIG_AGP_AMD64=y
CONFIG_DRM_AMDGPU=y
CONFIG_DRM_AMDGPU_SI=y
CONFIG_DRM_AMDGPU_CIK=y
CONFIG_DRM_AMD_ACP=y
CONFIG_DRM_AMD_DC=y
CONFIG_DRM_AMD_DC_FP=y
CONFIG_DRM_AMD_DC_SI=y
CONFIG_DRM_AMD_SECURE_DISPLAY=y
|
Entschuldigt die späte Antwort, aber wegen meinem Schichtdienst musste ich kurzfristig umdiponieren. Ich hoffe niemandens Zeit deswg. gestohlen zuhaben und bin sehr dankbar, dass es läuft.
Jetzt widme ich mich Xorg.[/code] |
|
Back to top |
|
|
|