阿里云新机器:
源码编译Linux最新stable版本内核,并替换现有内核使用新内核
$ apt update
$ apt apt-get install ncurses-dev bison flex pkg-config libelf-dev libssl-dev
Linux Kernel Archives
https://www.kernel.org/
下载xz压缩后的tar包,以减少下载时间:
$ wget https://mirrors.edge.kernel.org/pub/linux/kernel/v4.x/linux-4.18.9.tar.xz
$ xz -d linux-4.18.9.tar.xz
$ tar xvf linux-4.18.9.tar
$ ls
linux-4.18.9 linux-4.18.9.tar
$ cd linux-4.18.9
$ make menuconfig
Select->Save,会在(当前目录下生成.config
文件,应该也是基于当前内核配置的基础上生成的)
.config
文件格式如下,举例说明:
CONFIG_PCI=y
PCI support# CONFIG_XFS_FS is not set
We have not selected the XFS filesystem support可以Load->Select->Save来选择Custom的config,或者直接拷贝一个config文件:
$ cp /boot/config-$(uname -r) .config
查看当前内核版本:
$ uname -r
4.4.0-117-generic
编译生成Kernel的Image,这里是compressed后的Image,-jN
后面的N
一般为CPU核心数的两倍,这里选择8:
$ make bzImage -j8
xxx
Kernel: arch/x86/boot/bzImage is ready (#1)
编译上述配置中选择的components生成kernel modules:
$ make modules -j8
安装modules,会在/lib/modules/4.18.9
目录下安装模块和其他一些必要文件:
$ make modules_install
安装kernel image,会在/boot
更新kernel image,更新bootloader的配置文件(grub.conf)和其他一些让新内核bootable的操作:
$ make install
重启再查看现有内核版本:
$ reboot
$ uname -r
4.18.9
修改默认启动的Kernel,来切换内核版本,比如又想回到之前的内核版本
首先是要知道GRUB的menu格式,可以重启进入GRUB看,也可以不重启看:
$ vi /etc/default/grub
GRUB_HIDDEN_TIMEOUT=10(默认是0,修要修改成大于0的值,比如10)
$ update-grub -v
grub-mkconfig (GRUB) 2.02~beta2-36ubuntu3.18
$ grep -Ei 'submenu|menuentry ' /boot/grub/grub.cfg | sed -re "s/(.? )'([^']+)'.*/\1 \2/"
menuentry Ubuntu
submenu Advanced options for Ubuntu
menuentry Ubuntu, with Linux 4.18.9
menuentry Ubuntu, with Linux 4.18.9 (recovery mode)
menuentry Ubuntu, with Linux 4.4.0-117-generic
menuentry Ubuntu, with Linux 4.4.0-117-generic (recovery mode)
menuentry Ubuntu, with Linux 4.4.0-116-generic
menuentry Ubuntu, with Linux 4.4.0-116-generic (recovery mode)
menuentry Ubuntu, with Linux 4.4.0-87-generic
menuentry Ubuntu, with Linux 4.4.0-87-generic (recovery mode)
修改GRUB默认启动的内核
$ vi /etc/default/grub
GRUB_DEFAULT="1>2"
$ update-grub
修改默认的为Advanced options for Ubuntu
(1)下面menuentry Ubuntu, with Linux 4.4.0-117-generic
(2),下标从0开始。
$ reboot
$ uname -r
4.4.0-117-generic
好的,内核版本换了,我胡汉三又回来了
源码编译Linux内核就下面那些命令:
$ make menuconfig
# make包含Image和Modules
$ make
$ make modules_install
$ make install
问题1:依赖问题,解决方法就是按照提示安装依赖
问题2:不能进GRUB,解决方法是修改GRUB_HIDDEN_TIMEOUT=10
https://linuxgazette.net/111/krishnakumar.html
https://blog.csdn.net/three_bird/article/details/51329195
https://blog.csdn.net/u013439115/article/details/77935602
https://en.wikipedia.org/wiki/Menuconfig
https://medium.freecodecamp.org/building-and-installing-the-latest-linux-kernel-from-source-6d8df5345980
https://bbs.aliyun.com/simple/t504372.html
https://askubuntu.com/questions/216398/set-older-kernel-as-default-grub-entry