手斧Linux – 从LFS到Funtoo (134)

原创 2015年07月09日 17:41:16

2. 如何手工将生成的initramfs包解开?

为什么要解开生成的包呢?因为在排错时,需要查验initramfs包里的内容,以验证思路,坚定决心。以gentoo官方livecd里的initramfs为例,这个initramfs的文件名为gentoo.igz,将它拷到一个临时目录里,然后用以下的命令解开它:

  mv gentoo.igz gentoo.gz

  gunzip gentoo.gz 

  cpio -idv <gentoo

  ls

3. 使用哪个linuxrc?

在genkernel时,可用--linuxrc=/usr/share/genkernel/defaults/linuxrc

指定使用的linuxrc是哪个文件,但在缺省情况下(也就是最原始的/usr/portage/sys-kernel/debian-sources/debian-sources-3.2.29.ebuild),并没有指定。genkernel会使用/usr/share/genkernel/下的多个sh脚本完成多项工作,从这些脚本中,可以知道,在没有指定linuxrc时,genkernel会优先使用/usr/share/genkernel/arch/x86_64/linuxrc,缺少这个文件时,则使用/usr/share/genkernel/default/linuxrc。在这个实验里,真正使用的正是default目录里的那个linuxrc。当需要时,就要在这个文件里修改,然后重新genkernel initramfs,使之生效。

4. 如何在linuxrc里调试?

当initramfs成功加载后,linuxrc会被执行(因在syslinux.cfg 或 isolinux.cfg里指定了init=/linuxrc),在执行的过程中,如果想停下来查看一下,可以在它的执行路径上加一上句

rundebugshell

这时可以进到busybox的shell里,查看当前的文件系统和内核的状态,如lsmod、dmesg等等。

5. initramfs里的busybox是哪里来的?

genkernel会单独给initramfs装配一个busybox,它和最后在rootfs里看到的busybox并不相同。ebuild后,这个专属的busybox的源码包在/var/cache/genkernel/src/busybox-1.20.1.tar.bz2,genkernel在生成initramfs时,会将这个包解开编译,将生成的结果存在/var/tmp/portage/sys-kernel/debian-sources-3.2.29/temp/cache/busybox-1.20.1-x86_64.tar.bz2里,这个cache包里有三个文件:

busybox

.config

.config.gk_orig

因此,如果要修改busybox的源代码,要将上面提到的 busybox-1.20.1.tar.bz2包解开,修改后要重新打包放在原来的位置上,还要将busybox-1.20.1-x86_64.tar.bz2删除,然后再用genkernel initramfs的命令来生成initramfs。

initramfs里的busybox不同于rootfs里的busybox,前者是static方式编译的,可以不依靠别的动态库的支撑就运行起来,这点很重要。

busybox-1.20.1-x86_64.tar.bz2里的.config是编译时使用的配置文件,那这个配置是由谁决定的呢?通过/usr/share/genkernel/的sh文件可以看到,可以在genkernel的命令参数里用--busybox-config来指定具体的config文件,如果显式指定,优先使用/usr/share/genkernel/arch/x86_64/busy-config,不存在时,改用


手斧Linux – 从LFS到Funtoo (2)

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

android 最简单的图片上传

本文中Android上传图片是通过将图片转换成Base64码,然后将Base64码作为参数进行上传的,本文对图片转换Base64码进行了封装。具体使用方法如下 1、工程中添加sun.misc.BAS...

手斧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 (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)
举报原因:
原因补充:

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