kernel:kernel source

Linuxのkernelは http://www.kernel.orgミラーサイトなどからダウンロードすることができる。
ダウンロードしたkernelファイルは、gzipやbzip2形式で圧縮されているので解凍する。

kernelソースは役割ごとにディレクトリ分類されている。

  • 基本機能
  • アーキテクチャ依存部
  • I/O (入出力)
  • セキュリティ
  • ツール・ライブラリ

実際のフォルダとしてはこんなかんじ。

[root@tkcent1 linux-2.6.23.1]# ls
COPYING Documentation MAINTAINERS README arch crypto fs init kernel mm scripts sound
CREDITS Kbuild Makefile REPORTING-BUGS block drivers include ipc lib net security usr

  • 基本機能
init 起動・初期化処理
mm メモリ管理
kernel kernel基本機能(Process時間管理・割り込み処理等)
ipc プロセス間通信
arch i386 i386アーキテクチャ
x86_64 x64アーキテクチャ

など

[root@tkcent1 arch]# ls
alpha avr32 cris h8300 ia64 m68k mips powerpc s390 sh64 sparc64 v850 xtensa
arm blackfin frv i386 m32r m68knommu parisc ppc sh sparc um x86_64

  • I/O
fs ファイルシステム

ext3, nfs, ntfsなど

[root@tkcent1 fs]# ls
9p binfmt_elf_fdpic.c compat_ioctl.o eventpoll.c fuse jbd2 nfsctl.o quota_v2.c stat.o
Kconfig binfmt_em86.c configfs eventpoll.o generic_acl.c jffs2 nfsd quota_v2.o super.c
Kconfig.binfmt binfmt_flat.c cramfs exec.c gfs2 jfs nls ramfs super.o
Makefile binfmt_misc.c dcache.c exec.o hfs libfs.c no-block.c read_write.c sync.c
adfs binfmt_misc.o dcache.o exportfs hfsplus libfs.o ntfs read_write.h sync.o
affs binfmt_script.c dcookies.c ext2 hostfs lockd ocfs2 read_write.o sysfs
afs binfmt_script.o dcookies.o ext3 hpfs locks.c open.c readdir.c sysv
aio.c binfmt_som.c debugfs ext4 hppfs locks.o open.o readdir.o timerfd.c
aio.o bio.c devpts fat hugetlbfs mbcache.c openpromfs reiserfs udf
anon_inodes.c bio.o direct-io.c fcntl.c inode.c mbcache.o partitions romfs ufs
anon_inodes.o block_dev.c direct-io.o fcntl.o inode.o minix pipe.c select.c utimes.c
attr.c block_dev.o dlm fifo.c inotify.c mpage.c pipe.o select.o utimes.o
attr.o buffer.c dnotify.c fifo.o inotify.o mpage.o pnode.c seq_file.c vfat
autofs buffer.o dnotify.o file.c inotify_user.c msdos pnode.h seq_file.o xattr.c
autofs4 built-in.o dquot.c file.o inotify_user.o namei.c pnode.o signalfd.c xattr.o
bad_inode.c char_dev.c dquot.o file_table.c internal.h namei.o posix_acl.c signalfd.o xattr_acl.c
bad_inode.o char_dev.o drop_caches.c file_table.o ioctl.c namespace.c posix_acl.o smbfs xattr_acl.o
befs cifs drop_caches.o filesystems.c ioctl.o namespace.o proc splice.c xfs
bfs coda ecryptfs filesystems.o ioprio.c ncpfs qnx4 splice.o
binfmt_aout.c compat.c efs freevxfs ioprio.o nfs quota.c stack.c
binfmt_elf.c compat.o eventfd.c fs-writeback.c isofs nfs_common quota.o stack.o
binfmt_elf.o compat_ioctl.c eventfd.o fs-writeback.o jbd nfsctl.c quota_v1.c stat.c

block ブロックデバイス
net ネットワーク

ipv4, ethernet, 8021qなど

[root@tkcent1 net]# ls
802 Makefile ax25 compat.c decnet ipv4 iucv mac80211 netrom rose socket.c sysctl_net.o wireless
8021q TUNABLE bluetooth compat.o econet ipv6 key netfilter nonet.c rxrpc socket.o tipc x25
9p appletalk bridge core ethernet ipx lapb netlabel packet sched sunrpc unix xfrm
Kconfig atm built-in.o dccp ieee80211 irda llc netlink rfkill sctp sysctl_net.c wanrouter

drivers デバイスドライバ

[root@tkcent1 drivers]# ls
Kconfig atm cdrom dio firmware infiniband macintosh misc oprofile power scsi telephony zorro
Makefile auxdisplay char dma hid input mca mmc parisc ps3 serial uio
acorn base clocksource edac hwmon isdn md mtd parport rapidio sh usb
acpi block connector eisa i2c kvm media net pci rtc sn video
amba bluetooth cpufreq fc4 ide leds message nubus pcmcia s390 spi w1
ata built-in.o crypto firewire ieee1394 lguest mfd of pnp sbus tc xen

sound サウンド
  • セキュリティ
security セキュリティ

SELinuxなど
[root@tkcent1 security]# ls

Kconfig built-in.o capability.o commoncap.o dummy.o inode.o root_plug.c security.o
Makefile capability.c commoncap.c dummy.c inode.c keys security.c selinux

crypto 暗号処理
  • ツールライブラリ
include kernelヘッダファイル
lib kernel内ライブラリ・ルーチン(文字列処理、排他処理など)
scripts コンパイル用ツール
usr kernel内ツール