BlanKonf 2010 1 Agustus oleh: Dwi Sasongko S <ruckuus@gmail.com>
Pengertian Umum
Kernel adalah suatu perangkat lunak yang menjadi bagian utama dari sebuah sistem operasi.
Perangkat ini yang menjadi penghubung antara perangkat keras dan aplikasi pengguna.
Compiler
gcc --version
Linker
binutils
Ld -v
Make
Make
Make --version
sudo apt-get install kernel-package
sudo apt-cache show kernel-package
Kode sumber
$ wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.x.x.*
Patch
kernel.org
$ wget http://www.kernel.org/pub/linux/kernel/v2.6/patch2.6.x.x.*
Situs lain
Platform specific
Hacking/devel version
Apa itu?
penambahan/pengurangan kode sumber
HOWTO:
patch -p1 窶電ry-run < ../file-patch.patch
patch -p1 < ../file-patch.patch
git apply file-patch.patch
Debian
$ make-kpkg clean
$ fakeroot make-kpkg â&#x20AC;&#x201C;initrd â&#x20AC;&#x201C;apend-to-version=-label_string kernel_image kernel_header
LABEL_STRING: Penanda versi rilis
NOTE:
Initramfs tidak terbentuk sejak rilis Lucid sudo mkinitramfs -k -o initrd.img-2.6.3215+drm33.5-no-custom 2.6.32.15+drm33.5no-custom
Debian
$ dpkg -i linux-image*
$ dpkg -i linux-headers*
$ sudo update-grub2
Configuration Tools
Kconfig â&#x20AC;&#x201C; menuconfig, xconfig, gconfig
y: untuk menjawab iya; fitur akan dikompile secara built-in
n: untuk menolak; fitur tidak akan dikompile
m: module, fitur akan dikompile sebagai kernel module, nantinya akan dipasang ke kernel pada waktu runtime
?: untuk melihat keterangan pada fitur
Develop Kernel
Untouchable Codes?
Sulit?
!
Gunakan Linux
BlankOn-Dev, Pengembang BlankOn
LDD â&#x20AC;&#x201C; Linux Device Driver
Hello World Device Driver ;-)
∀ ∀ #∃ %
hello.c
Makefile
∀ ∀ #∃ % static int __init device_init(void) { int ret; printk(KERN_INFO "Hello World"); return SUCCESS; } module_init(device_init);
∀ ∀ #∃ % & obj-m += hello.o all: make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules clean: make -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean rm -f *.c~ Makefile~ *.symvers
â&#x2C6;&#x20AC; #â&#x2C6;&#x2039;( # sudo insmod hello.ko # dmesg | tail
! â&#x2C6;&#x20AC; â&#x2C6;&#x20AC; # â&#x2C6;&#x192; %
& â&#x2C6;&#x2039; % &
( â&#x2C6;&#x192; &
) ) â&#x2C6;&#x2014;) +)
,
â&#x2C6;&#x2019; . /
,
0 0 â&#x2C6;&#x2014; 0 â&#x2C6;&#x2014; â&#x2C6;&#x192; â&#x2C6;&#x2014; . /
, , , , ,
,
. 12#34 + /
,
& 0 0 )
â&#x2C6;&#x2019; . /
â&#x2C6;&#x2019; &
5 ))
&
â&#x2C6;&#x2019; &/
,
4 6 7 â&#x2C6;&#x2014; %â&#x2C6;&#x2014; & 4
â&#x2C6;&#x2014; 8
&33 â&#x2C6;&#x2014; ) 3 â&#x2C6;&#x20AC; â&#x2C6;&#x20AC;3â&#x2C6;&#x20AC;93 :3 0 â&#x2C6;&#x2014; 0â&#x2C6;&#x2014; 3
3;â&#x2C6;&#x2014; â&#x2C6;&#x2014; â&#x2C6;&#x2014; < . )))/ 0
& ) ) ) 7 ) ) 7 ) â&#x2C6;&#x2014;
3â&#x2C6;&#x2014; & 0
3â&#x2C6;&#x2014; % â&#x2C6;&#x2014; & â&#x2C6;&#x2014;
% â&#x2C6;&#x2014; &
& & â&#x2C6;&#x2039; % = > +) ? 0 & .?â&#x2030;&#x2026; Î&#x2018;/ â&#x2C6;&#x2014; Î&#x2019;)90 â&#x2C6;&#x192; Î&#x2019;)90 â&#x2C6;&#x192; % 0Χ & )Î&#x2018;) 5 &
&33 )â&#x2C6;&#x2014; ) ) ) 3â&#x2C6;&#x2014; 3
â&#x2C6;&#x2014; & â&#x2C6;&#x2014;
( â&#x2C6;&#x2014; â&#x2C6;&#x2014; & & â&#x2C6;&#x2020;; & < â&#x2C6;&#x2014; & â&#x2C6;&#x2014;
,
â&#x2030;&#x2026; â&#x2C6;&#x2014;
â&#x2C6;&#x2014;
â&#x2C6;&#x2014; â&#x2C6;&#x2019;
& â&#x2C6;&#x2014; .â&#x2C6;&#x2014;/ 0 3 . 0 /
0 0 3â&#x2C6;&#x2014; â&#x2C6;&#x2014;
â&#x2C6;&#x2019; â&#x2C6;&#x2014;
â&#x2C6;&#x2014; â&#x2C6;&#x192;
8 & â&#x2C6;&#x2019; â&#x2C6;&#x2019; â&#x2C6;&#x2019; 3 3
& 0 0 0 â&#x2C6;&#x2014; .# / 0 Î&#x2022; 7 . / 0 Φ9 Î&#x2019;Φ ! â&#x2C6;&#x20AC; #
â&#x2C6;&#x192; %
&
â&#x2C6;&#x2039;( )
â&#x2C6;&#x2014; ) 7
.3 â&#x2C6;&#x2014;3 â&#x2C6;&#x2014; â&#x2C6;&#x2020;;5 Î&#x201C;<3) â&#x2C6;&#x2014;/
â&#x2C6;&#x2019; â&#x2C6;&#x2014; â&#x2C6;&#x2019; â&#x2C6;&#x2014;
;â&#x2C6;&#x2014; <
0 Î&#x2014; 0 Î&#x2014;Î&#x2014; Î&#x2122; 1 .,/ 0 â&#x2C6;&#x2014; 3 â&#x2C6;&#x2014; 0 .â&#x2C6;&#x2014;/ Î&#x2014;Î&#x2014;Î&#x2014; 0 & â&#x2C6;&#x2014; 3
Î&#x2014; ) â&#x2C6;&#x2014; Î&#x2014;Î&#x2014; â&#x2C6;&#x2019; â&#x2C6;&#x2039; ) % â&#x2C6;&#x2019; Ï&#x2018; Î&#x2014;Î&#x2014;Î&#x2014; 0 â&#x2C6;&#x192; â&#x2C6;&#x2014; 0
3 â&#x2C6;&#x2014;3 3 â&#x2C6;&#x2014; ) &
&33 3 + â&#x2C6;&#x2014; + 0 â&#x2C6;&#x2014;
4 04
) ) ∗
) 9) Κ) − ∗
)
. / ∆ ) ∗ + Γ Λ#442( Γ≅Μ∋ % Μ + Γ Γ (∋4≅Μ > +) Μ + Γ ∋Ν Ο≅Μ∃ Μ + (Ν5≅Μ3 3 ∗ 3 &3 3 &3 &∆5 Γ3 3 ∃3 ∗ Μ
∆ ∗ ) ∗ 8(Ν(Ν(2& ) ∗ ) Π &/
. / ∆ 0 0
∗ & . / %( Γ . / . / %( . / .Κ/ Ο%( . / Θ ∗ , %( ∃ ∀ 9 ) Γ410Γ ∀ 9 9∀:Φ )
. / 6 7 , . ∀9Β/ Ο Ε 7 ∀9Β
∗ ∃ ) ∀ ≅ + = ? ≅ + = ? ≅ + = ? ≅ + = ? ≅ + ∃ , .∀/ + ∀ ! ∀ ∀Β& ∀& 9 ( #Ν8 ∋ ∗ ∗ , . 32/
.9/ Θ ∋ Ρ ∗ ∗
∋ Ο 2 8 Γ ( & Μ5 ∗ 5 . ∗ / = ∗ > ) ?Μ Ο & ∋ % Γ & > +) 8 & Θ ∗ #%ΓΟ0∋ & Μ∋ % . / = > +) ?Μ 8 .2/ .8/ .Γ/ . / 3.Σ/ ,
.Κ/ 6 ) ∋ ∗ . ∃ 7 / Ρ ∃
∗ ∗ ) )ΤΤΤΤΤΤΤΤΤΤΤΤΤΤΤ)ΤΤΤΤΤΤΤΤΤΤ)))ΤΤΤΤΤ)ΤΤΤΤΤΤΤΤΤΤΤΤΤΤΤ)ΤΤΤΤΤ)ΤΤΤΤΤΤΤΤΤ Τ))ΤΤΤΤΤΤΤΤΤΤΤ ΤΤΤΤΤΤΤΤΤ))ΤΤΤΤΤΤΤΤΤΤΤΤΤΤΤ)ΤΤΤΤΤΤΤΤΤΤ)))ΤΤΤΤΤΤΤΤΤΤΤΤΤΤΤΤΤΤΤΤ)ΤΤΤΤΤΤ ΤΤΤΤΤΤΤΤΤΤΤΤΤΤ ?ΤΤΤΤΤ))ΤΤΤΤΤ?)ΤΤΤΤΤ)))))ΤΤΤΤΤΥΥΥ & ςςςςςςςς ∗ ∗ ∗ )
.Φ/ & ∗ ∗ & . / ∗ . / 1 & & ∀ ∃ & & ∀ & ∀0 ∀Ε ∀ ∀ ∀ & + ∗ ∗ ∀ 0∀ 0∀ ∀ 9ς3ςςςςςςςς ∀ ∀0∀ 0∀Β Ω + & ∀ 0∀ 0∀ Ξ ≅ ΚςΑ∀ : ςΚ ΑΚΦ( ςςςς 9 Φ9 Β Φ9 ΦςΒΑ ς ς ς ΦΒΒΑ ∋ % . / = > +) ? ∀9Β+39ςςς :Κ9 ∀ ∀0∀ 0∀Β Ω + & ∀ 0∀ 0∀ Ξ
.Α/ ∆ ∃ ) ∗ ∋ΟΟ Ο%∋ΝΓ≅
&33 ∗ 3 3 Γ Ν%ΝΟ( ≅Μ Μ ∋%ΝΟ∋ #Ν∋ 2≅Μ Μ 8 2Γ2Ν%≅Μ + ∗ + 0 ∗ Μ (#Ν Π Γ %∋12≅ ( Ν8(85Γ≅∆5 Γ3 0 ∃3 3∗ ∗ 3 #∋4 4(8Γ≅∆5 Γ3 0 ∃3 3 3 #∋4 ΟΓ%#4Ν≅∆5 Γ3 0 ∃3 3 3 ∋2 #2Ν%≅∆5 Γ3 0 ∃3 3 3 5 ∋Ο≅∆5 Γ3 0 ∃3 3 3
.Β/ &
∆ 0 3 3 3 3∃ 3 3
0 & ∆ 0 ∆5 Γ3 0 ∃3 3; ∗ ∗ < ∆ ∆5 Γ3 0 ∃3; < & − Ο( 9 1 ∗ − ∆ 0 ∆ #∋4 4(8Γ
â&#x2C6;&#x2014;
â&#x2C6;&#x2020; â&#x2C6;&#x2014; 5 & 3â&#x2C6;&#x192; 3â&#x2C6;&#x2014; â&#x2C6;&#x2014; 3 3 ) 7
Ψ â&#x2C6;&#x2014; Ψ& ) â&#x2C6;&#x2019; .â&#x2C6;&#x2014;/ ) Î&#x2014; ) ) â&#x2C6;&#x2019; 9) ) 7
Î&#x2014; â&#x2C6;&#x192;)â&#x2C6;&#x2014; â&#x2C6;&#x2014; )
0 Ν 3 − & ( 8 Γ . Β / ∋ Ζ
8 Ζ3 3 + 00 ) 8 ∗ ∗ 0∗ ) ∀∀Κ ∀∀Α ! ∗ # 0 ∗ Μ∋ Ε Μ 1 ∆. 3 3 3Η) [ 0 ∴ )Η3 Ρ Π)Η ∴ /Ρ 0 0 00 ∗ 0 Μ∆ 1Μ [[ 0 ∃ 0 Μ∆ 1Μ [[ ∗
0 3 3 3Η) )))
∆ 0 ∗ Η . Η;) ) ) 7 ) ) 7 ) ∗</ ∗ & − 0 ∗ 0+ ) ∗ #Ο43 ) ∗ − Ψ 0% 0 Ψ
Η 0 ∗ ∗ )
Î Î&#x2014; 3 â&#x2C6;&#x2014; 0% 0 ) â&#x2C6;&#x2014;
Î&#x2014; 3
∆ ) ∗
− & ) 7 ∆ #∋4 4(8Γ ∗
5 ∆ #∋4 ΟΓ%#4Ν 8
! â&#x2C6;&#x2014; 3
0 3â&#x2C6;&#x2014; â&#x2C6;&#x2014; , â&#x2C6;&#x192; â&#x2C6;&#x2020;; & < Ρ/
! ∃ ∃ ∆ #∋4 4(8Γ ∆5 ∋Ο . / 5(4 Ε + ∗ ∃
# ∆ #∋4 4(8Γ ∆( Ν8(85Γ& ∆ ∗
â&#x2C6;&#x2019; â&#x2C6;&#x2019;
#â&#x2C6;&#x2019; â&#x2C6;&#x2014;
& 0 ) 3 ) &
â&#x2C6;&#x2014;
# â&#x2C6;&#x2014; . â&#x2C6;&#x192; / &/
, â&#x2C6;&#x2019; 3 3))) ))) Î&#x2DC; 0 3 0 3
8 08
3 3 3 â&#x2C6;&#x2014;3 3 + 3
Î&#x2019;
#Ο4
&33 +) 3 ∃ Π
&33 ) )− 3Ι ∗ 3 3 0 ∗3
&33 ) )∗ 3 ∗ 3Ν 34 3 ∀∀:0∀Φ0 Κ
,
, ,
4 8 ∃ 8 (
0% ( .880 Θ0%(/ )∀ ∗ ∗ #Ο40
% > +) > ) â&#x2C6;&#x2014;)
! â&#x2C6;&#x20AC; # â&#x2C6;&#x192;
%
& â&#x2C6;&#x2039; & ( (
! ) ( â&#x2C6;&#x2014; ( â&#x2C6;&#x2014; ) % ( + ) & ,â&#x2C6;&#x2019; . ) & ,â&#x2C6;&#x2019; . /0
â&#x2C6;&#x2019; & 1 2 3 454 1 67/ /0 . â&#x2C6;&#x2019; ( 1 â&#x2C6;&#x2014; . 8 ( 1 67/ 7 /0 9
! â&#x2C6;&#x20AC; # â&#x2C6;&#x192;%
( # . ((
67/
â&#x2C6;&#x2019; . . +
% # . .
: 1 ; < % # < = # < % < > < < < ? < â&#x2C6;&#x2039; +
& ∋ ( ∃
)! â&#x2C6;&#x2014; + ! # % %
( # . (( % < 1 < ( <
67/
> .
â&#x2C6;&#x2014;
( # .
67/
â&#x2030;&#x2026; . ( ( ( (
â&#x2C6;&#x2039; . . . . (
) &
â&#x2C6;&#x2039; & Î&#x2018; â&#x2C6;&#x2039; ! â&#x2C6;&#x2014; â&#x2C6;&#x20AC; =< 8 > < Î&#x2019; Χ( < â&#x2C6;&#x2020;&â&#x2C6;&#x2020; â&#x2C6;&#x2014; 8 ( & â&#x2C6;&#x2014; & Î&#x2018; â&#x2C6;&#x2039; .
Î&#x2018; â&#x2C6;&#x2039; =
Î&#x2018; â&#x2C6;&#x2039;
) &
â&#x2C6;&#x2039; Î&#x2018; â&#x2C6;&#x2039; & Î&#x2018; â&#x2C6;&#x2039; â&#x2030;&#x2026; Î&#x2018; â&#x2C6;&#x2039; 3 â&#x2030;&#x2026; Î&#x2018; â&#x2C6;&#x2039; â&#x2C6;&#x2019;
)
+ ! !
( â&#x2C6;&#x2014; ( â&#x2C6;&#x2014; 1 . # . ( (
% +
% (( . â&#x2C6;&#x2014; . â&#x2C6;&#x2014;.
% . â&#x2C6;&#x2014; /0 . â&#x2C6;&#x2014;. /0
> &
&
& ( ! . (( Î&#x2022;
. (
3 +
>
&
%
â&#x2030;&#x2026;â&#x2C6;&#x2019;Φ
&
% (
& â&#x2C6;&#x2019; ( Î&#x201C;
! â&#x2C6;&#x2019; & 1 Î&#x2014; 3 455 1 67/ /0 . â&#x2C6;&#x2019; ( 1 â&#x2C6;&#x2014; . 8 ( 1 67/ /0
) â&#x2C6;&#x2014; !
% ( Î&#x2018; Î&#x2122; Î&#x2018; &
, ! â&#x2C6;&#x2019; ! â&#x2C6;&#x2019; !
& (( . ( + ( . ( ( < (( . (( ,â&#x2C6;&#x2019; (
) & ,
% â&#x2C6;&#x2039; < ( ( # ( . â&#x2C6;&#x2014;
! !â&#x2C6;&#x2039;
+ . # < ( 1 â&#x2C6;&#x2014; < ( (< %â&#x2C6;&#x2019; < ( â&#x2C6;&#x20AC; . ( â&#x2C6;&#x192;