Bash aus C/C++ basiertem Kernel-Init starten



  • zum spielen haben ich mir Kernel für ein paar Qemu Platformen gebaut (SPARC,ARM,MIPS,PPC,ALPHA) und dazu ein kleines C/C++-Init geschrieben das mir ein paar Systemdaten wie Endianess, /proc/cpuinfo usw. ausgibt - also keine User, keine Bash usw. - nur Kernel + minimal Init

    Jetzt würde ich gerne die Bash direkt aus meinem init-Programm starten und darauf warten/blockieren das ich die Shell wieder mit "exit" beende

    habe dazu das gefunden: http://www.yolinux.com/TUTORIALS/ForkExecProcesses.html

    ich habe fork,exec(v,c,...) mir angeschaut bin mir aber nicht sicher was das richtige ist - mit system, popen oder sonstigen Shell nutzenden Befehlen will und kann ich nicht arbeiten

    ich denke vfork + exec könnte das richtige sein - oder?

    das ganze wuerde ich gerne mit der gesetzen environement Variable
    LD_TRACE_LOADED_OBJECTS vom ld.so machen (habe kein ldd) damit ich zusätzlich noch die Ausgabe der dynamischen Abhängigkeiten sehen kann

    http://man7.org/linux/man-pages/man8/ld.so.8.html



  • Gast3 schrieb:

    ich denke vfork + exec könnte das richtige sein - oder?

    Ja, die Kombination ist genau dazu da, einen neuen Prozess zu starten.



  • Danke dann probiere ich mal vfork und exec

    wie sieht es aus mit ld.so und der env-var LD_TRACE_LOADED_OBJECTS?
    kann ich einfach nur die env-var setzen und dann mit exec ausführen oder
    muss ich den Befehl direkt über ld.so starten?



  • hat alles geklappt - Danke


Anmelden zum Antworten