Linux系统升级

Linux系统升级

Linux 系统升级是系统维护的核心任务之一,旨在保持系统安全、稳定并获取最新功能。升级过程涉及更新软件包、内核、系统组件甚至整个发行版。正确的升级操作可以修复漏洞、提升性能,而错误的步骤可能导致系统不稳定甚至崩溃。

1. Linux 系统升级基础

1.1 为什么需要系统升级?

Linux 系统升级的必要性包括:

  • 安全性:修补已知漏洞,防止黑客攻击。
  • 性能优化:获取新版本的软件和内核,改进性能和兼容性。
  • 新功能:支持最新的硬件、协议或软件特性。
  • 稳定性:修复已知 bug,提升系统可靠性。
  • 合规性:满足企业或法规对软件版本的要求。

1.2 系统升级的类型

  • 软件包升级:更新已安装的软件包(如 nginxpython)。
  • 内核升级:安装新版 Linux 内核,改进硬件支持和性能。
  • 次版本升级:在同一主版本内升级(如 CentOS 8.4 到 8.5)。
  • 主版本升级:跨主版本升级(如 Ubuntu 20.04 到 22.04)。
  • 滚动升级:某些发行版(如 Arch Linux)提供持续更新,但本文聚焦固定版本发行版。

1.3 升级前的准备

  • 备份数据:备份关键文件(如 /etc/home)到外部存储。

    sudo rsync -av /etc /home /backup
    
  • 检查磁盘空间

    df -h
    

    确保根分区 (/) 和 /boot 有足够空间(建议 5GB 以上)。

  • 验证网络:确保连接稳定,建议切换到国内镜像源(如清华、阿里云)。

  • 检查当前版本

    • CentOS:cat /etc/centos-release
    • Ubuntu:lsb_release -a
    • Debian:cat /etc/debian_version
  • 更新现有软件包:升级前确保当前系统为最新状态。

1.4 升级工具

  • CentOSdnf(或旧版 yum),管理 .rpm 包。
  • Ubuntu/Debianapt,管理 .deb 包。
  • do-release-upgrade:Ubuntu 的主版本升级工具。
  • dnf system-upgrade:Fedora 的升级工具(CentOS Stream 支持类似机制)。

2. CentOS 8 系统升级

CentOS 8 是基于 Red Hat Enterprise Linux (RHEL) 的服务器发行版,升级主要涉及软件包和次版本更新。注:CentOS 8 已于 2021 年 12 月 31 日停止官方支持,推荐迁移至 CentOS Stream 或 Rocky Linux。

2.1 软件包升级

2.1.1 更新软件源

确保使用国内镜像源(如清华):

sudo cp -r /etc/yum.repos.d /etc/yum.repos.d.bak
sudo wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.tuna.tsinghua.edu.cn/centos/8/BaseOS/x86_64/os/CentOS-Base.repo
sudo dnf makecache
2.1.2 升级所有软件包
sudo dnf update -y
  • -y:自动确认,适合脚本执行。

  • 检查更新日志:

    sudo dnf history
    
2.1.3 清理无用包
sudo dnf autoremove
sudo dnf clean all

2.2 内核升级

CentOS 8 默认内核可能较旧,可手动安装新内核。

2.2.1 检查当前内核
uname -r

输出示例:4.18.0-305.el8.x86_64

2.2.2 安装新内核
  1. 启用 ELRepo 仓库:

    sudo rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
    sudo dnf install https://www.elrepo.org/elrepo-release-8.el8.elrepo.noarch.rpm
    
  2. 安装最新稳定内核:

    sudo dnf --enablerepo=elrepo-kernel install kernel-ml
    
  3. 更新 GRUB:

    sudo grub2-mkconfig -o /boot/grub2/grub.cfg
    
  4. 重启并选择新内核:

    sudo reboot
    
2.2.3 验证内核
uname -r

2.3 次版本升级

CentOS 8 的次版本升级(如 8.4 到 8.5)通过 dnf update 完成:

sudo dnf update --refresh

检查版本:

cat /etc/centos-release

2.4 迁移到 CentOS Stream

