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