Ubuntu 系统日常遇到的问题及解决思路

摘要:Ubuntu 作为最流行的 Linux 发行版之一,在日常使用中难免会遇到各种问题。本文系统性地整理了 Ubuntu 常见问题的诊断思路和解决方案,涵盖系统安装、软件包管理、权限配置、网络连接、磁盘清理、性能优化等六大核心领域,帮助用户快速定位并解决实际问题。

一、系统安装与配置问题

1.1 UEFI/Legacy 引导模式不匹配

问题描述
安装完成后系统无法启动,直接进入 Windows 或显示 “Operating System not found”。

常见原因

  • 主板使用 UEFI 模式,但使用 Legacy 方式安装 Ubuntu
  • 安装介质(U盘)的引导模式与目标硬盘分区表不一致
  • Secure Boot 阻止了 GRUB 引导程序加载

解决思路

# 第一步:确认当前固件的引导模式
# 如果有输出,说明是 UEFI 模式;无输出则是 Legacy 模式
ls /sys/firmware/efi

# 方法一:进入 BIOS 设置统一引导模式
# 重启电脑,按 F2/F12/Del 键进入 BIOS
# 将 Boot Mode 设置为 UEFI Only 或 Legacy Only(与安装介质一致)
# 关闭 Secure Boot(针对 NVIDIA 显卡场景)

# 方法二:使用 boot-repair 工具修复引导
sudo add-apt-repository ppa:yannubuntu/boot-repair
sudo apt update
sudo apt install boot-repair
sudo boot-repair

小技巧

  • 双系统安装前,先在 Windows 中关闭「快速启动」功能
  • 确保 EFI 系统分区(ESP)大小建议 100-500MB,挂载点为 /boot/efi

1.2 GRUB 安装失败

问题描述
安装过程中提示 “Unable to install GRUB in /dev/sda” 或 “grub-efi-amd64 failed to install”。

常见原因

  • 未正确创建 EFI 系统分区
  • 多硬盘环境下设备名识别错误
  • 磁盘存在写保护或加密

解决思路

# 方案一:手动创建 EFI 分区并重装 GRUB(通过 Live USB)

# 1. 挂载根分区
sudo mount /dev/sda2 /mnt

# 2. 挂载 EFI 分区
sudo mount /dev/sda1 /mnt/boot/efi

# 3. 绑定必要目录
for i in /dev /dev/pts /proc /sys /run; do
    sudo mount -B $i /mnt$i
done

# 4. chroot 进入系统
sudo chroot /mnt

# 5. 重装 GRUB
grub-install /dev/sda
update-grub

# 6. 退出并重启
exit
sudo umount -R /mnt
reboot

1.3 安装后黑屏(NVIDIA 显卡)

问题描述
安装完成后屏幕黑屏,无法进入系统或登录界面。

常见原因

  • Nouveau 开源驱动与 NVIDIA 显卡冲突
  • 需要 nomodeset 参数才能正常显示

解决思路

# 在 GRUB 启动界面,按 'e' 编辑启动参数
# 找到 "linux" 开头的行,添加 nomodeset 参数
linux /boot/vmlinuz-... quiet splash nomodeset

# 按 Ctrl+X 或 F10 启动
# 进入系统后安装 NVIDIA 闭源驱动
sudo apt install nvidia-driver-535  # 选择对应版本
sudo reboot

二、软件包管理(apt 相关问题)

2.1 依赖关系错误(Unmet Dependencies)

问题描述
执行 apt install 时报错 “Unmet dependencies” 或 “has unmet dependencies”。

常见原因

  • 软件源列表过旧
  • 部分软件包处于「半安装」状态
  • 第三方 PPA 导致版本冲突

解决思路

# 基础修复流程(按顺序执行)

# 1. 更新软件源列表
sudo apt update

# 2. 尝试自动修复损坏的依赖
sudo apt --fix-broken install
# 或
sudo apt install -f

# 3. 清理包缓存
sudo apt clean
sudo apt autoclean

# 4. 重新配置未完成的安装
sudo dpkg --configure -a

# 5. 升级系统(解决版本冲突)
sudo apt upgrade

高级解决方案

# 方法一:删除冲突软件的残留配置
sudo dpkg --remove --force-remove-reinstreq <package_name>
sudo apt purge <package_name>

# 方法二:使用 apt 的 -s 参数模拟执行,查看影响
sudo apt install <package> -s

