一、实验目的
1. 重新编译Linux内核,了解编译内核的基本方法和步骤。
2. 熟悉Linux系统的操作命令。
二、实验内容
下载并重新编译Linux内核文件。重新配置Grub启动文件,进入自己编译的内核运行Linux系统。
本次实验是在Linux4.2.0-42内核的环境下,下载并重新编译内核源代码(Linux-4.5)。
三、实验环境
虚拟机:VMware® Workstation 12 Pro
虚拟硬件配置:单核处理器,内存1G,处理器Intel®Pentium(R) 3558U@1.70GHz,硬盘20G(如图1所示)
操作系统类型:32位
实验操作系统:ubuntu 15.10
待编译内核:Linux-4.5
图1
四、实验方法与实验步骤
1、环境准备
(1)、下载VMwareWorkstation Pro并安装此虚拟机;
(2)、下载ubuntu-15.10-i386.iso,在虚拟机中安装ubuntu-15.10;具体的配置在实验环境中。
(3)、完成第(2)步后,进入ubuntu中,打开终端,进入root权限。
方式1:输入下面的命令进入root
sudo passwd root
输入进入此系统的用户密码,然后更改root的密码并确认,记住此密码!
然后输入下面命令
su
输入root的密码并回车,进入root权限;如图2所示
图2
方式2:输入下面的命令进入root
sudo –i
然后输入密码并回车,运行效果如图3所示
图3
这两种方式都能获取root权限,只不过打开的各自路径不同。
注意:为了方便,所有操作均在root用户下进行。如果不是root用户可以使用su命令切换到root用户。
(4)、准备Linux源码和补丁,如这次实验的4.5版本。
首先切换到tmp目录下,键入如下命令:
cd /tmp
下载源码和补丁的命令如下:
wget http://mirrors.aliyun.com/linux-kernel/v4.x/linux-4.5.tar.xz
wget http://mirrors.aliyun.com/linux-kernel/v4.x/patch-4.5.xz
注意:获取内核源码网址不唯一
(5)、准备安装需要的环境
执行apt-get update来更新软件源,如图4所示
图4
然后安装需要的环境,键入以下命令:
Apt-get install kennel-package build-essentiallibncurses5-dev fakeroot
(6)、解压压缩的内核
把压缩包解压,键入以下命令:
xz –d linux-4.5.tar.xz
解压后得到linux-4.5.tar,运行命令
tar –xvf linux-4.5.tar
解压得到目录linux-4.5。
(7)、把内核目录linux-4.5和补丁patch-4.5.xz复制到/usr/src,即命令:
cp linux-4.5 /usr/src –rf
cp patch-4.5.xz /usr/src
然后进入/usr/src,命令如下:(如图5所示)
cd /usr/src
图5
2、准备编译
(1)、打内核补丁
xz –d patch-4.5.xz | patch –p1
执行后没有任何提示说明信息知悉执行正确。
(2)、编译配置
cp linux-headers-4.2.0-42-generic/.configlinux-4.5/
cd linux-4.5
make menuconfig
3、编译内核
(1)、编译启动映像
键入以下命令:
make bzImage
(2)、编译模块
键入以下命令:
make modules
完成这一步的截图如图6所示:
图6
在makebzImage;make modules时,出现两个错误:
fatalerror: openssl/opensslv.h: No such file or directory
bc: notfound
第一个错误是因为没有安装openssl,所以需要先安装openssl,键入如下的命令:
apt-get installlibssl-dev
第二个错误是因为没有安装bc,所以需要安装bc,键入如下的命令:
apt-getinstall bc
在这一步需要特别强调一下,花费的时间特别久,所以一定要有耐心。
4、安装内核
(1)、安装模块
键入以下命令:
make modules_install
如图7所示
图7
(2)、安装内核
键入以下命令:
make install
如图8所示
图8
5、更改启动Grub
要使编译好的内核运行,就要更改对应的Grub;键入以下命令:
mkinitramfs4.5.0 -o /boot/initrd.img-4.5.0
如图9所示
图9
update-grub2
如图10所示
图10
update-grub2命令会帮我们修改Grub;修改后的Grub内容如图11所示:
图11
6、查看自己编译好的内核
重启服务器,键入以下命令:
uname –a
用uname –a命令查看自己的系统版本;如图12所示
图12
系统版本已经是Linux 4.5.0
7、在系统中添加自己的信息
修改grub.cfg,在里面添加上自己的姓名和学号
在终端键入以下命令:
gedit/boot/grub/grub.cfg
如图13所示:
图13
然后保存并退出,在终端输入reboot命令,便会呈现想要的效果,如图14所示。
五、实验结果
经过正确的步骤以后,再次打开Linux系统时,便会弹出如图14所示的界面,选择自己编译好的内核,以第一个方式进入Linux系统。
图14
六、实验分析
1、理想的实验结果要在正常的环境中,实验环境的搭建很关键。由于自身对虚拟机和Linux系统之前有过接触,所以自己实现起来不是很难,但是在帮他人搭建环境时会时不时的产生一些自己解决不了的问题,在今后的学习过程中,要多注意。
2、本实验旨在编译Linux内核,所以编译内核的顺序一定要记得。除过环境外,最重要的四步再强调一下,首先准备好内核源代码,其次配置内核的编译选项,接下来编译内核和模块,最后修改启动设置。
3、对于不同版本的Linux系统操作有所不同。由于自己做的是Ubuntu的Linux系统,和教材上的Fedora不同,所以要学会查找资料。在本实验中有参考网上的相关资料,网址为http://www.linuxidc.com/Linux/2016-04/129955.htm。