Your SlideShare is downloading. ×
0
カーネルをmakeしよう! - 第4回つくらぐ勉強会
カーネルをmakeしよう! - 第4回つくらぐ勉強会
カーネルをmakeしよう! - 第4回つくらぐ勉強会
カーネルをmakeしよう! - 第4回つくらぐ勉強会
カーネルをmakeしよう! - 第4回つくらぐ勉強会
カーネルをmakeしよう! - 第4回つくらぐ勉強会
カーネルをmakeしよう! - 第4回つくらぐ勉強会
カーネルをmakeしよう! - 第4回つくらぐ勉強会
カーネルをmakeしよう! - 第4回つくらぐ勉強会
カーネルをmakeしよう! - 第4回つくらぐ勉強会
カーネルをmakeしよう! - 第4回つくらぐ勉強会
カーネルをmakeしよう! - 第4回つくらぐ勉強会
カーネルをmakeしよう! - 第4回つくらぐ勉強会
カーネルをmakeしよう! - 第4回つくらぐ勉強会
カーネルをmakeしよう! - 第4回つくらぐ勉強会
カーネルをmakeしよう! - 第4回つくらぐ勉強会
カーネルをmakeしよう! - 第4回つくらぐ勉強会
カーネルをmakeしよう! - 第4回つくらぐ勉強会
カーネルをmakeしよう! - 第4回つくらぐ勉強会
カーネルをmakeしよう! - 第4回つくらぐ勉強会
カーネルをmakeしよう! - 第4回つくらぐ勉強会
カーネルをmakeしよう! - 第4回つくらぐ勉強会
カーネルをmakeしよう! - 第4回つくらぐ勉強会
カーネルをmakeしよう! - 第4回つくらぐ勉強会
カーネルをmakeしよう! - 第4回つくらぐ勉強会
カーネルをmakeしよう! - 第4回つくらぐ勉強会
カーネルをmakeしよう! - 第4回つくらぐ勉強会
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

カーネルをmakeしよう! - 第4回つくらぐ勉強会

4,285

Published on

筑波大学 Linux User Group (つくらぐ) …

筑波大学 Linux User Group (つくらぐ)
http://www.tsukuba-linux.org/

