更改分割槽後,linux無法啟動,恢復小記

xsdan發表於2010-01-15

今天整理硬碟,把整個D盤(hda5)騰了出來,終於有空間試驗raid lvm reiserfs v4.0啦
立刻用PQ刪除了分割槽,成了未分配空間。正如預料的,由於分割槽改動了,linux進不去了。
於是開始了一番恢復。。。。。。

文章出處:DIY部落()

[@more@]

Ok,Let`s go ! 先來看看分割槽情況吧!
未刪除分割槽情況:
/dev/md0 /dev/hda1 /dev/hda2 /dev/hda3 /dev/hda4 /dev/hda5 /dev/hda6 /dev/hda7 /dev/hda8 /dev/hda9 /dev/hda10/dev/hda11/dev/hda12刪除後分割槽情況:
/dev/md0 /dev/hda1 /dev/hda2 /dev/hda3 /dev/hda4 /dev/hda5 /dev/hda6 /dev/hda7 /dev/hda8 /dev/hda9/dev/hda10/dev/hda11

很明顯,更改後的分割槽號=原分割槽號-1 (刪除的D盤)

進入grub命令列:grub> root (hd0,6)

Filesystem type is ext2fs, partition type 0x83

grub> kernel (hd0,6)/vmlinuz-lfs-6.0 root=/dev/hda6 vga=791

因為我的vmlinuz-lfs-6.0(lfs核心)是放在/boot分割槽(hda7)的
而grub中(hd0,0)表示第一塊硬碟的第一個分割槽(/dev/hda1)
所以(hd0,6)就對應了/dev/hda7,(/boot分割槽)
而lfs-6.0根分割槽修改後是/dev/hda6 所以是root=/dev/hda6
當我得意的按下enter時,意外發生了:
Error 15: File not found
咦?怎麼會找不到檔案呢?莫非我的分析完全錯誤了?
接著我輸入了:
grub> find / 按下TAB鍵,讓grub列出(hd0,6)/下面的東東:
Possible files are: lost found bin boot dev etc home lib .viminfo
mnt opt proc root sbin sys include tmp usr var
grub>
真是奇怪,怎麼(hd0,6)會是我的lfs根分割槽呢?它應該是/boot呀。
檢視下當前的分割槽情況吧:
grub> root (hd0, 按下TAB鍵顯示當前分割槽:
Possible partitions are:
Partition num: 0, Filesystem type is fat, partition type 0xb
Partition num: 5, Filesystem type unknown, partition type 0x7
Partition num: 6, Filesystem type is ext2fs, partition type 0x83
Partition num: 7, Filesystem type is ext2fs, partition type 0x83
Partition num: 8, Filesystem type is reiserfs, partition type 0xfd
Partition num: 9, Filesystem type is ext2fs, partition type 0x83
Partition num: 10, Filesystem type unknown, partition type 0x82
Partition num: 11, Filesystem type unknown, partition type 0xfd
grub>
將分割槽號 1,竟然仍然是修改前的分割槽號,只是少了(hd0,4)=/dev/hda5 真是#%^&
grub> find (hd0,7)/ 再次按下TAB鍵,顯示/dev/hda8的內容:
grub vmlinuz us.klt System.map-2.6.8.1-12mdk config-2.6.8.1-
12mdk vmlinuz-2.6.8.1-12mdk diag1.img diag2.img message-graphic
initrd-2.6.8.1-12 vmlinuz-lfs-6.0 .................
grub>
果然!/dev/hda8仍然是/boot分割槽,/dev/hda7是我的lfs根分割槽
既然這樣,那麼原來的引導資訊就應該可以正常引導了。

grub > kernel (hd0,7)/vmlinuz-lfs-6.0 root=/dev/hda7 vga=791

結果可想而知,還是不能正常引導。(當然嘍,能引導的話,就沒意義記下了 ^_^)
引導過程中,出現"no init found root=.........."
看來是沒有找到根分割槽,真是奇怪,(hd0,6)下的確是我的lfs根分割槽阿!?

莫非grub中標識的分割槽號和linux中的分割槽號標識不相同?? 試試先:
grub > kernel (hd0,7)/vmlinuz-lfs-6.0 root=/dev/hda6 vga=791
grub > boot
根據grub中標識的分割槽號,vmlinuz-lfs-6.0在(hd0,7)下
根據上面的分析,lfs-6.0的根分割槽是在/dev/hda6下

順利進入!看來果真如此。grub仍然使用原始分割槽號,而linux中則是修改後的分割槽號
#cfdisk
Name Flags Part Type FSType Size (MB)
--------------------------------------------------------------------------------
hda1 Boot Primary W95FAT32 6859.89
Logical FreeSpace 22413.89
hda5 Logical NTFS 26386.70
hda6 Logical Linuxext3 10734.00
hda7 Logical Linuxext3 106.93
hda8 Logical Linux raidautodetect 3619.13
hda9 Logical Linuxext3 7221.80
hda10 Logical Linux swap /Solaris 534.65
hda11 Logical Linux raidautodetect 2146.80


結論:刪除一個分割槽,在grub中只是將這個分割槽號去掉 (hd0,4)而其他的分割槽號並不改變
而linux中其他的分割槽號會改變,例如刪除hda5,位於hda5以後的分割槽:分割槽號=原分割槽號-1

因此刪除位於中間的分割槽是不好的,會導致grub與linux標識分割槽號不同,比較混亂。
俺也要趕緊把hda5做成lvm ReiserFS v4.0,這麼多分割槽,真要糊塗了。:)
另外grub中的TAB鍵補全功能十分的好用,相信從上面已經體現了一些
使用linux第一步就要會一些grub基本用法啦,不然會很痛苦喲 :)

這有篇中/英雙語的grub info文件,沒看過的話,一定要看看哦 ^_^
?
t=135486&highlight=我翻 翻譯 譯的 grub info文件
文章出處:DIY部落()

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

相關文章