Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
FDD-book — Libro sui driver di dispositivo FreeBSD | Kitploit
Strumenti/GitHubGitHub/ebrandi/fdd-book
Sicurezza Sistemi EmbeddedReverse EngineeringDebuggerHacking HardwareSicurezza HardwareApprendimento e FormazionePercorsi e CorsiAnalisi del FirmwareLab e Pratica
GitHubebrandi/fdd-book

FDD-book

Libro sui driver di dispositivo FreeBSD

6005013 giorni faRevisionato da Kitploit

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi
Vedi Repository

Copertina del libro FreeBSD Device Drivers

FreeBSD Device Drivers

Dai primi passi alla maestria del kernel

di Edson Brandi · Versione 2.0 (Aprile 2026)

Licenza FreeBSD Pagine Stato Lingue


Informazioni su questo libro

FreeBSD Device Drivers: From First Steps to Kernel Mastery è un libro gratuito e open source che ti porta da "non ho mai scritto codice del kernel" a "so scrivere, debuggare e inviare driver FreeBSD di qualità produttiva". È un corso guidato, più che un manuale di consultazione, strutturato in 38 capitoli, 6 appendici e decine di laboratori pratici che compilano e caricano su un sistema FreeBSD 14.x reale.

Il libro si rivolge a lettori che vogliono imparare piuttosto che a lettori già qualificati. Inizia con i fondamenti di UNIX e il linguaggio C, procede passo dopo passo attraverso ogni concetto che il kernel ti richiederà, e solo allora apre la porta allo sviluppo di driver. Quando arrivi a DMA, interrupt e lavoro con PCI, il vocabolario ti sembrerà meritato, non imposto.

"La programmazione del kernel è pur sempre programmazione, solo con regole più esplicite, maggiori responsabilità e un po' più di potenza. Una volta capito questo, la paura lascia spazio all'entusiasmo." (dal Capitolo 1)

Perché questo libro?

Esistono già ottimi riferimenti sul kernel FreeBSD, tra cui man 9, l'Architecture Handbook e i documenti su Newbus. Quello che mancava era un unico testo che:

  • Parte da zero. UNIX, C e l'ambiente FreeBSD vengono insegnati prima di scrivere qualsiasi codice del kernel.
  • Si rivolge specificamente a FreeBSD 14.x. Ogni API, ogni esempio, ogni laboratorio è stato verificato rispetto all'albero dei sorgenti di FreeBSD 14.3.
  • Tratta i laboratori come elementi di prima classe. Circa la metà del tempo di studio consigliato è pratica. Gli stessi pattern (attach, cleanup, locking) ricorrono nei vari capitoli fino a diventare riflessi.
  • Costruisce un unico driver lungo tutto il libro. Il driver myfirst si evolve capitolo dopo capitolo, acquisendo sincronizzazione, poi accesso all'hardware, poi interrupt, poi DMA. Vedrai lo stesso codice maturare tra le tue mani.
  • Copre l'intero ciclo di vita. Da "Hello Kernel Module" fino all'invio di una revisione su Phabricator e all'integrazione di un driver nell'albero di FreeBSD.

A chi è rivolto questo libro

  • Principianti che sanno poco di C, UNIX o kernel ma sono disposti a imparare.
  • Sviluppatori curiosi di come i sistemi operativi funzionano realmente sotto il cofano.
  • Professionisti che già usano FreeBSD (o sistemi simili) e vogliono approfondire le loro conoscenze imparando come si costruiscono i driver nella pratica.

A chi non è rivolto questo libro

  • Lettori che cercano un manuale rapido da copia e incolla. Il libro privilegia la comprensione rispetto alle scorciatoie.
  • Sviluppatori di kernel esperti che non hanno bisogno delle basi. Il ritmo parte dal livello più elementare.
  • Lettori che desiderano un riferimento enciclopedico sull'hardware. L'attenzione è sullo sviluppo di driver FreeBSD nel mondo reale, non su specifiche esaustive di bus o dispositivi.

Cosa imparerai

Il libro è organizzato in sette parti che si basano l'una sull'altra:

Alla fine, avrai scritto e caricato i tuoi moduli del kernel, costruito un driver a caratteri, gestito interrupt e DMA reali, debuggato panico del kernel, profilato il tuo driver sotto carico e percorso ogni passo per contribuire con il tuo lavoro al Progetto FreeBSD.

Statistiche del libro

Indice completo

Clicca per espandere l'elenco completo dei capitoli

