linux kernel – hogyan csapjunk bele?

23
Linux Kernel – Hogyan csapjunk bele? Előadja: Kurusa Levente <[email protected]> Embedded Software Engineer JW Technologies, AG.

Upload: balabit

Post on 29-Jul-2015

124 views

Category:

Education


1 download

TRANSCRIPT

Page 1: Linux Kernel – Hogyan csapjunk bele?

Linux Kernel – Hogyan csapjunk bele?

Előadja:Kurusa Levente <[email protected]>Embedded Software EngineerJW Technologies, AG.

Page 2: Linux Kernel – Hogyan csapjunk bele?

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ő

Page 3: Linux Kernel – Hogyan csapjunk bele?

Tematika➢ Gyors bevezetés

➢ Véletlenszerű konfiguráció

➢ Patchelés!

Page 4: Linux Kernel – Hogyan csapjunk bele?

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

Page 5: Linux Kernel – Hogyan csapjunk bele?

Kifogások➢ Mítosz:

“A kernelfejlesztés nehéz”

➢ Tény:A Linux Kernel ma már majdnem teljes libc-t tartalmaz

Page 6: Linux Kernel – Hogyan csapjunk bele?

Kifogások➢ Mítosz:

“Nehéz a hibakeresés”

➢ Tény:GDB elérhető (!!!)Netconsole, serial portOOPS, BUG, stack-trace, etc.

Page 7: Linux Kernel – Hogyan csapjunk bele?

Kifogások➢ Mítosz:

“Veszélyes a hardware-re nézve”

➢ Tény:A Linux kernel “fool-proof”

Page 8: Linux Kernel – Hogyan csapjunk bele?

Kifogások➢ Mítosz:

“Nem mondható befogadónak a közösség”

➢ Tény:“Nem mondható befogadónak a közösség”

Page 9: Linux Kernel – Hogyan csapjunk bele?

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

Page 10: Linux Kernel – Hogyan csapjunk bele?

Eudyptula Challenge➢ http://eudyptula-challenge.org/

➢ Programozási feladatok sora

➢ Nehéz, de szórakoztató

Page 11: Linux Kernel – Hogyan csapjunk bele?

linux-next➢ State of Art kernel

➢ Stephen Rothwell fűzi össze

➢ Kiváló kiinduló pont

➢ Alapvető konfigurációk tesztelve

Page 12: Linux Kernel – Hogyan csapjunk bele?

linux-stable➢ Új patch-ek gyűjteménye régi kernelekhez

➢ Backport-ok kellenek!

➢ Greg KH & Co. tartja karban

➢ Documentation/stable_kernel_rules.txt

Page 13: Linux Kernel – Hogyan csapjunk bele?

Véletlenszerű konfigurációk

Page 14: Linux Kernel – Hogyan csapjunk bele?

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!

Page 15: Linux Kernel – Hogyan csapjunk bele?

Az első randconfig$ make randconfig

➢ Semmi értelme nincs a konfigurációnak

➢ Próbáljuk meg lefordítattni:

make -j4 make -j`nproc`

Page 16: Linux Kernel – Hogyan csapjunk bele?

Lehetséges hibák➢ Undeclared functions

➢ Cirkuláris függőségek

➢ Bootolási hibák➢ Emulátor!

Page 17: Linux Kernel – Hogyan csapjunk bele?

Az első patch

Page 18: Linux Kernel – Hogyan csapjunk bele?

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)

Page 19: Linux Kernel – Hogyan csapjunk bele?

drivers/staging➢ Kezdetleges állapotú driver-ek

➢ TODO fájl

➢ checkpatch itt megengedett... máshol inkább ne

Page 20: Linux Kernel – Hogyan csapjunk bele?

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:

Page 21: Linux Kernel – Hogyan csapjunk bele?

Elküldés➢ 90%-nak nem fog sikerülni

$ git send-email <patch-file>

➢ Thunderbird is lehetséges, de nehézkes

Page 22: Linux Kernel – Hogyan csapjunk bele?

Maintainer keresés➢ scripts/get_maintainer.pl

➢ A patch-hez elkészíti a maintainer listát

➢ MAINTAINERS fájl

Page 23: Linux Kernel – Hogyan csapjunk bele?

Köszönöm a figyelmet!

Kurusa LeventeEmail: <[email protected]> / <[email protected]>Twitter: @ilevexGoogle+: +LeventeKurusaBlog: http://ilevex.eu/