0 Comments
5 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
4,285
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
25
Comments
0
Likes
5
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. カーネルを make しよう ! 堀本 貴幸 (opentaka) http://www.opentaka.org/ opentaka [at] tsukuba-linux.org
  • 2. カーネルを make しよう ! = カーネルを再構築しよう !
  • 3. Agenda <ul><li>GNU/Linux と Linux の違い
  • 4. カーネルって何?
  • 5. Vanilla と patched カーネル
  • 6. 組み込みドライバとモジュール
  • 7. カーネルを make しよう !
  • 8. ブートローダ設定
  • 9. おわりに </li></ul>
  • 10. GNU/Linux と Linux の違い
  • 11. GNU/Linux と Linux の違い <ul><li>Linux はカーネル本体
  • 12. GNU はカーネルツール以外に、 OS として機能するために必要なコマンドや、ツールのことを指す
  • 13. Linux( カーネル ) と必要なツール (GNU) が集まった OS を GNU+Linux または GNU/Linux と言う。 </li></ul>
  • 14. カーネルって何? <ul><li>ハードウェアとソフトウェア間の通信等を管理し、 OS の中核として機能する部分。
  • 15. OS をオーケストラとする、カーネルは指揮者。
  • 16. とにかく奥が深い。 </li></ul>
  • 17. vanilla と patched カーネル Linux カーネルの中にも、色々と種類がある。 どんなカーネルを実行中なのか調べてみよう。
  • 18. vanilla と patched カーネル $ uname -a と実行してください。
  • 19. 実行結果 <ul><li>Linux laksa 2.6.26-2-686 #1 SMP Sun Jul 26 21:25:33 UTC 2009 i686 GNU/Linux
  • 20. Linux SC440 2.6.25 -hardened-r7 #16 SMP Mon Jun 8 19:54:40 JST 2009 i686 Intel(R) Pentium(R) Dual CPU E2180 @ 2.00GHz GenuineIntel GNU/Linux
  • 21. Linux debian 2.6.26-2-686 #1 SMP Sun Jul 26 21:25:33 UTC 2009 i686 GNU/Linux
  • 22. Linux netbook 2.6.30-1-686 #1 SMP Sun Jul 26 21:25:33 UTC 2009 i686 GNU/Linux
  • 23. Linux localhost.localdomain 2.6.29.6 -213.fc11.x86_64 #1 SMP Tue Jul 7 21:02:57 EDT 2009 x86_64 x86_64 x86_64 GNU/Linux </li></ul>
  • 24. vanilla と patched カーネル <ul><li>vanilla とは、 何もいじられていない状態を指す。つまり、 kernel.org (Linux カーネルのウェブサイト ) で配布されてるカーネルをそのまま使用したカーネル のこと。
  • 25. patched カーネルは vanilla とは対照的に、 ディストリビューション特有のパッチや、様々なパッチセットを適用されているカーネル を指す。 </li></ul># パッチセットの例として git 、 mm 、 UML 、 xen などがある。
  • 26. 組み込みドライバとモジュール
  • 27. 組み込みドライバとモジュール <ul><li>Linux の中にはドライバが大量に入っている。
  • 28. 必要なドライバだけ有効にする。
  • 29. 有効にする際にカーネルに組み込むかモジュールを作成するか選べる。 </li></ul># モジュールは有効化無効化 (load/unload) することによって、管理できる。
  • 30. 組み込みドライバとモジュール どんなモジュールがロードされているか調べる : $ lsmod 無効化する : # rmmod < モジュール名 > 有効化する : # modprobe < モジュール名 >
  • 31. Module Size Used by nls_utf8 1760 1 isofs 28164 1 zlib_inflate 14144 1 isofs udf 67684 0 crc_itu_t 2080 1 udf binfmt_misc 7528 1 ppdev 6500 0 lp 8164 0 ipv6 235364 14 cpufreq_conservative 5960 0 cpufreq_powersave 1856 0 cpufreq_stats 3776 0 cpufreq_userspace 3172 0 cpufreq_ondemand 6476 0 freq_table 4224 2 cpufreq_stats,cpufreq_ondemand vboxvfs 36768 0 nls_base 6820 4 nls_utf8,isofs,udf,vboxvfs loop 12748 0 parport_pc 22500 0 parport 30988 3 ppdev,lp,parport_pc psmouse 32336 0 pcspkr 2432 0 snd_intel8x0 26268 1 serio_raw 4740 0 snd_ac97_codec 88484 1 snd_intel8x0 ac97_bus 1728 1 snd_ac97_codec snd_pcm 62596 2 snd_intel8x0,snd_ac97_codec snd_seq 41456 0 snd_timer 17800 2 snd_pcm,snd_seq snd_seq_device 6380 1 snd_seq snd 45604 8 snd_intel8x0,snd_ac97_codec,snd_pcm,snd_seq,snd_timer,snd_seq_device i2c_piix4 7216 0 i2c_core 19828 1 i2c_piix4 soundcore 6368 1 snd snd_page_alloc 7816 2 snd_intel8x0,snd_pcm vboxadd 60864 6 vboxvfs ac 4196 0 button 6096 0 evdev 8000 3 ext3 105512 1 jbd 39444 1 ext3 mbcache 7108 1 ext3 ide_cd_mod 27652 1 cdrom 30176 1 ide_cd_mod ide_disk 10496 3 ata_generic 4676 0 libata 140416 1 ata_generic scsi_mod 129324 1 libata dock 8304 1 libata ide_pci_generic 3908 0 [permanent] floppy 47748 0 ehci_hcd 28396 0 ohci_hcd 18500 0 usbcore 118224 3 ehci_hcd,ohci_hcd e1000 102560 0 piix 6568 0 [permanent] ide_core 96136 4 ide_cd_mod,ide_disk,ide_pci_generic,piix thermal 15228 0 processor 32544 1 thermal fan 4164 0 thermal_sys 10856 3 thermal,processor,fan 実行結果: Module Size Used by bluetooth 53444 ... sunrpc 185512 12 ... ip6t_REJECT 4064 2 nf_conntrack_ipv6 14632 2 ip6table_filter 3936 1 ip6_tables 18784 1 ip6table_filter Ipv6 290336 32 ...
  • 32. というわけで、さぁ、 カーネルを make しよう ! # 今回は vanilla カーネルを make することにします。
  • 33. カーネル再構築が必要な時 <ul><li>ディストリビューションが採用しているパッチセットが気持ち悪い。
  • 34. なんでもかんでも有効にされていて気分が悪い。
  • 35. 使いたいドライバがカーネルに入っていない。
  • 36. ある特定のカーネル設定が必要なソフトウェアを使いたい。
  • 37. 単純に、カーネルアップグレード。
  • 38. やっぱりディストリビューションのパッチセットが ... </li></ul>
  • 39. カーネル make の手順 <ul><li>カーネルをダウンロードする
  • 40. config( 設定 ) する
  • 41. コンパイルする
  • 42. ブートローダにて、新しいカーネルを読み込む様に設定する </li></ul>
  • 43. カーネルをダウンロードする <ul><li>kernel.org にアクセスし、好きなバージョンのカーネル(パッチではない)をダウンロードする。
  • 44. ( 例 : linux-2.6.30.5.tar.bz2 )
  • 45. 適当な場所に展開する
  • 46. $ tar xvf linux-2.6.30.5.tar.bz2 </li></ul>
  • 47. config( 設定 ) する <ul><li>カーネルを展開したディレクトリに cd して、
  • 48. make config または make oldconfig または
  • 49. make menuconfig または make xconfig </li><ul><ul><ul><ul><ul><ul><li>を実行する。 </li></ul></ul></ul></ul></ul></ul></ul>
  • 50. どういうこっちゃ? <ul><li>Config方法はいくつか用意されている。
  • 51. - config (make config) </li><ul><li>一から順番に、設定を有効にするからどうかその都度 y/n 等と答えていく、元祖 config </li></ul><li>- menuconfig (make menuconfig) </li><ul><li>ncurses を使った、コンソール上で動くちょっとだけグラフィカルな config ツール </li></ul><li>- xconfig (make xconfig) </li><ul><li>Tcl/Tk を使った、 X で config するポチポチするツール </li></ul><li># 前ページで述べた、 oldconfig (make oldconfig) はちょっとした設定の修正をしたい場合などに使います。 ( 古い .config を使います ) </li></ul>
  • 52. menuconfig
  • 53. xconfig
  • 54. コンパイルする <ul>$ make && make modules_install $ make -j2 && make modules_install … お好きなgccオプションで makeしてください。 # ./arch/boot/<arch>/bzImage にバイナリが出来上がります。 </ul>
  • 55. ブートローダー <ul><li>出来上がったバイナリを/bootにコピー。
  • 56. コピーしたバイナリからブートする様に設定すれば完了。 </li></ul>GRUB ならこんな感じ ... title Gentoo Linux NEW kernel root (hd0,0) kernel /boot/kernel-new root=/dev/sda3
  • 57. ( 時間があったら ) 実演 config
  • 58. 他にもカーネル再構築方法は沢山あります。 genkernel で自動的に config するのも有りです。 パッチを当てるのも、重要です。 カーネル再構築は難しくありません。 どんどん make しまくってください!
  • 59. ご清聴ありがとうございました。

×