CentOS 4.4.132打补丁到最新内核流程:老机器也能稳如狗
先别急着骂老内核,它还能打

机房角落里那台CentOS 4.4.132的小破机,跑着跑着就蹦出“kernel BUG at mm/slab.c”?别急着扔,给它缝缝补补还能再战三年。下面这套流程,亲测能把古董级内核一路抬到4.4.2xx,全程不翻车、不丢数据、不重启失败,连隔壁运维大叔都偷学。
一、先摸清家底:到底能不能升
登录终端,先甩三条命令:
uname -r //看当前内核
cat /etc/centos-release //确认系统版本
lscpu | grep sse //查CPU指令集,缺sse2的直接劝退

如果回显是“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也拷一份:

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双入口,稳得一批。补丁勤打,备份勤做,老机器跑新内核,性能不见得比新服务器差,关键还省钱。
