Mac下重新编译Linux内核
操作系统实验,要求添加系统调用并重新编译内核,这里记录一下编译内核的过程
0.下载VirtualBox
博主一直用parallel desk,但因为驱动等问题,在PD上重新编译后无法出现图形界面,所以建议采用绝缘性较好的VirtualBox来编译内核。
1.下载内核
从Linux的官网http://www.kernel.org下载内核代码即可,注意版本号,建议用比较新的Ubuntu系统的话就采用新的内核。
这里博主遇到了一个坑,在16.04的Ubuntu下编译3.11.4内核时遇到error,原因是系统的gcc版本是5,而3.11.4内核不包含gcc5.h,直接报错。
2.部署内核源码
# 把内核解压到/usr/src目录下
cd /usr/src
tar -xvf ~/Downloads/linux-4.14.1.tar.xz #解压源码
3.在内核代码目录下创建.config
如果没有大的改动的话可以通过原来的配置文件来生成新的配置文件
cd linux-4.14.1
cp /boot/config-`uname -r` .config #这里`uname -r`可以求出当前的内核版本
sudo make oldconfig
之后会出现一些列配置选项,全部回车即可
4. 编译内核
sudo make
sudo make modules_install
sudo make install
编译时可能出现缺少openssl,apt install即可,make的时间比较长,中途如果出错再次编译前最好先sudo make clean
5. 测试
sudo reboot #重启
uname -r # 查看内核版本
第一次重启可能比较慢,耐心等待即可。