linux kernel – hogyan csapjunk bele?
TRANSCRIPT
Linux Kernel – Hogyan csapjunk bele?
Előadja:Kurusa Levente <[email protected]>Embedded Software EngineerJW Technologies, AG.
Ki vagyok én?➢ 19 éves számítógép őrült➢ 2014 (& 2015) nyári gyakornok a Red Hat-nél➢ Fedora nagykövet➢ Kernelfejlesztő
➢ Upstream & Downstream➢ ... bár igazából bármi ami 'low-level'➢ AOSP fejlesztő
Tematika➢ Gyors bevezetés
➢ Véletlenszerű konfiguráció
➢ Patchelés!
Miért pont a kernel?➢ A Linux a világ mozgató rugója
➢ Szerverek! A felhő! A Desktop? Talán 2015-ben
➢ A kernel segít megérteni az alkalmazások működését
➢ Érdekes, eredeti kihívások
Kifogások➢ Mítosz:
“A kernelfejlesztés nehéz”
➢ Tény:A Linux Kernel ma már majdnem teljes libc-t tartalmaz
Kifogások➢ Mítosz:
“Nehéz a hibakeresés”
➢ Tény:GDB elérhető (!!!)Netconsole, serial portOOPS, BUG, stack-trace, etc.
Kifogások➢ Mítosz:
“Veszélyes a hardware-re nézve”
➢ Tény:A Linux kernel “fool-proof”
Kifogások➢ Mítosz:
“Nem mondható befogadónak a közösség”
➢ Tény:“Nem mondható befogadónak a közösség”
Első lépések➢ A Linux kernel forráskódjának letöltése➢ Szükséges a Git➢ linux-next:
➢ http://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git➢ linux-stable:
http://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git➢ Linus' tree
http://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
Eudyptula Challenge➢ http://eudyptula-challenge.org/
➢ Programozási feladatok sora
➢ Nehéz, de szórakoztató
linux-next➢ State of Art kernel
➢ Stephen Rothwell fűzi össze
➢ Kiváló kiinduló pont
➢ Alapvető konfigurációk tesztelve
linux-stable➢ Új patch-ek gyűjteménye régi kernelekhez
➢ Backport-ok kellenek!
➢ Greg KH & Co. tartja karban
➢ Documentation/stable_kernel_rules.txt
Véletlenszerű konfigurációk
Mik is ők?➢ Véletlenszerű kernel konfiguráció
➢ Sok probléma van velük➢ GCC figyelmeztetéses és hibák➢ kconfig hibák és figyelmeztetések➢ Néha (többnyire) nem is bootolnak
➢ Nagyon hasznos segítség!
Az első randconfig$ make randconfig
➢ Semmi értelme nincs a konfigurációnak
➢ Próbáljuk meg lefordítattni:
make -j4 make -j`nproc`
Lehetséges hibák➢ Undeclared functions
➢ Cirkuláris függőségek
➢ Bootolási hibák➢ Emulátor!
Az első patch
checkpatch➢ scripts/checkpatch.pl
➢ Gyakori hibák észlelése a patch küldése előtt(és fájlokat is...)
➢ Nem csak Coding Style hibákat keres (és talál)
drivers/staging➢ Kezdetleges állapotú driver-ek
➢ TODO fájl
➢ checkpatch itt megengedett... máshol inkább ne
A patchelés menete$ git checkout -b open-academy$ git reset --hard HEAD[ munka... ]$ git diff[ review ]$ git commit --signoff --all$ git format-patch -1
... és most jön a legnehezebb dolog:
Elküldés➢ 90%-nak nem fog sikerülni
$ git send-email <patch-file>
➢ Thunderbird is lehetséges, de nehézkes
Maintainer keresés➢ scripts/get_maintainer.pl
➢ A patch-hez elkészíti a maintainer listát
➢ MAINTAINERS fájl
Köszönöm a figyelmet!
Kurusa LeventeEmail: <[email protected]> / <[email protected]>Twitter: @ilevexGoogle+: +LeventeKurusaBlog: http://ilevex.eu/