萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 作業系統 >  >> Linux 教學

Linux 系統常見疑難雜症解決方案:密碼重置、GRUB 修復、Windows 雙啟動恢復、ext4 讀寫

Linux 系統運行久了難免遇到各種棘手問題:忘記 root 密碼、GRUB 被 Windows 覆蓋、開機服務卡住、需要在 Windows 讀取 ext4 分區等。本文彙整最高頻的實戰排錯方案,涵蓋單用戶模式、GRUB 命令列、Live USB 救援、核心參數調整、跨平台檔案系統存取。

一、單用戶模式 / 急救模式獲取 Root 權限

方法 1:GRUB 選單進入 Recovery Mode (無 GRUB 密碼時)

  1. 開機出現 GRUB 選單 (隱藏時按 Shift 或 Esc 喚出)。
  2. 選擇含 (recovery mode) 的核心項目,按 Enter。
  3. 選單中選「root 進入根檔案系統」或「啟用網路」→「root shell」,系統以唯讀掛載 /,執行 mount -o remount,rw / 改為可讀寫。

方法 2:編輯核心啟動參數 init=/bin/bash (繞過 init 系統)

  1. GRUB 選單選中目標核心,按 e 編輯。
  2. 找到 linux /vmlinuz-... ro quiet splash 行,末尾加上 rw init=/bin/bash。
  3. 按 Ctrl+x 或 F10 啟動,直接進入 root shell (已掛載可讀寫)。

方法 3:Live USB / 安裝光碟進入救援模式

  1. 啟動 Live USB,選擇「Try Ubuntu」或「Rescue a broken system」。
  2. 若為手動掛載:sudo mount /dev/sdXn /mnt (sdXn 為根分區),sudo mount --bind /dev /mnt/dev、--bind /proc /mnt/proc、--bind /sys /mnt/sys,然後 sudo chroot /mnt 進入系統環境。

二、重設 Root / 使用者密碼

在上述任一 root shell 中:

# 重設 root 密碼
passwd root

# 重設一般使用者密碼
passwd username

輸入兩次新密碼即可。若提示「密碼未更新」,確認檔案系統已掛載為可讀寫 (mount | grep ' / ')。

三、忘記 GRUB 密碼 / 重設 GRUB 密碼

  1. 取得 root shell (方法一或二)。
  2. 產生新密碼雜湊:grub-mkpasswd-pbkdf2 (GRUB 2) 或 grub-md5-crypt (GRUB Legacy)。輸入新密碼兩次,複製輸出的雜湊字串 (如 grub.pbkdf2.sha512.10000.XXXX)。
  3. 編輯 /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...
  1. 更新 GRUB 設定:update-grub (GRUB 2) 或 grub-install /dev/sda (Legacy)。

四、Windows 重裝後恢復 GRUB 雙啟動

Windows 安裝程式會覆蓋 MBR/EFI System Partition,導致 GRUB 消失。

BIOS/MBR (Legacy) 模式

# Live USB 進入 chroot 環境 (見方法 3)
grub-install /dev/sda        # 安裝到磁碟 MBR
update-grub                  # 重新生成 grub.cfg

UEFI/GPT 模式 (現代主流)

# 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 目錄是否存在)。

五、在 Windows 下讀寫 Linux 分區 (ext2/ext3/ext4)

工具授權支援備註
WSL 2 (Windows Subsystem for Linux)內建ext4 完整讀寫、掛載實體磁碟 wsl --mountWin 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 編輯核心參數)

在 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 等待。
  • 時間:設定本地 NTP 伺服器或 FallbackNTP=time.google.com time.cloudflare.com。
  • fstab:加入 nofail,x-systemd.device-timeout=5 選項,避免掛載失敗阻塞開機。

七、其他實用急救技巧

  • 誤刪檔案 (ext4):立即 umount 分區,使用 extundelete、testdisk、photorec 嘗試恢復。
  • 磁碟空間爆滿:ncdu / 找出大目錄、journalctl --vacuum-size=100M 清理日誌、apt clean、docker system prune -a。
  • SSH 連線中斷/拒絕:檢查 /etc/ssh/sshd_config、ufw/iptables、fail2ban 封鎖、systemctl status ssh。
  • 核心恐慌:拍照記錄錯誤訊息、檢查硬體 (memtest86+, smartctl)、嘗試舊核心啟動 (GRUB 選單 → Advanced options)。

建立「故障排除筆記本」記錄每次問題現象、排查步驟、解決方案,配合定期備份與基準線驗證,是 Linux 運維從被動救火轉向主動穩定的關鍵。

copyright © 萬盛學電腦網 all rights reserved