Chinaunix

标题: 内核编译后,如何放到iso镜像中? [打印本页]

作者: marsaber    时间: 2009-11-27 21:19
标题: 内核编译后,如何放到iso镜像中?
目前,Linux的定制已经搞完了。
现在的问题是,如果我想把内核编译后的文件放到新系统中,并且修改grub.conf,开机启用新内核,应该如何实现呢?

我想的是,将内核编译后生成的文件全部收拢打包,然后%post后面解压。

现在就是不知道怎么收拢编译内核后的文件,请斑竹指点指点。
作者: chenyx    时间: 2009-11-27 21:22
羊头试试tar打包,放在%post里面解压.
参考cactiez的做法.
作者: marsaber    时间: 2009-11-27 21:26
原帖由 chenyx 于 2009-11-27 21:22 发表
羊头试试tar打包,放在%post里面解压.
参考cactiez的做法.


对啊,我就准备打包的,只是现在遇到的问题是,如何收拢内核编译后的文件。
作者: chenyx    时间: 2009-11-27 21:30
标题: 回复 #3 marsaber 的帖子
这倒是个问题.
不知道发行版是怎么打包成rpm的.
作者: marsaber    时间: 2009-11-27 21:31
标题: 回复 #4 chenyx 的帖子
对啊,做成rpm包也是一种不错的想法,但是貌似还要解决依赖性等等,目前还是看好tar包的。
作者: kns1024wh    时间: 2009-11-27 21:36
原帖由 chenyx 于 2009-11-27 21:22 发表
羊头试试tar打包,放在%post里面解压.
参考cactiez的做法.


实际上Linux为什么叫做跨平台呀?如果能很好的理解这个问题那么这个实现方式之一就可以很好体现了

有参考的是CUOS-L7的版本在一张iso中集成了2.6.30的内核稳定实现了Netfilter对Layer7的支持;至于Layer7是什么大家可以到网络版去看看;

在这个实现中是在一台物理主机上编译好2.6.30的内核,然后将内核对应的文件及模块文件夹做版本rpm包,这个方式对于大多数人似乎是存在操作问题,那么可以使用简单方式就是将lib下的文件以及boot下的内核引导文件以tar下来
然后使用

  1. %post
  2. #加载光驱
  3. export CDROM_LIST="$(dmesg | grep '\(CD\|DVD\)*ROM' | awk -F':' '{print $1}' | grep -v ' ' | sort | uniq)"
  4. export CDROM_MOUNT_POINT="/mnt"
  5. for dev_cdrom in ${CDROM_LIST}
  6. do
  7.     if [ -e /dev/${dev_cdrom} ]; then
  8.          
  9.         mount /dev/${dev_cdrom} ${CDROM_MOUNT_POINT}
  10.         if [ X"$?" == X"0" ]; then
  11.                          break
  12.         else
  13.                          continue
  14.         fi
  15.     else
  16.  # Try to mount next device.
  17.         continue
  18.     fi
  19. #释放压缩包版本
  20. tar -xf ${CDROM_MOUNT_POINT}/src/kernel-2.6.30.tar.gz -C / >/dev/null 2>&1
  21. done
复制代码

作者: kns1024wh    时间: 2009-11-27 21:37
原帖由 chenyx 于 2009-11-27 21:30 发表
这倒是个问题.
不知道发行版是怎么打包成rpm的.


rpmbuild 最简单的方式就是chroot环境下 做对应路径的cpio的文件压缩
作者: marsaber    时间: 2009-11-27 21:41
标题: 回复 #6 kns1024wh 的帖子
我在那个镜像里没有看见kernel-2.6.30.tar.gz啊。
只看见一个kernel-2.6.18****的rpm包。
作者: marsaber    时间: 2009-11-27 21:42
确认一下,你的那个l7包里,到底是rpm包?还是tar包?
作者: marsaber    时间: 2009-11-27 21:43
如果是tar包,是如何实现的?
如果是rpm包,又是如何实现的?
作者: kns1024wh    时间: 2009-11-27 21:44
原帖由 marsaber 于 2009-11-27 21:43 发表
如果是tar包,是如何实现的?
如果是rpm包,又是如何实现的?


tar简单


  1. tar -cvf kernel-2.6.30.tar /boot /lib
复制代码

之需要这个就可以了
作者: marsaber    时间: 2009-11-27 21:48
标题: 回复 #11 kns1024wh 的帖子
/lib下的文件是不是很大啊?
比如啊,目前内核是2.6.18-128的,编译的内核是2.6.27的。
我只打包/lib/modules/kernel/2.6.27/可以吗?
作者: marsaber    时间: 2009-11-27 21:50
还有,如果系统是64位的,那么打包的文件就更多了。
作者: kns1024wh    时间: 2009-11-28 21:53
标题: 回复 #13 marsaber 的帖子
如果选择64位当然需要呀
64的发行版本就包括i386的必要的信息呀
作者: marsaber    时间: 2009-12-04 08:44
标题: 回复 #14 kns1024wh 的帖子
已经OK了。
作者: chenyx    时间: 2009-12-04 08:46
标题: 回复 #15 marsaber 的帖子
怎么做的,共享啊
作者: dreamice    时间: 2009-12-04 17:42
标题: 回复 #11 kns1024wh 的帖子
这个tar出来,是相当的大啊
作者: kvkss    时间: 2011-05-14 22:55
楼主能不能把ks文件贴出来学习一下呢




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2