Volevo creare il mio kernel personalizzato con una tabella syscall diversa. (stesse syscalls ma in diverse posizioni/numeri)Modifica del numero di telefono del sistema linux
Stavo lavorando al kernel 3.2.29.
Modifica del kernel era piuttosto facile:
1) cambiando la posizione syscall in arco/86/kernel/syscall_table_32.S
2) cambiando il numero di macro syscall in arch/x86 /include/asm/unistd_32.h
3) la compilazione e l'installazione del nuovo kernel
ho acceso le chiamate di sistema intorno: sys_open
preso il posto e il numero di sys_read
, e viceversa.
Ho pensato che se ho compilato glibc
con le intestazioni kernel modificate, avrei potuto avere un sistema in esecuzione, ma sfortunatamente, non era abbastanza e il mio sistema non si avviava.
Mi manca qualcosa? Cos'altro devo fare per avere un sistema in esecuzione?
I passi che ho preso sono:
1) costruzione e installazione del kernel, come descritto nella mia interrogazione
2) estrarre i nuovi header del kernel usando make headers_install INSTALL_HDR_PATH=[path]
3) costruzione glibc con il parametro --with-headers=[path/include]
4) Ho usato un cd live per accedere esternamente al file system per Installare il nuovo glibc
, utilizzando il make install install_root=[the original file system]
(in modo che il sistema non si romperà durante l'installazione)
Mi auguro che il nuovo glibc
è stato costruito correttamente, ma non sono sicuro.
Dopo di che, quando si avvia il sistema, lo stivale si ferma in (initrafms) schermo shell: Credo che ho bisogno di ricostruire il initrd
, ma come posso compilare in base alla nuova tabella chiamata di sistema?
Si prega di non chiudere le domande sul tema, soprattutto quando hanno upvotes e risposte. –
Perché si dovrebbe farlo? –
@JonasWielicki prima che qualcuno lo "aiutasse" a risolvere il problema, è stato spiegato che questa era una sperimentazione successiva a un incarico scolastico per aggiungere un nuovo syscall. Mentre di dubbia utilità, il cambiamento qui contemplato indubbiamente richiama l'attenzione su come funzionano le cose e ci sono molte dipendenze. Hacking su un sistema da cui nessuno dipende può essere un ottimo modo per imparare le cose. –