redhat 9 刪除/boot後的系統修復(轉)

BSDLite發表於2007-08-17
redhat 9 刪除/boot後的系統修復(轉)[@more@]朋友的客戶有redhat9系統無法再啟動,只能進到grub,他到現場後讓我幫忙看一下。說 grub後root (hd0,0) ,Error 21: Selected disk does not exist 當時估計就是grub壞了而已。
他啟動盤引導進入resuce 模式,設定好網路。我putty登入後看,嚇了一跳。整個boot目錄是空的。
刪掉了,因為以前沒有遇到過。憑直覺應該能修復系統。因為我遠端,操作起來更不敢隨便啟動。


好久沒有用rh9,不甚上手。比對了我們公司的as4,boot目錄 (後來發現檔案變化很大)
-rw-r--r-- 1 root root 49930 10月 6 19:37 config-2.6.9-42.0.3.ELsmp
drwxr-xr-x 2 root root 1024 10月 25 13:36 grub
-rw-r--r-- 1 root root 542049 10月 25 13:36 initrd-2.6.9-42.0.3.ELsmp.img
-rw-r--r-- 1 root root 23108 2005-08-04 message
-rw-r--r-- 1 root root 21282 2005-08-04 message.ja
-rw-r--r-- 1 root root 766287 10月 6 19:37 System.map-2.6.9-42.0.3.ELsmp
-rw-r--r-- 1 root root 1444549 10月 6 19:37 vmlinuz-2.6.9-42.0.3.ELsmp
另有grub資料夾下的檔案應該不難恢復,/usr/share/grub/i386-redhat/下有相似檔案
整理了一下思路,一步一步來
1.察看了下分割槽資訊,
[root@localhost root]# cat /etc/fstab
LABEL=/ / ext3 defaults 1 1
none /dev/pts devpts gid=5,mode=620 0 0
LABEL=/home /home ext3 defaults 1 2
none /proc proc defaults 0 0
none /dev/shm tmpfs defaults 0 0
LABEL=/tmp /tmp ext3 defaults 1 2
LABEL=/usr /usr ext3 defaults 1 2
LABEL=/var /var ext3 defaults 1 2
/dev/cciss/c0d0p6 swap swap defaults 0 0
/dev/cdrom /mnt/cdrom udf,iso9660 noauto,owner,kudzu,ro 0 0
/dev/fd0 /mnt/floppy auto noauto,owner,kudzu 0 0

[root@localhost root]# mount
/dev/cciss/c0d0p1 on / type ext3 (rw,defaults)
none on /dev/pts type devpts (rw,gid=5,mode=620)
none on /dev/shm type tmpfs (rw,defaults)
/dev/cciss/c0d0p2 on /home type ext3 (rw,defaults)
none on /proc type proc (rw,defaults)
/dev/cciss/c0d0p7 on /tmp type ext3 (rw,defaults)
/dev/cciss/c0d0p3 on /usr type ext3 (rw,defaults)
/dev/cciss/c0d0p5 on /var type ext3 (rw,defaults)
/dev/cdrom on /mnt/cdrom type iso9660 (ro)

應該是hp機器作raid後的硬碟裝置。作grub後需要考慮這個問題
在grub中加入boot=/dev/cciss/c0d0

2.cp 光碟上的 vmlinuz 到boot,再
mkinitrd /boot/initrd-2.4.20-8.img 2.4.20-8
3.重新安裝grub 。當時想著就剩下grub的問題了。
[root@localhost root]# cat /boot/grub/device.map
(fd0) /dev/fd0
(hd0) /dev/cciss/c0d0


4.install grub.
grub> root (hd0,0)
root (hd0,0)
Filesystem type is ext2fs, partition type 0x83
grub> setup (hd0)
setup (hd0)
Checking if "/boot/grub/stage1" exists... yes
Checking if "/boot/grub/stage2" exists... yes
Checking if "/boot/grub/e2fs_stage1_5" exists... yes
Running "embed /boot/grub/e2fs_stage1_5 (hd0)"... 16 sectors are embedded.
succeeded
Running "install /boot/grub/stage1 (hd0) (hd0)1+16 p (hd0,0)/boot/grub/stage2 /boot/grub/grub.conf"... succeeded
Done.
grub> quit
grub> kernel /vmlinuz-2.4.20-8 ro root=LABEL=/

