Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
[gelöst] initramfs Ausgabe wird nicht angezeigt
View unanswered posts
View posts from last 24 hours
View posts from last 7 days

 
Reply to topic    Gentoo Forums Forum Index Deutsches Forum (German)
View previous topic :: View next topic  
Author Message
ji7
n00b
n00b


Joined: 21 Jan 2024
Posts: 6

PostPosted: Sun Jan 21, 2024 9:16 pm    Post subject: [gelöst] initramfs Ausgabe wird nicht angezeigt Reply with quote

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
View user's profile Send private message
schmidicom
Veteran
Veteran


Joined: 09 Mar 2006
Posts: 1970
Location: Schweiz

PostPosted: Mon Jan 22, 2024 6:35 am    Post subject: Reply with quote

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
View user's profile Send private message
ji7
n00b
n00b


Joined: 21 Jan 2024
Posts: 6

PostPosted: Mon Jan 22, 2024 5:18 pm    Post subject: Reply with quote

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
View user's profile Send private message
firefly
Watchman
Watchman


Joined: 31 Oct 2002
Posts: 5317

PostPosted: Mon Jan 22, 2024 8:23 pm    Post subject: Reply with quote

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
View user's profile Send private message
firefly
Watchman
Watchman


Joined: 31 Oct 2002
Posts: 5317

PostPosted: Mon Jan 22, 2024 8:31 pm    Post subject: Reply with quote

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
View user's profile Send private message
ji7
n00b
n00b


Joined: 21 Jan 2024
Posts: 6

PostPosted: Tue Jan 23, 2024 5:24 pm    Post subject: Reply with quote

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
View user's profile Send private message
firefly
Watchman
Watchman


Joined: 31 Oct 2002
Posts: 5317

PostPosted: Tue Jan 23, 2024 6:43 pm    Post subject: Reply with quote

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
View user's profile Send private message
ji7
n00b
n00b


Joined: 21 Jan 2024
Posts: 6

PostPosted: Sat Jan 27, 2024 5:11 pm    Post subject: Reply with quote

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
View user's profile Send private message
ji7
n00b
n00b


Joined: 21 Jan 2024
Posts: 6

PostPosted: Sat Jan 27, 2024 7:08 pm    Post subject: Reply with quote

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
View user's profile Send private message
schmidicom
Veteran
Veteran


Joined: 09 Mar 2006
Posts: 1970
Location: Schweiz

PostPosted: Sun Jan 28, 2024 9:10 am    Post subject: Reply with quote

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
View user's profile Send private message
ji7
n00b
n00b


Joined: 21 Jan 2024
Posts: 6

PostPosted: Mon Feb 05, 2024 10:03 pm    Post subject: Reply with quote

Danke Ihr seit großartig. :D

Nach euren Tipps habe ich den Kernel nun aber komplett neu "configuriert":
Code:
make defconfig

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
View user's profile Send private message
Display posts from previous:   
Reply to topic    Gentoo Forums Forum Index Deutsches Forum (German) All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum