内核技术 - 编译2.6.0-test2内核
编译2.6.0-test2内核
2004-04-23 15:18 pm来自:Linux文档
现载:Www.8s8s.coM
地址:无名
摘要
也许2.6.0内核会给linux带来革命。从2.5.*内核开始linux有了向高端应用进军 的资本。这次2.6.0内核也是主要是在高级应用上有较大变化。还有增加了对更多的设备的支持(nForce2主板就需要新内核支持)。 这些也不是咱们讨论的范围。对了新的内核,给大家第一感受是,鼠标,键盘,好用了。新内核对这些外设做了优化。(以后还可能弄一个专门为了显示的内核,到那时linux就真的可以进军桌面了。)(2003-08-14 09:20:15)
By 痞菜
也许2.6.0内核会给linux带来革命。从2.5.*内核开始linux有了向高端应用进军的资本。这次2.6.0内核也是主要是在高级应用上有较大变化。还有增加了对更多的设备的支持(nForce2主板就需要新内核支持)。
这些也不是咱们讨论的范围。对了新的内核,给大家第一感受是,鼠标,键盘,好用了。新内核对这些外设做了优化。(以后还可能弄一个专门为了显示的内核,到那时linux就真的可以进军桌面了。)
这些特点其实在2.5.*某些版本里已经有了。还有2.6.0的Makefile文件也变化很大的哦 呵呵 在罗嗦罗嗦2.5.75也许比大家想的要好用的多。
新内核可以在http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.0-test2.tar.gz下载。
先把linux-2.6.0-test2.tar.gz 复制到/usr/src/ 的下面 tar -zxf linux-2.6.0-test2.tar.gz; cd linux-2.6.0-test2 因为是新内核没有编译过所以不用make mrproper 把原来编译产生的垃圾删除
配置内核可以根据需要与爱好使用下面命令中的一个:
#make config (基于文本的最为传统的配置界面)
#make menuconfig (基于文本选单的配置界面)
#make xconfig (基于图形窗口模式的配置界面)
#make oldconfig (如果只想在原来内核配置的基础上修改一些小地方,会省去不少麻烦)
进行配置时,大部分选项可以使用其缺省值,只有小部分需要根据用户不同的需要选择。例如,如果需要内核支持DOS分区的文件系统,则要在文件系统部分选择FAT或DOS系统支持;系统如果配有网卡、PCMCIA卡等,需要在网络配置中选择相应卡的类型。
选择相应的配置时,有三种选择,它们分别代表的含义如下:
“Y”- 将该功能编译进内核
“N”- 不将该功能编译进内核
“M”- 将该功能编译成可以在需要时动态插入到内核中的模块。
将与核心其它部分关系较远且不经常使用的部分功能代码编译成为可加载模块,有利于减小内核的长度,减小内核消耗的内存,简化该功能相应的环境改变时对内核的影响。许多功能都可以这样处理,例如像上面提到的网卡的支持、对FAT等文件系统的支持。
其实现在编译内核最关键的地方就是配置内核。我一般用make menuconfig配置内核。
配置2.6.0内核时如果你的主板是Intel芯片的话,你用默认配制也许就可以得到一个满意的内核哦。做法是make menuconfig后离开时选择保存。
这里的难点是pci,如果你硬盘是IDE的那一定要选择好你主板上南桥芯片。SCSI的话就是要选择上你的SCSI卡型号。
还有就是网卡,声卡芯片的型号了,他们的型号你都可以用lspci 查找到比如我的是。
sh-2.05a# /sbin/lspci
00:00.0 Host bridge: ServerWorks CNB20LE Host Bridge (rev 05)
00:00.1 Host bridge: ServerWorks CNB20LE Host Bridge (rev 05)
00:02.0 PCI bridge: Intel Corp. 80960RP [i960 RP Microprocessor/Bridge] (rev 01)
00:02.1 I2O: Intel Corp. 80960RP [i960RP Microprocessor] (rev 01)
00:04.0 Ethernet controller: 3Com Corporation 3c985 1000BaseSX (SX/TX) (rev 01)
00:08.0 PCI bridge: Digital Equipment Corporation DECchip 21152 (rev 03)
00:0e.0 VGA compatible controller: ATI Technologies Inc 3D Rage IIC (rev 7a)
00:0f.0 ISA bridge: ServerWorks OSB4 South Bridge (rev 4f)
00:0f.1 IDE interface: ServerWorks OSB4 IDE Controller
02:04.0 Ethernet controller: Intel Corp. 82557/8/9 [Ethernet Pro 100] (rev 05)
02:05.0 Ethernet controller: Intel Corp. 82557/8/9 [Ethernet Pro 100] (rev 05)
03:02.0 PCI bridge: Intel Corp. 80960RM [i960RM Bridge] (rev 01)
03:08.0 Ethernet controller: Intel Corp. 82557/8/9 [Ethernet Pro 100] (rev 08)
你只要把你pci上的东西全部选择对了。 剩下就用默认的就可以了
配制内核完毕后make install 还要说一句make install也是最近的从2.5.69内核(按照内核发布时间算)开始才有的选项他可以帮你完成很多东西。方便大大的 。
2.4.21你可以用make install
现在这些步骤就是没有make install时要做的
#make dep (确保关键文件在正确的位置) 2.5.*-2.6.0都不需要了。其实2.4.*某些内核也不需要了。
#make clean (确保所有有关文件都处于最新版本状态)
#make zImage (编译压缩形式的内核)
在需要内核支持较多的外设和功能时,内核可能变得很大,此时可以编译大内核:
#make bzImage
编译的时间与机器的硬件条件及内核的配置等因素有关,以笔者的64MB内存的赛扬300为例,编译内核一次大致需要20多分钟。所获得的内核的位置在/usr/src/linux/arch/i386/boot目录下,当然这里假设用户的CPU是x86型的。
如果选择了可加载模块,编译完内核后,要对选择的模块进行编译:
#make module (编译选择的模块)
#make module-install (将编译后的模块转移到系统标准位置)
模块在系统中的标准目录位于/lib/modules/x.y.z,后面的x.y.z是版本号,为安全起见,在运行#make modules-install之前最好对/lib/modules进行备份。模块通常是带有扩展名.o的文件,使用命令#lsmod可以对当前内核的模块进行列表。
我一般是 make dep ;make bzImage;make module ;make module-install
cp /usr/src/linux2.6.0-test2/arch/i386/boot/bzImage /boot/vmlinuz-2.6.0-test2
cp /usr/src/linux-2.6.0-test2/System.map /boot/System.map-2.6.0-test2
这些make install都可以办到的
剩下就是修改 /etc/lilo.conf
vi /etc/lilo.conf
添加新内核。有时make install连这个都给你修改好了。
下面是我的lilo.conf
prompt
timeout=50
default=linux
boot=/dev/sda
map=/boot/map
install=/boot/boot.b
message=/boot/message
linear
image=/boot/vmlinuz-2.4.18-3smp
label=linux
initrd=/boot/initrd-2.4.18-3smp.img
read-only
root=/dev/sda6
image=/boot/vmlinuz-2.6.0-test2
label=linux-2.6.0-test2
initrd=/boot/initrd-2.6.0-test2.img
read-only
root=/dev/sda6
再运行
sh-2.05a# lilo
重新生成lilo
这样你的内核就升级完毕。
-----猪头党--痞菜