当我编译自己的内核时,基本上,我的工作是:
我从www.kernel.org下载源代码并解压缩。
我将以前.config
的代码复制到源代码中,并执行一个步骤make menuconfig
以监视新选项,并根据内核的新策略修改配置。
然后,我编译它: make -j 4
最后,我安装了它:su -c 'make modules_install && make install'
。
经过几次测试后,我从/boot
和中删除了旧内核,并/lib/modules
使用新内核完全运行(这最后一步挽救了我的生命几次!这是一个专业提示!)。
问题是,/boot/initrd.img-4.x.x
与发行版中的相比,我总是得到一个巨大的数字。这里以我当前/boot/
目录的内容为例:
# ls -alFh
total 243M
drwxr-xr-x 5 root root 4.0K Mar 16 21:26 ./
drwxr-xr-x 25 root root 4.0K Feb 25 09:28 ../
-rw-r--r-- 1 root root 2.9M Mar 9 07:39 System.map-4.4.0-1-amd64
-rw-r--r-- 1 root root 3.1M Mar 11 22:30 System.map-4.4.5
-rw-r--r-- 1 root root 3.2M Mar 16 21:26 System.map-4.5.0
-rw-r--r-- 1 root root 170K Mar 9 07:39 config-4.4.0-1-amd64
-rw-r--r-- 1 root root 124K Mar 11 22:30 config-4.4.5
-rw-r--r-- 1 root root 126K Mar 16 21:26 config-4.5.0
drwxr-xr-x 5 root root 512 Jan 1 1970 efi/
drwxr-xr-x 5 root root 4.0K Mar 16 21:27 grub/
-rw-r--r-- 1 root root 19M Mar 10 22:01 initrd.img-4.4.0-1-amd64
-rw-r--r-- 1 root root 101M Mar 12 13:59 initrd.img-4.4.5
-rw-r--r-- 1 root root 103M Mar 16 21:26 initrd.img-4.5.0
drwx------ 2 root root 16K Apr 8 2014 lost+found/
-rw-r--r-- 1 root root 3.5M Mar 9 07:30 vmlinuz-4.4.0-1-amd64
-rw-r--r-- 1 root root 4.1M Mar 11 22:30 vmlinuz-4.4.5
-rw-r--r-- 1 root root 4.1M Mar 16 21:26 vmlinuz-4.5.0
您可能已经注意到,我initrd.img
文件的大小大约是我发行版文件的10倍。
那么,在编译内核时我做错什么了吗?而且,如何缩小尺寸initrd.img
?
这是因为未剥离所有内核模块。您需要将其剥离以减小其尺寸。
使用此命令:
SHW@SHW:/tmp# cd /lib/modules/<new_kernel>
SHW@SHW:/tmp# find . -name *.ko -exec strip --strip-unneeded {} +
这将大大减小尺寸。执行完上述命令后,您可以继续创建initramfs / initrd
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句