Parte 1: Fondamenti di FreeBSD, C e del kernel

  1. Introduzione: Dalla curiosità al contributo
  2. Configurare il tuo laboratorio
  3. Una dolce introduzione a UNIX
  4. Un primo sguardo al linguaggio di programmazione C
  5. Comprendere il C per la programmazione del kernel FreeBSD
  6. L'anatomia di un driver FreeBSD

Parte 2: Costruire il tuo primo driver

  1. Scrivere il tuo primo driver
  2. Lavorare con i file di device
  3. Leggere e scrivere su dispositivi
  4. Gestire input e output in modo efficiente

Parte 3: Concorrenza e sincronizzazione

  1. Concorrenza nei driver
  2. Meccanismi di sincronizzazione
  3. Timer e lavoro ritardato
  4. Code di task e lavoro differito
  5. Ulteriore sincronizzazione: condizioni, semafori e coordinazione

Parte 4: Integrazione hardware e a livello di piattaforma

  1. Accesso all'hardware
  2. Simulazione dell'hardware
  3. Scrivere un driver PCI
  4. Gestire gli interrupt
  5. Gestione avanzata degli interrupt
  6. DMA e trasferimento dati ad alta velocità
  7. Gestione dell'alimentazione

Parte 5: Debugging, strumenti e pratiche reali

Come leggere il libro

Il ritmo consigliato è un capitolo a settimana, con circa cinque ore di studio settimanali. Questo programma rende l'intero libro raggiungibile nel corso di un anno accademico. Alcuni capitoli (in particolare il Capitolo 4 sul C e i capitoli hardware della Parte 4) si estendono naturalmente su più settimane.

I laboratori sono fortemente raccomandati. La programmazione del kernel premia la memoria muscolare in un modo che pochi altri ambiti fanno. Lo stesso pattern di attach, la stessa catena di cleanup e la stessa struttura di locking appaiono capitolo dopo capitolo e driver dopo driver. Scrivere questi pattern, compilarli, caricarli in un kernel in esecuzione e vederli fallire di proposito è il modo più efficace per interiorizzarli.

Se conosci già C, UNIX e la forma generale di un kernel di sistema operativo, le note di percorso rapido lungo la Parte 1 ti indicano quali sezioni leggere con attenzione e quali puoi scorrere rapidamente.

Scarica il libro

La versione 2.0 è disponibile ora nella pagina delle release in tre lingue e tre formati:

Puoi anche sfogliare il sorgente Markdown direttamente nella directory content/, o compilare il libro tu stesso con scripts/build-book.sh.

Informazioni sulle traduzioni

La versione inglese è la versione originale e autorevole del libro. Le edizioni in portoghese brasiliano e spagnolo sono state tradotte utilizzando l'AI e non hanno ancora subito una revisione tecnica umana completa. Sono pubblicate per rendere il materiale accessibile a più lettori, ma potrebbero contenere errori di traduzione, formulazioni poco chiare o imprecisioni tecniche introdotte durante la traduzione.

Se qualcosa in un'edizione tradotta sembra poco chiaro, incoerente o tecnicamente dubbio, fai riferimento alla versione inglese come fonte di verità. L'aiuto per la revisione e il miglioramento delle traduzioni è ben accetto (vedi Contribuire più avanti).

Problemi noti in v2.0

Questa è una versione bozza di un libro molto grande. Alcune cose da tenere a mente:

  • Alcuni blocchi di codice sorgente nelle edizioni PDF, EPUB e HTML potrebbero oltrepassare i margini della pagina o andare a capo in modo poco elegante. Si tratta di problemi di presentazione che verranno migliorati in una versione futura; il contenuto stesso è corretto.
  • Se un esempio di codice è difficile da leggere in uno dei formati renderizzati, i file Markdown in questo repository sono la fonte di verità. Apri il file pertinente in content/ per una versione chiara.
  • La revisione delle traduzioni per pt_BR e es_ES è prevista nel prossimo futuro, in base al tempo libero dell'autore.

