目前分類:kernel (3)

瀏覽方式: 標題列表 簡短摘要

<前言>

繼 x86 之後 想說又來研究一下 zImage 含了什麼鬼東西 所以 在此做了一些紀綠.

<Trace>

下面這個是彷照 x86 的方式 把它 log 下來的message ...

在當設定完 ARCH=arm CROSS_COMPILE=path/to/your/toolchain 時 並 make 會在 kernel source tree 最上層目錄產出一個 vmlinux 這個檔案非常的大 因為它是一個沒有壓縮過的核心 

make -f scripts/Makefile.build obj=arch/arm/boot MACHINE=arch/arm/mach-dove/ arch/arm/boot/uImage

sakbk 發表在 痞客邦 留言(4) 人氣()

<前言>

其實這個問題困擾我很久 在 grub 裡會我們會填一個 initrd 的東西, 這個東西就是在 /boot 下面的 initrd.img* 這個檔案 是 ramdisk 但是問題來了 grub 到底是如何跟 kernel 互動的呢?
kernel 怎麼去知道這個 initrd 在什麼地方呢?
所以稍微追了一下 所以在此紀錄一下

P.S : 我這邊所說的 initrd 是包含 initramfs (cpio-gzip format), 和 initrd (filesystem based loop device). 都是經由 bootloader (GRUB/GRUB2) 所 指定的.

sakbk 發表在 痞客邦 留言(3) 人氣()

 

一直以來都有一個困惑到底 bzImage 是由什麼東西所組成的呢? 稍微 trace 了一下 kernel, 雖然還是一大堆困惑 -_-

在 kernel source 的最上層 make V=1 &> make.proc, 可以看到整個 build 的詳細過程. 稍微整理了一下如下所示

vmlinux-img.png

Step 1 - 之前的是 kernel 本尊 ( vmlinux ) 保留了 .note, .comment, 和除錯資訊, 藉由 objcopy  -R .comment -S vmlinux arch/x86/boot/compressed/vmlinux.bin 去除了 .commnt和除錯資訊 產出了 vmlinux.bin, 這個就是沒有壓縮前的 kernel

Step 2 - gzip -f -9 < arch/x86/boot/compressed/vmlinux.bin > arch/x86/boot/compressed/vmlinux.bin.gz

sakbk 發表在 痞客邦 留言(2) 人氣()