操作系统实验:构建linux内核系统(linux内核编译)

实验环境:VMware Workstation 14, Ubuntu 18.04.2 LTS

一、获取linux内核

Linux内核可从官网www.kernel.org下载,如果国内下载慢,可前往国内的一些镜像站下载,如清华大学开源软件镜像站。

这里下载了linux5.0-tar.xz。

解压:

sudo tar -xvJf linux-5.0.tar.xz

二、内核初始化

将解包后的内核放到/usr/src/下。如果要重新构建内核,可使用make mrproper和make distclean将内核源代码恢复到初始状态。

三、内核配置

安装依赖项:

sudo apt-get install build-essential

sudo apt-get install libncurses5-dev

sudo apt-get install kernel-package

sudo apt-get install flex

sudo apt-get install bison

sudo apt-get install libelf-dev

sudo apt-get install libssl-dev

切换目录

cd /usr/src/linux-5.0

最常用的配置内核的方法是“make menuconfig”。“make config”太简陋,“make xconfig”虽然更加直观,但需要庞大的qt类库支持,menuconfig应该是最佳的折中。

执行

sudo make menuconfig

出现以下界面。

操作系统实验:构建linux内核系统(linux内核编译)_第1张图片

 设置好后选择save,生成.config文件。

操作系统实验:构建linux内核系统(linux内核编译)_第2张图片

四、内核构建

使用以下命令:


sudo make-kpkg --initrd --revision 1.0liuyjsdust --append-to-version -20190414 kernel_image -j4

参数说明:

1、--initrd选项会让make-kpkg自动帮我们生成initramfs;

2、--revision会给生成的deb文件加上一个版本信息。这个参数只是影响到文件名,如果不指定,默认会是“10.00.Custom”;

3、--append-to-version也是一种版本信息,它不仅出现在deb安装包的文件名里,也会影响到kernel的名称。

4、kernel_image表示生成内核和默认模块的安装包,另外您也可以加上kernel_headers,这样make-kpkg会再生成一个内核头文件的安装包。

5、-j4表示使用4个线程进行编译,根据你机器的配置来设定。

接下来,等待内核编译完成,这个过程很漫长,并且会占用很大的硬盘空间,建议至少分给虚拟机30G的空间。

编译完成:

操作系统实验:构建linux内核系统(linux内核编译)_第3张图片

在/usr/src下会生成一个deb包 

操作系统实验:构建linux内核系统(linux内核编译)_第4张图片

安装内核:

sudo dpkg -i *.deb   ##安装此目录所有deb包

这样,内核便安装完成,可以重启一下。在开机时按住shift键可以进入grub界面,选择启动的内核。

 

常见错误:

(1)执行make config时出现的两个错误,代码127:

操作系统实验:构建linux内核系统(linux内核编译)_第5张图片

操作系统实验:构建linux内核系统(linux内核编译)_第6张图片

解决方法:安装flex和bison

sudo apt-get install flex
sudo apt-get install bison

(2)执行make-kpkg开始编译时报错:

解决方法:安装libssl-dev 

sudo apt-get install libssl-dev

 

你可能感兴趣的:(Linux)