LinuxSir.cn,穿越时空的Linuxsir!

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

Kernel 2.6x 编译过程

[复制链接]
发表于 2003-10-18 20:31:01 | 显示全部楼层 |阅读模式
本文是以Redhat为例,内版本是2.6.0-test8

一、下载

http://www.kernel.org

二、解压

1.把下载好的内核放到/usr/src目录中,比如我下载的是linux-2.6.0-test8.tar.bz2
#mv linux-2.6.0-test8.tar.bz2 /usr/src
#tar jxvf linux-2.6.0-test8.tar.bz2

2.进入相应的目录编译和安装,进入内核选项设置

#cd linux-2.6.0-test8

#make mrproper
#make menuconfig

进入内核选项卡,M是以模快方式编译,*是直接编入内核

致于哪些要编入内核,哪些要编译成模块。在文章管理器和基础讨论区的帖子中都有,自己试着找一找。另外内核中的doc也有相应的文档

3.编译和安装内核

#make
#sudo make install

4.编译和安装模快

#make modules
#make modules_install

5.设置/etc/grub.conf,我不用lilo,更确切的来说,我不太懂,所以只能说Grub的设置办法。

为什么要设置这个呢?其实在编译和安装内核的过程中,系统已经自动把新内核的启动项直接添加到了/etc/grub.conf中。当我们不对/etc/grub.conf进行改动,直接启用新内核会发现VFS错误之类的提示。

下面的是我安装后新内核后,没有改动过的/etc/grub.conf

title Fedora Core (2.6.0-test8)
        root (hd0,7)
        kernel /boot/vmlinuz-2.6.0-test8 ro root=LABEL=/
        initrd /boot/initrd-2.6.0-test8.img
title Fedora Core (2.4.22-1.2061.nptl)
        lock
        root (hd0,7)
        kernel /boot/vmlinuz-2.4.22-1.2061.nptl ro root=LABEL=/
        initrd /boot/initrd-2.4.22-1.2061.nptl.img

改动后的就是
title Fedora Core (2.6.0-test8)
        root (hd0,7)
        kernel /boot/vmlinuz-2.6.0-test8 ro root=/dev/hda8
        initrd /boot/initrd-2.6.0-test8.img
title Fedora Core (2.4.22-1.2061.nptl)
        lock
        root (hd0,7)
        kernel /boot/vmlinuz-2.4.22-1.2061.nptl ro root=LABEL=/
        initrd /boot/initrd-2.4.22-1.2061.nptl.img

对比改动过的/etc/grub.conf,我们不难发现,我们在新内核2.x中,指定root的根分区所在的位置时,没有用标签LABEL=/,而是用的是真正的分区位置。

请对Linux不太熟的弟兄,不要照搬我的分区设置。如果想知道这方面的,在基础讨论区中,有关于GRUB和分区访问的文章,在文章管理器中也有。

最后还有一点就是如果显示卡原来安装过驱动,就要在新内核中重新安装。比如我用的是NVIDIA的显卡,我下载的是LinuxSir.Org的下载区中,哈兄提供的打过补丁的NVIDIA的驱动。装上就OK了。

可能文中有不少错误,请大家指正。