# 方法三:重置 APT 数据库(极端情况)
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
sudo mv /var/lib/dpkg/status /var/lib/dpkg/status.bak
sudo cp /var/lib/dpkg/status-old /var/lib/dpkg/status
sudo dpkg --configure -a
sudo apt update

2.2 dpkg 数据库损坏

问题描述
安装或卸载软件时报错 “dpkg: error processing package” 或 “too many errors, stopping”。

常见原因

  • 安装过程被强制中断
  • 磁盘空间不足导致写入失败
  • 系统文件损坏

解决思路

# 检查损坏的包状态
sudo dpkg -C

# 强制重新配置所有包
sudo dpkg --configure --pending --force-all

# 清理锁文件(仅在确认没有 apt/dpkg 进程运行时使用)
sudo rm /var/lib/dpkg/lock
sudo rm /var/lib/dpkg/lock-frontend
sudo rm /var/lib/apt/lists/lock
sudo rm /var/cache/apt/archives/lock
sudo dpkg --configure -a

2.3 GPG 密钥问题

问题描述
apt update 报错 “NO_PUBKEY” 或 “GPG error”。

解决思路

# 方法一:添加缺失的 GPG 密钥
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys <KEY_ID>

# 方法二(推荐):使用 apt-keyring
sudo wget -qO- https://example.com/KEY.gpg | sudo apt-key add -

# 方法三:在 Ubuntu 22.04+ 中使用 gnupg
sudo mkdir -p /etc/apt/keyrings
sudo gpg --dearmor -o /etc/apt/keyrings/example.gpg < KEY_FILE

三、权限问题

3.1 sudo 命令报错

问题描述
执行 sudo 命令时报错:

  • sudo: /usr/bin/sudo must be owned by uid 0
  • sudo: error in /etc/sudo.conf
  • sudo: /etc/sudoers.d is world writeable

