# 系统更新与内核管理

URL: https://caijiao.org/rockylinux/system-update
Source: docs/rockylinux/system-update.md
Description: 在 Rocky Linux 中执行系统更新、软件包升级与内核版本管理的完整指南，涵盖 dnf、kernel-tools、长期支持内核和旧版本清理方法。

保持系统与内核的最新状态是保障服务器稳定与安全运行的关键步骤。  
本章介绍如何在 Rocky Linux 中安全地进行系统更新、内核升级、版本选择及旧内核清理。

## 一、系统更新基础

Rocky Linux 使用 **dnf（Dandified YUM）** 作为包管理器。

### 1. 检查系统版本

```bash
cat /etc/rocky-release
```

示例输出：

```
Rocky Linux release 9.4 (Blue Onyx)
```

### 2. 更新软件包索引

```bash
sudo dnf check-update
```

### 3. 执行系统更新

```bash
sudo dnf update -y
```

该命令会升级所有可更新的系统软件包，包括安全补丁。

## 二、仅安装安全更新

如果只想更新安全补丁，可以使用：

```bash
sudo dnf update --security -y
```

> 💡 企业服务器推荐每周执行一次安全更新，确保系统漏洞及时修复。

## 三、查看和管理内核版本

### 1. 查看当前内核

```bash
uname -r
```

输出示例：

```
5.14.0-427.18.1.el9_4.x86_64
```

### 2. 查看所有已安装内核

```bash
sudo rpm -qa | grep kernel-core
```

### 3. 保留旧内核数量（默认保留 3 个）

```bash
sudo dnf install -y dnf-utils
sudo dnf config-manager --setopt installonly_limit=2 --save
```

这样系统最多只保留两个旧内核版本，自动清理更节省空间。

## 四、安装新版本内核

### 1. 搜索可用内核版本

```bash
sudo dnf list available kernel
```

### 2. 安装最新版内核

```bash
sudo dnf install -y kernel kernel-core kernel-modules
```

### 3. 重启系统应用新内核

```bash
sudo reboot
```

重启后验证：

```bash
uname -r
```

## 五、安装长期支持（LTS）或 Mainline 内核（可选）

Rocky Linux 默认使用 **RHEL 稳定内核**，但在开发或测试环境中，你可能希望安装更高版本的 **ELRepo（Enterprise Linux Repository）** 内核。

### 1. 启用 ELRepo 仓库

```bash
sudo dnf install -y https://www.elrepo.org/elrepo-release-9.el9.elrepo.noarch.rpm
```

### 2. 安装 LTS 内核（kernel-lt）或主线内核（kernel-ml）

```bash
# 安装长期支持（LTS）版本
sudo dnf --enablerepo=elrepo-kernel install -y kernel-lt

# 或安装主线版本（Mainline）
sudo dnf --enablerepo=elrepo-kernel install -y kernel-ml
```

### 3. 设置默认启动内核

查看所有启动项：

```bash
sudo grub2-editenv list
sudo grep ^menuentry /boot/grub2/grub.cfg
```

设置默认启动为新内核：

```bash
sudo grub2-set-default 0
```

（0 为第一个内核项，可根据实际顺序调整）

## 六、删除旧内核

为释放磁盘空间，可手动删除旧内核版本：

```bash
sudo dnf remove kernel-oldversion
```

或自动清理未使用内核：

```bash
sudo dnf autoremove -y
```

> ⚠️ 注意：请勿删除当前正在运行的内核版本。

## 七、实用命令汇总

| 操作               | 命令                                                                                |
| ------------------ | ----------------------------------------------------------------------------------- |
| 检查系统版本       | `cat /etc/rocky-release`                                                            |
| 查看当前内核       | `uname -r`                                                                          |
| 更新系统软件       | `sudo dnf update -y`                                                                |
| 安装新内核         | `sudo dnf install -y kernel`                                                        |
| 启用 ELRepo 仓库   | `sudo dnf install -y https://www.elrepo.org/elrepo-release-9.el9.elrepo.noarch.rpm` |
| 清理旧内核         | `sudo dnf autoremove -y`                                                            |
| 设置默认内核启动项 | `sudo grub2-set-default <index>`                                                    |

## 八、最佳实践建议

1. **生产环境：** 建议保持稳定版本内核，避免频繁升级。
2. **测试环境：** 可使用 ELRepo 主线内核测试新特性。
3. **自动维护：** 可使用 `dnf-automatic` 实现自动更新与安全补丁安装。

安装并启用自动更新：

```bash
sudo dnf install -y dnf-automatic
sudo systemctl enable --now dnf-automatic.timer
```

## 九、总结

- 使用 `dnf update` 保持系统与安全补丁最新。
- 通过 ELRepo 可安装新版或长期支持内核。
- 设置 `installonly_limit` 管理旧内核数量，避免占用磁盘空间。
- 生产环境建议定期备份与测试更新，防止兼容性问题。

> ✅ 提示：系统升级前可使用 `timeshift` 或快照工具创建系统还原点，避免意外故障。
