Linux Kernel Debug con Eclipse

Molto spesso le persone mi guardano stralunate quando gli dico che sto cercando di mettere mano al codice del kernel linux per cercare di renderlo modulare. La prima reazione è senz’altro quella di dire: “a che serve? Tanto linux va bene così com’è.”.  La mia risposta è senz’altro banale quanto ovvia,  non pretendo mica di diventare ricco con una cosa che faccio durante quelle domeniche pomeriggio molto noise, anche perchè, stando a L’Aquila, non è che ci sia proprio un granchè da fare. C’è chi gioca a scacchi su internet, chi guarda la tv o chi semplicemente dorme sul divano. A me piace provare nuove cose al pc e/o leggere un bel librozzo di teoria, di quella sana teoria che sa far storcere il naso a tutti. Le difficoltà che si incontrano quando si cerca di capire come funziona il kernel sono senza dubbio capire che, benchè si conosca il C e l’assembler, se non si ha un libro o manuale di riferimento del kernel non si va molto lontano. Linux sarà open-source, ma quando a documentazione del kernel lascia un po a desiderare, quanto meno la cartella doc dei sorgenti ha uno stile organizzativo che a me non piace e i commenti sul codice  sono semplicemente… semplicemente non ci sono! Per iniziare con la comprensione, consiglio a tutti di leggere almeno questi due libri, facili e molto esaustivi:

Se invece si ritiene che non si hanno le capacità o le basi per la programmazione di sistema in linux, un’altro ottimo testo per imparare ad usare le syscall di linux è: Linux System Programming. Partendo da questi libri, ma che non siamo di certo obbligati a leggerli per intero per renderci conto di come vanno le cose, passiamo a sporcarci le mani. Ovviamente, se devi modificare il codice del kernel linux, usa linux come sistema per il tuo ambiente operativo. Molti nello sviluppo di applicazione embedded Linux-based usano windows equipaggiato con cygwin,  tool-chain  e croos-compilatori. Ora capisco chi deve implementare su una architettura diversa, tipo un’ARM o Mips il quale ha senz’altro bosogno di un cross-compilatore, ma complicarsi la vita per configurare e compilare il kernel su un OS diverso e’ come iniziare a studiare matematica partendo dall’ipotesi di Riemann, questo per dire che è una congettura sperare di compilare il kernel usando Windows.  Con linux ed eclipse e’ estramamente semplice avere un’ambiente per la visione e modifica del codice e anche per effettuarne il debug in modo molto versatile con GDB. Riporto di seguito il link dove potete trovare un’interessate tutorial, con tanto di screen-shot per configurare la cosa: http://issaris.blogspot.com/2007/12/download-linux-kernel-sourcecode-from.html. Vi informo che dovrete procuravi, oltre ai sorgenti del kernel linux una versione recente di Eclipse, anche se credo sia meglio prendere la 3.4 o ganymede per gli esperimenti. Per far partire eclipse sotto ubuntu assicuratevi di aver installato la Java Virtual Machine rilasciata da SUN e non quella open-source (OpenJVM). Il motivo è che la seconda è molto meno performante ed eclipse potrebbe metterci una vita per caricare.  Un’altro ottimo tool per il debug è ovviamente un simulatore e Qemu sembra proprio fare al caso, in quanto ci permette di testare il kernel senza neanche aver bisogno di costruire un’immagine del disco.

Leave a Reply

*
To prove that you're not a bot, enter this code
Anti-Spam Image