掛載并訪問文件系統
1. 首先識別分區
fdisk -l # 查看所有磁盤和分區
lsblk # 以樹狀結構查看塊設備
blkid # 查看分區的UUID和文件系統類型
2. 創建掛載點并掛載分區
mkdir /mnt/rescue # 創建掛載點# 掛載根分區(根據你實際的根分區設備)
mount /dev/sda1 /mnt/rescue
# 示例,sda1替換為根分區# 如果需要,掛載其他重要分區
mount /dev/sda2 /mnt/rescue/boot
# 掛載/boot分區
mount /dev/sda3 /mnt/rescue/home
# 掛載/home分區
3. 掛載必要的虛擬文件系統(如果要chroot)
mount --bind /dev /mnt/rescue/dev
mount --bind /proc /mnt/rescue/proc
mount --bind /sys /mnt/rescue/sys
4. 訪問文件
現在你可以:
直接瀏覽掛載點下的文件:
ls /mnt/rescue/home/yourusername
或者切換到原系統環境(chroot):
chroot /mnt/rescue
其他情況的處理方式
如果使用Live CD/USB進入救援模式
步驟基本相同,但可能需要先安裝工具:
apt-get update && apt-get install e2fsprogs # Debian/Ubuntu
yum install e2fsprogs # RHEL/CentOS
對于LVM分區
vgscan # 掃描卷組
vgchange -ay # 激活卷組
lvdisplay # 顯示邏輯卷
mount /dev/mapper/vgname-lvname /mnt/rescue
對于加密分區(LUKS)
cryptsetup luksOpen /dev/sdaX secret
# 然后掛載解密后的設備(通常是/dev/mapper/secret)
mount /dev/mapper/secret /mnt/rescue
注意事項
- 掛載時最好使用只讀模式先檢查:
mount -o ro /dev/sda1 /mnt/rescue
- 如果文件系統損壞,先修復再掛載:
fsck /dev/sda1
- 操作完成后記得卸載:
umount -R /mnt/rescue
檢查與修復文件系統
檢查文件系統
對于ext2/ext3/ext4文件系統
# 首先卸載文件系統(如果已掛載)
umount /dev/sdXN# 檢查文件系統錯誤
fsck -y /dev/sdXN
# 其中sdXN是分區標識,如sda1
對于XFS文件系統
xfs_repair /dev/sdXN
對于Btrfs文件系統
btrfs check --repair /dev/sdXN
修復文件系統
超級塊損壞(ext文件系統):
# 查找備份超級塊
mke2fs -n /dev/sdXN
# 使用備份超級塊修復
fsck -b 32768 /dev/sdXN
日志文件損壞:
# 清除日志(ext文件系統)
tune2fs -j /dev/sdXN
強制檢查:
fsck -f /dev/sdXN
修復后操作
-
重新掛載文件系統檢查修復結果
-
如果有必要,更新initramfs:
mount /dev/sdXN /mnt
chroot /mnt
update-initramfs -u
- 重啟系統驗證修復效果
注意事項
-
修復前盡量先備份重要數據
-
如果根文件系統損壞,可能需要使用live CD/USB
-
某些嚴重損壞可能需要從備份恢復
-
對于SSD,頻繁運行fsck可能影響壽命
修復GRUB引導
1. 進入救援模式
2. 掛載根分區
找到根分區(通常是 /dev/sda1 或 /dev/nvme0n1p2,具體取決于磁盤類型和分區方案):
fdisk -l
掛載根分區到 /mnt:
mount /dev/sdXn /mnt
(將 sdXn 替換為根分區,如 /dev/sda2)
掛載必要的虛擬文件系統(如果系統是UEFI啟動,還需掛載EFI分區):
mount --bind /dev /mnt/dev
mount --bind /proc /mnt/proc
mount --bind /sys /mnt/sys
對于EFI分區(通常是 /dev/sda1):
mount /dev/sdX1 /mnt/boot/efi
3. Chroot 到原系統
切換根目錄到原系統環境:
chroot /mnt
4. 重新安裝GRUB
BIOS模式:
grub-install /dev/sdX
(sdX 是磁盤設備,如 /dev/sda,不帶分區號)
UEFI模式:
grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=GRUB
5. 更新GRUB配置
update-grub
或:
grub-mkconfig -o /boot/grub/grub.cfg
6. 退出并重啟
退出chroot環境:
exit
卸載所有掛載的分區:
umount -R /mnt
重啟系統:
reboot
常見問題解決
- 如果GRUB安裝失敗:
- 檢查是否掛載了正確的分區(尤其是 /boot 或 /boot/efi)。
- 確保磁盤設備名稱正確(如 /dev/sda 而非 /dev/sda1)。
- 雙系統用戶:
- 如果Windows覆蓋了GRUB,可能需要重復上述步驟重新安裝GRUB。
重置root密碼
1. 進入救援模式
重啟系統,在 GRUB 啟動菜單界面(若未顯示,啟動時按住 Shift 或 Esc)。
選擇默認內核項,按 e 進入編輯模式。
找到以 linux 或 linux16 開頭的行,在行尾添加:
rw init=/bin/bash
對于部分系統(如 CentOS 7),可能需要替換為 rw init=/sysroot/bin/sh。
按 Ctrl+X 或 F10 啟動到單用戶模式(救援環境)。
2. 掛載文件系統(如需)
如果直接進入 bash 提示符(如 Ubuntu),可跳過此步。
對于需要 chroot 的系統(如 CentOS/RHEL):
mount -o remount,rw / # 確保根文件系統可寫
chroot /sysroot # 切換到原系統環境
3. 重置密碼
執行以下命令重置 root 密碼:
passwd root
輸入兩次新密碼。
4. 處理 SELinux(僅限啟用 SELinux 的系統)
如果系統使用 SELinux(如 CentOS/RHEL),需更新文件系統標簽:
touch /.autorelabel # 下次啟動時重新標記 SELinux 上下文
5. 重啟系統
exec /sbin/init # 或直接 reboot
或按 Ctrl+Alt+Del,或執行:
sync; reboot -f
注意事項
-
物理訪問權限:需直接操作服務器或虛擬機控制臺。
-
云服務器:部分云平臺(如 AWS、阿里云)需通過控制臺使用自定義鏡像或用戶數據腳本重置密碼。
-
文件系統加密:若 /etc 加密(如 LUKS),需先解密。
替代方案(已知 root 分區)
如果無法通過 GRUB 編輯,可使用 Live CD/USB 啟動后掛載根分區:
mkdir /mnt/root
mount /dev/sdXn /mnt/root # sdXn 為根分區(如 /dev/sda1)
chroot /mnt/root
passwd root
通過以上步驟,可強制重置 root 密碼。確保操作后系統安全性,避免未授權訪問。