作者:Baron. Wan
相關備份硬碟資訊請參閱 [硬碟備份 Disk to Image]
1. 檢查原先備份的 partition 內容,並依此分割。
disk.info
------------
> /
> /boot
> /var
used.info
------------
2799608
44997
10037036
create_dir.info
-------------------
/proc /sys /tmp /media /mnt
# fdisk /dev/sda
分割 /boot, /, /var and swap, 依原備份內容, 設定 /boot 為 active boot
切割大小只要比實際上使用再大一些即可。
以上所述:
/boot 100M
/ 4G
/var 10G
# mkfs.ext3 -U <原先的UUID值> /dev/sda1
# mkfs.ext3 -U <原先的UUID值> /dev/sda2
# mkfs.ext3 -U <原先的UUID值> /dev/sda3
# mkswap -U <原先的UUID值> /dev/sda5
重新開機
2. # mkdir -p /SC_xxxxxxxx_img/{tmp, rootfilesystem,boot,var}
將之前經由 mksquashfs image 的存放路徑掛載上來:
# mount -t cifs -o rw //10.100.100.1/SC_xxxxxxxx_img /SC_xxxxxxxx_img
[註] 之前已利用 mksquashfs {/, /boot, /var} 各作成 image 檔。
# mount /dev/sda1 /mnt/boot
# mount /dev/sda2 /mnt/rootfilesystem
# mount /dev/sda3 /mnt/var
# cd /mnt/boot
# unsquashfs /SC_xxxxxxxx_img/boot.img
root-filesystem.img 是 (/) root-filesystem:
# cd /mnt/rootfilesystem
# unsquashfs /SC_xxxxxxxx_img/root-filesystem.img
對 /mnt/boot 以及 /mnt/rootfilesystem 做以下兩行:
# mv squashfs-root/* .
# rm -rf squashfs-root/
/mnt/rootfilesystem 在上述兩行執行完畢後, create 以下幾個 folder:
boot, var, proc, sys, tmp, media, mnt
並將目錄權限添加上:
chmod 1777 /mnt/rootfilesystem/tmp
chmod 555 /mnt/rootfilesystem/boot
# umount /mnt/boot
# mount /dev/sda1 /mnt/rootfilesystem/boot
以上將正確的 boot folder 掛載到 root-filesystem 中的 /boot 位置
------------------------------------------------------------
var.img 是 /var 的 image 檔:
# cd /mnt/var
# unsquashfs /SC_xxxxxxxx_img/var.img
# mv squashfs-root/* .
# rm -rf squashfs-root/
# cd ..
# umount /mnt/var
# mount /dev/sda3 /mnt/rootfilesystem/var
『註1』經測試,可先一次掛載到 root-filesystem 後,再將 image 檔一次還原至該處。
因此 image 檔只需要一個。
『註2』 unsquashfs 後來經測試可用:
unsquashfs -d /mnt/rootfilesystem -f /backup/root-filesystem.img
3. # blkid (會顯示各個 partition 的 UUID, 或是經由 /dev/disk/by-uuid/ 處也可查詢)
# chroot /mnt/rootfilesystem
然後將相對的 UUID 值填入 /etc/fstab 及 /boot/grub/menu.lst
『註3』或者在格式化時,使用 -U 直接採用對應於原先的 partition 的UUID,這樣可以節省後續又要修改/調整 一些檔案所造成的困擾。
4. 調整 /mnt/rootfilesystem/etc/fstab 內,以符合當前 partition 規劃。
** 由於事關原先系統 MBR 內的磁碟切割資訊,因此必須與原 partition 規劃一致。
** /boot/grub/stage1 即為 MBR (hd0) 資訊,stage2 是 boot sector (hd0,0)。
5. check 是否可 chroot /mnt/rootfilesystem/,若可則 chroot
6. grub-install /dev/sda
[參考 http://linux.vbird.org/linux_basic/0510osloader.php#grub_install]
『註4』可直接採用第七點的操作方式進行 mbr 及 boot sector 的安裝工程。
7. 確定 grub 是否有安裝在 mbr 上。
cat /boot/grub/menu.lst 先 check root 位置。
grub
> root (hd0,0)
> find /grub/stage1 or
> find /vmlinuz-
若為 hd0 則:
> setup (hd0) 同時 check 內容是否有誤! # 安裝到 MBR
> setup (hd0,0) # 安裝到 boot sector
完成後 quit
最後,先退出 chroot,然後依次 umount /mnt/rootfilesystem/{var, boot},之後再 umount /mnt/rootfilesystem,然後就可以重新開機了。
8. 重新開機後,顯示出了 grub menu 畫面,但出現 error 15: file not found. ?!
Ans: 表示你製作的 filesystem 及 partition 與原先的不同。
9. 成功進入桌面時,發現一件事:由於網卡是之前的 MAC address,因此需要重新調整。兩個方法可以確認當前主機的網卡MAC address:
# dmesg|grep eth or 到 /etc/rules.d/70-persistent-net.rules 查詢系統抓到的對應 MAC address。然後我們可以到 /etc/sysconfig/network-scripts/ 來作變更。
完成。
沒有留言:
張貼留言