這標題很聳動,但是實際上不是什麼大事,
像我這樣的阿宅怎麼會去幫妹搬家呢?
原來是硬碟裡面的linux要搬家呀!
好吧!真的不是什麼大事,要是你沒空的話就別繼續看下去了…
如果你是老手,或許你也不會需要這篇的資訊,
但是如果你是新手的話,你看這篇跟著做肯定也會出事 (誤)
這裡只是提供我自己筆記的地方 XDDD
雖然我本來的硬碟分割的規畫裡面就有考慮到了我的Linux可能會從主要分割移到延伸分割的問題,
但是問題是出在,我的C槽太小,一定要把Linux(所在的主要, sda2)分割給併進來,我才能在C槽安裝萬惡的Vista,
所以我的Linux這時候真的要從主要分割區搬到延伸分割區(sda5)了。
命題結束
解法如下:
首先製備sda5,
$ sudo fdisk /dev/sda
內容就不細談了。
再來是把它格式化
$ sudo mke2fs -t ext4 /dev/sda5
等它做完了之後再來
$ sudo e2label /dev/sda5 /ROOT
$ sudo mount /dev/sda5 /mnt/newfs
接下來這一步很精彩
$ sudo tar cf - boot bin sbin ... 阿哩阿喳要留下來的根目錄資料夾跟檔案 ... vmlinuz | (cd /mnt/newfs; sudo tar xf - )
這個步驟可能會有點久,看你的檔案多不多而定。然後,先去便利商店買個便當回來吃吧 (誤)
再來修改fstab
$ sudo /mnt/fstab
把原本的一些硬碟的資料清了吧,換成新的,例如
UID=xxxxxx /
換成
LABEL=/ROOT /
如果好了的話,那就可以把sda2砍了,
$ sudo fdisk /dev/sda
* 注意,如果你sda2砍完之後系統有跟你說你的partition table沒有更新而且kernel在重開機之前都會繼續用舊的話,這時你就必須拿出你的live cd,用live cd開機再做接下來的步驟,不然都會做白工。
* 注意,雖然是把sda2砍了,但是要記得! 系統開機只能從主要分割區開機,所以還是要留下一個小的開機分割,否則你的linux,不!是整台電腦都不能開機。
然後把新的sda2開出來,大小可以不用太大,大概100MB就很夠用囉,只是說你可以預留多一點 XD
$ sudo mke2fs /dev/sda2
接下來再把新的sda2掛回來
$ sudo mount /dev/sda2 /mnt/boot
$ cd /mnt/newfs/boot
$ sudo tar cf - . | (cd /mnt/boot; sudo tar xf - )
再來重新安裝grub
$ sudo grub
grub> root (hd0,0)
grub> setup (hd0)
如果出現successful,那就ok了
再修改/mnt/boot/grub/menu.lst的內容,
主要也是把分割區的資訊更新,像是
kernel /boot/vmlinuz root=UID=xxxxxxxx 之類的
initramfs /boot/initramfs...
換成
kernel /vmlinuz root=/dev/sda5
initramfs /initramfs....
重新開機,應該就會換到新的分割了!
但是如果失敗,我可不提供支援服務喔 XDDDDD
要怎麼看是不是換到新分割了,
那就下
$ sudo mount
你就會看到你的/是不是/dev/sda5了,
不過如果你是像我前文提到的直接把舊的sda2砍了的話,
你也不會進到可以讓你下 mount的地方了 囧"
這時候,就要拿出你的救命livecd來救它了...
開不了機的救援的話,
要記得檢查幾個地方
1. grub 是否有正確的安裝 root (hd0, 1), setup (hd0)
2. grub 的設定是否正確 /boot/grub/menu.lst
a. root分割區的設定
b. initramfs的設定
3. root fs的fstab設定
我有發生一個很詭異的情況,就是fdisk完,我的系統跟我說我的partition table在重開機之前不會重新載入,
我就直接mke2fs,結果重開機之後我的分割區就翻臉不認人了... (這是合理的情況,我也只是調皮試試看會怎樣)
所以我說,它如果叫你重開,你就乖乖的重開吧...