Linux 系統運行久了難免遇到各種棘手問題:忘記 root 密碼、GRUB 被 Windows 覆蓋、開機服務卡住、需要在 Windows 讀取 ext4 分區等。本文彙整最高頻的實戰排錯方案,涵蓋單用戶模式、GRUB 命令列、Live USB 救援、核心參數調整、跨平台檔案系統存取。
(recovery mode) 的核心項目,按 Enter。mount -o remount,rw / 改為可讀寫。init=/bin/bash (繞過 init 系統)linux /vmlinuz-... ro quiet splash 行,末尾加上 rw init=/bin/bash。sudo mount /dev/sdXn /mnt (sdXn 為根分區),sudo mount --bind /dev /mnt/dev、--bind /proc /mnt/proc、--bind /sys /mnt/sys,然後 sudo chroot /mnt 進入系統環境。在上述任一 root shell 中:
# 重設 root 密碼
passwd root
# 重設一般使用者密碼
passwd username
輸入兩次新密碼即可。若提示「密碼未更新」,確認檔案系統已掛載為可讀寫 (mount | grep ' / ')。
grub-mkpasswd-pbkdf2 (GRUB 2) 或 grub-md5-crypt (GRUB Legacy)。輸入新密碼兩次,複製輸出的雜湊字串 (如 grub.pbkdf2.sha512.10000.XXXX)。/etc/grub.d/40_custom (GRUB 2) 或 /boot/grub/menu.lst (Legacy),加入/更新:# GRUB 2 /etc/grub.d/40_custom
set superusers="admin"
password_pbkdf2 admin grub.pbkdf2.sha512.10000.XXXX...
# GRUB Legacy /boot/grub/menu.lst
password --md5 $1$XXXX$YYYY...
update-grub (GRUB 2) 或 grub-install /dev/sda (Legacy)。Windows 安裝程式會覆蓋 MBR/EFI System Partition,導致 GRUB 消失。
# Live USB 進入 chroot 環境 (見方法 3)
grub-install /dev/sda # 安裝到磁碟 MBR
update-grub # 重新生成 grub.cfg
# Live USB 進入 chroot
# 確認 EFI 分區 (通常 /dev/sda1, FAT32, 掛載點 /boot/efi)
mount /dev/sda1 /mnt/boot/efi # 若 chroot 時 /boot/efi 未掛載
grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=ubuntu --recheck
update-grub
關鍵:需在 UEFI 模式下啟動 Live USB 才能安裝 UEFI 版 GRUB (檢查 ls /sys/firmware/efi 目錄是否存在)。
| 工具 | 授權 | 支援 | 備註 |
|---|---|---|---|
| WSL 2 (Windows Subsystem for Linux) | 內建 | ext4 完整讀寫、掛載實體磁碟 wsl --mount | Win 10 2004+/11 最佳原生方案,效能近原生 |
| Linux File Systems for Windows by Paragon | 免費個人版 | ext2/3/4 完整讀寫、掛載磁碟機代號 | 商業級驅動,穩定度高 |
| Ext2Fsd | 開源 | ext2/3/4 讀寫 (ext4 部分功能受限) | 開發停滯,Win 10/11 相容性差,不推薦新部署 |
| DiskInternals Linux Reader | 免費 | 唯讀瀏覽/複製檔案 | 不支援寫入,安全無風險 |
| 7-Zip / PeaZip | 開源 | 可開啟 ext2/3/4 映像檔/分區映像提取檔案 | 不支援即時掛載 |
Configuring network interfaces...:DHCP 等待逾時、介面命名變更 (預測性命名 enp3s0 vs eth0)、/etc/network/interfaces 設定錯誤。Synchronizing clock to ntp.ubuntulinux.org... / systemd-timesyncd:NTP 伺服器不可達、IPv6 阻塞、防火牆封鎖 123/UDP。Starting Raid arrays...:mdadm 陣列降級/缺失裝置。A start job is running for /dev/disk/by-uuid/...:/etc/fstab UUID 錯誤/裝置不存在。在 GRUB 編輯模式 (e) 的 linux 行末尾加入:
systemd.mask=systemd-timesyncd.service — 禁用時間同步服務。systemd.mask=networking.service — 禁用傳統網路服務。systemd.unit=emergency.target — 直接進入緊急模式 (最小掛載)。啟動後修正設定 (/etc/fstab, /etc/netplan/*.yaml, /etc/systemd/timesyncd.conf) 再重啟。
systemd-networkd + systemd-resolved 或 Netplan 靜態 IP,避免 DHCP 等待。FallbackNTP=time.google.com time.cloudflare.com。nofail,x-systemd.device-timeout=5 選項,避免掛載失敗阻塞開機。umount 分區,使用 extundelete、testdisk、photorec 嘗試恢復。ncdu / 找出大目錄、journalctl --vacuum-size=100M 清理日誌、apt clean、docker system prune -a。/etc/ssh/sshd_config、ufw/iptables、fail2ban 封鎖、systemctl status ssh。建立「故障排除筆記本」記錄每次問題現象、排查步驟、解決方案,配合定期備份與基準線驗證,是 Linux 運維從被動救火轉向主動穩定的關鍵。