8.1 Widerspruch: init läuft, obwohl execve zurückkehrtFolgende Boot-Ausgabe sehe ich: ... Freeing unused kernel memory: 24k freed (0xdc000 - 0xe1000) /etc/init done simpleinit.c: main() started Shell invoked to run file: /etc/rc Command: hostname cobra1 ... Zeitlich gesehen ist also zuerst der Aufruf: run_init_process("/bin/init"); printk("/bin/init done\n"); run_init_process("/bin/sh"); printk("/bin/sh done\n"); Mit run_init_process fogendermaßen definiert: static void run_init_process(char *init_filename) { argv_init[0] = init_filename; execve(init_filename, argv_init, envp_init); } also "init" wieder zurückgekehrt, bevor der "init" auch wirklich zeitlich losläuft. In "init"(simpleinit.c) habe ich folgendes codiert: int main(int argc, char *argv[]) { int i; struct sigaction sa; /* * setup all the signal handlers here */ printf("simpleinit.c: main() started\n"); memset(&sa, 0, sizeof(sa)); ... Copyright © Andreas Birkert Letzte Aktualisierung am 20. Dezember 2013 |