实验内容:
完成Linux内核2.6系列的编译,编译后的新内核能成功运行即可。
实验要求:
在编译过程中,记录遇到的问题及解决方法,实验结束后将这部分内容写到实验报告中(实验报告格式另附)。
实验开始前,请认真阅读实验指导及实验报告中的思考题,边思考边完成实验。
实验详细步骤:
Linux内核编译(以2.6.17.10为例)
以下的编译过程是在vmware workstation 5.5.1中的Red Hat Linux 9(内核版本2.4.20-8)中完成的。 编译内核需要root权限,以下操作都假定你是root用户。
一、编译前准备
1)下载内核源代码,如:linux-2.6.17.10.tar.bz2 ,网址:http://kernel.org/pub/linux/kernel/v2.6/ 2)下载最新版本的module-init-tools ( \"module-init-tools-3.0.tar.gz\" and \"modutils-2.4.21-23.src.rpm\" )
http://www.kernel.org/pub/linux/kernel/people/rusty/modules/module-init-tools-3.0.tar.gz http://www.kernel.org/pub/linux/kernel/people/rusty/modules/modutils-2.4.21-23.src.rpm
注:为方便同学们完成实验,所需要的软件包及源代码已下载到/root/linux-kernel目录中。
3)安装modutils-2.4.21-23.src.rpm。可能会看到\"user rusty and group rusty not existing\"的警告,没关系,只需强制安装就是了。如果你不对Redhat 9做这几步,将会在\"make modules_install\"这一步时出现问题。
# rpm -e --nodeps modutils (强行卸载原有的modutilsRPM包) # cd /root/linux-kernel (自己创建的目录linux-kernel,下载的modutils-2.4.21-23.src.rpm就放在该目录下)
# rpm -ivh modutils-2.4.21-23.src.rpm (把源代码包安装到了/usr/src/redhat目录下) # cd /usr/src/redhat/SPECS (进入规范文件目录下) # rpmbuild -bb modutils.spec (生成二进制的RPM包) # cd ../RPMS/i386 (转入刚生成的二进制的RPM包所在位置)
# rpm -ivh modutils*.rpm (刚生成两个[modutils-2.4.21-23.i386.rpm与modutils-debuginfo- 2.4.21.23.i386.rpm]二进制的RPM包,一起安装吧!)
4)安装module-init-tools。它会替代depmod [/sbin/depmod]和其他工具。
# cd /root/linux-kernel (自己创建的目录linux-kernel,下载的module-init-tools-3.0.tar.gz就放在该目录下)
# tar -zxvf module-init-tools-3.0.tar.gz (或:tar -jxvf module-init-tools-3.0.tar.bz2 ) # cd module-init-tools-3.0 # ./configure --prefix=/sbin # make
# make install
# ./generate-modprobe.conf /etc/modprobe.conf
5)将新版本内核linux-2.6.17.10.tar.bz2拷贝到/usr/src目录中,解压,并为目录linux-2.6.17.10创建符号链接linux。
# cd /root/linux-kernel (自己创建的目录linux-kernel,下载的内核源代码就放在该目录下)
1
# cp linux-2.6.17.10.tar.bz2 /usr/src # cd /usr/src
先查看一下当前/usr/src的内容,注意到有一个linux-2.4的符号链接,指向一个linux-2.4.20-8(以REDHAT 9为例)的目录。这就是你所装的Red Hat Linux 9的kernel源代码。 现在解压我们下载的源程序文件:
# tar -xjvf linux-2.6.17.10.tar.bz2
文件默认将解压到/usr/src/linux-2.6.17.10目录中。然后为它创建一个符号链接linux:
#ln -s linux-2.6.17.10 linux
6) # cd /usr/src/linux
7) 如果你多次使用了这些源程序编译内核,请执行make mrproper命令。由于我们使用刚下载的完整的源程序包进行编译,所以本步可以省略。
二、开始编译
1. 配置内核 # make xconfig
说明:√表示将该功能编译进内核, • 表示编译成模块。 注意:在Vmware下必须选以下选项,否则编译要出问题: File systems (√)ext3 journaling file system support
Device Drivers SCSI device support (√)SCSI device support (√) SCSI disk support
Device Drivers SCSI device support (√)SCSI device support SCSI low-level drivers (√)BusLogic SCSI support
Device Drivers ---> Network device support --->Ethernet (10 or 100Mbit) --->(√)AMD PCnet32 PCI support
保存所做的修改,退出。
2. 编译
# make
# make bzImage或make zImage # make modules
# make modules_install
make bzImage和make zImage实现完全编译内核,二者生成的内核都是使用gzip压缩的,只要使用一个就够了,它们的区别在于使用make bzImage可以生成大一点的内核,比如在编译2.6版本的内核时如果使用make zImage命令,那么就会出现system too big的错误提示。建议大家使用make bzImage命令。
后面两个命令只有在你进行配置的过程中,在回答Enable loadable module support (CONFIG_MODULES)时选了\"Yes\"才是必要的,make modules和make modules_install分别生成相应的模块和把模块拷贝到需要的目录中。
3. 安装内核 # make install
这里如果出现 \"NO MODULE BUSLOGIC FOUND\",解决方法 :
编辑文件 /etc/modules.conf
将\"alias scsi hostadapter BusLogic\"这行注释掉, 即#alias scsi hostadapter BusLogic 保存 /etc/modules.conf,退出 。 再重新执行 make install 。 4. 重启,使用新的内核。
5. 系统重新启动以后,可用uname –r命令查看内核的版本号。
2
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- yrrf.cn 版权所有 赣ICP备2024042794号-2
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务