Ubuntu 18.04内核编译

虽然是在 Ubuntu 18.04 上的实验,但是其他版本应该也适用。

安装环境

安装 linux 和 linux image 依赖

sudo apt-get build-dep linux linux-image-$(uname -r)

在能成功运行上面的命令之前,可能需要编辑/etc/apt/sources.list,把其中deb-src的行的注释都去掉,然后

sudo apt-get update

继续安装

sudo apt-get install linux-source kernel-package
sudo apt-get install libncurses-dev

准备代码

  • 进入 /usr/src/linux-source-4.15.0目录,其中,linux-source-4.15.0 也是当前 Ubuntu 18.04 默认使用的内核版本,这可以通过 uname -r 来进行确认。

  • 解压缩文件linux-source-4.15.0.tar.bz2:

sudo tar jvcf linux-source-4.15.0.tar.bz2
  • 复制当前的配置文件到源码目录
sudo cp /boot/config-4.15.0-99-generic .config
  • 把上面复制的旧的配置文件应用到内核代码中
sudo make oldconfig

  • 配置内核
make menuconfig

编译内核

运行下面的命令开始编译代码。其中,deb-pkg 参数会在/usr/src/下生成几个 deb 安装包,之后可以通过 dpkg -i linux-*.deb 来安装内核。

sudo make clean
sudo make -j2 deb-pkg LOCALVERSION=-custom

-custom参数可以自己设定,会在内核版本后面添加该字符串,也就是运行uname -r看到的 generic 这样的字符串。

如果需要编译模块,可以运行:

sudo make modules
sudo make modules_install

make modules_install是模块编译完成后进行安装到对应目录。

安装内核

编译好的内核文件默认放在上一级目录,共有4个 deb 文件。安装命令入下:

cd ..
sudo dpkg -i linux-*.deb

安装后,新的内核文件会出现在/boot目录下,同时/boot/grub/menu.lst中还会添加新的内核启动入口,在系统启动的时候按住shift键可以选择使用哪个内核,默认使用新内核。

参考

  • Kernel/BuildYourOwnKernel - Ubuntu Wiki
  • Linux Kernel Configuration - LOCALVERSION
  • The Debian Administrator's Handbook: 8.10. Compiling a Kernel
  • Ubuntu Installation Guide: 8.6. Compiling a New Kernel
  • compiling - Trying to build kernel on 18.04. No editconfigs option - Ask Ubuntu

你可能感兴趣的:(Ubuntu 18.04内核编译)