Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學

Linux 配置錯誤導致無法開機急救指南:fstab/GRUB/VMware Tools 修復實戰

編輯:Linux 系統常見問題解答

場景一:/etc/fstab 錯誤導致緊急模式

現象:開機進入 emergency mode,提示 Dependency failed for /mnt/data 或 Cannot open access to console。

急救步驟 (GRUB 編輯法)

  1. 開機 GRUB 選單按 e 編輯
  2. 找到 linux / linux16 / linuxefi 那行
  3. 行尾加 init=/bin/bash 或 systemd.unit=emergency.target
  4. Ctrl+x 啟動
  5. 進入根 Shell 後**重新掛載根分區為讀寫**:
    mount -o remount,rw /
    
  6. 修正 /etc/fstab (註解錯誤行、修正 UUID/裝置名、加 nofail)
  7. sync 並重啟:exec /sbin/init 或 reboot -f

場景二:VMware Tools 損壞導致共享資料夾掛載失敗

現象:/mnt/hgfs 空無內容,vmhgfs-fuse 報錯。

修復流程

# 1. 掛載 VMware Tools ISO
mkdir -p /mnt/cdrom
mount /dev/cdrom /mnt/cdrom

# 2. 解壓安裝包
cd /tmp
tar xzf /mnt/cdrom/VMwareTools-*.tar.gz
cd vmware-tools-distrib

# 3. 重新安裝
./vmware-install.pl -d  # -d 採用預設值

# 4. 重啟服務驗證
systemctl restart vmware-tools
ls /mnt/hgfs

場景三:IP 變更導致 fstab 網路掛載卡死開機

原因:/etc/fstab 含 CIFS/NFS 掛載,IP 變更導致掛載超時卡住。

解決

  1. 同上進入 emergency mode
  2. 修改 fstab 加入關鍵選項:
    //server/share /mnt/smb cifs credentials=..., _netdev, nofail, x-systemd.automount 0 0
    
  3. _netdev:標記為網路裝置,等待網路就緒
  4. nofail:掛載失敗不阻塞開機
  5. x-systemd.automount:按需自動掛載 (首次存取才掛載)

場景四:Locale 設定錯誤導致 Tab 補全報警告

現象:bash: warning: setlocale: LC_CTYPE: cannot change locale (en_US.UTF-8:zh_CN.GB2312)

修復

# 1. 重新產生 locale
locale-gen en_US.UTF-8 zh_TW.UTF-8

# 2. 設定系統預設
update-locale LANG=en_US.UTF-8 LC_ALL=en_US.UTF-8

# 3. 或編輯 /etc/locale.conf (systemd)
echo 'LANG="en_US.UTF-8"' > /etc/locale.conf
echo 'LC_ALL="en_US.UTF-8"' >> /etc/locale.conf

# 4. 重新登入生效

場景五:內核模組衝突 (piix4_smbus 錯誤)

現象:piix4_smbus: Host SMBus controller not enabled

修復

# 1. 確認模組
lsmod | grep i2c_piix4

# 2. 加入黑名單
echo "blacklist i2c_piix4" >> /etc/modprobe.d/blacklist.conf

# 3. 重建 initramfs
update-initramfs -u -k all
# 或 dracut -f (RHEL/CentOS)

# 4. 重啟

場景六:GCC 編譯失敗 (_FORTIFY_SOURCE)

現象:error: call to '__open_missing_mode' declared with attribute error: open with O_CREAT in second argument needs 3 arguments

原因:GCC 4.0+ 預設啟用 _FORTIFY_SOURCE 加強緩衝區檢查,舊原始碼不相容。

解決

# 編譯時停用
make CFLAGS="-U_FORTIFY_SOURCE"
# 或
export CFLAGS="-U_FORTIFY_SOURCE"
./configure && make

預防性最佳實踐

  1. 修改 fstab 前備份:cp /etc/fstab /etc/fstab.bak
  2. 使用 UUID 掛載:blkid 取得 UUID,避免裝置名漂移
  3. 網路掛載必加:_netdev,nofail,x-systemd.automount
  4. 測試掛載:mount -a 驗證 fstab 無誤才重啟
  5. 保留 Live USB:隨時可進入救援模式修復
Copyright © Windows教程網 All Rights Reserved