Struttura del repository```

FDD-book/ ├── content/ # Book content (Markdown) │ ├── chapters/ # Chapters by Part │ └── appendices/ # Appendices A-F ├── examples/ # Source code from the book ├── translations/ │ ├── pt_BR/ # Brazilian Portuguese (AI-translated) │ └── es_ES/ # Spanish (AI-translated) └── scripts/ # Build and utility scripts

root@kitploit:~
## Contributing

Contributi di ogni tipo sono benvenuti, incluse correzioni, chiarimenti, nuovi esempi, traduzioni e revisioni da parte di sviluppatori FreeBSD e studenti.

### Modalità di contribuzione

- **Contenuti:** aggiungere nuovi capitoli, perfezionare il materiale esistente
- **Revisione tecnica:** revisionare i capitoli per accuratezza rispetto a FreeBSD 14.x
- **Revisione delle traduzioni:** aiutare a revisionare e migliorare le edizioni tradotte con IA **pt_BR** e **es_ES**; parlanti nativi con esperienza in FreeBSD/kernel sono particolarmente i benvenuti
- **Nuove traduzioni:** aiutare a tradurre il libro in un'altra lingua
- **Codice:** migliorare esempi, script di build e strumenti
- **Problemi:** segnalare bug, errori fattuali, passaggi poco chiari o problemi di formattazione

### Segnalare un problema

Quando segnali un problema, includi:

- La versione linguistica che stavi leggendo (`en_US`, `pt_BR`, `es_ES`)
- Il formato utilizzato (PDF, EPUB, HTML o Markdown)
- Il capitolo o la sezione in cui appare il problema
- Una breve spiegazione del problema e una correzione suggerita se ne hai una

### Flusso di lavoro

1. Fai il fork del repository
2. Crea un branch: `git checkout -b feature/your-change`
3. Apporta le modifiche e testa la build con `scripts/build-book.sh`
4. Fai un commit con un messaggio chiaro: `git commit -m "Chapter 18: clarify BAR mapping"`
5. Esegui il push e apri una Pull Request

Quando ti blocchi durante la lettura del libro, **segnalare un problema aiuta**. Se un passaggio sembra sbagliato o un laboratorio fallisce inaspettatamente, ogni segnalazione rende il percorso del prossimo lettore più agevole.

## Domande frequenti

### Perché esiste questo libro?

La risposta onesta è che il FreeBSD Project ha bisogno di nuovi contributori, e il percorso verso il lavoro su kernel e driver è sempre stato più ripido di quanto dovrebbe essere. La maggior parte del materiale esistente presuppone che tu conosca già UNIX, che conosca già bene il C, che tu sappia già cos'è un bus e che tu sappia già come leggere un albero dei sorgenti del kernel. Questo funziona per le persone che sono già a buon punto. Fa molto poco per lo sviluppatore curioso che vuole iniziare.

L'obiettivo di questo libro è abbassare quella rampa di accesso. Anche solo un piccolo numero di lettori lo termina e prosegue per inviare patch, revisionare codice, scrivere nuovi driver o eventualmente diventare committer FreeBSD, il libro ha fatto il suo lavoro. **Formare la prossima generazione di contributori FreeBSD è la ragione per cui quest'opera è stata scritta**.

### Devo conoscere C prima di iniziare?

No. I capitoli 4 e 5 insegnano C da zero, concentrandosi sulle parti del linguaggio che contano per il lavoro sul kernel (puntatori, strutture, layout di memoria, preprocessore e convenzioni di chiamata). Se conosci già bene il C, i riquadri in quei capitoli ti dicono cosa sfogliare e cosa leggere attentamente.

### Devo conoscere UNIX o FreeBSD?

No. Il capitolo 2 ti guida nell'installazione di FreeBSD in una VM o su hardware reale, e il capitolo 3 introduce la riga di comando UNIX, il filesystem, i processi, i permessi e gli editor. Alla fine della Parte 1 avrai un laboratorio funzionante e il vocabolario per usarlo.

### Ho bisogno di hardware reale?

Per la maggior parte del libro, no. Una macchina virtuale con FreeBSD 14.x è sufficiente per le basi, i primi capitoli sui driver, la concorrenza e la sincronizzazione, e gran parte del materiale sul debugging. L'hardware reale diventa utile (ma ancora non strettamente necessario) quando si arriva ai capitoli su PCI, interrupt e DMA nella Parte 4. Quei capitoli sono scritti in modo che i concetti abbiano senso anche se li esegui solo in una VM.

### Questo mi aiuterà a scrivere driver Linux?

Indirettamente, sì. La disciplina della programmazione del kernel si trasferisce molto bene: strategia di locking, gestione della memoria, contesto di interrupt, mapping DMA, la differenza tra percorsi di codice bloccanti e non bloccanti, l'ordine di pulizia difensivo. Le API specifiche differiscono. Dopo aver letto questo libro non conoscerai il modello dei dispositivi Linux, ma ne riconoscerai i problemi e la forma delle sue soluzioni, e sarai in grado di leggere Linux Device Drivers (LDD) molto più facilmente.

### Perché proprio FreeBSD 14.x?

Ogni API, ogni esempio e ogni laboratorio sono stati pianificati per essere eseguiti sotto l'albero dei sorgenti di FreeBSD 14.3 e le corrispondenti pagine `man 9`. Prendere di mira una release specifica permette al libro di essere preciso riguardo a firme di funzioni, posizioni degli header e comportamento. I concetti sopravviveranno a 14.x per molti anni; i numeri di riga esatti e i piccoli dettagli delle API non lo faranno, e il libro è onesto al riguardo.

### È una pubblicazione ufficiale del FreeBSD Project?

No. Questo è un libro didattico indipendente sullo sviluppo di driver di dispositivo per FreeBSD. Non è una pubblicazione ufficiale del FreeBSD Project. L'autore è un committer FreeBSD e membro del Documentation Engineering Team (DocEng), ma il libro riflette il suo lavoro e le sue opinioni, non una posizione ufficiale del Progetto.

### Quanto tempo mi ci vorrà effettivamente?

Se leggi attentamente e fai i laboratori, prevedi circa 200 ore di lavoro totale. Sono all'incirca 100 ore di lettura e 100 ore di pratica pratica. A cinque ore a settimana, è un progetto serale di circa sei mesi; a dieci ore a settimana, uno sprint mirato di due mesi. Leggere senza fare i laboratori dimezza il tempo circa, ma dimezza anche il valore: la programmazione del kernel ricompensa la memoria muscolare in un modo che poche discipline fanno.

### Posso saltare i laboratori?

Puoi, ma probabilmente non dovresti. I laboratori sono dove la prosa diventa riflesso. Schemi come l'ordine di associazione, lo svolgimento della pulizia e l'acquisizione dei lock si ripetono in ogni capitolo, e l'unico modo affidabile per interiorizzarli è scriverli, compilarli, caricarli in un kernel in esecuzione e vederli fallire apposta. I lettori che saltano i laboratori riportano progressi che sembrano fluidi all'inizio e poi si fermano silenziosamente intorno alla Parte 3 o Parte 4.

### Come posso contribuire a FreeBSD dopo aver letto questo?

Il capitolo 37 copre l'intero flusso di lavoro di invio: come preparare una patch, come usare Phabricator (il sistema di revisione del codice di FreeBSD), come trovare un committer che sponsorizzi il tuo lavoro, come rispondere al feedback della revisione e come portare un driver nell'albero. I capitoli precedenti costruiscono le competenze tecniche; il capitolo 37 costruisce il flusso di lavoro sociale. Entrambi contano.

### Il libro è enorme. Da dove dovrei iniziare?

Inizia dal capitolo 1 a meno che tu non abbia un motivo per non farlo. Il libro è cumulativo; i capitoli successivi si basano sul vocabolario e sulle abitudini stabiliti in precedenza. Se conosci già C, UNIX e la forma generale di un kernel OS, le note del percorso rapido all'interno della Parte 1 ti dicono cosa sfogliare. Se un sottosistema specifico ti ha portato qui (USB, networking, storage, PCI), va bene leggere attentamente le Parti 1 e 2 e poi saltare avanti, ma aspettati di tornare indietro quando i termini dei capitoli precedenti riappaiono.

### Ho trovato un errore. Cosa dovrei fare?

Apri un problema su GitHub. Includi la versione linguistica, il formato che stavi leggendo, il capitolo o la sezione, una breve descrizione del problema e una correzione suggerita se ne hai una. Ogni segnalazione migliora l'esperienza del prossimo lettore. I problemi di traduzione nelle edizioni pt_BR e es_ES sono particolarmente graditi, poiché non hanno ancora ricevuto una revisione tecnica umana completa.

### Il libro è veramente gratuito?

Sì. È rilasciato sotto licenza MIT. Puoi leggerlo, condividerlo, stamparlo, citarlo, basarti su di esso e tradurlo. L'attribuzione è gradita ma non richiesta per uso personale. Se vuoi supportare il lavoro, le cose più utili che puoi fare sono: parlare del libro ad altre persone, aprire problemi quando trovi errori, contribuire con revisioni o traduzioni e (se alla fine ti ci porta) inviare il tuo lavoro al FreeBSD Project.

## Informazioni sull'autore

Sono Edson Brandi. Il mio percorso nella tecnologia è stato tutt'altro che convenzionale. Ho iniziato come studente di chimica all'Unicamp in Brasile nel 1995, senza alcun piano di lavorare con i computer, ma con una domanda persistente: *come funziona veramente?* Quella domanda mi ha portato a FreeBSD, e FreeBSD ha plasmato la mia carriera da allora.

Negli anni successivi ho fondato il **Brazilian FreeBSD User Group (FUG-BR)**, co-creato il **FreeBSD LiveCD Tool Set**, e nel 2002 co-fondato **FreeBSD Brasil**, un'azienda che fornisce formazione, consulenza e supporto su FreeBSD che opera ancora oggi. Sono un committer FreeBSD e attualmente membro del **FreeBSD Documentation Engineering Team (DocEng)**, aiutando a mantenere i sistemi che mantengono viva e accessibile la documentazione di FreeBSD in tutto il mondo.

Professionalmente, ho trascorso la mia carriera in posizioni di infrastruttura e leadership ingegneristica in diversi settori, e oggi sono IT Director presso una fintech a Londra.

Ho scritto questo libro perché voglio che altre persone curiose abbiano la rampa di accesso che io non ho mai avuto. Non hai bisogno di una laurea in informatica per scrivere codice per il kernel. Quello che ti serve è curiosità, perseveranza, pazienza e una guida che ti incontri dove sei.

Edson Brandi · [email protected]

## Licenza

Questo libro e il suo codice sorgente di accompagnamento sono rilasciati sotto la **Licenza MIT**. Vedi [LICENSE](https://github.com/ebrandi/fdd-book/blob/HEAD/LICENSE) per il testo completo. Sei libero di leggere, condividere e basarti su questo lavoro; l'attribuzione è gradita.

## Riconoscimenti

- La comunità di sviluppo FreeBSD
- Tutti i contributori, revisori e traduttori
- Chiunque abbia mai aperto un problema o fatto una domanda che ha migliorato un capitolo

## Collegamenti

- **Repository:** https://github.com/ebrandi/FDD-book
- **Issues:** https://github.com/ebrandi/FDD-book/issues
- **Discussions:** https://github.com/ebrandi/FDD-book/discussions
- **Author:** Edson Brandi · [email protected]

---

<p align="center"><em>Se questo libro ti aiuta, per favore metti una stella al repository e condividilo con qualcun altro che è curioso di sapere come funzionano davvero i computer.</em></p>
Scarica lo strumento
ParteTitoloFocus
1Fondamenti: FreeBSD, C e il kernelConfigurazione del laboratorio, UNIX, C per il lavoro con il kernel, anatomia del driver
2Costruire il tuo primo driverDriver a caratteri, file di device, read/write, I/O
3Concorrenza e sincronizzazioneThread, mutex, condvar, timer, code di task, semafori
4Integrazione hardware e a livello di piattaformaPCI, interrupt, MSI/MSI-X, DMA, gestione dell'alimentazione
5Debugging, strumenti e pratiche realiTracciamento, KGDB, debugging avanzato, ottimizzazione delle prestazioni
6Scrivere driver per trasporti specificiUSB, seriale, storage/VFS, driver di rete
7Argomenti di maestria: scenari speciali e casi limitePortabilità, virtualizzazione, sicurezza, embedded, reverse engineering, invio upstream
Pagine4.500+
Capitoli38
Appendici6
Tempo di lettura~100 ore
Tempo di laboratorio~100 ore
Tempo di studio totale~200 ore (≈6 mesi a 5 ore/settimana)
Release FreeBSD target14.3
LingueInglese (originale) · Portoghese brasiliano (tradotto con AI) · Spagnolo (tradotto con AI)
FormatiPDF · EPUB · HTML · Sorgente Markdown
  1. Debugging e tracciamento
  2. Integrazione con il kernel
  3. Argomenti avanzati e consigli pratici

Parte 6: Scrivere driver per trasporti specifici

  1. Driver USB e seriali
  2. Lavorare con dispositivi di storage e il layer VFS
  3. Scrivere un driver di rete

Parte 7: Argomenti di maestria

  1. Portabilità e astrazione dei driver
  2. Virtualizzazione e containerizzazione
  3. Best practice di sicurezza
  4. Device tree e sviluppo embedded
  5. Ottimizzazione e profilazione delle prestazioni
  6. Tecniche di debugging avanzate
  7. I/O asincrono e gestione degli eventi
  8. Creare driver senza documentazione (Reverse Engineering)
  9. Inviare il tuo driver al Progetto FreeBSD
  10. Considerazioni finali e prossimi passi

Appendici

  • A: Riferimento API del kernel FreeBSD
  • B: Algoritmi e logica per la programmazione di sistema
  • C: Concetti hardware per sviluppatori di driver
  • D: Concetti di sistema operativo
  • E: Navigare gli interni del kernel FreeBSD
  • F: Banco di prova per benchmark e risultati
LinguaPDFEPUBHTML
Inglese (originale)PDFEPUBHTML
Português (Brasil), tradotto con AIPDFEPUBHTML
Español, tradotto con AIPDFEPUBHTML