Centos 系統引導損壞修復、密碼破解與加密
? 內核中的特性之一:使用緩沖和緩存來加速對磁盤上的文件訪問,並加載相應的硬件驅動
沒有此文件,系統無法加載 / 分區,也就無法啟動系統。
CentOS 5 文件名: initrd
CentOS 6,7文件名: initramfs
當系統的ramfs文件丟失或損壞時,系統啟動時表現為
修復如下:
進入救援模式,重新生成ramdisk文件即可。
為當前正在使用的內核重新制作ramdisk文件,以下2種指令都可以。
# mkinitrd initramfs-`uname -r`.img `uname -r`
# dracut initramfs-`uname -r`.img `uname -r`
GRUB相關
? MBR:
446: bootloader, 64: 分區表, 2: 55AA
? GRUB:
stage1是以二進制存放於磁盤,並不是文件形式。
/boot/grub下的文件為:
主要是驅動與grub配置文件。這個目錄下的文件只保留grub.conf的時候,系統是可以正常啟動的
stage1破壞修復
stage1也就是bootloader所在,
模擬破壞(請不拿生產中的機器來做試驗,本人不負責任)
#dd if=/dev/zero of=/dev/sda bs=1 count=446
系統啟動時表現為
修復如下:
1.進入救援模式
2.啟動一個shell
3.切換至原系統的根目錄,一般救援模式進來的時候會提醒.(假如能找到/文件系統)
# chroot /mnt/sysimage
4.安裝grub
方法(1) grub-install
安裝grub stage1和stage1_5到/dev/DISK磁盤上,並復制GRUB相關文件到 DIR/boot目錄下
grub-install /dev/DISK .註意,是磁盤而非分區。--root-directory=DIR 參數可選
此方法會一並重新生成/boot/grub下除了grub.conf之外的文件
方法(2) grub
grub> root (hd#,#)
grub> setup (hd#)
可以看到系統已經寫入GRUB信息至MBR
第2種方法修復時,需要/boot/grub下有這些文件
# ls -1
device.map e2fs_stage1_5 fat_stage1_5 ffs_stage1_5 grub.conf iso9660_stage1_5 jfs_stage1_5
menu.lst minix_stage1_5 reiserfs_stage1_5 splash.xpm.gz stage1 stage2 ufs2_stage1_5
vstafs_stage1_5 xfs_stage1_5
5.重啟系統
#exit 並reboot
開機直接出現grub>
修復如下:
grub> root (hd#,#) root目錄指的是/boot分區所在的磁盤位置。
grub> setup (hd#)
小提示:root (hd0,然後按tab鍵補全,會有如下顯示
輸入kernel /vm 按tab鍵如果可以補全則說明是正確的,接著輸入ro root=/dev/sda1 回車.註意(hd0,0)=/dev/sda1 (hd0,1)=/dev/sda2如圖
接著輸入initrd /ini 按tab鍵補全,回車
輸入boot命令,這時系統會重新啟動
stage1.5破壞修復
模擬破壞
# dd if=/dev/zero of=/dev/sda bs=1 count=13000 skip=512 seek=512
系統啟動時表現為
修復如下:
進入救援模式
1.# chroot /mnt/sysimage
2.安裝grub (上面有方法)
3.多輸入幾次sync
4.#exit並reboot
stage2破壞修復
grub.conf丟失
系統啟動時表現為
修復如下:
進入救援模式
1.# chroot /mnt/sysimage
2.安裝grub (上面有方法)
3.檢查/boot/grub/grub.conf是否存在且正確
4.重啟系統
內核文件被破壞
系統啟動時表現為
修復如下:
進入救援模式
1.# chroot /mnt/sysimage
2.touch 一個文件 /boot檢查磁盤是可寫,如果為只讀,mount -o remount,rw /dev/sdX /boot
3.如果掛載的救援模式是原ISO的DVD1的話,裏面會有內核文件,如果沒有DVD1光盤,請去其他地方下載同一內核版本的rpm包。
執行安裝指令
# rpm -ivh /光盤位置或指定位置/Packages/kernel-2.6.32-696.el6.x86_64.rpm --force
4.重啟系統
/sbin/init 丟失破壞
模擬破壞
# rm -rf /sbin/init
系統啟動時表現為
此時輸入什麽都是報錯誤的
修復如下:
1.重啟系統至引導菜單,註意按上下箭頭,以免超時跳過去。按 e
2 在kernel一行中,按 e 編輯
使用 /bin/bash 代替sbin/init
按 b 啟動系統
任意輸入一條命令,如果能出來結果,表示 系統啟用/bin/bash為第一個進程
3. 重新掛載 / 分區為 讀寫模式
#mount -o remount,rw /
4 掛載光盤
# mount /dev/sr0 /mnt
5.重新安裝/sbin/init 。此執行文件對應的安裝為upstart 各個操作系統版本不一樣,註意即可。
# rpm -ivh /mnt/Packages/upstart-0.6.5-16.el6.x86_64.rpm --force
使用以下方法也能達到同樣效果:
# rpm2cpio /mnt/Packages/upstart-0.6.5-16.el6.x86_64.rpm | cpio -idv ./sbin/init
# cp sbin/init /sbin/
6. # ls /sbin/init 是否已經生成。
7.直接按硬件按鈕的重啟吧
至此,修復完成
邏輯卷環境下 /boot分區破壞,/etc/fstab丟失
原先的系統是以LVM卷方式安裝的
模擬破壞
# rm -rf /boot/ /etc/fstab
系統啟動時表現為
修復如下:
進入救援模式
會提示
啟動shell
1.#vgs 查看下VG卷
2. #fdisk -l找出原來系統的boot分區,帶*號啟動的應該是/boot
3.#lvdisplay查看LV卷狀態,可以看到是未激活狀態
4 .# vgchange -ay 激活VG卷
5 #lvdisplay查看LV卷狀態,可以看到是已激活狀態
6 #blkid 能看到分區文件系統和掛載路徑和UUID
7.創建臨時目錄掛載找到的分區,確認/和/boot分區。註意,這裏是支持TAB鍵補全的。
# mkdir /mnt/root
# mount /dev/VolGroup/lv_root /mnt/root
# mkdir /mnt/boot 正常情況,因為是使用rm -rf /boot 掛載時應該是沒有任何文件的
# mount /dev/sda1 /mnt/boot
8 cat /etc/mtab 能看到目前掛載情況
9 創建原有系統的fstab ,註意這裏生成的文件位置
#cat > /mnt/root/etc/fstab << eof
/dev/mapper/VolGroup-lv_root / ext4 defaults 0 0
/dev/sda1 /boot ext4 defaults 0 0
eof
10 #exit 選reboot
11.再次進入救援模式
現在救援模式能偵測到根系統了
按照向導開啟shell
12 # chroot /mnt/sysimage
#lsblk 可以看出原有系統的掛載情況了
13 掛載光盤
# mkdir /mnt/cdrom
# mount /dev/cdrom /mnt/cdrom
14 安裝內核
# rpm -ivh /mnt/cdrom/Packages/kernel-2.6.32-696.el6.x86_64.rpm --force
15 修復Grub
# grub-install /dev/sda
16 修復grub.conf
# vi /boot/grub/grub.conf ,可以使用vi的命令這些功能
列出命令結果到當前編輯行的下一行,支持TAB補全
列出設備的UUID
最終寫好的文件如下
#exit 重啟
如果啟用了selinux的話,系統會在第一次重啟時進行配置、
第二次重新啟動時,系統就正常了。之後再把把
17 把swap添加到fstab,並啟用
UUID=8e0a6121-97d7-4c70-b113-bbe4cefe0380 swap swap defaults 0 0
# swapon -a
建議把fstab文件重新修正為使用UUID方式
至此,系統修復完成。
手動在grub命令行接口啟動系統
grub> root (hd#,#)
grub> kernel /vmlinuz-VERSION-RELEASE ro
root=/dev/DEVICE
grub> initrd /initramfs-VERSION-RELEASE.img
grub> boot
root密碼破解
方法1:
1.重啟系統至引導菜單,註意按上下箭頭,以免超時跳過去。
按 a ,健入以下字符,1代表是單用戶模式
1, s, S或single都可以,之後直接回車啟動系統
無需要輸入密碼就以root身份進入系統了,直接passwd root修改
方法2:
進入救援模式,chroot /mnt/sysimage 之後,直拉用passwd root修改
方法3:
進入救援模式,chroot /mnt/sysimage 之後,直接修改/etc/shadow ,把root的密碼欄位清空。需要vi時加入wq!
不過,重啟後註意盡快修改密碼
grub加密
當然,既然有破解密碼的,也有相應加強安全的.
將下面一行放入不同位置將會有不同的效果
password [--md5|--encrypted ] 加密的字符串
放在每個title之前行 : 啟動grub菜單時進行進行認證
放在每個title之末尾行 : 啟動選定的內核或操作系統時進行認證
生成grub口令
? grub-md5-crypt 對應的是--md5
? grub-crypt 對應的是--encrypted
Centos 系統引導損壞修復、密碼破解與加密