Najbolje je da kreneš od neke embedded platforme kao što je Beaglebone i da integrišeš drajvere za razne periferije koje mogu da se dokupe. Fokusiraj se na određeni podsistem jer je kernel gomila apstrakcionih slojeva, pa nije isto pisati drajver za npr. temperaturni senzor na I2C gde vrtiš petlju koja čita sa magistrale i na upit ispisuje u /dev fajl, i npr. pisati storage drajver. Drugo, kernel development može da znači dve stvari: pisanje drajvera (prostije) i menjanje mehanizama samog kernela (alokator, baferovanje, scheduler itd). Ti bi verovatno radio ovo prvo. Vodi računa da, kao što su rekli, gomila C bibliotečnih funkcija ne postoji na nivou kernela ili radi drugačije, jer neke stvari "dole" prosto nemaju smisla (npr. otvaranje fajla na disku, jer fajl je apstrakcija a u trenutku kad se tvoj drajver podiže, možda nijedan storage nije ni montiran).
Imam solidno iskustva u ovome (doduše mahom pre nego što je device tree postao standard, najviše na generaciji 2.6 za razne Texas Instrumentsove procesore i 3.0 za i.MX6), pisao sam i neke svoje drajvere. Nemam da preporučim neke knjige jer su sve mahom zastarele pošto se kernel prebrzo razvija i menja, ali dosta dokumentacije imaš u stablu kernel source-a (folder Documentation). Fokusiraj se na sledeće teme:
1. Šta je kernel modul i kako se piše (kreni od nekog postojećeg uređaja iz kategorije uređaja koje te interesuju)
2. Šta je memorijski mapirani I/O, kako se prilazi registrima uređaja koji su mapirani na memorijske adrese procesora, i kako se koristi funkcija ioremap()
3. Kako se osobine uređaja opisane u device tree tabeli očitavaju iz samog drajvera
4. Kako se registruju i pišu interapt hendleri (request_irq / free_irq)
5. Kako se pišu polling petlje u drajveru tako što funkcija sama sebe zakaže za ponavljanje (schedule_work / schedule_delayed_work)
6. Kako se podaci propagiraju do user space-a i kako aplikacije mogu da šalju podatke drajveru (create_proc_entry za /proc/*, mknod za /dev/*)
U svakom slučaju, radi se o odvratnom i nezahvalnom poslu
i osim ako ne planiraš to da radiš čisto iz hobija i osposobljavanja manjih embedded uređaja (gde nije kritično da drajver funkcioniše tip-top), onda bar gledaj da za to budeš dobro plaćen