常见原因

  • 系统文件权限被错误修改
  • 执行了不当的 chmod 命令(如 chmod -R 755 /usr

解决思路

# 方法一:使用 pkexec 获取 root 权限
pkexec bash

# 方法二:进入 Recovery Mode
# 重启 → 长按 Esc → 选择 Advanced Options → 选择 Recovery Mode
# 选择 "Drop to root shell prompt"

# 修复 sudo 权限
pkexec chmod 440 /etc/sudoers
pkexec chmod 755 /etc/sudoers.d
pkexec chown root:root /usr/bin/sudo
pkexec chmod 4755 /usr/bin/sudo
pkexec chmod 440 /etc/sudoers.d/README

注意:执行 chmod -R 755 等递归命令时要格外小心,避免修改系统关键目录的权限。

3.2 chmod/chown 命令失败

问题描述
修改文件权限时报 “Permission denied” 或 “Operation not permitted”。

排查步骤

# 1. 检查当前用户权限
ls -l /path/to/file

# 2. 确认是否需要 sudo
sudo chmod 755 /path/to/file

# 3. 检查文件系统类型(FAT32/NTFS 不支持 Unix 权限)
df -T /path/to/file

# 4. 检查文件是否有不可变属性
lsattr /path/to/file
# 如果有 'i' 标志,需要先移除
sudo chattr -i /path/to/file

# 5. 检查 SELinux/AppArmor 状态
getenforce  # 查看状态
sudo setenforce 0  # 临时禁用 SELinux 测试

NTFS/FAT 文件系统挂载选项

# 挂载时添加 permissions 选项
sudo mount -t ntfs-3g -o permissions /dev/sdXn /mnt/point

# 或在 /etc/fstab 中配置
/dev/sda1 /mnt/data ntfs-3g permissions,uid=1000,gid=1000 0 0

3.3 用户不在 sudo 组中

问题描述
新建用户无法使用 sudo 命令。

解决思路

# 切换到 root 用户
su -

# 将用户添加到 sudo 组
usermod -aG sudo <username>

# 或者直接编辑 /etc/sudoers(使用 visudo)
# 添加行:username ALL=(ALL:ALL) ALL

# 验证用户组
groups <username>

四、网络配置问题

4.1 有线网络连接失败

问题描述
有线网络无法连接,路由器正常但系统显示「未连接」。

排查与解决

# 1. 检查网络接口状态
ip addr show
# 或
ifconfig -a

# 2. 启用网络接口(如显示 DOWN)
sudo ip link set ens33 up  # 将 ens33 替换为实际接口名

# 3. 重启网络服务
sudo systemctl restart NetworkManager
# 或(服务器版)
sudo systemctl restart systemd-networkd

# 4. 手动重新获取 IP
sudo dhclient -r ens33
sudo dhclient ens33

4.2 Wi-Fi 无法连接

问题描述
无线网络列表为空或连接后无法上网。

排查与解决

# 1. 检查无线网卡是否被阻止
rfkill list
# 如果显示 blocked,使用以下命令解除
sudo rfkill unblock wifi

# 2. 重启 NetworkManager
sudo nmcli networking off && sudo nmcli networking on

# 3. 连接隐藏网络
nmcli con add con-name "MySSID" ifname wlan0 type wifi \
    ssid "NetworkName" wifi-sec.key-mgmt wpa-psk \
    wifi-sec.psk "password"
nmcli connection up "MySSID"

Wi-Fi 驱动问题

# 查看无线网卡信息
lspci -nnk | grep -iA2 net
lsusb

# 安装驱动
sudo apt install firmware-iwlwifi  # Intel 无线网卡
sudo modprobe -r iwlwifi && sudo modprobe iwlwifi  # 重新加载驱动

4.3 Netplan 配置静态 IP

问题描述
需要在 Ubuntu Server 上配置静态 IP 地址。

解决思路

# 编辑 Netplan 配置文件
sudo nano /etc/netplan/00-installer-config.yaml

# 配置示例:静态 IP
network:
  version: 2
  renderer: networkd
  ethernets:
    ens33:
      dhcp4: no
      addresses: [192.168.1.100/24]
      gateway4: 192.168.1.1
      nameservers:
        addresses: [8.8.8.8, 1.1.1.1]
      routes:
        - to: 10.0.0.0/24
          via: 192.168.1.254

# 测试配置(推荐)
sudo netplan try

# 应用配置
sudo netplan apply

4.4 DNS 解析异常

问题描述
能 Ping 通 IP 但无法通过域名访问网站。

解决思路

# 1. 检查 DNS 配置
systemd-resolve --status
cat /etc/resolv.conf

# 2. 临时设置公共 DNS
echo "nameserver 8.8.8.8" | sudo tee /etc/resolv.conf
echo "nameserver 1.1.1.1" | sudo tee -a /etc/resolv.conf

# 3. 刷新 DNS 缓存
sudo systemd-resolve --flush-caches

# 4. 在 Netplan 中配置 DNS(持久化)
# 在 nameservers.addresses 中添加 DNS 服务器

五、磁盘空间与存储问题

5.1 查看磁盘使用情况

# 查看所有分区的使用情况
df -h

# 查看当前目录各子目录大小
du -sh *

# 交互式磁盘分析工具
sudo apt install ncdu
ncdu /

# 查找大于 100MB 的文件
sudo find / -type f -size +100M -exec ls -lh {} \;

5.2 清理 APT 缓存

# 清理所有已下载的 .deb 包
sudo apt clean

# 只清理无法再下载的旧版本包
sudo apt autoclean

# 删除不再需要的依赖包
sudo apt autoremove

# 删除旧内核(保留当前使用版本)
dpkg --list | grep linux-image
# 查看当前内核
uname -r
# 删除旧内核
sudo apt purge linux-image-5.4.0-XX-generic

5.3 清理系统日志

# 按时间清理(保留最近 7 天)
sudo journalctl --vacuum-time=7d

# 按大小清理(限制为 100MB)
sudo journalctl --vacuum-size=100M

# 手动清理旧日志文件
sudo find /var/log -type f -name "*.log" -mtime +30 -exec truncate -s 0 {} \;

5.4 清理用户缓存

# 清理缩略图缓存
rm -rf ~/.cache/thumbnails/*

# 清理浏览器缓存
rm -rf ~/.cache/mozilla/firefox/*.default-release/cache/*

# 清理回收站
rm -rf ~/.local/share/Trash/*

# 清理用户缓存(保留 7 天内的)
find ~/.cache/ -type f -atime +7 -delete

5.5 清理 Snap/Flatpak

# 清理 Snap 旧版本
snap list --all
sudo snap remove <package> --purge

# 清理 Snap 缓存
sudo rm -rf /var/lib/snapd/cache/*

# 清理未使用的 Flatpak 运行时
flatpak uninstall --unused

5.6 图形化清理工具

# 安装 Stacer(推荐新手)
sudo apt install stacer

# 安装 BleachBit
sudo apt install bleachbit

# 安装磁盘使用分析器
sudo apt install baobab

六、系统性能优化

6.1 分析系统资源使用

# 查看内存使用
free -h

# 查看 CPU 使用(实时)
top
# 或更友好的 htop
sudo apt install htop
htop

# 查看磁盘 IO
iostat -x 2

# 查看启动时间和进程
systemd-analyze
systemd-analyze blame  # 各服务启动耗时

6.2 优化 Swappiness

问题描述
物理内存充足但系统频繁使用 Swap。

# 查看当前 swappiness 值
cat /proc/sys/vm/swappiness

# 临时修改(重启后恢复)
sudo sysctl vm.swappiness=10

# 永久修改
echo "vm.swappiness=10" | sudo tee -a /etc/sysctl.conf
sudo sysctl -p

6.3 禁用不必要的启动服务

# 查看开机启动项
systemctl list-unit-files | grep enabled

# 禁用不需要的服务(以 example 为例)
sudo systemctl disable example.service

# 查看服务依赖关系
systemctl list-dependencies <service>

6.4 调整 CPU 性能模式

# 安装 cpufreq 工具
sudo apt install cpufrequtils

# 查看可用调节器
cpufreq-info

# 设置性能模式(需要 root)
sudo cpufreq-set -g performance

# 或者安装 tlp(高级电源管理)
sudo apt install tlp tlp-rdw
sudo tlp start

6.5 优化 GRUB 启动参数

# 编辑 GRUB 配置
sudo nano /etc/default/grub

# 常见优化参数
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"

# 可选:添加以下参数优化性能
# elevator=deadline  # SSD 推荐
# noatime            # 减少磁盘 IO
# nomodeset          # 解决显卡问题

# 更新 GRUB
sudo update-grub

七、常见报错及解决方案

7.1 「检测到系统程序问题」弹窗

问题描述
系统弹出「检测到系统程序问题」对话框。

解决思路

# 查看问题报告
sudo apt install apport-retrace kexec-tools

# 禁用 apport(不推荐生产环境)
sudo systemctl disable apport
sudo rm /var/crash/*

# 或者删除问题报告
sudo rm -rf /var/crash/

7.2 磁盘只读问题

问题描述
无法创建或修改文件,提示「只读文件系统」。

解决思路

# 检查文件系统状态
mount | grep -i error
dmesg | grep -i error

# 尝试重新挂载为读写模式
sudo mount -o remount,rw /

# 如果是根分区损坏,使用 fsck 检查
# (需要在 Live USB 环境中)
sudo fsck /dev/sda2

7.3 时间/时区显示错误

问题描述
系统时间与实际时间不一致。

解决思路

# 查看当前时间
timedatectl

# 设置时区
sudo timedatectl set-timezone Asia/Shanghai

# 如果使用本地时间(与 Windows 双系统)
sudo timedatectl set-local-rtc 1

7.4 声音输出设备问题

问题描述
没有声音或声音输出到错误的设备。

# 查看音频设备
pactl list sinks short

# 设置默认输出设备
pactl set-default-sink <sink_name>

# 重启 PulseAudio
pulseaudio -k

八、总结与建议

8.1 日常维护建议

维护任务建议频率命令
系统更新每周一次sudo apt update && sudo apt upgrade
清理无用包每月一次sudo apt autoremove
清理日志每月一次sudo journalctl --vacuum-time=7d
检查磁盘空间每季度一次df -h && ncdu /

8.2 备份建议

在进行任何可能影响系统稳定的操作前,建议:

# 备份重要数据
tar -czvf backup-home.tar.gz /home/

# 备份软件源列表
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak

# 使用 Timeshift 创建系统快照
sudo apt install timeshift
sudo timeshift --create --comments "Before major changes"

8.3 常见问题排查流程

1. 确认问题现象和错误信息
2. 查看系统日志
   - journalctl -xe
   - /var/log/syslog
   - dmesg | tail
3. 检查相关服务状态
   - systemctl status <service>
4. 根据错误类型查找解决方案
5. 必要时在测试环境验证

将本页面加入收藏夹

      如果觉得本文对您有用。建议按下 Ctrl+D (Windows) 或 Cmd+D (Mac) 收藏本页,以便在下次需要时快速查阅解决方案。

发表评论

粤ICP备10052831号 | © 2026 58Linux 技术笔记. All Rights Reserved. | 联系我们 | 关于本站
本站内容开放共享,仅供学习交流 | 专注 Ubuntu & Linux 实战教程
Built with GeneratePress