ݺߣ

ݺߣShare a Scribd company logo
Linux Kernel – Hogyan csapjunk bele?
Előadja:
Kurusa Levente <levex@linux.com>
Embedded Software Engineer
JW 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 port
OOPS, 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 Levente
Email: <levex@linux.com> / <levex@fedoraproject.org>
Twitter: @ilevex
Google+: +LeventeKurusa
Blog: http://ilevex.eu/

More Related Content

Linux Kernel – Hogyan csapjunk bele?