<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>2010 on Liangweidong's blog</title><link>https://liangweidonggood.github.io/tags/2010/</link><description>Recent content in 2010 on Liangweidong's blog</description><generator>Hugo -- gohugo.io</generator><language>zh-cn</language><lastBuildDate>Tue, 15 Jun 2010 00:00:00 +0800</lastBuildDate><atom:link href="https://liangweidonggood.github.io/tags/2010/index.xml" rel="self" type="application/rss+xml"/><item><title>CentOS 6.5 时代：内核升级与 ELRepo 实战</title><link>https://liangweidonggood.github.io/p/centos-6-5-nei-he-sheng-ji-elrepo/</link><pubDate>Tue, 15 Jun 2010 00:00:00 +0800</pubDate><guid>https://liangweidonggood.github.io/p/centos-6-5-nei-he-sheng-ji-elrepo/</guid><description>&lt;img src="https://liangweidonggood.github.io/p/centos-6-5-nei-he-sheng-ji-elrepo/image/cover.jpg" alt="Featured image of post CentOS 6.5 时代：内核升级与 ELRepo 实战" /&gt;&lt;h2 id="一为什么-2010-年还要升级-centos-65-的内核"&gt;一、为什么 2010 年还要升级 CentOS 6.5 的内核
&lt;/h2&gt;&lt;p&gt;CentOS 6.5（2013-12-01 发布，是 CentOS 6 系列的最后一个主要版本）跑的是 &lt;code&gt;2.6.32-431.el6.x86_64&lt;/code&gt;——一个 RHEL/CentOS 维护了 10 年的&amp;quot;长青&amp;quot;内核，对应 RHEL 的&amp;quot;zk 内核&amp;quot;分支。这套内核的好处是&lt;strong&gt;极其稳定&lt;/strong&gt;，几乎所有服务器场景都能跑；坏处是&lt;strong&gt;新硬件支持差&lt;/strong&gt;——比如后期出来的 Intel &lt;code&gt;e1000e&lt;/code&gt; 网卡的某些固件 bug、SSD 控制器新特性、新 CPU 微码补丁等，都得靠&lt;strong&gt;第三方仓库&lt;/strong&gt;才能拿到。&lt;/p&gt;
&lt;p&gt;2010 年代初的运维圈子里，给生产服务器升级内核的标准动作就是：&lt;strong&gt;接 ELRepo&lt;/strong&gt;。ELRepo（&lt;a class="link" href="https://www.elrepo.org" target="_blank" rel="noopener"
 &gt;elrepo.org&lt;/a&gt;）是 RHEL/CentOS 生态最知名的第三方内核仓库，提供两套主线：&lt;/p&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;包名&lt;/th&gt;
					&lt;th&gt;来源&lt;/th&gt;
					&lt;th&gt;特点&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;kernel-lt&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;Linux stable&lt;/td&gt;
					&lt;td&gt;长期维护版（Long Term），稳定性优先&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;kernel-ml&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;Linux mainline&lt;/td&gt;
					&lt;td&gt;主线最新版，新特性优先&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;当时给生产服务器升级的常见选择是 &lt;code&gt;kernel-lt&lt;/code&gt;——本文以 6.x 时代最常见的 &lt;code&gt;kernel-lt-3.10.x&lt;/code&gt; 路线为例。&lt;/p&gt;

 &lt;blockquote&gt;
 &lt;p&gt;&lt;strong&gt;本文写于 2010 年&lt;/strong&gt;，主要面向 CentOS 6.x 时代服务器。CentOS 6 已经在 2020-11-30 EOL，CentOS 7 已经在 2024-06-30 EOL，&lt;strong&gt;新机器建议直接上 Rocky / Alma / Ubuntu LTS&lt;/strong&gt;。本篇留作&amp;quot;那个时代&amp;quot;的运维档案。&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;h2 id="二查清当前系统与内核版本"&gt;二、查清当前系统与内核版本
