カーネルをmakeするとvmlinuzとSystem.mapが作成されますがこれは一体なんでしょう。
# make defconfig
# make
# make modules_install
# ls -F
Liunuxカーネルはこのようなイメージファイルの形でファイルシステム上に格納されています。
カーネルをコンパイルするときに、zImageとbzImageを選択できるようになっていますが、
zImageには512KBまでのメモリ制限があります。
bzImageは拡張メモリを有効にするため、1MB以降のメモリ空間への展開が可能となっています。
メモリアドレスとシンボルとのマッピングが記されています。
カーネルパニック時などの際のデバッグに役立ちます。
シンボル一覧は/proc/kallsymsで確認できます。
必要最低限のものが詰まった小さなルートファイルシステムです。
メモリに展開後、ループバックマウントされ最小限のLinuxルートファイルシステムとなり、その中に内臓されたドライバによりHDD内の本体ルートファイルシステムを読み込みます。
カーネルをmakeした後はmkinitrdコマンドでこの初期RAMディスクを作成してやります。
# mkinitrd initrd.img 3.15.9
initrd.imgはgzipにより圧縮されています。
# file initrd.img
展開してみます。
なぜか標準出力を介さないと展開できません。
# gzip -dc initrd.img > initrd
# file initrd
initrd.imgの正体はcpioアーカイブでした。
さらにcpioを展開して中身を見てみます。
# mkdir temp; cd temp
# cat ../initrd | cpio -id
# ls -F
# make defconfig
# make
# make modules_install
# ls -F
COPYING Module.symvers drivers/ lib/ security/
CREDITS README firmware/ mm/ sound/
Documentation/ REPORTING-BUGS fs/ modules.builtin tools/
Kbuild System.map include/ modules.order usr/
Kconfig arch/ init/ net/ virt/
MAINTAINERS block/ ipc/ samples/ vmlinux*
Makefile crypto/ kernel/ scripts/ vmlinux.o
vmlinuzはカーネルイメージ
Liunuxカーネルはこのようなイメージファイルの形でファイルシステム上に格納されています。
カーネルをコンパイルするときに、zImageとbzImageを選択できるようになっていますが、
zImageには512KBまでのメモリ制限があります。
bzImageは拡張メモリを有効にするため、1MB以降のメモリ空間への展開が可能となっています。
System.mapはカーネルのシンボルテーブル
メモリアドレスとシンボルとのマッピングが記されています。
カーネルパニック時などの際のデバッグに役立ちます。
シンボル一覧は/proc/kallsymsで確認できます。
initrd.imgは初期RAMディスク
必要最低限のものが詰まった小さなルートファイルシステムです。
メモリに展開後、ループバックマウントされ最小限のLinuxルートファイルシステムとなり、その中に内臓されたドライバによりHDD内の本体ルートファイルシステムを読み込みます。
カーネルをmakeした後はmkinitrdコマンドでこの初期RAMディスクを作成してやります。
# mkinitrd initrd.img 3.15.9
initrd.imgはgzipにより圧縮されています。
# file initrd.img
initrd.img: gzip compressed data, from Unix, last modified: Wed Aug 13 23:13:44 2014, max compression
展開してみます。
なぜか標準出力を介さないと展開できません。
# gzip -dc initrd.img > initrd
# file initrd
initrd: ASCII cpio archive (SVR4 with no CRC)
initrd.imgの正体はcpioアーカイブでした。
さらにcpioを展開して中身を見てみます。
# mkdir temp; cd temp
# cat ../initrd | cpio -id
# ls -F
bin@ etc/ lib@ proc/ run/ shutdown* sysroot/ usr/
dev/ init@ lib64@ root/ sbin@ sys/ tmp/ var/
- 関連記事
-
-
mkisofsでisoイメージを作成 201 2014/08/14
-
ext2以降のファイルシステムの構造 201 2014/08/14
-
vmlinuzとinitrd.imgとSystem.mapって 201 2014/08/13
-
/etc/fstabの書式 201 2014/08/10
-
mkswap USBデバイスやファイルにスワップ領域を作ってみる 201 2014/08/09
-