Questo articolo spiega brevemente il kernel Linux è e come sfogliare il suo codice sorgente.
Questo tutorial è ottimizzato per utenti e programmatori di Linux inesperti che vogliono leggere il codice sorgente del kernel o diventare sviluppatori di kernel Linux. Il kernel Linux è universale; Pertanto, il presente documento è utile per tutte le distribuzioni Linux.
Leggendo questo articolo, capirai cos'è il kernel, come è strutturato e come sfogliare i suoi componenti. Questo articolo è stato inizialmente scritto nel 2019 e aggiornato nel 2022.
Qual è il kernel Linux e come sfogliarlo
Il kernel Linux è il componente principale che consente l'interazione tra il software e l'hardware con l'aiuto dei driver di dispositivo. Puoi pensare al kernel Linux come un traduttore che consente la comunicazione tra i programmi, l'hardware e l'interfaccia utente.
Imparare a sfogliare il kernel Linux è il primo passo per qualsiasi programmatore che vuole diventare uno sviluppatore del kernel. È anche utile per i programmatori o gli utenti che desiderano leggere il suo codice sorgente o modificarlo.
La struttura del kernel Linux
Il kernel Linux è strutturato con directory e sottodirectory note come "albero del kernel", gli utenti possono navigare per accedere a sezioni specifiche dell'intero codice. Ciò consente agli utenti e agli sviluppatori di concentrarsi su parti specifiche del codice.
Ad eccezione della distribuzione di Linux Slackware, il cui kernel è mantenuto da una sola persona, il resto delle attività di divisione della comunità degli ENORME sviluppatori di Linux Distribuzioni basati sull'albero del kernel. Al contrario, diversi sviluppatori si concentrano sui driver, altri si concentrano sulla sicurezza e altri sulla virtualizzazione.
L'albero di origine del kernel è la seguente struttura descritta attraverso la quale gli utenti possono sfogliare il codice sorgente:
Visualizzazione e navigazione del codice sorgente del kernel Linux
Di solito, quando installiamo Linux, non includiamo il codice sorgente. Possiamo installare Linux e mantenere il codice sorgente nel nostro sistema. Ma la maggior parte degli utenti lo scarta per scaricare un'immagine ISO più piccola. Dopotutto, puoi scaricare il codice sorgente in seguito se ne hai bisogno.
Se il codice sorgente del kernel è presente nel tuo sistema, puoi trovarlo nella directory/usr/src/linux-, dove deve essere sostituito con la versione del kernel del codice sorgente con cui hai a che fare.
Puoi anche trovare l'ultimo codice sorgente del kernel su https: // github.com/torvalds/linux.
Come puoi vedere nella schermata precedente o nell'URL fornito, all'interno dell'albero del codice sorgente, possiamo trovare le seguenti directory e file principali:
- arco: Questa directory contiene codici di origine per diverse architetture di sistema supportate dal kernel Linux.
- bloccare: La directory di layer I/O del blocco contiene codice per la gestione dei dispositivi a blocchi (come dischi rigidi, DVD, dischi floppy, ecc.) e le loro richieste.
- Cert: La directory CERTS contiene file certificati e segni per consentire le firme del modulo per il kernel di caricare moduli firmati. Ciò può essere utile per impedire l'esecuzione di codice dannoso all'interno di moduli del kernel come rootkit.
- Copia: Questo file ha informazioni sulle licenze per il codice sorgente
- CREDITI: Un elenco parziale di persone che hanno contribuito al codice sorgente del kernel Linux
- Cripto: Questa directory contiene cifre crittografiche, che gestiscono compiti crittografici e di compressione.
- Documentazione: Come suggerisce il nome, questa directory include tutta la documentazione su tutti i componenti del kernel.
- autisti: La directory dei driver contiene il codice sorgente per i driver di dispositivo per supportare l'hardware. All'interno di questa directory, troverai sottodirectory per ciascun hardware, come video, bluetooth, ecc. (qualsiasi hardware supportato).
- Fs: Questa directory contiene fonti per file system, inclusi file system virtuali, oltre a file system di lettura e scrittura.
- includere: Questa directory contiene intestazioni C per file di kernel, come funzioni per compilare il codice.
- dentro: La directory INIT contiene il codice sorgente relativo al processo di avvio e all'inizializzazione del kernel Linux. Il codice sorgente è archiviato in un file denominato Mainc.c all'interno della directory /init. Il codice inizializza il kernel e alcuni processi iniziali.
- IPC: Comunicazione tra process, come segnali e tubi.
- Kbuild: Il file KBuild indica i file di oggetti per VMlinuz.
- Kconfig: Il file KConfig viene utilizzato per disabilitare o abilitare le funzionalità del kernel. Gli utenti affrontano l'esecuzione del comando "make menuconfig".
- kernel: La directory del kernel include sottosistemi di base, come il codice di gestione del segnale Scheduler.
- lib: Questa directory include routine di libreria, operazioni di stringa comuni, operazioni dipendenti da hardware, routine di debug e codice di analisi della linea di comando.
- Licenze: Contiene le licenze da applicare alla sorgente del kernel e ai singoli file di origine, che possono avere licenze diverse. All'interno di questa directory, troverai quattro principali sottodirectory contenenti licenze supportate come LGPL-X, licenza Apache, ecc.
- Mantani: Il file dei manutentori mostra l'elenco dei manutentori del kernel e le istruzioni per inviare modifiche al kernel.
- Makefile: Questo file legge il .File di configurazione e build moduli e vmlinux.
- mm: Il kernel Linux gestisce hardware e memoria virtuale (SWAP). Questa è la directory in cui viene archiviato il codice sorgente per la gestione della memoria.
- netto: La directory net contiene lo stack di rete. Qui, puoi trovare il codice relativo ai protocolli di comunicazione, come IP, TCP e UP.
- Readme: Il file ReadMe si riferisce alle guide per gli sviluppatori del kernel nella directory della documentazione precedentemente descritta.
- Campioni: La directory dei campioni include il codice campione dei file di kernel e di configurazione.
- Script: Qui sono archiviati gli script necessari per costruire il kernel Linux.
- sicurezza: La sottodirectory di sicurezza contiene il framework di sicurezza Linux (Selinux) potenziato dalla sicurezza.
- suono: Qui, puoi trovare il sottosistema audio, inclusi driver audio, architetture del driver e codice relativo al suono, come ALSA.
- utensili: Qui ci sono strumenti per lo sviluppo del kernel compresso, come ACPI, CGROUP, Strumenti di test USB, modulo di test VHOST, strumenti GPIO, IIO e SPI e strumenti di politica tra energia.
- usr: qui, USR memorizza gli initRamfs, che radica il filesystem e l'inizio nella cache di memoria del kernel. Il codice incluso consente di eseguire il codice nello spazio utente nel processo di avvio quando il kernel non è completamente caricato.
- virt: La directory di virtualizzazione contiene il modulo KVM (Kernel Virtual Machine) per ipervisori, comprese le architetture.
Questi sono tutti file e directory principali inclusi nella directory della sorgente del kernel principale. Puoi sfogliare ogni sezione a seconda delle tue esigenze. Una volta compreso lo scopo di tutti i file e le directory sopra elencate, le sottodirectory sono piuttosto intuitive.
Conclusione
Come puoi vedere, questo articolo è stato scritto per gli utenti nuovi e medi per comprendere le basi del kernel Linux. Tuttavia, alcune conoscenze sullo sviluppo in Linux, hardware e caratteristiche del sistema operativo sono necessarie per l'uso pratico. La lezione precedente è eccellente come introduzione alla struttura del kernel Linux e alla distribuzione di Linux. Tieni presente che il kernel Linux si evolve periodicamente. Ecco perché manteniamo il contenuto precedentemente descritto aggiornato.
Speriamo che tu abbia trovato questo articolo utile. Continua a leggere Linuxhint per altri articoli professionali Linux.