在产生kernel时, 有两种方式:
一种:
Other generic targets:
* vmlinux - Build the bare kernel
两种:
Architecture specific targets (x86):
* bzImage - Compressed kernel image (arch/x86/boot/bzImage)
当make vmlinux时, 会在$SRC目录下产生一个vmlinux文件
当make bzImage时, 会在$SRC/arch/x86/boot目录下产生一个bzImage文件
* 因为本人的机器是x86架构的.
两个文件的大小不同:
jessinio@niolaptop /usr/src/linux $ du -h arch/x86/boot/bzImage
3.9M arch/x86/boot/bzImage
jessinio@niolaptop /usr/src/linux $ du -h vmlinux
11M vmlinux
实际上, bzImage是一个被压缩过的kernel(可以运行自解), 在一些资料到提以前的kernel大小是有限制的. 所以需要压缩.
* wikipedia的信息: http://en.wikipedia.org/wiki/Vmlinux
在make install发生的事
在make install后, 会有三个文件被放到/boot下:1. vmlinuz-2.6.x.y.z
2. System.map
3. config
4. 为什么我的gentoo没有initrd.img的??
在/usr/src/linux下还有一个vmlinux的方件.
那么/boot下的vmlinux是哪个呢? 如下:
jessinio@niolaptop /usr/src/linux $ diff /usr/src/linux/arch/x86/boot/bzImage /usr/src/linux/vmlinux
Files /usr/src/linux/arch/x86/boot/bzImage and /usr/src/linux/vmlinux differ
jessinio@niolaptop /usr/src/linux $ diff /usr/src/linux/arch/x86/boot/bzImage /boot/vmlinuz
可以看出/boot下的vmlinux是/usr/src/linux/arch/x86/boot/bzImage
随便提一下make内核时的过程:
就常使用的make也过程:
cd /usr/src/linux
make menuconfig
make
make modules_install
make install
注意到上面的一个make是不参数的, 这种情况实际如下:
Execute "make" or "make all" to build all targets marked with [*]
带"*"号等于如下:
make vlinux modules bzImage
No comments:
Post a Comment
Note: Only a member of this blog may post a comment.