Error 15: File not found

grub> device (hd0) /dev/cciss/c0d0
grub> root (hd0,0)
Filesystem type is ext2fs, partition type 0x83

grub> kernel /vmlinuz-2.4.20-8 ro root=LABEL=/

Error 15: File not found
在這裡停了很久(不明白kernel位置從哪裡開始計算的,還以為是device沒有被grub正確識別成hd0的緣故)

grub> kernel /boot/vmlinuz-2.4.20-8 ro root=LABEL=/
[Linux-bzImage, setup=0x1400, size=0xcf88d]

grub> initrd /boot/initrd-2.4.20-8.img
[Linux-initrd @ 0x3a7000, 0x48e10 bytes]


讓朋友重起後依舊提示無法識別裝置
確認module中有cciss
[root@localhost root]# more /etc/modules.conf
alias eth0 e100
alias scsi_hostadapter aic7xxx
alias scsi_hostadapter1 cciss
alias usb-controller usb-ohci
alias usb-controller usb-ohci

第一天卡在這裡了,就讓服務先跑著,真是個搞笑的方法......
5.想了n久,一直在grub上,並搜google,畢竟這個提示不得不讓我疑惑阿
Probing devices to guess BIOS drives. This may take a long time.
/dev/cciss/c0d0 does not have any corresponding BIOS drive.

今天想碰碰運氣
估計就是那個system.map的問題了,這是和核心有關的檔案,如果重編核心應該可以。rh9,看來直接解除安裝以下就能ok了
[root@localhost root]# rpm -qa | grep kernel
kernel-smp-2.4.20-8
kernel-pcmcia-cs-3.1.31-13
kernel-2.4.20-8
kernel-BOOT-2.4.20-8

全部重灌下,rh也就方便在這裡了~~~:)
結果是猜對了,必須的檔案都有了,看來比rhel4還多了個kernel.h,就等重起了
lrwxrwxrwx 1 root root 19 Nov 2 12:08 System.map -> System.map -2.4.20-8
-rw-r--r-- 1 root root 520129 Mar 14 2003 System.map-2.4.20-8
-rw-r--r-- 1 root root 330649 Mar 14 2003 System.map-2.4.20-8BOOT
-rw-r--r-- 1 root root 546061 Mar 14 2003 System.map-2.4.20-8smp
-rw-r--r-- 1 root root 44309 Mar 14 2003 config-2.4.20-8
......

最終 grub.conf內容
default=1
timeout=10
splashimage=(hd0,0)/grub/splash.xpm.gz
title Red Hat Linux (2.4.20-8BOOT)
boot=/dev/cciss/c0d0
root (hd0,0)
kernel /boot/vmlinuz-2.4.20-8BOOT ro root=LABEL=/
initrd /boot/initrd-2.4.20-8BOOT.img
title Red Hat Linux (2.4.20-8)
boot=/dev/cciss/c0d0
root (hd0,0)
kernel /boot/vmlinuz-2.4.20-8 ro root=LABEL=/
initrd /boot/initrd-2.4.20-8.img
......



一些命令解釋
device (hd0) /dev/cciss/c0d0 會替代預設的或者原先設定的裝置對映值

boot=/dev/cciss/c0d0 加在 grub中,使能找到硬碟

maps the /dev/cciss/c0d0 disk to (hd0) and it overrides what you already specified with the device.map or another device command.

grub> kernel /boot/vmlinuz-2.4.20-8 ro root=LABEL=/
grub> initrd /boot/initrd-2.4.20-8.img
只是想測試下檔案位置是否正確。我笨哦~~
dd if=/dev/cciss/c0d0p1 of=/tmp/mbrbackup count=1
hexdump mbrbackup 察看mbr資訊

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10617542/viewspace-963410/,如需轉載,請註明出處,否則將追究法律責任。

相關文章