实验三 Linux内核编译
一、实验目的与要求
原来的系统是redhat9.5
,Linux
内核版本2.4.20-8
,编译的新内核版本为2.4.32
。
二、实验内容
实验共分为四部分:编译前准备->编译新内核->运行新内核
三、实验步骤
- 下载一份内核源代码,例如
linux-2.4.32.tar.gz
,可以在如下地址下载它:http://www.kernel.org/pub/linux/kernel/v2.4/
-
检查
redhat
中是否已有模块工具软件``module-init-tools(提供
depmod [/sbin/depmod]`等):# rpm –q modutils
-
本次实验的使用的源文件均使用主机下载完成后使用U盘拷贝至
Linux
虚拟机中进行安装,首先新建文件夹mkdir /mnt/usb
然后挂载设备
mount –tvfat /dev/sdb1 /mnt/udisk
值得注意的是挂载U盘时有如下注意事项
-
由于
Linux
默认不能挂载NTFS
文件系统,因此需要自行安装相关挂载系统或U盘文件系统为非NTFS
。本次实验采取第二种方案,首先将U盘格式化为其他文件系统 -
挂载时显示设备
sdb1
不可用,此错误可能有两个原因-
虚拟机的
VMUSBArbService
服务存在问题,将其启动或重新启动即可 -
挂载的U盘名称不是默认名称
sdb1
,此时需要使用命令查看U盘设备的名称,注意fdisk
命令默认状态下不可用,在使用前需要将其加入PATH
中。# fdisk -l
箭头所示即设备名称
-
-
-
将
linux-2.6.32.tar.gz
拷贝到目录/usr/src/
下,解压源码:# tar -zxvf linux-2.6.32.tar.gz
解压源码
tar xzvf linux-2.4.22.tar.gz
生成源码文件子目录
/usr/src/linux-2.4.32
,进入此目录:# cd linux-2.6.32
-
编译新内核
-
编译前处理
编译设置。使用默认设置
make menuconfig
清楚之前的编译结果
make clean
-
配置内核
cp /boot/config-2.4.20-8 .config
-
-
编译生成新内核:
如果不在该目录下的话
cd /usr/src/linux-2.4.32
创建依赖文件
make dep
开始编译内核
make bzImage
开始编译模块
make modules
将新编译完成的模块放在系统模块安装目录
make modules_install
安装编译完成的内容
make install
设置新的启动内核
# cp arch/i386/boot/bzImage /boot/vmlinuz-2.4.22 # cp .config /boot/config-2.4.22 # cp System.map /boot/System.map-2.4.22 # mkinitrd /boot/initrd-2.4.22.img 2.4.22 # cd /boot # rm -f System.map vmlinuz # ln -s System.map-2.4.22 System.map # ln -s vmlinuz-2.4.22 vmlinuz
修改启动菜单,添加内容如下
四、实验结果
在前述步骤正确完成后重启虚拟机,即可使用新内核启动
五、实验心得
本次实验的主要内容是编译一个新版本的Linux
版本的内核,并将其加入启动菜单中、设为新的启动内核。
挂载U盘
前需要将其格式化为FAT
32格式,挂载U盘
时可能出现挂载后虚拟机软件崩溃的情况,此时可以尝试重启虚拟机相关服务后重新挂载。