CentOS 8 停止支持后,可迁移到 CentOS Stream:

  1. 安装 CentOS Stream 仓库:

    sudo dnf install centos-release-stream
    
  2. 切换仓库:

    sudo dnf swap centos-linux-repos centos-stream-repos
    
  3. 同步软件包:

    sudo dnf distro-sync
    
  4. 验证:

    cat /etc/centos-release
    

2.5 注意事项

  • EOL 支持:CentOS 8 已停止更新,建议迁移到 Rocky Linux 或 AlmaLinux。
  • 备份 GRUB:内核升级前备份 /boot/grub2/grub.cfg
  • 测试环境:在虚拟机中测试升级流程。

3. Ubuntu 20.04 系统升级

Ubuntu 提供完善的升级机制,支持软件包、次版本和主版本升级。

3.1 软件包升级

3.1.1 更新软件源

确保使用国内镜像(如阿里云):

sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
sudo sed -i 's/archive.ubuntu.com/mirrors.aliyun.com/g' /etc/apt/sources.list
sudo apt update
3.1.2 升级软件包
sudo apt update
sudo apt upgrade -y
  • apt upgrade:更新软件包,保持现有配置。

  • 升级内核和系统组件:

    sudo apt dist-upgrade
    
3.1.3 清理无用包
sudo apt autoremove
sudo apt autoclean

3.2 主版本升级

Ubuntu 支持从 20.04 升级到 22.04(LTS 版本)。

3.2.1 安装升级工具
sudo apt install update-manager-core
3.2.2 检查升级配置

编辑 /etc/update-manager/release-upgrades

Prompt=lts

确保仅升级到 LTS 版本。

3.2.3 执行升级
sudo do-release-upgrade
  • 工具会下载新版本软件包,替换旧版本。
  • 可能提示禁用第三方源或解决冲突。
3.2.4 验证升级
lsb_release -a

3.3 内核升级

Ubuntu 默认通过 apt dist-upgrade 更新内核。若需特定版本:

  1. 查找可用内核:

    apt search linux-image
    
  2. 安装新内核:

    sudo apt install linux-image-5.15.0-73-generic
    
  3. 更新 GRUB:

    sudo update-grub
    
  4. 重启:

    sudo reboot
    

3.4 注意事项

  • 第三方 PPA:升级前禁用第三方源:

    sudo add-apt-repository --remove ppa:<name>
    
  • 空间要求:主版本升级需 10GB 以上磁盘空间。

  • 中断恢复:若升级中断,运行:

    sudo dpkg --configure -a
    sudo apt install -f
    

4. Debian 11 系统升级

Debian 以稳定性著称,升级过程较为保守。

4.1 软件包升级

4.1.1 更新软件源

编辑 /etc/apt/sources.list

deb http://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye main contrib non-free
deb http://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye-updates main contrib non-free
deb http://mirrors.tuna.tsinghua.edu.cn/debian-security bullseye-security main contrib non-free

更新缓存:

sudo apt update
4.1.2 升级软件包
sudo apt upgrade -y
sudo apt dist-upgrade
4.1.3 清理
sudo apt autoremove
sudo apt autoclean

4.2 主版本升级

从 Debian 11(Bullseye)升级到 Debian 12(Bookworm):

  1. 备份系统:

    sudo tar -czvf /backup/debian-backup.tar.gz /etc /home
    
  2. 更新当前系统:

    sudo apt update && sudo apt full-upgrade
    
  3. 修改软件源为 Bookworm:

    sudo sed -i 's/bullseye/bookworm/g' /etc/apt/sources.list
    
  4. 执行升级:

    sudo apt update
    sudo apt upgrade --without-new-pkgs
    sudo apt full-upgrade
    
  5. 验证:

    cat /etc/debian_version
    

4.3 内核升级

  1. 查找新内核:

    apt search linux-image
    
  2. 安装:

    sudo apt install linux-image-6.1.0-9-amd64
    
  3. 更新 GRUB:

    sudo update-grub
    
  4. 重启:

    sudo reboot
    

