实验环境: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
出现以下界面。
设置好后选择save,生成.config文件。
四、内核构建
使用以下命令:
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的空间。
编译完成:
在/usr/src下会生成一个deb包
安装内核:
sudo dpkg -i *.deb ##安装此目录所有deb包
这样,内核便安装完成,可以重启一下。在开机时按住shift键可以进入grub界面,选择启动的内核。
常见错误:
(1)执行make config时出现的两个错误,代码127:
解决方法:安装flex和bison
sudo apt-get install flex
sudo apt-get install bison
(2)执行make-kpkg开始编译时报错:
解决方法:安装libssl-dev
sudo apt-get install libssl-dev