1 引 言 1
1.1 课程设计的目的 1
1.2 课程设计的意义 1
1.3 课程设计的内容 2
2 相关内容介绍 3
2.1内核版本2.6.18的新特性 3
2.2 几个重要的内核文件简介 4
2.2.1 vmlinuz-2.4.20-8 5
2.2.2 initrd-2.4.20-8.img 5
2.2.3 System.map-2.4.20-8 6
2.3 内核升级大体过程 7
2.4 几个重要命令简介 8
3 内核升级的详细设计 9
3.1 准备阶段 9
3.2配置阶段 10
3.3 编译阶段 17
3.4 启动新内核 18
4 测试结果 20
4.1 升级前的内核 20
4.2 升级后的内核 21
5 升级过程中遇到的问题及解决方法 22
5.1 安装工具包时的问题及解决方法 22
5.2 配置文件系统时的问题及解决方法 22
5.3 安装新内核时出现的问题及解决方法 23
结束语 24
参考文献 25
1 引 言
1.1 课程设计的目的
RedHat Linux是目前世界上使用最多的Linux操作系统。因为它具备最好的图形界面,无论是安装、配置还是使用都十分方便,而且运行稳定。RedHat Linux推出9.0版本后,在原有的基础上又有了很大的进步。它完善了图形界面,增强了硬件的兼容性等等。众所周知,由于Linux 操作系统具有免费,开源等特点,加上用Linux作为服务器性能稳定,并且具有较高的安全性,所以近几年Linux操作系统有了蓬勃的发展,内核的版本的升级很快。RedHat Linux 9.0默认安装内核版本为2.4.20-8,随着在Linux上面应用的服务越来越多,这个内核版本已不能满足需要了,比如某些软件的安装需要的内核版本至少为2.6.××,所以在RedHat Linux9.0上对原有内核的升级变得刻不容缓。
本课程设计设主要目的是在虚拟机VMware Workstation 6.5-7.x下安装RedHat Linux9.0操作系统后,对原有内核版本2.4.20-8升级到2.6.18,通过对内核的升级,能够使Linux操作系统满足更多的需要,更大程度地发挥Linux操作系统的优势。
1.2 课程设计的意义
通过此次课程设计,可以加深自身对Linux系统的了解,更加深刻的认识Linux内核的结构,同时还可以更了解Linux操作系统的运行机制,更加熟悉Linux这一现在流行的操作系统,为以后更深入的学习Linux打下了良好的基础。
同时通过本次课程设计,可以加强我们的实际动手能力,明白理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才是真正的知识,才能提高自己的实际动手能力和思考的能力。同时还具有重大意义的是,在课程设计的过程中,会遇到很多问题,从发现问题、分析问题、解决问题的过程中,可以培养自身严谨治学、一丝不苟的科学精神,锻炼出不怕失败、百折不挠的品质。
1.3 课程设计的内容
本次课程设计是对RedHat Linux 9.0内核进行升级,首先,在内核升级之前,必须深刻了解欲升级的内核版本2.6.18的新特性,知道了这点,才知道为什么要进行升级,升级后的系统相比之前有什么优点。同时还必须了解linux中几个非常重要的内核文件,比如vmlinuz-2.4.20-8、initrd-2.4.20-8.img、System.map-2.4.20-8。这几个文件在升级过程中是非常重要的,必须对它们的作用有所了解。其次,在升级过程中,我们要获得内核源码包及四个升级工具,利用内核源码包和四个升级工具,参考各方面的资料并结合自己所掌握的知识,先配置内核选项,再编译、安装新内核,一步步的完成整个内核升级,并且最后还要对新内核进行测试。
2 相关内容介绍
内核升级是涉及许多内容,必须先对这次内容有所了解之后,才能实施对内核的升级,否则将会失败,主要包括内核版本2.6.18的新特性、几个重要的内核文件、内核升级大体过程及升级过程中的重要命令。下面将对这些内容做具体介绍。
2.1内核版本2.6.18的新特性
相比内核版本2.4.20而言,内核版本2.6.18的新特性有:
(1)稳定性有所提高
为了彻底避免内核加载或者导出正在被使用的内核模块,或者至少为了减少加载或者卸载模块的同时使用该模块的可能性,内核加载和导出内核模块的过程都得到了改进。
(2)统一设备模型统一设备模型
它促进了模块接口的标准化,其目的是更好地控制和管理设备,例如:更准确地确定系统设备;电源管理和设备电源状态;改进的系统总线结构管理。
(3)即插即用(PnP)支持
运行 2.6 内核的 Linux 成为一个真正即插即用的 OS。 例如,对 ISA PnP 扩展、遗留 MCA 和 EISA 总线以及热插拔设备的 PnP 支持。
(4)内核基础设施的变化
为了区别以 .o 为扩展名的常规对象文件,内核模块现在使用的扩展名是 .ko。 创建了新的 sysfs 文件系统,当内核发现设备树时就会描述它。 内存支持,NUMA 支持支持更大数量的 RAM。
(5)线程模型
NPTL相对于 v2.4 的 LinuxThreads[1],在版本 2.6 中新出现的是 NPTL(Native POSIX Threading Library)。NPTL 为 Linux 带来了企业级线程支持,提供的性能远远超过了 LinuxThreads。它所基于的用户与内核线程的比率是 1:1。
(6)扩展性改进处理器数目更多
Linux 内核 2.6 最多可以支持 个 CPU。支持更大的内存,归功于 PAE(物理地址扩展,Physical Address Extensions),在 32-位系统上分页模式下所支持的内存增加到了 GB。也就是从 16-位增加到了 32-位。打开文件描述符的数量 打开文件描述符的数量没有增加,但是不再需要事先设置该参数,它将自行调节。
(7)支持更多的设备
在 Linux 内核 2.6 之前,内核中有可以约束大型系统的,比如每条链 256 个设备。v2.6 内核彻底地打破了这些, 不但可以支持更多类型的设备,而且支持更多同类型的设备。文件系统大小Linux 内核 2.6 所允许的可寻址文件系统大小最大为 16 TB。
(8)文件系统
ext2、ext3 和 ReiserFS 等传统 Linux 文件系统得到了显著的改进。最值得注意的改进是扩展属性(或文件数据)的引入。 最重要的是 POSIX ACL 的实现,这是对普通 UNIX 权限的扩展,可以支持更细化的用户访问控制。
2.2 几个重要的内核文件简介
编译升级Linux内核,需要根据规定的步骤进行,编译内核过程中涉及到几个重要的文件。在/boot目录下有一些与Linux内核有关的文件,进入/boot执行:ls –l,如图2.1所示。
图2.1 与linux内核有关的文件
本次是要对RedHat Linux 2.4.20-8内核进行升级,其中的vmlinuz-2.4.20-8、
initrd-2.4.20-8.img、System.map-2.4.20-8[2] 文件特别重要(其中2.4.20-8为内核版本号),因为编译内核过程中涉及到这些文件的建立等操作。下面将对这几个文件作详细的介绍。
2.2.1 vmlinuz-2.4.20-8
vmlinuz是可引导的、压缩的内核。“vm”代表“Virtual Memory”。Linux 支持虚拟
内存,不像老的操作系统比如DOS有0KB内存的。Linux能够使用硬盘空间作
为虚拟内存,因此得名“vm”。vmlinuz是可执行的Linux内核,它位于/boot下,它一般
是一个软链接。 vmlinuz的建立有两种方式。一是编译内核时通过“make zImage”创建,
然后通过:“cp/usr/src/linux-2.4/arch/i386/linux/boot/zImage /boot/vmlinuz”产生。zImage
适用于小内核的情况,它的存在是为了向后的兼容性。二是内核编译时通过命令make
bzImage创建,然后通过:“cp /usr/src/linux-2.4/arch/i386/linux/boot/bzImage /boot/vmlinuz”
产生。bzImage是压缩的内核映像,需要注意,bzImage不是用bzip2压缩的,bzImage
中的bz容易引起误解,bz表示“big zImage”。 bzImage中的b是“big”意思。 zImage
(vmlinuz)和bzImage(vmlinuz)都是用gzip压缩的。它们不仅是一个压缩文件,而
且在这两个文件的开头部分内嵌有gzip解压缩代码。所以不能用gunzip 或 gzip –dc解
包vmlinuz。 内核文件中包含一个微型的gzip用于解压缩内核并引导它。两者的不同之
处在于,老的zImage解压缩内核到低端内存(第一个0K),bzImage解压缩内核到高
端内存(1M以上)。如果内核比较小,那么可以采用zImage 或bzImage之一,两种方
式引导的系统运行时是相同的。大的内核采用bzImage,不能采用zImage。 vmlinux是
未压缩的内核,vmlinuz是vmlinux的压缩文件。
2.2.2 initrd-2.4.20-8.img
initrd是“initial ramdisk”的简写。initrd一般被用来临时的引导硬件到实际内核vmlinuz能够接管并继续引导的状态。例如initrd-2.4.7-10.img主要是用于加载ext3等文件系统及scsi设备的驱动。比如,使用的是scsi硬盘,而内核vmlinuz中并没有这个scsi硬件的驱动,那么在装入scsi模块之前,内核不能加载根文件系统,但scsi模块存储在根文件系统的/lib/modules下。为了解决这个问题,可以引导一个能够读实际内核的initrd内核并用initrd修正scsi引导问题。initrd映象文件是使用mkinitrd创建的。mkinitrd实用程序能够创建initrd映象文件。这个命令是RedHat专有的。其它Linux发行版或许有相应的命令。这是个很方便的实用程序。具体情况请看帮助:man mkinitrd 。
2.2.3 System.map-2.4.20-8
System.map是一个特定内核的内核符号表。它是当前运行的内核的System.map的链接。 内核符号表是怎么创建的呢? System.map是由“nm vmlinux”产生并且不相关的符号被滤出。编译内核时,System.map创建在/usr/src/linux-2.4/System.map。
在进行程序设计时,会命名一些变量名或函数名之类的符号。Linux内核是一个很复杂的代码块,有许许多多的全局符号。 Linux内核不使用符号名,而是通过变量或函数的地址来识别变量或函数名。比如不是使用size_t BytesRead这样的符号,而是像c0343f20这样引用这个变量。 对于使用计算机的人来说,更喜欢使用那些像size_t BytesRead这样的名字,而不喜欢像c0343f20这样的名字。内核主要是用c写的,所以编译器/连接器允许编码时使用符号名,当内核运行时使用地址。 然而,在有的情况下,我们需要知道符号的地址,或者需要知道地址对应的符号。这由符号表来完成,符号表是所有符号连同它们的地址的列表。
Linux 符号表使用到2个文件:
/proc/ksyms
System.map
/proc/ksyms是一个“proc file”,在内核引导时创建。实际上,它并不真正的是一个文件,它只不过是内核数据的表示,却给人们是一个磁盘文件的假象,这从它的文件大小是0可以看出来。然而,System.map是存在于文件系统上的实际文件。当编译一个新内核时,各个符号名的地址要发生变化,老的System.map具有的是错误的符号信息。每次内核编译时产生一个新的System.map,应当用新的System.map来取代老System.map。 虽然内核本身并不真正使用System.map,但其它程序比如klogd, lsof和ps等软件需要一个正确的System.map。如果使用错误的或没有System.map,klogd的输出将是不可靠的,这对于排除程序故障会带来困难。没有System.map,可能会面临一些令人烦恼的提示信息。另外少数驱动需要System.map来解析符号,没有为当前运行的特定内核创建的System.map它们就不能正常工作。 Linux的内核日志守护进程klogd为了执行名称-地址解析,klogd需要使用System.map。System.map应当放在使用它的软件能够找到它的地方。执行:man klogd可知,如果没有将System.map作为一个变量的位置给klogd,那么它将按照下面的顺序,在三个地方查找System.map: /boot/System.map 、/System.map 、/usr/src/linux/System.map 。System.map也有版本信息,klogd能够智能地查找正确的映象(map)文件。
2.3 内核升级大体过程
内核升级是一项细致的工作,需要经过很多步骤,并且每个步骤缺一不可,不能调换顺序,在真正进行内核升级之情,需要对内核升级的大体步骤有个了解,这样在具体升级过程中才能做到心有成足,在出现一些小问题时就不会惊慌失措,下面简单介绍一下升级步骤。
内核升级过程一共涉及12个步骤,大体分为四个部分,如图2.2所示。
图2.2 内核升级四个部分
总的来说,内核成功升级需要经过准备工作、配置工作、编译工作和启动新内核这四个阶段。下面分别简单介绍这四个阶段各需要做些什么工作,具体方法步骤后文会详细介绍。
(1)准备阶段
这一阶段主要包括下载2.6内核源码、下载内核升级工具这三个步骤。
(2)配置阶段
这一阶段主要包括将下载好的内核源码包和4个升级工具都拷贝到/usr/src文件夹下、解压新内核、安装module-init-tools工具、安装另外三个升级工具、配置内核选项这五个步骤。
(3)编译阶段
这一阶段只包含一个步骤,就是对新内核进行编译,这个过程需要时间较长,也是内核升级最关键的地方,内核的编译安装都会在这个阶段进行,还有前面配置阶段的正确与否,直接关系到编译能否成功。
(4)启动新内核
这一阶段包括将新内核和System.map文件拷贝到/boot目录下、修改Grub启动管理器这二个步骤。
2.4 几个重要命令简介
make[3]:在整个升级过程中,make命令是用的最多的。make是一个命令工具,它解释Makefile中的指令。在Makefile文件中描述了整个工程所有文件的编译顺序、编译规则。Make工具不仅仅是用来管理C语言工具的,那些只要编译器能够在Shell下运行的语言所构建的工程都可以使用make工具来管理。make在执行时,需要一个命名为Makefile的文件。这个文件告诉make以何种方式编译源代码和链接程序。make会自动根据修改情况完成源文件的对应.o文件的更新、库文件的更新、最终的可执行程序的更新。
cp: 这个命令相当于dos下面的copy命令,具体用法是:cp –r 源文件(source) 目的文件(target) 参数r是指连同源文件中的子目录一同拷贝。
cd: 这个命令是用来进出目录的,和dos不同的是Linux的目录对大小写是敏感的,如果大小写没拼对,cd操作是成功不了的。其次,cd如果直接输入,cd后面不加任何东西,会回到使用者自己的Home Directory。假设如果是root,那就是回到/root.这个功能同cd ~是一样的。
3 内核升级的详细设计
在虚拟机VMware Workstation 6.5-7.x上安装好redhat linux 9.0后,了解内核升级的基本步骤,就可以着手对内核进行升级了。
3.1 准备阶段
(1)查看当前Linux内核版本
启动系统,如图3.1所示,当前系统中只有内核为2.4.20-8的版本,可以进行升级。
图3.1 当前内核版本
(2)下载2.6内核源码
下载地址:http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.18.tar.bz2
(3)下载内核升级工具
下载module-init-tools-3.2.tar.bz2
http://www.kernel.org/pub/linux/utils/kernel/module-init-tools/module-init-tools-3.2.tar.bz2
下载mkinitrd-4.1.18-2.i386.rpm
下载lvm2-2.00.25-1.01.i386.rpm
下载device-mapper-1.00.19-2.i386.rpm
http://ishare.iask.sina.com.cn/f/12282167.html?from=like
3.2配置阶段
(1)下载好的内核源码包和4个升级工具都拷贝到/usr/src文件夹下,如图3.2所示。
# cd /usr/src
图3.2 源码包及工具放在/usr/src
(2)解压新内核
# tar jvxf linux-2.6.18.tar.bz2 (解压新内核)
# ln -s linux-2.6.18 linux (重新生成linux文件夹)
如图3.3所示为正在解压过程中。
图3.3 源码包正在解压过程中
(3)安装module-init-tools工具
在/usr/src目录下,依次执行下列命令:
# tar jvxf module-init-tools-3.2.tar.bz2 (解压module-init-tools)
# cd module-init-tools-3.2 (由/usr/src目录进入module-init-tools目录下)
#./configure --prefix=/
# make moveold
# make all install
#./generate-modprobe.conf /etc/modprobe.conf
如图3.4所示为module-init-tools解压过程。
图3.4 module-init-tools解压过程
图3.5为安装module-init-tools过程。
图3.5 module-init-tools安装
(4)安装另外三个升级工具
回到/usr/src目录下,依次执行下列3个命令来安装另外三个升级工具:
# rpm[4] -ivh --nodeps mkinitrd-4.1.18-2.i386.rpm
# rpm -ivh --nodeps lvm2-2.00.25-1.01.i386.rpm
# rpm -ivh --nodeps device-mapper-1.00.19-2.i386.rpm
图3.6为安装 mkinitrd-4.1.18-2.i386.rpm过程。
图3.6 安装 mkinitrd-4.1.18-2.i386.rpm
图3.7 为安装device-mapper-1.00.19-2.i386.rpm过程。
图3.7 安装device-mapper-1.00.19-2.i386.rpm
(5)配置内核选项
# cd linux-2.6.18 (进入到/usr/src/linux-2.6.18目录下)
# make mrproper (该命令可确保源代码目录下没有不正确的.o文件)
# make menuconfig (配置内核各选项)
此时会出现一个图形界面,如图3.8所示。列出了所有的内核配置选项,在这个界面,可以看到对许多选项的设置,比如General Setup,Device Drivers,Block layer,File Systems,Bus options,Networking等,有的选项下还有子选项,在内核升级中必须对这些选项作认真的配置,任何一个选项少配置了,最后都会导致整个过程失败。可以用方向键来选择,用Y键来确定。
图3.8 配置选项图形界面
大多数选项默认就行,以下几个选项必须选择(请认真核对下面每一个选项,否则编译很有失败):
Loadable Module support选项中,选上“Module unloading”和
“Automatic kernel module loading”这两项,这两个选项是对内核模块自动装载提供
支持。如图3.9所示。
图3.9 Loadable Module support配置
Device Drivers--->Block Devices中选上“Loopback device support”;这个选项是对环回设备提供支持,环回设备主要用于环回测试,环回测试是很常用的一种测试,通常用于检查和分析端口或线路问题。如图3.10所示。
图3.10 Loopback device support配置
Device Drivers--->Multi-device support(RAID and LVM)处要选上
“device mapper support”;这个选项为对设备映射提供支持。如图3.11所示。
图3.11 device mapper support配置
Device Drivers--->Graphics support,一定要选上““Support for frame buffer devices”;这个选项为对图形框架提供支持,现代操作系统几乎都配置了图形界面,这是系统易用性非常重要的一个特征,这样才能让那些未受过计算机专门训练的人能够使用计算机,所以必须选上这个选项。如图3.12所示。
图3.12 Support for frame buffer devices配置
Device Drivers --->;Network device support --->Ethernet (10 or 100Mbit) --->AMD PCnet32 PCI support 。这个选项是对总线设备提供支持。如图3.13所示。
图3.13 AMD PCnet32 PCI support配置
File system--->(以下9个选项是关于ext2和ext3文件系统配置,全部选上)
Second extended fs support
Ext2 extended attributes
Ext2 POSIX Access Control Lists
Ext2 Security Labels
Ext3 journalling file system support
Ext3 extended attributes
Ext3 POSIX Access Control Lists
Ext3 Security Labels
JBB (ext3) debugging support
File system--->DOS/FAT/NT Filesystems --->选上“NTFS file system support”;
如图3.14所示。
图3.14 File system的配置
由于是在vmware下编译内核,并且硬盘用的是scsi的,SCSI-小型计算机系统接口(Small Computer System Interface)。SCSI采用ASPI的标准软件接口使驱动器和计算机内部安装的SCSI适配器进行通信。SCSI接口是一种广泛应用于小型机上的高速数据传输技术。所以要选择以下三个选项:
Device Drivers ---><*>SCSI device support ;
Device Drivers ---><*>SCSI device support ---><*>SCSI disk support;
Device Drivers---><8>SCSI device support--->SCSI low-level drivers---><*>BusLogic SCSI support。
3.3 编译阶段
在/usr/src/linux-2.6.18目录下,执行以下命令即可编译。如图3.15所示。
# make bzImage
内核编译成功后,会在/usr/src/linux/arch/i386/boot目录中生成一个新内核的映像文
件bzImage。如果用make zImage编译,内核很大的话,系统会提示使用make bzImage
命令来编译,所以用make bzImage来编译。
图3.15 编译内核过程
# make modules (编译可加载模块)。使用内核编译机制,产生一个 .ko(内核目标文
件,kernel object)模块目标文件而不是一个 .o 模块目标文件。这一过程在目标模块
创建了一个特定部分,以记录使用的编译器版本号,内核版本号,是否使用内核抢占等
信息。如图3.16所示。
图3.16编译可加载模块
# make modules_install (安装可加载模块)。如图3.17所示。
图3.17 安装可加载模块
安装成功后,系统会在/lib/modules目录下生成一个2.6.18子目录,里面存放着新
内核的所有可加载模块。
# make install (安装新内核)。
3.4 启动新内核
(1) 将新内核和System.map文件拷贝到/boot目录下,依次执行以下命令:
# cp /usr/src/linux-2.6.18/arch/i386/boot/bzImage /boot/vmlinuz-2.6.18
# cp /usr/src/linux-2.6.18/System.map /boot/System.map-2.6.18
# cd /boot (进入boot目录)
# rm –rf System.map (删除原来的链接)
# ln –s System.map-2.6.18 System.map (重新建立链接) 。如图3.18所示。
图3.18 重新建立链接
(2)修改Grub启动管理器
如果没有错误的话,修改grub[5] 配置文件,在/boot目录下,执行以下命令:
# new-kernel-pkg --mkinitrd --depmod --install 2.6.18 (这时候/boot下会生成一个
initrd-2.4.18.img,并且grub.conf文件也作了相应更改)。
# df (查看根目录在那个分区,为 /dev/sda2)
# vi /grub/grub.conf
进入grub.conf文件,找到如下信息:
default=1
timeout=10
splashimage=(hd0,0)/grub/splash.xpm.gz
title Red Hat Linux (2.6.18)
root (hd0,0)
kernel /vmlinuz-2.6.18 ro root= LABEL=/
initrd /initrd-2.6.18.img
做两处修改:
将default=1改为default=0(重启之后会默认进入2.6内核)
将kernel行的“LABEL=/”换成根目录所在的分区。
修改后的文件内容如图3.19所示。
图3.19修改后的grub.conf文件
4 测试结果
4.1 升级前的内核
在升级内核前,有必要查看当前Linux内核版本。
# uname
如图4.1所示,当前只有内核为2.4.20-8版本的linux系统。
图4.1 升级前系统的内核
进入linux后,可以用uname –a查看目前所登录系统的内核。如4.2所示。
#uname –a
图4.2 升级前登录系统的内核版本
4.2 升级后的内核
内核升级完成后,重启系统,看到升级后的新内核选项,可以看到,内核选项中多了Red Hat Linux(2.6.18)的选项,如图4.3所示。
图4.3升级后启动画面
选择2.6.18内核进入系统后,查看当前系统的内核版本,可知内核升级成功。如图4.4所示。
图4.4 内核升级成功
5 升级过程中遇到的问题及解决方法
在升级过程中不可避免的遇到了很多问题,比较严重的问题有三个。通过上网查找
相关资料和图书馆等各种手段,最终解决了问题。
5.1 安装工具包时的问题及解决方法
没有对mkinitrd-4.1.18-2.i386.rpm、lvm2-2.00.25-1.01.i386.rpm、
device-mapper-1.00.19-2.i386.rpm这三个工具包进行更新安装,结果出现如下错误提示:
mkinitrd faile
make[1]: *** [install] Error 1
解决办法:在使用rpm安装这三个工具包时,使用–ivh参数,表示升级安装。
5.2 配置文件系统时的问题及解决方法
在完成升级后虽然出现了新内核的选项,但是选择后系统就会卡住,出现如图5.1所示的错误信息:
图5.1 文件系统配置出现问题
解决方法:因为是在虚拟机vmmare上面试验,并且所用的硬盘格式为SCSI类型的,通过上网查找,才知道原因是如果是这种试验环境的,在配置文件系统时必须选上下列选项:
Device Drivers ---><*>SCSI device support
Device Drivers ---><*>SCSI device support ---><*>SCSI disk support
Device Drivers---><8>SCSI device support--->SCSI low-level drivers---><*>BusLogic
SCSI support;
5.3 安装新内核时出现的问题及解决方法
在安装新内核使用make install时,出现如图5.2所示的问题。
图5.2 安装新内核时出现的问题
解决方法:通过查找资料,发现此类一般出现在SCSI硬盘+VMWARE+REDHAT架构中,而且刚好作者使用的恰好是这一组合。因为BusLogic被编译进了内核而不是一个module的形式(2.4内核的Buslogic模块即使静态编译进内核也不行)。
将BusLogic.o文件复制过去:
# cp /usr/src/linux-2.6.18/drivers/scsi/BusLogic.o /lib/modules/2.6.18/kernel/drivers/scsi
执行这条命令后,问题就解决了,如图5.3所示。
图5.3解决安装新内核出现的问题
结束语
通过网络系统课程设计,使作者对Linux操作系统有了更加深入的了解,同时作者也总结出了一些分析问题和解决问题的方法及技巧。通过对redhat linux9.0系统内核2.4版本的升级,进一步加深了对linux内核的了解,知道使用make工具对程序进行编译。更重要的事,通过此次课程设计,使作者明白了遇到问题,要积极思考,通过各种途径找到解决问题的办法,要充分利用网络资源以解决作者的问题。总的来说,通过这次的设计实验更进一步地增强了实验的动手能力与思考问题的能力。
参考文献
[1]杨爱军.Linux内核演化研究[J].山东农业大学学报(自然科学版),2010,4.
[2](美) Gary Nutt著;潘登,冯锐,陆丽娜等译. Linux操作系统内核实习[M]. 北京市:机械工业出版社, 2002:67-84.
[3]文东戈,孙昌立,王旭编著.Linux 操作系统实用教程[M].北京:清华大学出版社,2010:247-249.
[4]林晓飞,倪春胜,张军编著.RedHat Enterprise Linux系统管理与配置[M].北京:清华大学出版社,2007:52-55.
[5](美)Mark G.Sobell著;杨明军等译.Ubuntu Linux指南[M].北京:人民邮电出版社,2009:25-28.