Linux Kernel – Hogyan csapjunk bele?

Preview:

Citation preview

Linux Kernel – Hogyan csapjunk bele?

Előadja:Kurusa Levente <levex@linux.com>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: <levex@linux.com> / <levex@fedoraproject.org>Twitter: @ilevexGoogle+: +LeventeKurusaBlog: http://ilevex.eu/