线上的CentOS7,没有跑什么服务,但是挂了个wireguard,用来解决内网服务器访问外网的需求。
更新CentOS 7的时候发现现有内核版本太老了,wireguard出了点错,手工dkms:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
[root@e squid]# dkms install -m wireguard -v 0.0.20180531 Kernel preparation unnecessary for this kernel. Skipping... Building module: cleaning build area... make -j2 KERNELRELEASE=3.10.0-693.17.1.el7.x86_64 -C /lib/modules/3.10.0-693.17.1.el7.x86_64/build M=/var/lib/dkms/wireguard/0.0.20180531/build...(bad exit status: 2) Error! Bad return status for module build on kernel: 3.10.0-693.17.1.el7.x86_64 (x86_64) Consult /var/lib/dkms/wireguard/0.0.20180531/build/make.log for more information. [root@e squid]# [root@e squid]# [root@e squid]# more /var/lib/dkms/wireguard/0.0.20180531/build/make.log DKMS make.log for wireguard-0.0.20180531 for kernel 3.10.0-693.17.1.el7.x86_64 (x86_64) Fri Jun 1 14:31:48 CST 2018 make: Entering directory `/usr/src/kernels/3.10.0-693.17.1.el7.x86_64' LD /var/lib/dkms/wireguard/0.0.20180531/build/built-in.o CC [M] /var/lib/dkms/wireguard/0.0.20180531/build/main.o CC [M] /var/lib/dkms/wireguard/0.0.20180531/build/noise.o In file included from /var/lib/dkms/wireguard/0.0.20180531/build/main.c:9:0: /var/lib/dkms/wireguard/0.0.20180531/build/queueing.h: 在函数‘skb_reset’中: /var/lib/dkms/wireguard/0.0.20180531/build/queueing.h:78:2: 错误:隐式声明函数‘skb_reset_tc’ [-Werror=implicit-function-declaration] skb_reset_tc(skb); ^ In file included from /var/lib/dkms/wireguard/0.0.20180531/build/noise.c:10:0: /var/lib/dkms/wireguard/0.0.20180531/build/queueing.h: 在函数‘skb_reset’中: /var/lib/dkms/wireguard/0.0.20180531/build/queueing.h:78:2: 错误:隐式声明函数‘skb_reset_tc’ [-Werror=implicit-function-declaration] skb_reset_tc(skb); ^ cc1: some warnings being treated as errors cc1: some warnings being treated as errors make[1]: *** [/var/lib/dkms/wireguard/0.0.20180531/build/main.o] 错误 1 make[1]: *** 正在等待未完成的任务.... make[1]: *** [/var/lib/dkms/wireguard/0.0.20180531/build/noise.o] 错误 1 make: *** [_module_/var/lib/dkms/wireguard/0.0.20180531/build] Error 2 make: Leaving directory `/usr/src/kernels/3.10.0-693.17.1.el7.x86_64' |
所以想更新一下内核。
没有找到靠谱的hot upgrade,所以试了试 kexec,参考 Kernel patching with kexec: updating a CentOS 7 kernel without a full reboot
1 2 3 |
# kexec -u # kexec -l /boot/vmlinuz-3.10.0-862.3.2.el7.x86_64 --initrd=/boot/initramfs-3.10.0-862.3.2.el7.x86_64.img --reuse-cmdline # systemctl kexec |
执行完,ssh就断了,然后过了一会儿就ping通了,好像没比reboot快多少。
kexec 更新Linux内核 by @sskaje: https://sskaje.me/2018/06/kexec-upgrade-linux-kernel/
Incoming search terms:
Link to this post!