如何修復系統問題–實驗

實驗一: MBR的數據被破壞了,系統無法開機啟動,如果有光盤,會自動啟動光盤,因為在檢查的時候,認為是沒有硬盤設備的

dd if=/dev/zero of=/dev/sda bs=1 count=446 
1. 進入光盤的救援模式中
2. 切根  chroot /mnt/sysimage/   再使用 grub-install /dev/sda 
     光盤自動啟動的時候會,自動掛載到自己的根上,并不是系統的根,所以要切根
grub-install 這個工具是系統工具,所以還是要切根
grub-install /dev/sda 這個工具不僅僅修復1階段,還修復1.5  2通通都給你修復(如果沒有也會生成)
注:修復的時候,有時候會出現bug,進去重復修復一邊
      修復完成之后 sync 同步一下

實驗二:第1.5  2階段的數據破壞了

dd if=/dev/zero of=/dev/sda bs=1 count=10240 skip=512 seek=512
1. 破壞之后,1.5  2進入系統只有黑屏,是能進去的,前512個字節沒有被破壞,所有能夠識別該硬盤,能進入,但后續的操作就沒有了

安裝grub:  #光盤自帶 
   (1)grub-install 安裝grub stage1和stage1_5到/dev/DISK磁盤上,并復制GRUB相關文件到 DIR/boot目錄下 
       grub-install –root-directory=DIR /dev/DISK
   (2)grub 
       grub> root (hd#,#) 
       grub> setup (hd#)
          注:在執行grub修復的1.5 2階段的時候,依賴/dev/grub/* 的文件,不然無法執行
2. chroot /mnt/sysimage/
3. grub
4. grub> root (hd0,0)
5. grub> setup (hd0)
注:在初始化的時候(1.5 2階段沒有被破壞之間)在/boot/grub/* 里的多個文件中 只有/boot/grub/grub.conf文件
      這時系統是正常啟動,沒有問題
注:在1.5 2階段破壞了,修復之后。必須要有/boot/grub/* 里的文件不能少,grub下的文件有些依賴的
      其它主要的stage2文件(有/boot/grub/grub.conf  stage2)即可,但一般還是都有比較好

實驗三:/boot/grub/grub.conf文件被破壞或不存在

mv /boot/grub/grub.conf /app/
1. 因為系統找不到grub.conf文件,能進入系統。系統會進入grub模式下   grub>
2. grub> root (hd0,0)
3. grub> kernel /vmlinuz-2.6.32-696.el6.x86_64  root=/dev/sda2
    注:root=/dev/sda2  指的是根在哪
4. grub> initrd /initramfs-2.6.32-696.el6.x86_64.img
5. grub> boot  boot啟動
    注:這只是在命令中修改并沒有寫入文件當中,所以啟動之后必須寫入文件當中去

實驗四: /boot/grub/* 里面的文件全都沒有了,系統啟動時候找不到啟動項,會出錯,出現:  Error 15  黑屏

mv /boot/grub/*  /app/
1. 進入救援模式
2. chroot  /mnt/sysimage/ 
3. grub-install  /dev/sda  #修復 1  1.5  2階段
    這時/boot/grub/里的文件除了/boot/grub/grub.conf文件沒有都有了
4. vim  /boot/grub/grub.conf
   default=0
   timeout=5
   title xdglinux
   kernel /vmlinuz-2.6.32-696.el6.x86_64  root=/dev/sda2  #/dev/sda2 代表根
   initrd /initramfs-2.6.32-696.el6.x86_64.img
       注:最簡的寫法了
5.  sync  sync   exit   exit   reboot重啟

實驗五:/boot/ 里面的文件全部刪除了

rm -rf /boot/
1. 進入救援模式
2. chroot /mnt/sysimage/
3. 這時/boot 里面的文件全部都沒有了(grub  vmlinuz  initramfs主要的三個文件)
    mount /dev/sr0 /mnt/
     注:在光盤當中有vmlinuz的內核文件(其實在系統安裝的時候就是從光盤當中復制過去的)
           在isolinux文件中叫vmlinuz的文件(沒有內核信息,后面的2.6.32。。。)
          先 cd   /mnt/isolinux/   –>   再 cp  vmlinuz   /boot/
4. mkinitrd /boot/initramfs.img uname -r  #內核版本沒有寫了,uname -r是必須要指定的
    生成initramfs文件
5. grub-install /dev/sda  
    生成grub里的文件信息( 1 1.5 2三個階段的內容信息)
6. vi /boot/grub/grub.conf   #編寫grub.conf的配置文件信息
    default=0
    timeout=5
    title xdg_linux
    kernel /vmlinuz root=/dev/sda2
    initrd /initramfs.img
重新啟動

實驗六:init (/sbin/init 被破壞、損壞)

mv /sbin/init /app/  注:移動過后,系統重新啟時候,無法進入系統,停在內核啟動過程中
     提示:sh:no job control in this shell

     這時候,sh這個程序無法正常運行,怎么輸都沒有用

  [root@centos6 xdg]#which init
  /sbin/init
  [root@centos6 xdg]#rpm -qf /sbin/init
  upstart-0.6.5-16.el6.x86_64
1. 進入系統時,選擇菜單  –> 進入grub模式的kernel的一行中,在后面添加一行  init=/bin/bash
   注:表示系統啟動時,不用init進程來啟動,用bash來啟動,而bash當中內置了一些內部命令
2. 重新啟動系統時,進入的時候會用bash啟動,進入后,安裝init程序
   注:這時是只讀方式的文件系統,需要重新掛載一下   
   mount -o remount,rw  /  這時就可以了
3. mount /dev/sr0 /mnt/  #掛載光盤,安裝里的rpm包
4. rpm -ivh /mnt/Packages/upstart-0.6.5-16.el6.x86_64  –force  
   注:因數之前安裝過,要強制安裝一個,避免出現問題。
   安裝后,查看一個是否安裝   which init
5. 重啟

或者  進入救援模式,直接安裝init包
或者  拷貝其它主機上的程序包(必須相同的)

實驗七: 刪除設備文件和boot

rm -rf /etc/fstab
rm -rf /boot
1. 進入救援模式中,這時光盤找不到根系統,無法掛載到/mnt/sysimage/里
    注:進入bash中  
    df查看掛載情況,無法查看
    fdisk /dev/sda  還可以看
    blkid 還可以看格式化的文件系統
2. 這時,進入bash當中只能自己手動掛載了。
   根據上面的信息,可以看到大概設備的信息,分析出幾個有可能是根的分區
   然后每個掛載上去 mount  /dev/sda2  /mnt/  –> 掛載之后 ls /mnt/ 里的內容查看是不是根(相關目錄信息)
3. 編輯、創建/etc/fstab文件相關信息
   vi /mnt/etc/fstab
   /dev/sda1  /boot  ext4  defaults 0 0
   /dev/sda2  /      ext4  defaults 0 0
   /dev/sda5  swap   swap  defaults 0 0
重啟 
4. 進入救援模式中  chroot
    再修復/boot/

實驗八:在用網絡安裝的系統  #邏輯卷的方式

mv /etc/fstab  /root/xdg
mv /boot  /root/xdg
注: 邏輯卷是不能當作boot來用的

mount /dev/VoIGroup/lv_home  /mnt/
注:這時候無法掛載上去,因為邏輯卷處于非活動狀態(pvdisplay  查看)
注:因為在開機的時候腳本 /etc/rc.d/rc.sysinit 中激活了邏輯卷(所以目前是非正常啟動)

1. vgchange -ay  #激活
查看  lvscan 是否激活
注:激活之后,邏輯卷就可以使用,也就可以掛載了。
lvscan  掃描查看一下,邏輯卷的狀態

2. mount /dev/VoIGroup/lv_root   /mnt/cdrom/
掛載之后,進入根,編輯、創建/etc/fstab文件當中的配置信息
/dev/sda  /boot  ext4  defaults  0 0
/dev/mapper/VoIGroup-lv_root  /  ext4 defaults 0  0
存盤退出


3. 再次進入救援模式  #這時系統就可以識別/etc/fstab里的內容掛載上去了
grub-install /dev/sda   #修復1  1.5  2階段的內容
掛載光盤 從光盤當中拷貝vmlinuz(內核文件)
cp /mnt/isolinux/vmlinuz   /boot/
mkinitrd  initramfs.img  `uname -r`
生成虛擬文件系統–> initramfs.img


4. 編輯/boot/grub/grub.conf文件
注:
default=0
timeout=5
title xdg
kernle /vmlinuz root=/dev/sda2
initrd /initramfs.img 
保存,退出


5. sync  sync   重啟  –> OK

注:在救援模式當中,進入的時候,會有顯示是否啟用帶網絡功能的。
可以開啟帶有網絡功能的,配置完成之后。
用scp 把遠程的主機上的文件傳送過來,也是可以的

原創文章,作者:_xddggg,如若轉載,請注明出處:http://www.www58058.com/86174

(0)
_xddggg_xddggg
上一篇 2017-09-03
下一篇 2017-09-04

相關推薦

  • Linux簡單的磁盤分區、格式化和掛載

     一.分區: 1.查看分區fdisk -l 通過fdisk -l 查看機器所掛硬盤個數及分區情況   2.通過上面的信息,我們知道此機器中掛載兩個硬盤分別是:/dev/sda和/dev/sdb, 其中sda有兩個主分區/dev/sda1和sda2; 其中sdb有1個擴展類型/dev/sdb3和3個邏輯分區sd…

    Linux干貨 2016-02-28
  • DNS and BIND

    DNS and BIND 名稱解析:把一種代號轉換成為另一種代號的功能是應用程序基于某個搜索鍵在指定的數據庫查詢,查詢到對應的鍵以后,對應鍵被找出來的過程!passwd —《nsswith》/etc/nsswith.conf 注意:查詢的時候用到的是UDP的53,主從復制走的是tcp(但是也用到udp) DNS: Domain Name Serv…

    Linux干貨 2016-10-21
  • Linux系統進程管理

    本章學習內容     ——進程概念     ——進程創建、切換和撤銷     ——進程調度     ——進程分類     ——進程狀態 &n…

    Linux干貨 2016-09-13
  • samba的部署及應用

    samba: 啟動服務:nmb.server;smb.server 會通過文件系統的方式輸出給客戶端 smb:Service Message Block;服務信息塊 cifs:Common Internet File System,通用互聯網文件系統 samba:Andrew Tridgell;熱情奔放的桑巴…

    Linux干貨 2016-10-19
  • Linux的終端類型

    Linux的終端類型 Linux的終端類型: TTY(虛擬終端,圖形終端) 早期的電子計算機的輸入設備是穿孔卡片【又稱霍列瑞斯式卡(Herman Hollerith)或IBM卡】,用有洞和無洞表示計算機二進制里面的0和1,以此來記錄相關信息,但是這種方式很慢。 1986年股票代碼被發明,人們通過電報和電傳打印機發送實時股票價格,此時teletypewrite…

    Linux干貨 2016-10-14
  • 第二周作業

    1、Linux上的文件管理類命令都有哪些,其常用的使用方法及其相關示例演示。     文件管理類命令:cp、mv、rm     (1)cp:復制命令      單源復制(源文件為文本文件)    &n…

    Linux干貨 2017-01-18
欧美性久久久久