操作系统实验1(编译内核)实验指导书

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验一虚拟机平台下的Linux内核编译

步骤一、实验准备:将windows下的Linux-2.4.32内核复制到虚拟机中。

一般有三种方法可以实现:虚拟磁盘、文件共享、网络设置。

下面介绍的是虚拟磁盘的方法:

我们已经将Linux-2.4.32内核源代码的压缩文件放入虚拟磁盘,并在FTP上共享。

1.请从FTP服务器上将实验指导书以及虚拟磁盘拷贝到E盘根目录下。

2. windows平台下启动虚拟机VMware, VMWare中安装虚拟硬盘:

1)安装前建议先把内存调大一些,这样后面编译的速度会快一些。(Memory,调到512M)

2)点击Add

3)点击Next

上述步骤完成后点击Finish 。

观察发现:虚拟机中将出现两个磁盘,一个是原有的磁盘,另一个是虚拟磁盘,相当于对本机外接了一个磁盘。(请将设置完成后的虚拟机中出现两个磁盘的界面截图,一个是6G ,另一个106M )。

4.启动Linux操作系统

在启动过程中可以见到当前只有一个可选择内核,内核版本是Linux2.4.20。我们本次实验的目的是在虚拟机下重新编译一个新的内核,内核版本是Linux2.4.32.完成本实验后,重启虚拟机将出现两个可选择内核。

5.将虚拟磁盘安装到/mnt/mydisk目录下.(mount命令),如图:

1)先用fdisk –l命令查看虚拟磁盘是否“连接”成功。记下虚拟磁盘名称(/dev/sdb)。

2)进入到mnt目录下创建mydisk目录,该目录作为访问虚拟磁盘的入口,此时该目录为空。

3)返回根目录root,并安装虚拟磁盘:mount /dev/sdb /mnt/mydisk

6.安装完成后,mydisk目录下出现了虚拟磁盘中的文件,如图。其中Linux-2.4.32.tar.gz就是待编译内核的源代码。将该文件复制(cp)到本地磁盘的/usr/src目录下,并且解压缩(tar –xzvf),如图。当然,这两个操作也可以通过图形用户(GUI)界面来完成。

(拷贝和解压缩都需要一些时间,请耐心等待)

7.解压完成后,就可以开始编译操作系统Linux-2.4.32了(见步骤二)。

步骤二:Linux内核编译

1.开始前先返回根目录/root,用uname –a命令查看Linux当前内核信息,(并截图)

2.进入到/usr/src/Linux-2.4.32目录下

依次运行如下命令:(每个命令后虚拟机做相应操作需要一些时间,请耐心等待)

make mrproper:完全清除上一次编译内核时的所有配置以及生成的文件(如图)。

make clean:清除大部分文件。

make menuconfig :基于文本选单的配置界面,选择操作系统的基本模块。

2.输入make menuconfig后将出现蓝色界面,选择操作系统的模块。(完成下述配置后请截图)。 M:表示编译成模块,*表示编译进内核,< >表示不编译。

1)选择处理器

Processor type and features--->Processor family--->386

2)Ram Disk驱动

Block devices--->

< * > RAM disk support

(4096) Default RAM disk size (NEW)

< * > Initial RAM disk (initrd) support

3)文件系统

File systems--->

[ * ] Ext3 journalling file system support

[ * ] JBD (ext3) debugging support

4)BusLogic驱动

< * > SCSI support--->

SCSI low-level drivers --->

< M >BusLogic SCSI support

5)Ipaddr补充:

Fusion MPT device support --->

Fusion MPT (base + ScsiHost) drivers

(ipaddr注:此处一定要选M,不能是*,更不能不选,否则,make install报错{No Module mptbase found for kernel})

Fusion MPT misc device (ioctl) driver

3. make dep (建立编译时所需的从属文件。注意:如果内核从未编译过,此步可跳过)

4. make clean (清除内核编译的目标文件。注意:如果内核从未编译过,此步可跳过)

5. make bzImage (注意大小写。这一步才是真正编译内核)

内核编译成功后,会在/usr/src/linux/arch/i386/boot目录中生成一个新内核的映像文件bzImage。如果用make zImage编译,内核很大的话,系统会提示你使用make bzImage命令来编译,所以我直接用make bzImage来编译。

6. make modules (编译可加载模块)

7. make modules_install (安装可加载模块) 注意modules和install中间的下划线。

安装成功后,系统会在/lib/modules目录下生成一个2.4.32子目录,里面存放着新内核的所有可加载模块。

8. make install (安装新内核)

注意:make install的时候可能会出现如下错误信息:

No module BusLogic found for kernel 2.4.32 mkinitrd failed

此问题一般只出现在SCSI硬盘+VMWARE+REDHAT架构中,因为BusLogic被编译进了内核而不是一个module的形式(2.4内核的Buslogic模块即使静态编译进内核也不行)。解决方式是直接将BusLogic.o文件复制过去:

#mkdir /lib/modules/2.4.32/kernel/drivers/scsi/

# cp /usr/src/linux-2.4.32/drivers/scsi/BusLogic.o /lib/modules/2.4.32/kernel/drivers/scsi/ 不过别忘记,复制过后再执行一下make install。这一步若卡住了,下面的都无法进行。

相关文档
最新文档