手斧Linux – 从LFS到Funtoo (133)

原创 2015年07月09日 17:38:20

第17章 调试genkernel 和debian-souces

1. 如何直接用genkernel部分编译debian-souces?

在ebuild /usr/portage/sys-kernel/debian-sources/debian-sources-3.2.29.ebuild clean install来编译kernel+initramfs时,会使用genkernel这个工具完成编译过程。整个ebuild过程挺花时间的,有时出于实验的目的,所做的修改并不一定要完全编译,例如,需要修改initramfs里的linuxrc,则只要编译initramfs,并不要编译kernel和modules。

如何知道在ebuild过程中,genkernel在哪个工作目录下,用什么参数被调用呢?为了了解这个问题,使用了一个调试技巧。修改/usr/portage/sys-kernel/debian-sources/debian-sources-3.2.29.ebuild,在genkernel命令的前一行加上一行:

cat > templog <<EOF

在genkernel命令的后一行加上一行:

EOF

然后,再执行一次ebuild /usr/portage/sys-kernel/debian-sources/debian-sources-3.2.29.ebuild clean install,genkernel并不会真正执行起来,但它的命令参数被存到templog文件里了,而templog所在的目录就是它工作的当前目录,在这个实验里,我看到templog文件在/var/tmp/portage/sys-kernel/debian-sources-3.2.29/work/linux-3.2.29目录里。

因此,用下面的命令可以只编译生成initramfs:

cd /var/tmp/portage/sys-kernel/debian-sources-3.2.29/work/linux-3.2.29

genkernel \

--linuxrc=/usr/share/genkernel/defaults/linuxrc \

  --no-save-config \

  --kernel-config="/var/tmp/portage/sys-kernel/debian-sources-3.2.29/temp/config" \

--kernname="debian-sources" \

--build-src="/var/tmp/portage/sys-kernel/debian-sources-3.2.29/work/linux-3.2.29" \

--build-dst=/var/tmp/portage/sys-kernel/debian-sources-3.2.29/work/build \

--makeopts="" \

--firmware-dst=/var/tmp/portage/sys-kernel/debian-sources-3.2.29/work/out/lib/firmware \

--cachedir="/var/tmp/portage/sys-kernel/debian-sources-3.2.29/temp/cache" \

--tempdir="/var/tmp/portage/sys-kernel/debian-sources-3.2.29/temp/twork" \

--logfile="/var/tmp/portage/sys-kernel/debian-sources-3.2.29/work/genkernel.log" \

--bootdir="/var/tmp/portage/sys-kernel/debian-sources-3.2.29/work/out/boot" \

--lvm --luks --iscsi --module-prefix="/var/tmp/portage/sys-kernel/debian-sources-3.2.29/work/out" \

initramfs

成生的文件在 /var/tmp/portage/sys-kernel/debian-sources-3.2.29/work/out/boot/目录里。如果需要编译kernel,只要将initramfs换成kernel调用genkernel就可以了。这样做,可以在排错时,对kernel或initramfs的局部重构,加快排错的过程。

相关文章推荐

手斧Linux – 从LFS到Funtoo (149)

wget http://mirrors.xmu.edu.cn/gentoo/distfiles/bash42-033 wget http://mirrors.xmu.edu.cn/gentoo/di...

手斧Linux – 从LFS到Funtoo (124)

第13章 LiveCD问题分析 1,关于qemu命令行里的  -boot d -cdrom myfuntoo.iso。 -cdrom myfuntoo.iso 让qemu虚拟机里输出一个cdr...

手斧Linux – 从LFS到Funtoo (102)

199. ebuild /usr/portage/virtual/perl-ExtUtils-Install/perl-ExtUtils-Install-1.54.ebuild clean insta...

手斧Linux – 从LFS到Funtoo (152)

wget http://mirrors.xmu.edu.cn/gentoo/distfiles/Module-Load-Conditional-0.52.tar.gz wget http://mir...

手斧Linux – 从LFS到Funtoo (32)

第15节 再次调整工具链分布 ln -sv /tools/bin/x86_64-wolf-linux-gnu-addr2line  /tools/bin/addr2line ln -sv /too...

手斧Linux – 从LFS到Funtoo (150)

wget http://mirrors.xmu.edu.cn/gentoo/distfiles/eselect-python-20111108.tar.bz2 wget http://mirrors...

手斧Linux – 从LFS到Funtoo (2)

第1章 前言 2012年春节前,我开始学习LFS,详尽的LFS手册,让我有依有据地体验了一个系统的构造过程,漫长而劳累。接下来,我开始着迷于另一个问题:如何自己动手从源码开始构造出ubuntu的发行...

手斧Linux – 从LFS到Funtoo (151)

wget https://nodeload.github.com/gentoo/hwids/tar.gz/hwids-20121202 -O hwids-20121202.tar.gz wget h...

手斧Linux – 从LFS到Funtoo (97)

第3节 安装第一批软件包 接下来,可以用ebuild...qmerge来安装软件包了,portage系统将完成源码包的定位、下载、解开、编译、安装、管理等工作。 1. ebuild /usr/...

手斧Linux – 从LFS到Funtoo (134)

2. 如何手工将生成的initramfs包解开? 为什么要解开生成的包呢?因为在排错时,需要查验initramfs包里的内容,以验证思路,坚定决心。以gentoo官方livecd里的initramfs...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:手斧Linux – 从LFS到Funtoo (133)
举报原因:
原因补充:

(最多只允许输入30个字)