Linux中构建内核小结


首先清理一下东西:
  $ sudo make-kpkg clean

  然后
  $sudo make-kpkg -initrd –revision=lk_517 kernel_image kernel_headers modules_image

  lk_517是可以自己换得,表示镜像的名字,必须要以数字结尾。最后是生成镜像包和头文件包。你也可以用binary代替,它融合了image.headers.doc.source,是最完整的包。

  make-kpkg是一个可以自动替换”make dep;make clean;make bzImage;make modules”命令序列的脚本。而最其最常用的两个参数就是–append-to-version与–revision。

  – append-to-version这个选项可以让我们来指定一个额外的内核版本,这个可以成为内核名的一问分。我们可以使用数字,”+”,”,”, 但是不要使用下划线。要避免设置–append-to-version为如”-686″,”-K7″,”-sparc”等值,因为这些值常为 Debian的预编译内核所使用。

  内核模块位于/lib/modules子目录下。每一个内核有他自己的子目录。每次当我们以一个新的名字来安装一个新的内核时,这个包安装程序就会 在/lib/modules目录下创建一个新的子目录来保存他自己的模块。这就意味着每一次我们使用– append-to-version的一个新的值来编译一个内核时,我们就可以保证这个内核有一个新的名字,而他的模块也不会与其他的内核模块相冲突。

  注意:如果我们使用相同的名字来安装一个内核时,安装程序就会覆盖掉已安装的内核及其模块。–revision只会影响Debian软件包本身的名 字而不是内核的名字。与–append-to-version相似,我们只可以使用数,”+ “,”.”,不要使用下划线”_”。如果我们并没有为–revision指定一个值,make-kpkg就会使用”10.00.Custom”.使用不同 的–revision的值就可以避免相同名字的内核之间的冲突。

  在内核构建成功之后,你能在/usr/src目录下看见三个.deb文件。其中包括linux-image-2.6.20- custom_2.6.20-custom-10.00.Custom_i386.deb (包含真实内核) and linux-headers-2.6.20-custom_2.6.20-custom-10.00.Custom_i386.deb (包含那些编译附加内核模块所需要的文件)。

  kernel-image文件的名字格式如下:
  kernel-image-(kernel-version)(–append-to-version)_(–revision)_(architecture).deb

  我用这种办法安装:
  sudo dpkg -i xxx.deb

  你甚至可以将这两个deb包转移到其他的Ubuntu系统中,并用相同的办法安装它们。这意味着,你不再需要再一次编译它们了。

相关内容