LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 27834|回复: 117

kernel 2.6.0 编译方法(给新手)

[复制链接]
发表于 2003-12-20 11:15:24 | 显示全部楼层 |阅读模式
发现还是很多人问关于内核编译的问题,所以一时性起发个帖子总结一下。

2.6.0 的编译方法已经简洁了很多,下面的办法假设你的现有系统上已经具备了所有操作所需要的东西(绝大多数系统默认都已经提供)

1.下载
http://www.kernel.org/pub/linux/kernel/v2.6/ 下载 linux-2.6.0.tar.bz2
选择 bz2 的原因就是压缩比高,节约点时间

2.解压

  1. # cd /usr/src
  2. # tar xvjpf [$NEW-KERNEL-PATH]/linux-2.6.0.tar.bz2
复制代码


$NEW-KERNEL-PATH 就是你刚才将新内核下载到的路径,以下操作都在 /usr/src 目录下完成

3.配置

  1. # make mrproper
  2. # make menuconfig
复制代码


make mrproper 是清理代码树的动作,保证源代码是干净的
make menuconfig 如果失败,很可能是 ncurses 库没有装,可以用 make xconfig 或者 make config 来替代

4.编译

  1. # make
复制代码


如果不放心,也可以用旧的命令:make bzImage && make modules 。

5.安装

  1. # make install
复制代码


如果不放心,也可以用 cp [$bzImage-PATH]/bzImage /boot/vmlinuz-2.6.0 && cp System.map /boot/System.map-2.6.0 来替代
另外, make modules_install 也一样还可以用。
不过,建议在没有 make clean 之前,如果增加了新的模块,可以直接 make menuconfig && make moduels && make modules_install,不需要全部重新来过

6.检验

  1. # ls /boot
复制代码


如果看到了 vmlinuz-2.6.0 和 System.map-2.6.0 ,那么恭喜你,成功了!
如果你是用 make install 安装的,还会看到个 config-2.6.0 文件

7.清理

  1. make clean
复制代码


如果你以后还要利用这次编译的成果,也可以省略这一步,如果你想直接删除源代码目录,也可以省略这一步。

8.修改 grub

在 grub 的配置文件中进行修改,增加新内核的支持。建议保留旧内核的项目,避免编译失败后痛哭流涕
通常 grub 配置文件在下面三个地方(根据发行版的不同):
/etc/grub.conf
/boot/grub/menu.lst
/boot/grub/grub.conf
根据你的实际情况来修改。
修改参照下面:


  1. title Kernel 2.6.0
  2. root (hd0,0)
  3. kernel /vmlinuz-2.6.0 ro root=/dev/hda1
复制代码


将 (hd0,0) 和 /dev/hda1 换成你的实际信息,如果重新启动后出现 kernel panic 错误或者显示应该修改 init 信息,则基本都是 kernel 语句错误。

8.其他

如果你的 kernel 支持内存镜像,就用 mkinitrd 命令制作一个镜像文件,然后拷贝到 /boot 路径下。通常在 redhat 的 /boot 下有一个 initrd-2.6.0.img 就是这么做的,呵呵。不过这个步骤似乎并非必要,而且很多发行版默认不提供
mkinitrd 命令。就算你真的非要这么做,也要记得在 make menu 的时候记得选择内核镜像 ram image,并且不能安装为模块,否则 initrd 就不会运作。


最后,Enjoy It!

以上如果有什么地方有问题或者新的东东,希望大家提出来,群策群力
 楼主| 发表于 2003-12-20 11:19:22 | 显示全部楼层

总结一下

其实,内核编译,简单来说就是:

make mrproper
make menuconfig
make
make install ( make modules_install 可选 )
make clean
 楼主| 发表于 2003-12-20 11:35:40 | 显示全部楼层

补充一句

忘记说了
如果你使用非 root 帐号,执行类似 make install 这样的指令,可能不成,需要 sudo make install 。
如果提示没有 sudo 指令,需要执行 su 取得超级用户的权限。
发表于 2003-12-20 13:31:48 | 显示全部楼层
我也是这样编译的,但重启后出现一句错误提示后就死锁了:
kernel panic : no init found ,try passing init = option to kernel.............
重编译了几次都这样..........
 楼主| 发表于 2003-12-20 14:30:23 | 显示全部楼层
看第7点,通常是 kernel 中 root 参数不正确
根据你硬盘实际情况修改
请参考硬盘文件命名规则
比如第一块IDE硬盘的第一个扩展分区是 /dev/hda5
第二块SCSI硬盘的第一个主分区是 /dev/sdb1
发表于 2003-12-20 17:38:18 | 显示全部楼层
问题:我编译之后启动,屏幕什么显示都没有是什么问题?是否显示卡驱动没选择好?
 楼主| 发表于 2003-12-20 20:07:27 | 显示全部楼层
是什么没显示?有没有显示 grub 选项?
如果没有,那么是 grub 配置错误
两种可能:
splashimage 路径设置错误
mbr 安装错误

一般来说,进入字符界面,和显示卡驱动没关系
就算用 xfree86,不安装驱动都一样可以用。
发表于 2003-12-20 20:17:12 | 显示全部楼层
几天没开电脑,今天到kernel.org没想到2.6.0已经发布了…这会儿就去尝试先…
发表于 2003-12-20 22:38:37 | 显示全部楼层
编译2.6.0出错了,和上面一位弟兄的一样
kernel panic : no init found ,try passing init = option to kernel
可以确定盘符之类都没有搞错
发表于 2003-12-21 14:06:36 | 显示全部楼层
我现在也没有解决啊,害我重装N次系统,问题依旧.没办法.今天重装时到了第三张盘,还有39秒就要完成了,居然说无法挂载光盘.啊..........疯了.......
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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