Erstmal danke für die Antworten, aber das hat leider noch nicht zur Lösung geführt.
@rhHeini:
So ganz sehe ich beim Thema initramfs noch nicht durch, aber ich dachte so ein initrd-Image stellt alle für den Bootvorgang benötigten Dateien zur Verfügung, so dass diese Dateien vor dem Mounten der root-Partition verwendet werden können.
Das initrd-Image wird doch vor dem Booten als eine Art Partition gemountet so dass der Kernel auf die Module und Befehle in dieser "init"-Partition zugreifen kann. Also sollte das fbsplash-Script während des Bootvorgangs die Befehle
pgrep und
tail, die ich in das initrd-Image integriert habe, doch auf dieser "init"-Partition finden. Oder liege ich da jetzt komplett falsch?
@habakug:
Habe in
/usr/share/initramfs-tools/hook-functions gelesen dass
copy_exec als Zielverzeichnis das Verzeichnis der Quelldatei verwendet, wenn kein Ziel angegeben wurde. Als ich mir den Inhalt des initrd-Images angeschaut hatte, waren die Dateien auch in dem korrekten Verzeichnis vorhanden. Habe jetzt nochmal das Ziel für den Kopiervorgang in das Hook-Script eingetragen. Leider hat das nichts geändert.
Auszug aus
/etc/initramfs-tools/hooks/binaries_for_fbsplash
Code: Alles auswählen
if [ -x "/usr/bin/pgrep" ]; then
copy_exec /usr/bin/pgrep /bin/pgrep
fi
if [ -x "/usr/bin/tail" ]; then
copy_exec /usr/bin/tail /bin/tail
fi
@TBT:
Dein Link zeigt wie man ein Modul zum initrd-Image hinzufügt. Leider kenne ich mich mit Modulen überhaupt nicht aus. Ich weiß nicht welches Modul ich zum Testen mal laden könnte und wie ich dann während des Bootvorgangs den Zugriff auf dieses Modul testen kann.
Ein Script in
/etc/initramfs-tools/hooks habe ich schon angelegt. Es heißt "
binaries_for_fbsplash". Den Inhalt habe ich schon zu Beginn des Themas gepostet. Ein
update-initramfs hab ich natürlich auch ausgeführt. Das Script läuft auch sauber durch und kopiert die Dateien
pgrep und
tail in das initrd-Image. Hab mir den Inhalt des Images anzeigen lassen und die beiden Befehle waren in dem angegebenen Ordner zu finden.
Hier mal die Ausgabe von update-initramfs:
Code: Alles auswählen
rechenknecht:/boot# update-initramfs -k 2.6.26-splash -c -v
update-initramfs: Generating /boot/initrd.img-2.6.26-splash
...
Calling hook binaries_for_fbsplash
Adding binary /usr/bin/pgrep
Adding library /lib/libproc-3.2.7.so
Adding binary /usr/bin/tail
Building cpio /boot/initrd.img-2.6.26-splash.new initramfs
Und hier der relevante Inhalt von
/boot/initrd.img-2.6.26-splash
Code: Alles auswählen
rechenknecht:/tmp/initrd# zcat /boot/initrd.img-2.6.26-splash | cpio -i
rechenknecht:/tmp/initrd# ls -l bin
insgesamt 1108
-rwxr-xr-x 1 root root 376108 5. Jun 15:37 busybox
-rwxr-xr-x 1 root root 2252 5. Jun 15:37 cat
-rwxr-xr-x 1 root root 608 5. Jun 15:37 chroot
-rwxr-xr-x 1 root root 4812 5. Jun 15:37 cpio
-rwxr-xr-x 1 root root 3292 5. Jun 15:37 dd
-rwxr-xr-x 1 root root 740 5. Jun 15:37 dmesg
-rwxr-xr-x 1 root root 432 5. Jun 15:37 false
-rwxr-xr-x 1 root root 3244 5. Jun 15:37 fstype
-rwxr-xr-x 1 root root 26548 5. Jun 15:37 gunzip
-rwxr-xr-x 1 root root 828 5. Jun 15:37 halt
-rwxr-xr-x 1 root root 1296 5. Jun 15:37 insmod
-rwxr-xr-x 1 root root 10460 5. Jun 15:37 ipconfig
-rwxr-xr-x 1 root root 6672 5. Jun 15:37 kbd_mode
-rwxr-xr-x 1 root root 700 5. Jun 15:37 kill
-rwxr-xr-x 1 root root 1008 5. Jun 15:37 ln
-rwxr-xr-x 1 root root 35048 5. Jun 15:37 loadkeys
-rwxr-xr-x 1 root root 4404 5. Jun 15:37 minips
-rwxr-xr-x 1 root root 1676 5. Jun 15:37 mkdir
-rwxr-xr-x 1 root root 1396 5. Jun 15:37 mkfifo
-rwxr-xr-x 1 root root 1532 5. Jun 15:37 mknod
-rwxr-xr-x 1 root root 1696 5. Jun 15:37 mount
-rwxr-xr-x 1 root root 6560 5. Jun 15:37 nfsmount
-rwxr-xr-x 1 root root 888 5. Jun 15:37 nuke
-rwxr-xr-x 1 root root 12968 5. Jun 15:37 pgrep
-rwxr-xr-x 1 root root 584 5. Jun 15:37 pivot_root
-rwxr-xr-x 1 root root 828 5. Jun 15:37 poweroff
-rwxr-xr-x 1 root root 680 5. Jun 15:37 readlink
-rwxr-xr-x 1 root root 828 5. Jun 15:37 reboot
-rwxr-xr-x 1 root root 3116 5. Jun 15:37 resume
-rwxr-xr-x 1 root root 1868 5. Jun 15:37 run-init
-rwxr-xr-x 1 root root 376108 5. Jun 15:37 sh
-rwxr-xr-x 1 root root 53828 5. Jun 15:37 sh.shared
-rwxr-xr-x 1 root root 588 5. Jun 15:37 sleep
-rwxr-xr-x 1 root root 440 5. Jun 15:37 sync
-rwxr-xr-x 1 root root 45060 5. Jun 15:37 tail
-rwxr-xr-x 1 root root 428 5. Jun 15:37 true
-rwxr-xr-x 1 root root 800 5. Jun 15:37 umount
-rwxr-xr-x 1 root root 1552 5. Jun 15:37 uname
-rwxr-xr-x 1 root root 26548 5. Jun 15:37 zcat
Ich wollte mal wissen welche Dateien während des Bootens vorhanden sind, also habe ich den Befehl
ls -l /bin/p* in das Script
/etc/init.d/splashutils eingefügt. Im boot-Log stand nach dem Neustart dann folgendes:
Code: Alles auswählen
Fri Jun 5 15:34:44 2009: lrwxrwxrwx 1 root root 16 Dec 11 15:59 /bin/pidof -> ../sbin/killall5
Fri Jun 5 15:34:44 2009: -rwsr-xr-x 1 root root 30788 Dec 10 2007 /bin/ping
Fri Jun 5 15:34:44 2009: -rwsr-xr-x 1 root root 26616 Dec 10 2007 /bin/ping6
Fri Jun 5 15:34:44 2009: -rwxr-xr-x 1 root root 75724 Jan 11 22:49 /bin/ps
Fri Jun 5 15:34:44 2009: -rwxr-xr-x 1 root root 26800 Apr 4 2008 /bin/pwd
Es sind also während des Bootens (vor und nach dem Mounten der Platten) ganz andere Befehle in
/bin vorhanden als im initrd-Image.
Muss ich noch irgendetwas machen, damit die Befehle aus dem initrd-Image während des Bootens verfügbar sind? Vielleicht ein boot-Script in
/etc/initramfs-tools/scripts/?
Eins ist auch noch komisch. Die /boot-Partition ist auf /dev/sda1, es wird aber erst /dev/sda3 (root-Partition) gemountet und später im Bootvorgang werden dann die anderen Platten (darunter auch /dev/sda1) gemountet. Liegt wohl am Eintrag in
/boot/grub/menu.lst. Hoffe mal das ist so korrekt.
Auszug aus dem boot-Log mit den Befehlen
df -h und
mount im Script
/etc/init.d/splashutils:
Code: Alles auswählen
Fri Jun 5 13:55:39 2009: ********df -h*************
Fri Jun 5 13:55:39 2009: Filesystem Size Used Avail Use% Mounted on
Fri Jun 5 13:55:39 2009: /dev/sda3 28G 399M 26G 2% /
Fri Jun 5 13:55:39 2009: tmpfs 1014M 0 1014M 0% /lib/init/rw
Fri Jun 5 13:55:39 2009: udev 10M 100K 10M 1% /dev
Fri Jun 5 13:55:39 2009: tmpfs 1014M 0 1014M 0% /dev/shm
Fri Jun 5 13:55:39 2009: ********mount*************
Fri Jun 5 13:55:39 2009: /dev/sda3 on / type ext3 (rw,errors=remount-ro)
Fri Jun 5 13:55:39 2009: tmpfs on /lib/init/rw type tmpfs (rw,nosuid,mode=0755)
Fri Jun 5 13:55:39 2009: proc on /proc type proc (rw,noexec,nosuid,nodev)
Fri Jun 5 13:55:39 2009: sysfs on /sys type sysfs (rw,noexec,nosuid,nodev)
Fri Jun 5 13:55:39 2009: procbususb on /proc/bus/usb type usbfs (rw)
Fri Jun 5 13:55:39 2009: udev on /dev type tmpfs (rw,mode=0755)
Fri Jun 5 13:55:39 2009: tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev)
Fri Jun 5 13:55:39 2009: devpts on /dev/pts type devpts (rw,noexec,nosuid,gid=5,mode=620)
Fri Jun 5 13:55:39 2009: *********************
Fri Jun 5 13:55:39 2009: Mounting local filesystems...done.
Fri Jun 5 13:55:39 2009: Activating swapfile swap...done.
Fri Jun 5 13:55:39 2009: ********df -h*************
Fri Jun 5 13:55:39 2009: Filesystem Size Used Avail Use% Mounted on
Fri Jun 5 13:55:39 2009: /dev/sda3 28G 399M 26G 2% /
Fri Jun 5 13:55:39 2009: tmpfs 1014M 0 1014M 0% /lib/init/rw
Fri Jun 5 13:55:39 2009: udev 10M 100K 10M 1% /dev
Fri Jun 5 13:55:39 2009: tmpfs 1014M 0 1014M 0% /dev/shm
Fri Jun 5 13:55:39 2009: /dev/sda1 274M 79M 181M 31% /boot
Fri Jun 5 13:55:39 2009: /dev/sda8 184G 99G 76G 57% /home
Fri Jun 5 13:55:39 2009: /dev/sda7 1.9G 35M 1.8G 2% /tmp
Fri Jun 5 13:55:39 2009: /dev/sda5 46G 3.6G 40G 9% /usr
Fri Jun 5 13:55:39 2009: /dev/sda6 33G 26G 5.0G 84% /var
Fri Jun 5 13:55:39 2009: ********mount*************
Fri Jun 5 13:55:39 2009: /dev/sda3 on / type ext3 (rw,errors=remount-ro)
Fri Jun 5 13:55:39 2009: tmpfs on /lib/init/rw type tmpfs (rw,nosuid,mode=0755)
Fri Jun 5 13:55:39 2009: proc on /proc type proc (rw,noexec,nosuid,nodev)
Fri Jun 5 13:55:39 2009: sysfs on /sys type sysfs (rw,noexec,nosuid,nodev)
Fri Jun 5 13:55:39 2009: procbususb on /proc/bus/usb type usbfs (rw)
Fri Jun 5 13:55:39 2009: udev on /dev type tmpfs (rw,mode=0755)
Fri Jun 5 13:55:39 2009: tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev)
Fri Jun 5 13:55:39 2009: devpts on /dev/pts type devpts (rw,noexec,nosuid,gid=5,mode=620)
Fri Jun 5 13:55:39 2009: /dev/sda1 on /boot type ext3 (rw)
Fri Jun 5 13:55:39 2009: /dev/sda8 on /home type ext3 (rw)
Fri Jun 5 13:55:39 2009: /dev/sda7 on /tmp type ext3 (rw)
Fri Jun 5 13:55:39 2009: /dev/sda5 on /usr type ext3 (rw)
Fri Jun 5 13:55:39 2009: /dev/sda6 on /var type ext3 (rw)
Fri Jun 5 13:55:39 2009: *********************
Ich hoffe ihr habt noch paar Tricks parat.
Freundliche Grüße
Michael