4.4 注意事项

  • 稳定性优先:Debian 升级需谨慎,建议在测试环境验证。

  • 日志检查:查看 /var/log/apt 下的日志。

  • 回滚准备:保留旧内核以便回滚:

    sudo apt install linux-image-<旧版本>
    

5. 通用升级注意事项

5.1 备份与恢复

  • 系统快照:在虚拟机或 LVM 环境中创建快照。

  • 关键服务:升级前停止关键服务(如 nginxmysql):

    sudo systemctl stop nginx
    

5.2 依赖冲突

  • CentOS:

    sudo dnf install --best --allowerasing <包名>
    
  • Ubuntu/Debian:

    sudo apt install -f
    

5.3 内核选择

升级后可能安装多个内核,GRUB 菜单允许选择:

  • 编辑 /etc/default/grub,设置 GRUB_DEFAULT=0(默认最新内核)。

  • 更新:

    sudo grub2-mkconfig -o /boot/grub2/grub.cfg  # CentOS
    sudo update-grub  # Ubuntu/Debian
    

5.4 第三方软件

第三方软件可能不兼容新版本,升级前检查兼容性或重新安装。

6. 故障排查

6.1 升级中断

  • CentOS:

    sudo dnf history rollback <事务ID>
    
  • Ubuntu/Debian:

    sudo dpkg --configure -a
    sudo apt install -f
    

6.2 启动失败

  • 检查 GRUB 菜单,选择旧内核启动。

  • 查看日志:

    sudo journalctl -b
    

6.3 软件源不可用

  • 验证网络:

    ping mirrors.tuna.tsinghua.edu.cn
    
  • 恢复备份源:

    sudo cp /etc/yum.repos.d.bak/* /etc/yum.repos.d/  # CentOS
    sudo cp /etc/apt/sources.list.bak /etc/apt/sources.list  # Ubuntu/Debian
    

6.4 磁盘空间不足

  • 清理临时文件:

    sudo rm -rf /var/cache/dnf/*  # CentOS
    sudo apt autoclean  # Ubuntu/Debian
    

7. 优化与维护

7.1 定期升级

  • CentOS:

    sudo dnf update --refresh
    
  • Ubuntu/Debian:

    sudo apt update && sudo apt upgrade
    

7.2 监控系统

  • 使用 htop 监控资源:

    sudo dnf install htop  # CentOS
    sudo apt install htop  # Ubuntu/Debian
    htop
    
  • 检查磁盘:

    df -h
    

7.3 自动化升级

使用脚本定期检查更新:

#!/bin/bash
# CentOS
sudo dnf update -y
# Ubuntu/Debian
# sudo apt update && sudo apt upgrade -y

运行:

chmod +x update.sh
./update.sh

7.4 安全补丁

优先安装安全更新:

  • CentOS:

    sudo dnf update --security
    
  • Ubuntu/Debian:

    sudo apt install --only-upgrade <包名>
    

8. 高级应用

8.1 滚动升级(CentOS Stream)

CentOS Stream 提供持续更新:

sudo dnf update --refresh

8.2 自动化工具(Ansible)

使用 Ansible 批量升级:

  1. 安装 Ansible:

    sudo dnf install ansible  # CentOS
    sudo apt install ansible  # Ubuntu/Debian
    
  2. 创建 playbook(upgrade.yml):

    - hosts: all
      tasks:
        - name: Update all packages
          dnf:
            name: "*"
            state: latest
          become: yes
    
  3. 运行:

    ansible-playbook upgrade.yml
    

8.3 内核模块管理

检查加载的内核模块:

lsmod

加载新模块:

sudo modprobe <模块名>

9. 总结

Linux 系统升级是确保系统安全、稳定和高效的重要步骤。本文以 CentOS 8、Ubuntu 20.04 和 Debian 11 为例,详细介绍了软件包升级、内核升级、次版本和主版本升级的流程,以及备份、故障排查和优化技巧。无论是服务器管理、开发环境维护还是桌面使用,掌握升级流程都能显著提升系统管理能力。

更多技术分享,关注公众号:halugin

你可能感兴趣的:(Linux指令,linux,运维)