操作系统实验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。

这一步若卡住了,下面的都无法进行。

步骤三:重启虚拟机
1.完成步骤二后回到根目录/root,输入reboot重启虚拟机。

启动过程中会发现有两个可选择的Linux操作系统,第一个版本是原版本Linux2.4.20,以及刚才编译和安装的新版本Linux2.4.32。

(请截图)
2.选择新版本,进入新的操作系统后使用uname –a命令查看Linux当前内核信息,并截图。

注:以上实验步骤仅限于信息楼实验室环境,其它环境步骤可能有些地方需要稍微修改。

编译过程会比较漫长,需要耐心等会。

相关文档
最新文档