&lt;/h2&gt;&lt;p&gt;升级前先确认两件事：发行版版本、内核版本。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 发行版版本&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="o"&gt;[&lt;/span&gt;root@centos6 ~&lt;span class="o"&gt;]&lt;/span&gt;&lt;span class="c1"&gt;# lsb_release -a&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;LSB Version: :base-4.0-amd64:base-4.0-noarch:core-4.0-amd64:...
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Distributor ID: CentOS
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Description: CentOS release 6.5 &lt;span class="o"&gt;(&lt;/span&gt;Final&lt;span class="o"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Release: 6.5
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Codename: Final
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 内核版本&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="o"&gt;[&lt;/span&gt;root@centos6 ~&lt;span class="o"&gt;]&lt;/span&gt;&lt;span class="c1"&gt;# uname -r&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;2.6.32-431.el6.x86_64
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;code&gt;lsb_release&lt;/code&gt; 在最小化安装的机器上默认没装，可以改用 &lt;code&gt;cat /etc/redhat-release&lt;/code&gt; 兜底：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;cat /etc/redhat-release
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# CentOS release 6.5 (Final)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id="三解决-yum-下载-elrepo-公钥时的-ssl-错误"&gt;三、解决 yum 下载 ELRepo 公钥时的 SSL 错误
&lt;/h2&gt;&lt;p&gt;直接 &lt;code&gt;rpm --import&lt;/code&gt; ELRepo 的 GPG 公钥，6.x 时代很容易遇到：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="o"&gt;[&lt;/span&gt;root@centos6 ~&lt;span class="o"&gt;]&lt;/span&gt;&lt;span class="c1"&gt;# rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;curl: &lt;span class="o"&gt;(&lt;/span&gt;35&lt;span class="o"&gt;)&lt;/span&gt; SSL connect error
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;error: https://www.elrepo.org/RPM-GPG-KEY-elrepo.org: import &lt;span class="nb"&gt;read&lt;/span&gt; failed&lt;span class="o"&gt;(&lt;/span&gt;2&lt;span class="o"&gt;)&lt;/span&gt;.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;这是因为系统自带的 &lt;code&gt;nss&lt;/code&gt;（Network Security Services）太老，跟不上 TLS 协议。&lt;strong&gt;解决方法就一条：先升级 nss&lt;/strong&gt;：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;yum update nss
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;之后再 &lt;code&gt;rpm --import&lt;/code&gt; 就正常了。&lt;/p&gt;
&lt;h2 id="四安装-elrepo-仓库"&gt;四、安装 ELRepo 仓库
&lt;/h2&gt;&lt;p&gt;ELRepo 提供按大版本分发的 release RPM，直接装就能拿到 repo 文件：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;rpm -Uvh http://www.elrepo.org/elrepo-release-6-8.el6.elrepo.noarch.rpm
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;这一步会生成 &lt;code&gt;/etc/yum.repos.d/elrepo.repo&lt;/code&gt;，里面有两个仓库：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;elrepo&lt;/code&gt;（主仓库，ELRepo 自有驱动）&lt;/li&gt;
&lt;li&gt;&lt;code&gt;elrepo-kernel&lt;/code&gt;（&lt;strong&gt;内核专用&lt;/strong&gt;）&lt;/li&gt;
&lt;li&gt;&lt;code&gt;elrepo-extras&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="五安装-kernel-lt-内核"&gt;五、安装 kernel-lt 内核
&lt;/h2&gt;&lt;p&gt;只启用 &lt;code&gt;elrepo-kernel&lt;/code&gt; 仓库，避免其他包被意外升级：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;yum --enablerepo&lt;span class="o"&gt;=&lt;/span&gt;elrepo-kernel install kernel-lt -y
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;安装完成后，新内核会出现在 &lt;code&gt;/boot/&lt;/code&gt; 下，同时 grub 也会自动加入对应的启动项。但&lt;strong&gt;grub 默认从序号 0 开始启动，新内核一般被装在最后&lt;/strong&gt;，所以下一步要改默认启动顺序。&lt;/p&gt;
&lt;h2 id="六修改-grub-引导顺序"&gt;六、修改 grub 引导顺序
&lt;/h2&gt;&lt;p&gt;CentOS 6 时代的 grub 还是 legacy grub 1，配置文件是 &lt;code&gt;/etc/grub.conf&lt;/code&gt;（实际软链接到 &lt;code&gt;/boot/grub/grub.conf&lt;/code&gt;）：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;vi /etc/grub.conf
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;把 &lt;code&gt;default=N&lt;/code&gt; 改成新内核对应的序号（一般是 0）。文件里长这样：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;span class="lnt"&gt;12
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;default=0 # ← 改这个
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;timeout=5
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;splashimage=(hd0,0)/grub/splash.xpm.gz
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;hiddenmenu
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;title CentOS (3.10.0-1.el6.elrepo.x86_64)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; root (hd0,0)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; kernel /vmlinuz-3.10.0-1.el6.elrepo.x86_64 ro root=/dev/mapper/...
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; initrd /initramfs-3.10.0-1.el6.elrepo.x86_64.img
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;title CentOS (2.6.32-431.el6.x86_64)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; root (hd0,0)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; kernel /vmlinuz-2.6.32-431.el6.x86_64 ro root=/dev/mapper/...
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; initrd /initramfs-2.6.32-431.el6.x86_64.img
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;新内核放在 &lt;code&gt;title&lt;/code&gt; 列表的最上面时，&lt;code&gt;default=0&lt;/code&gt; 就指向它；放后面就改对应的序号。&lt;/p&gt;

 &lt;blockquote&gt;
 &lt;p&gt;&lt;strong&gt;坑提醒&lt;/strong&gt;：改完一定要&lt;strong&gt;重启验证&lt;/strong&gt;，别留在原内核就以为升级成功了。&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;h2 id="七重启验证"&gt;七、重启验证
&lt;/h2&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;reboot
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;重启后再次 &lt;code&gt;uname -r&lt;/code&gt;：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;uname -r
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 3.10.0-1.el6.elrepo.x86_64&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;确认已经是新内核，老的内核包先&lt;strong&gt;别删&lt;/strong&gt;——留一两周观察稳定再清理。&lt;/p&gt;
&lt;h2 id="八常见坑速查"&gt;八、常见坑速查
&lt;/h2&gt;&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;现象&lt;/th&gt;
					&lt;th&gt;原因&lt;/th&gt;
					&lt;th&gt;处理&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;rpm --import&lt;/code&gt; 报 SSL error&lt;/td&gt;
					&lt;td&gt;nss 库太老&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;yum update nss&lt;/code&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;安装后还是老内核启动&lt;/td&gt;
					&lt;td&gt;grub &lt;code&gt;default&lt;/code&gt; 没改&lt;/td&gt;
					&lt;td&gt;编辑 &lt;code&gt;/etc/grub.conf&lt;/code&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;启动到一半 &lt;code&gt;dracut&lt;/code&gt; panic&lt;/td&gt;
					&lt;td&gt;initramfs 没生成或磁盘驱动没编进&lt;/td&gt;
					&lt;td&gt;用 &lt;code&gt;dracut --force&lt;/code&gt; 重生成 initramfs&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;第三方软件（如 VMware Tools）装不上&lt;/td&gt;
					&lt;td&gt;内核头文件路径变了&lt;/td&gt;
					&lt;td&gt;装对应 &lt;code&gt;kernel-lt-devel&lt;/code&gt;&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="九下一步"&gt;九、下一步
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;想再激进一点（拿 Btrfs/OverlayFS 等新特性）→ 改用 &lt;code&gt;kernel-ml&lt;/code&gt;，但&lt;strong&gt;绝不要在生产环境直接上&lt;/strong&gt;——6.x 时代的 ml 包出过几次 initramfs 兼容事故&lt;/li&gt;
&lt;li&gt;想再稳一点（保留老内核回退）→ 升级前用 &lt;code&gt;df&lt;/code&gt;/&lt;code&gt;mount&lt;/code&gt; 拍个快照，VPS 用户用服务商控制台做 system snapshot&lt;/li&gt;
&lt;li&gt;配套的 &lt;code&gt;kernel-lt-devel&lt;/code&gt;、&lt;code&gt;kernel-lt-headers&lt;/code&gt; 也要一并装，否则后面编译 DKMS 模块（如 VirtualBox Guest Additions）会失败&lt;/li&gt;
&lt;li&gt;真要彻底升级大版本（6.x → 7.x）→ 走 &lt;code&gt;redhat-upgrade-tool&lt;/code&gt;（已废弃）或重新装机，跨大版本升级从来都只适合&lt;strong&gt;有完整快照的测试机&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="参考资料"&gt;参考资料
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://www.elrepo.org/" target="_blank" rel="noopener"
 &gt;ELRepo 官网&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://wiki.centos.org/About/Product" target="_blank" rel="noopener"
 &gt;CentOS 6 EOL 公告&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;RHEL 6.5 Release Notes（kernel 章节）&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id="2024-视角centos-6-时代已彻底过去迁移方案汇总"&gt;2024 视角：CentOS 6 时代已彻底过去，迁移方案汇总
&lt;/h2&gt;&lt;p&gt;本文写于 &lt;strong&gt;2010-06-15&lt;/strong&gt;（实际是后人补档的&amp;quot;老运维回忆&amp;quot;），距今已 14 年。&lt;strong&gt;2024 视角下&lt;/strong&gt;：&lt;/p&gt;
&lt;h3 id="一centos-6-已经是老古董"&gt;一、CentOS 6 已经是&amp;quot;老古董&amp;quot;
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;2020-11-30&lt;/strong&gt;：CentOS 6 EOL（End of Life）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;2020-12 至 2024-06&lt;/strong&gt;：CentOS Linux 6 走&amp;quot;extended EOL&amp;quot;（付费支持）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;2024-06-30&lt;/strong&gt;：&lt;strong&gt;CentOS Linux 6 全面停止维护&lt;/strong&gt;。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;2024 视角&lt;/strong&gt;：&lt;strong&gt;仍然跑 CentOS 6 的服务器&lt;/strong&gt;已经&lt;strong&gt;无安全更新&lt;/strong&gt;——&lt;strong&gt;强烈建议迁出&lt;/strong&gt;。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="二centos-6-迁到哪里"&gt;二、CentOS 6 迁到哪里
&lt;/h3&gt;&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;目标&lt;/th&gt;
					&lt;th&gt;兼容性&lt;/th&gt;
					&lt;th&gt;迁移成本&lt;/th&gt;
					&lt;th&gt;适用&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;CentOS 7&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;90%&lt;/td&gt;
					&lt;td&gt;低&lt;/td&gt;
					&lt;td&gt;不推荐（7 已 2024-06 EOL）&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;CentOS 8&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;95%&lt;/td&gt;
					&lt;td&gt;低&lt;/td&gt;
					&lt;td&gt;不推荐（8 已 2021-12 EOL）&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;CentOS Stream 8/9&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;100%&lt;/td&gt;
					&lt;td&gt;低&lt;/td&gt;
					&lt;td&gt;滚动版，&lt;strong&gt;生产慎用&lt;/strong&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;Rocky Linux 9&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;100%&lt;/td&gt;
					&lt;td&gt;低&lt;/td&gt;
					&lt;td&gt;&lt;strong&gt;首选&lt;/strong&gt;（社区驱动，CIQ 维护）&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;AlmaLinux 9&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;100%&lt;/td&gt;
					&lt;td&gt;低&lt;/td&gt;
					&lt;td&gt;&lt;strong&gt;首选&lt;/strong&gt;（CloudLinux 维护）&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;Oracle Linux 9&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;100%&lt;/td&gt;
					&lt;td&gt;低&lt;/td&gt;
					&lt;td&gt;大企业 / 商业支持&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;Ubuntu 22.04 LTS&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;80%&lt;/td&gt;
					&lt;td&gt;中&lt;/td&gt;
					&lt;td&gt;桌面 / 开发机&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;Debian 12&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;80%&lt;/td&gt;
					&lt;td&gt;中&lt;/td&gt;
					&lt;td&gt;服务器 / 容器&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="三migrate2rocky-脚本一键迁移"&gt;三、&lt;code&gt;migrate2rocky&lt;/code&gt; 脚本一键迁移
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;span class="lnt"&gt;6
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# CentOS 6/7/8 → Rocky Linux 9&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;curl -O https://raw.githubusercontent.com/rocky-linux/rocky-tools/main/migrate2rocky/migrate2rocky.sh
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;chmod +x migrate2rocky.sh
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo bash migrate2rocky.sh -r
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 重启&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo reboot
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;注意&lt;/strong&gt;：必须&lt;strong&gt;先做完整备份&lt;/strong&gt;（快照 / tar 全量），迁移过程会替换核心包。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;不兼容情况&lt;/strong&gt;：&lt;strong&gt;自定义编译的内核模块&lt;/strong&gt;（如 NVIDIA 驱动、VirtualBox）需要重新编译。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="四centos-6-时代的运维遗物清单"&gt;四、CentOS 6 时代的&amp;quot;运维遗物&amp;quot;清单
&lt;/h3&gt;&lt;p&gt;2010 年代 CentOS 6 跑的常见服务，2024 都有现代替代：&lt;/p&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;老服务&lt;/th&gt;
					&lt;th&gt;2024 替代&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;MySQL 5.1&lt;/td&gt;
					&lt;td&gt;MySQL 8.0 / MariaDB 10.11&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;Apache 2.2&lt;/td&gt;
					&lt;td&gt;Apache 2.4 / Nginx 1.27&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;PHP 5.3&lt;/td&gt;
					&lt;td&gt;PHP 8.3&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;iptables&lt;/td&gt;
					&lt;td&gt;&lt;strong&gt;nftables&lt;/strong&gt;（CentOS 7 后）&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;OpenSSH 5.3&lt;/td&gt;
					&lt;td&gt;OpenSSH 9.x（强制 ed25519 / rsa-sha2-256）&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;ntpd&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;chronyd&lt;/code&gt;（CentOS 7+）&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;ifconfig&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;ip&lt;/code&gt;（iproute2）&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;netstat&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;ss&lt;/code&gt;（iproute2）&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;service&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;systemctl&lt;/code&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;chkconfig&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;systemctl enable/disable&lt;/code&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;ifupdown&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;NetworkManager / &lt;code&gt;nmcli&lt;/code&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;route&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;ip route&lt;/code&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;arp&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;ip neigh&lt;/code&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;traceroute&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;mtr&lt;/code&gt;（更现代）&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;wget&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;curl&lt;/code&gt;（更通用）&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="五centos-6--9-的陷阱清单"&gt;五、CentOS 6 → 9 的&amp;quot;陷阱&amp;quot;清单
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;systemd 全面接管&lt;/strong&gt;：&lt;code&gt;init.d&lt;/code&gt; 脚本不再被自动识别——必须写 &lt;code&gt;*.service&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;firewalld 取代 iptables&lt;/strong&gt;：老 &lt;code&gt;iptables -A INPUT ...&lt;/code&gt; 命令仍兼容（底层是 nftables），但&lt;strong&gt;推荐用 &lt;code&gt;firewall-cmd&lt;/code&gt;&lt;/strong&gt;。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;SELinux 强制开启&lt;/strong&gt;：从 CentOS 7 起默认开启，&lt;strong&gt;老脚本不写 SELinux context 会失败&lt;/strong&gt;。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Python 2.7 EOL&lt;/strong&gt;（2020-01-01）：所有 &lt;code&gt;#!/usr/bin/python&lt;/code&gt; 必须改成 &lt;code&gt;python3&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;OpenSSL 1.1+ / TLS 1.3 强制&lt;/strong&gt;：老证书可能不再受信任。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;GLIBC 2.28+&lt;/strong&gt;（CentOS 9）：老二进制（如 tcpcopy 1.2.0 预编译版）会报&amp;quot;GLIBC_2.34 not found&amp;quot;。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="六centos-6-的真实价值归档"&gt;六、CentOS 6 的&amp;quot;真实价值&amp;quot;：归档
&lt;/h3&gt;&lt;p&gt;2024 视角下，&lt;strong&gt;CentOS 6 的真正价值是&amp;quot;运维历史档案&amp;quot;&lt;/strong&gt;——很多老脚本、老软件、老硬件驱动都跑在上面。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;vmware-tools&lt;/strong&gt;：CentOS 6 用&lt;strong&gt;老版 VMware Tools&lt;/strong&gt;（kernel 2.6.32 兼容），CentOS 9 改用 &lt;strong&gt;open-vm-tools&lt;/strong&gt;。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Realtek 网卡驱动&lt;/strong&gt;：CentOS 6 时代手动编译 r8168，CentOS 9 内核已自带。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;NFS v3&lt;/strong&gt;：CentOS 6 默认 NFSv3，CentOS 9 默认 NFSv4.2。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;32 位库&lt;/strong&gt;：CentOS 6 装 &lt;code&gt;glibc.i686&lt;/code&gt; 跑 32 位应用，CentOS 9 已经不默认装 i686 仓库。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="七2024-仍在跑-centos-6-的现实方案"&gt;七、2024 仍在跑 CentOS 6 的&amp;quot;现实方案&amp;quot;
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;方案 A（推荐）&lt;/strong&gt;：迁移到 Rocky / Alma 9&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方案 B&lt;/strong&gt;：用 Vault 仓库 + &lt;code&gt;--enablerepo&lt;/code&gt; 让 yum 继续用（但&lt;strong&gt;无安全更新&lt;/strong&gt;）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方案 C&lt;/strong&gt;：用 &lt;strong&gt;docker 容器&lt;/strong&gt;包老 OS：&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 用 Docker 跑 CentOS 6 容器（保留老应用）&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;docker run -it --rm centos:6 bash
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 内部操作&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;yum update
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 应用跑在容器里&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;方案 D&lt;/strong&gt;：上 K8s + 老 OS Pod（&lt;strong&gt;生产慎用&lt;/strong&gt;）&lt;/li&gt;
&lt;/ul&gt;</description></item></channel></rss>