1
Kernpresentatie
- Overzicht van het systeem en de rol van de kernel.
- Referentiesites.
- Specifieke kenmerken van de 3.x en 4.x kernels.
- Kernelontwikkelingscycli, patches.
- Bedrijfsmodus (supervisor en gebruiker). Systeemoproepen.
- Organisatie van bronnen (Include/linux, Arch, Kernel, Documentatie, enz.).
- Principe van kernel- en modulecompilatie.
- Afhankelijkheden en symbolen.
- Export van symbolen.
- Kernel laden (ondersteuning, argumenten, enz.).
Praktisch werk
Een 3.x kernel compileren en installeren.
2
Tools die u kunt gebruiken
- Ontwikkelgereedschappen (Gcc, Kbuild, Kconfig en Makefile, enz.).
- Debug-gereedschappen (GDB, KGDB, ftrace, enz.).
- Debugomgeving (Linux Trace Toolkit, enz.).
- Versiebeheerprogramma (Git, etc.).
- Systeemaanroepen traceren (ptrace...).
Praktisch werk
Installeer alle hulpmiddelen en bronnen om een module voor de kernel te genereren. Het systeem configureren om modules automatisch te laden tijdens het opstarten. Eenvoudige modules schrijven en testen.
3
Beheer en planning van threads
- De verschillende soorten randapparatuur.
- Kernel besturingscontexten. Bescherming van globale variabelen.
- Thread-weergave (status, task_stru structuur, thread_info, enz.).
- Draden, uitvoeringscontext.
- De Linux scheduler en pre-emption.
- Een kernel thread aanmaken (kthread_create, wakeup_process...).
Praktisch werk
Maak een module die een kernel thread aanmaakt tijdens het invoegen en ontlaadt tijdens rmmod. Schrijf een hoge-precisie event timestamping module. Schrijf een module die informatie geeft over de interne structuren van processen.
4
Geheugen-, tijd- en procesbeheer
- Geheugenorganisatie voor UMA- en NUMA-architecturen.
- Gebruikers- en kerneladresruimte.
- Pagina's op aanvraag beheren (demand paging).
- Geheugentoewijzingen, buddy allocator, kmalloc, slabs en geheugenpools.
- Geheugentoegangsbeheer (caches en MMU).
- Problemen in verband met geheugenoverreservering.
- Geheugenbeheer op x86 en ARM, gebruik van Hugepages.
- Optimalisatie van systeemaanroepen (IAPX32, VDSO).
- Synchronisatie en wachten in de kernel, waitqueues, mutexen en completies.
- Tikken en jiffies in Linux.
- Real Time Clock (RTC), implementatie van timers.
- Hoge-resolutie timerinterface, stempels.
- Kernelspecifieke gereedschappen, gekoppelde lijsten, kfifo en container_of.
- De kernelinterface met /proc via procfs.
Praktisch werk
Timers en tijdstempels gebruiken. Toegang tot procfs implementeren. Geheugentoewijzing in de kernel implementeren en optimaliseren met slabs.
5
Apparaat in tekenmodus
- Stuurprogramma's voor karakterapparaten schrijven.
- VFS (virtueel bestandssysteem).
- Methoden voor karakterrandapparatuur.
- Beheer van DMA onderbrekingen en toegang tot hardware.
- Registratie en optimalisatie van het stuurprogramma voor tekenapparaten.
Praktisch werk
Geleidelijk schrijven van een character-mode perifere driver. Implementeren van I/O synchronisatie tussen threads en met de interrupt routine. Implementeren van geheugentoewijzing.
6
Linux stuurprogramma-raamwerk - sysfs
- Presentatie van het framework, kobject, kset en kref.
- Stuurprogramma, apparaatstuurprogramma, bus en klasse-objecten.
- Gebruik en generatie van attributen in sysfs.
- Interface met hotplug-, match-, probe- en release-methoden.
- Firmwarebeheer.
- Energiebeheer, energiebeheermethoden.
Praktisch werk
Een bus, een stuurprogramma en een apparaatstuurprogramma implementeren. Het karakterapparaatstuurprogramma aanpassen. Voorbeeld van gebruik van de interface.
7
Blokmodus randapparatuur en bestandssystemen
- Principe van blokmodus randapparatuur. Registratie van stuurprogramma's.
- Callback voor lezen en schrijven. Ondersteuning voor opmaak en geavanceerde bewerkingen.
- Blok-I/O scheduler voor de kernel.
- Ontwerp van bestandssystemen.
- Registratie van een nieuw bestandssysteem.
Praktisch werk
Voorbeeld van een compleet virtueel apparaatstuurprogramma. Voorbeeld van een aangepast bestandssysteem.
8
Netwerkinterfaces en protocollen
- Netwerkinterfaces beheren onder Linux.
- Gebruik van skbuff.
- Netfilterhaken.
- Integratie van een protocol.
Praktisch werk
Voorbeeld van een netwerkstuurprogramma voor een virtueel apparaat. Implementatie van een netwerkprotocol.
9
Stuurprogramma's voor USB-randapparatuur
- Principe van USB-randapparatuur. Interface met de USB-kernmodule.
- Interactie van het apparaat met de Linux kernel.
- Bouw van een URB (USB Request Block).
- USB-gadgets.
Praktisch werk
Een USB-stuurprogramma registreren. Een stuurprogramma schrijven in isochrone modus.