摘要: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 0sudo: error in /etc/sudo.confsudo: /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. 必要时在测试环境验证