编译Linux内核

来源:互联网 发布:淘宝新店怎么刷销量 编辑:程序博客网 时间:2024/05/17 10:55

一、实验目的

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。