Il mio gusto personale per lo sviluppo del kernel Linux è Debian. Ora per i tuoi punti:
-
Come probabilmente avrai intuito, Ubuntu non apporta nulla di nuovo al kernel per facilitare lo sviluppo, a parte ciò che è già disponibile in Debian. Per es. make_kpkg è una funzionalità Debian e non Ubuntu. Ecco alcuni collegamenti per iniziare le comuni attività di sviluppo del kernel Linux in Debian:
- Capitolo 4 - Attività comuni relative al kernel del Debian Linux Kernel Handbook
- Capitolo 10 - Debian e il kernel di Debian GNU/Linux FAQ
-
Il modo più semplice per eseguire il debug del kernel è utilizzare QEMU e GDB. Alcuni link per iniziare:
- http://files.meetup.com/1590495/debugging-with-qemu.pdf
- http://www.cs.rochester.edu/~sandhya/csc256/assignments/qemu_linux.html
Tuttavia, dovresti essere consapevole che questo metodo non è praticabile per determinati scenari come il debug di problemi hardware specifici e simili, per i quali sarebbe meglio utilizzare il debug seriale fisico e l'hardware reale. Per questo puoi usare KGDB (funziona anche usando ethernet). KDB è anche una buona scelta. Oh, e a proposito, sia KGDB che KDB sono stati uniti nel kernel Linux. Maggiori informazioni su questi due qui. Un altro metodo interessante, che funziona meravigliosamente per problemi non legati all'hardware, è l'utilizzo del kernel Linux in modalità utente. L'esecuzione del kernel in modalità utente come qualsiasi altro processo consente di eseguirne il debug proprio come qualsiasi altro programma (esempi). Maggiori informazioni su Linux in modalità utente qui. UML fa parte del kernel Linux dalla 2.6.0 , quindi puoi compilare qualsiasi versione del kernel ufficiale superiore a quella in modalità UML seguendo questi passaggi.
-
Vedi il punto 2. Sfortunatamente qui non esiste un metodo migliore, poiché ogni strumento/metodo ha i suoi pro e contro.
Se stai sviluppando per una piattaforma integrata che non è basata su hardware i386, dovrai eseguire la compilazione incrociata. Il progetto Emdebian fornisce toolchain da sviluppare per molte architetture (ARM, m68k, MIPS e altre) su PC (i386 o amd64). Ciò significa che sotto Debian, puoi semplicemente aggiungere i repository e apt-get install la toolchain per i target di tua scelta.
Le sonde JTAG esistono, ma sono piuttosto costose (e le aziende che le costruiscono hanno contratti esclusivi). Il modo migliore per eseguire il debug del codice del kernel è avviarlo in kvm o qemu con gdbserver all'interno dell'emulazione.