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
-
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