多谢
发表于 2003-10-19 01:06:52 | 显示全部楼层
try
发表于 2003-10-19 02:43:39 | 显示全部楼层
[root@lab2 linux-2.6.0-test8]# make install
make[1]: `arch/i386/kernel/asm-offsets.s' is up to date.
  CHK     include/linux/compile.h
Kernel: arch/i386/boot/bzImage is ready
sh /usr/src/linux-2.6.0-test8/arch/i386/boot/install.sh 2.6.0-test8 arch/i386/boot/bzImage System.map ""
depmod: cannot read ELF header from /lib/modules/2.6.0-test8/modules.dep
depmod: cannot read ELF header from /lib/modules/2.6.0-test8/modules.generic_string
depmod: /lib/modules/2.6.0-test8/modules.ieee1394map is not an ELF file
depmod: /lib/modules/2.6.0-test8/modules.isapnpmap is not an ELF file
depmod: cannot read ELF header from /lib/modules/2.6.0-test8/modules.parportmap
depmod: /lib/modules/2.6.0-test8/modules.pcimap is not an ELF file
depmod: cannot read ELF header from /lib/modules/2.6.0-test8/modules.pnpbiosmap
depmod: /lib/modules/2.6.0-test8/modules.usbmap is not an ELF file

????????????????
发表于 2003-10-19 02:58:00 | 显示全部楼层
进不了新内核?
kernel panic :NO init found. Try passing init =option to kernel
 楼主| 发表于 2003-10-19 18:41:43 | 显示全部楼层
主要是改GRUB的设置文件/etc/grub.conf,我在文章中已经说过了。仔细看一下。

主要是改

kernel /boot/vmlinuz-2.6.0-test8 ro root=LABEL=/

不要用标签,比如我的Linux是安装在/dev/hda8 那就把上面一行改为

kernel /boot/vmlinuz-2.6.0-test8 ro root=/dev/hda8

请再试一下。
发表于 2003-10-19 19:03:24 | 显示全部楼层
我的grub.conf

kernel /boot/vmlinuz-2.6.0-test8 ro root=/dev/hda6
initrd /boot/initrd-2.6.0-test8.img
发表于 2003-10-19 22:45:57 | 显示全部楼层
我的问题是加载时:
mount error 19 mounting ext3.
pivotroot: pwot-root(/sysroot,/sysroot/initrd)failed:2
umount /inittrd/proc failed:2
kernel panic:No init found. Try passing init=option to kernel.
请问该怎么办?

我想是不是改为/dev/hda9,因为fstab是以LABEL=/,现在改为/dev/hda9不能加载。
发表于 2003-10-20 02:22:20 | 显示全部楼层

我看不来啊

小弟装的是红旗4.0桌面版,硬件配置为:
p4 2.4c (800外频)+intel865perl原装主板(集成AD1985 AC97 Codec声卡)+gf4 ti4200+512mb ddr400(256+256双通道)

我的问题是:声卡不能启动,测试时老是显示:"加载模块出错",认出的声卡型号不符,完全没有声音啊。
显卡好像也有问题,显示设置只能为:1024*768(75),我得配置应该不止这样吧?

对于声卡的问题,我个人怀疑是内核太低,不支持。alsa那边说要alsa-driver-0.9.7c版本才支持我的声卡。我也下载了一个。可是,我在这个论坛上看到说要先升级编译一个新内核,我也去下载了一个,可是,我不懂具体该怎么做啊.我看了论坛上的相关帖子,但都看不懂(不够详细,我没办法模拟操作)。

大哥,你能不能发个帖子,根据我的配置和具体情况一步步的教我怎么做啊?最主要的是前面的内核升级和编译(就是内核下载,解压,拷贝,编译,加载直到升级彻底完成的全过程)。
摆脱了,谢谢
 楼主| 发表于 2003-10-20 02:38:49 | 显示全部楼层
最初由 死神 发表
我的问题是加载时:
mount error 19 mounting ext3.
pivotroot: pwot-root(/sysroot,/sysroot/initrd)failed:2
umount /inittrd/proc failed:2
kernel panic:No init found. Try passing init=option to kernel.
请问该怎么办?

我想是不是改为/dev/hda9,因为fstab是以LABEL=/,现在改为/dev/hda9不能加载。


是不是改/etc/grub.conf中的内容了呢?按我说的做了吗??
 楼主| 发表于 2003-10-20 02:40:12 | 显示全部楼层
最初由 simon315 发表
我的grub.conf

kernel /boot/vmlinuz-2.6.0-test8 ro root=/dev/hda6
initrd /boot/initrd-2.6.0-test8.img


linux的位置是在/dev/hda6吗?
用df -lh 来查看,或者fdsik -l来查看,并把输出的信息帖上来。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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