LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
12
返回列表 发新帖
楼主: forrestxz

[请教]两种内核编译的区别是什么

[复制链接]
发表于 2009-7-1 09:25:40 | 显示全部楼层
那么多年下来,还是有人把genkernel 和 不带参数的genkernel 混淆了
还是有人无视genkernel --menuconfig
还是有人会错了'all'的意思。

多年来Gentoo Hand Book最不gentoo-way的地方,连一句Please man genkernel都不愿意说。 genkernel是爹妈抛弃的苦孩子啊...
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-7-1 10:15:42 | 显示全部楼层
Post by yymailb;2002376
自己编译内核的优点和缺点(假定在编译选项进行了合理选择的情况下):
优点:
   启动快
   运行快
   可以打开你想要的一些特性(genkernel并不是所有特性都打开的),这个有时候很重要
   占内存更小
   如果所有东西全进内核,不做模块的话grub配置也方便些
缺点:
   N多的时间学习 make menuconfig
   换硬件以后可能需要重编译

我自己装的时候是先做了个genkernel的放到grub里用着,顺便写个自己kernel的启动项,然后慢慢学习内核编译,一次次的尝试,不行就重启选genkernel进系统,再改配置/编译/复制到boot,直到最后全部圆满。我是全部编译到内核不做模块的,这样就不用管mod和initramfs 这堆东西了。每次编译也只用3步:
make menuconfig
make
cp arch/x86_64/boot/bzImage /boot/kernel-。。。。。

下面是grub配置文件
title Gentoo Linux 2.6.29-r5
root (hd0,1)
kernel /boot/kernel-2.6.29-gentoo-r5 root=/dev/sda3

title Gentoo All
root (hd0,1)
kernel /boot/kernel-genkernel-x86_64-2.6.29-gentoo-r5 root=/dev/ram0 ramdisk=8192 real_root=/dev/sda3
initrd /boot/initramfs-genkernel-x86_64-2.6.29-gentoo-r5



明白这个意思了!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-7-1 10:17:24 | 显示全部楼层
Post by MeaCulpa;2002558
那么多年下来,还是有人把genkernel 和 不带参数的genkernel 混淆了
还是有人无视genkernel --menuconfig
还是有人会错了'all'的意思。

多年来Gentoo Hand Book最不gentoo-way的地方,连一句Please man genkernel都不愿意说。 genkernel是爹妈抛弃的苦孩子啊...


能否再详细点?gentoo关安装就有太多的东西可学,如果方便,请说详细点。

我想这样虽然会少掉一个探索机会,但是也会少吓跑一个新手吧:)
回复 支持 反对

使用道具 举报

发表于 2009-7-1 10:43:23 | 显示全部楼层
genkernel 是一套自动化编译内核的脚本.

举3个例子:

#genkernel all
指的是用默认配置编译所有步骤:即 内核+模块+ramdisk

#genkernel --menuconfig all
让你以默认配置为设置起点来配置内核,编译所有步骤.
可见你能做的事情和make menuconfig毫无区别。
用不用genkernel与能否自定义配置内核毫无关系.
与编译出来的内核性能也毫无关系

#genkernel --kernel-config=/usr/src/config --menuconfig --bootloader=grub --splash=livecd-2007.0 all
如果嫌默认配置太肥大,可以如此指定任意配置为起点,注意我这里偷懒请genkernel帮我写grub.conf了

man genkernel   以及/etc/genkernel.conf 有其他大量信息。
回复 支持 反对

使用道具 举报

发表于 2009-7-1 14:27:07 | 显示全部楼层
上次好像就是和meaCulpa聊的吧,说官方文档的genkernel部分有一定误导。genkernel不是那种只能生成通用“低”性能内核的软蛋,通过--menuconfig,genkernel能很方便的生成一样精简的内核。
回复 支持 反对

使用道具 举报

发表于 2009-7-2 06:19:35 | 显示全部楼层
借此问题问下可以使用genkernel指定以前自己编译内核的 .config文件吗?如果可以请问下如何指定?--kernel-config=/path/to/config-file这个?
回复 支持 反对

使用道具 举报

发表于 2009-7-2 10:51:15 | 显示全部楼层
当然可以。好像就是你说的,看下genkernel --help确认一下吧。

ps:英语没有学好,看到path to config-file愣了一下,原来 path后加介词短语是用to的……
回复 支持 反对

使用道具 举报

发表于 2009-7-2 13:43:14 | 显示全部楼层
其实简单的逻辑,genkernel的版本并不与gentoo-source完全同步,
所以那个为人所不齿的“肥”配置是gentoo-source赐予我们的而不是genkernel
Post by chenhaolost;2002825
借此问题问下可以使用genkernel指定以前自己编译内核的 .config文件吗?如果可以请问下如何指定?--kernel-config=/path/to/config-file这个?

如果你的内核打开了如下配置选项:
  1. General setup --->[*] Kernel .config support[*] Enable access to .config through /proc/config.gz
复制代码
亦即cat current.working.config | grep -i ikconfig 有:
  1. CONFIG_IKCONFIG=y
  2. CONFIG_IKCONFIG_PROC=y
复制代码
则不论是否人为保留了内核配置备份,皆可在/proc/config.gz找到自己的当前内核配置。gentoo任何安装媒体的内核以及gentoo-source的默认配置都是打开此项的,看看有没有这个gz吧。

这个/proc/config.gz是压缩的,一般如此解开:
  1. zcat /proc/config.gz > /path/to/config
复制代码
  1. genkernel --kernel-config=/path/to/config --menuconfig....
复制代码
就是以上次生效配置为起点来捣鼓了
另外,genkernel 的 --save-config 参数会在编译成功后在/etc/kernels/kernel-config-$(uname -r) 保存一份内核配置
回复 支持 反对

使用道具 举报

发表于 2009-7-2 19:36:01 | 显示全部楼层
谢谢亞利艾爾 与MeaCulpa 的回答,恩,明白了。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表