HCRM博客

CentOS 4.4.132升级至最新内核,老旧服务器焕新力

CentOS 4.4.132打补丁到最新内核流程:老机器也能稳如狗

先别急着骂老内核,它还能打

CentOS 4.4.132升级至最新内核,老旧服务器焕新力-图1

机房角落里那台CentOS 4.4.132的小破机,跑着跑着就蹦出“kernel BUG at mm/slab.c”?别急着扔,给它缝缝补补还能再战三年。下面这套流程,亲测能把古董级内核一路抬到4.4.2xx,全程不翻车、不丢数据、不重启失败,连隔壁运维大叔都偷学。

一、先摸清家底:到底能不能升

登录终端,先甩三条命令:

uname -r //看当前内核

cat /etc/centos-release //确认系统版本

lscpu | grep sse //查CPU指令集,缺sse2的直接劝退

CentOS 4.4.132升级至最新内核,老旧服务器焕新力-图2

如果回显是“4.4.132-1.el7.centos.x86_64”,恭喜,你手里这张旧船票还能登上新内核的船。若机器是32位或者内存低于1G,建议先加条内存,省得编译到一半oom-killer出来搅局。

二、备份:别等出事才后悔

1. 给现有内核留条后路:

cp /boot/vmlinuz-4.4.132 /boot/vmlinuz-4.4.132.bak

cp /boot/initramfs-4.4.132.img /boot/initramfs-4.4.132.img.bak

2. 把grub.cfg也拷一份:

CentOS 4.4.132升级至最新内核,老旧服务器焕新力-图3

cp /boot/grub2/grub.cfg /boot/grub2/grub.cfg.bak

3. 能快照的快照,能dd的dd,数据无价,别省这几分钟。

三、换源:让下载飞起来

默认源早就被官方扔进故纸堆,先切到vault:

sed -i 's/mirrorlist/#mirrorlist/g' /etc/yum.repos.d/.repo

sed -i 's|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g' /etc/yum.repos.d/.repo

再配个EPEL,省得一会缺依赖:

yum install -y epel-release

四、拉源码:别下错分支

去kernel.org挑一个4.4.xxx的长期支持版,长期支持版bug少,补丁齐,别手痒去点5.x。

wget https://cdn.kernel.org/pub/linux/kernel/v4.x/linux-4.4.2xx.tar.xz

tar -xvf linux-4.4.2xx.tar.xz -C /usr/src/

cd /usr/src/linux-4.4.2xx

五、借旧配置:少踩坑

把旧内核的配置直接搬过来,省得自己一条条猜:

cp /boot/config-4.4.132 .config

make olddefconfig //自动把新项补成默认值

想再稳一点,执行make menuconfig,把CONFIG_LOCALVERSION改成“.custom”,方便回滚时一眼认出。

六、开编译:去喝杯咖啡

先装编译工具链:

yum groupinstall -y "Development Tools"

yum install -y ncurses-devel bc openssl-devel elfutils-libelf-devel

然后开始撸:

make -j$(nproc) rpm-pkg

-j$(nproc)会自动把CPU吃满,编译时长看机器,老Xeon大概半小时,小破Atom就睡一觉再说。

七、装新内核:三条命令搞定

编译完在~/rpmbuild/RPMS/x86_64/里会冒出三个rpm:

rpm -ivh kernel-4.4.2xx-1.custom.x8664.rpm

rpm -ivh kernel-devel-4.4.2xx-1.custom.x8664.rpm

rpm -ivh kernel-headers-4.4.2xx-1.custom.x86_64.rpm

装完别急着重启,先确认grub2识别到新条目:

awk -F\' '$1=="menuentry " {print $2}' /etc/grub2.cfg

八、第一次重启:把旧内核留入口

grub2-set-default 0 //0代表新内核

grub2-mkconfig -o /boot/grub2/grub.cfg

reboot

重启后若控制台刷出一堆OK,登录再uname -r,看到“4.4.2xx-1.custom”,说明升级成功。万一黑屏,重启选旧内核即可回退,这就是前面留备份的意义。

九、打补丁:别一口气全吃

长期支持版也不是铁打的,CVE通告出来就得补。推荐订阅linux-distros邮件列表,有补丁立马干。

示例:应用官方小版本补丁

cd /usr/src/linux-4.4.2xx

patch -p1 < ../patch-4.4.2xx-to-4.4.2yy.xz

make olddefconfig

make -j$(nproc) rpm-pkg

rpm -Uvh ~/rpmbuild/RPMS/x86_64/kernel-*.rpm

小步快跑,一次只升一个子版本,回滚也轻松。

十、清理:别让/boot爆掉

升级几次后,/boot里会躺满旧内核,留两个备用即可:

package-cleanup --oldkernels --count=2

再把源码目录打包扔备份盘,磁盘省出来的空间就是监控告警沉默的声音。

十一、常见翻车点与急救

1. 编译报错“bc: command not found”——缺bc,装。

2. 重启后网卡失踪——新内核缺驱动,把旧配置里的驱动编译进内核,别当模块。

3. VirtualBox起不来——需要对应内核版本的dkms,先升级VirtualBox再重启。

4. 启动卡死“dracut timeout”——initramfs没打驱动,dracut -f -v重新生成。

遇事不慌,先甩旧内核进去,再慢慢排错。

十二、老内核也能焕发第二春

CentOS 4.4.132并不是只能进博物馆,按上面流程,源码编译+rpm封装+grub双入口,稳得一批。补丁勤打,备份勤做,老机器跑新内核,性能不见得比新服务器差,关键还省钱。

本站部分图片及内容来源网络,版权归原作者所有,转载目的为传递知识,不代表本站立场。若侵权或违规联系Email:zjx77377423@163.com 核实后第一时间删除。 转载请注明出处:https://blog.huochengrm.cn/pc/41968.html

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
请登录后评论...
游客游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~