initrd.cpio enthält nach laden durch den Linux-Kernel weniger Dateien?



  • ich habe einen Ordner in dem ich mein Root-System zusammenstelle für ein paar einfach Kernel+Init(C-Programm)+Bash Qemu-Platform-Tests unter ARM,SPARC,ALPHA usw.

    es gibt z.B. die Dateipfade .\bin\bash und .\bin\base64 darunter

    dann erzeuge ich mir daraus (mit einem Script) eine initrd.cpio mit

    find . | cpio -H newc -o > meine_initrd.cpio

    danach prüft das Script noch ob bestimmte Dateien auch wirklich in der cpio-Datei drinn sind

    in meinem C basiertem Kernel-Init prüfe ich die Pfade nochmal bevor ich mit vfork/exec "/bin/bash" ausführen - und zeige zusätzlich noch die Dateien im bin-Ordner an - alles mit C-Funktionen

    so funktioniert das z.B. bei ARM und SPARC problemlos - die cpio wird vom gleiche Script erzeugt - nur andere Kompiler-Settings

    auf ALPHA sind nach dem Lade durch den Kernel weniger Dateien im /bin-Ordner als im cpio wirklich drinn sind z.B. fehlt /bin/bash, \bin\base64 ist aber da - so ca. 30% aus der cpio fehlen - kann mir das jemand erklären?

    Es ist definitiv so das die /bin/bash im an qemu übergebenen cpio drinn ist - nur nicht mehr nach dem Kernel load



  • hier hat jemand was vergleichbares nur mit 2.6.x und MIPS

    http://stackoverflow.com/questions/31524636/files-disappearing-from-initramfs

    bei mir ist die initrd.cpio ~300MB gross, Kernel 4.7.0, gcc 6.1



  • und ich habe keine "built-in ramdisk using CONFIG_INITRAMFS_SOURCE" sondern übergebe meine initrd als Parameter an qemu


Anmelden zum Antworten