☆fsarchiverでパーティションをコピーしてみました

5/2 追記
5/1 当初の手順だと不足がありました。
grub.cfgのsearchの行とlinuxの行でUUIDの齟齬が生じて
結局 linux行が優先され、/dev/sda8をルートとして起動してしまいます。
修正した手順の確認がとれたので修正済みのものを掲載しました。
修正した点は、実行していたにもかかわらず記載していなかった7.update-grubの実行と
本質的に欠けていた6.のところのgrub.cfgの編集です。

Ubuntu 10.04 Lucid Lynxが正式リリースされました。
本格的に弄るのは日本語Rimixが出てからのつもりですが、一応インストールしました。
インストールすれば弄りたくなるのが人情です。
弄っておかしくなった場合や、バグ報告のを考慮すると、あまり弄っていない状態をすぐに作れるようにしておくと便利です。
パーティション丸ごとのバックアップといえばddやpartimageがメジャーですが、ddは敷居が高く、partimageはext4に対応していません。
そこでfsarchiverを使用してバックアップを作成し、これを別パーティションに復元して弄ることにしました。
fsarchiverはLucidからuniverseのリポジトリに入りました。バージョンはまだ0.6.8ですが...
幸いパーティションはMaxの16まで切ってあるので、空きはいっぱいあります。
とりあえず、/dev/sda8にdesktop-i386をインストール。
その後、sda9,sda10,sda11にコピーをしました。
(バックアップからのリストアは1つあたり3分くらいだったので調子に乗って3つもコピーしてしまいました。)

手順の概略
1.とりあえず10.04を/dev/sda8へインストール
2./dev/sda1にインストールしてあったKarmicを起動
3.fsarchiverで/dev/sda8を丸ごとバックアップ
4.fsarchiverで別のパーティション(/dev/sda9)へリストア
5.tune2fsでリストアしたパーティション(/dev/sda9)のUUIDを変更
6.リストアしたパーティション(/dev/sda9)に入っている設定ファイルを修正
7.リストアしたパーティションを起動時に選択可能にするためupdate-grubを実行
8.リブートして/dev/sda9から起動、dpkg-reconfigureでgrub-pcのインストール先を修正

(私の環境では"/home"や"/var"を分けずに"/"の1パーティションだけで運用しています。 "/home"は個別のパーティションにする理由は設定ファイルをシステムごとに別にするためです。 データ用のパーティションは別に用意して$HOMEのしたからシンボリックリンクを張っています。)

以下で3以降の手順を細かく説明します。

3.fsarchiverで/dev/sda8を丸ごとバックアップ

bzip2 -2と同一の圧縮レベルで、圧縮用のスレッドを2つ使用してバックアップ

$ sudo fsarchiver -z5 -j2 savefs sda8.fsa /dev/sda8

4.fsarchiverで別のパーティション(/dev/sda9)へリストア

$ sudo fsarchiver restfs sda8.fsa id=0,dest=/dev/sda9

5.tune2fsでリストアしたパーティション(/dev/sda9)のUUIDを変更

リストアしたパーティションのUUIDはバックアップしたパーティションと同じになっているので変更します。 tune2fsのmanページで見ると-Uのあとにrandomやtimeをしてできそうなのですが、なぜかうまくいきません。 普通にuuidgenの出力を使うことにしました。

$ sudo tune2fs -U $(uuidgen) /dev/sda9
# fstabを書き換えるためにUUIDを確認
$ sudo blkid /dev/sda9
/dev/sda9: UUID="2bd68985-c6cf-4eb5-9c55-aaee3b173656" TYPE="ext4" 

6.リストアしたパーティション(/dev/sda9)に入っている設定ファイルを修正

fstabとgrub.cfgを修正します。
grub.cfgの修正が必要な理由は、update-grubの実行時に走る/etc/grub.d/30_os-proberの中で
/usr/lib/linux-boot-probes/40grub2 が実行されるのですが、これがリストアしたパーティションにある
grug.cfgを参照してるからです。

$ sudo mkdir /mnt/sda9
# fstabのUUIDを書き換える。ついでにduring installationのコメントも/dev/sda9に変更
$ sudo vi /mnt/sda9/etc/fstab
$ sudo vi /mnt/sda9/boot/grub.cfg
fstabの修正内容
@@ -7,4 +7,4 @@
 #                
 proc            /proc           proc    nodev,noexec,nosuid 0       0
 # / was on /dev/sda10 during installation
-UUID=32c50640-99e1-49c1-837f-05701e9e7def /               ext4    errors=remount-ro 0       1
+UUID=2bd68985-c6cf-4eb5-9c55-aaee3b173656 /               ext4    errors=remount-ro 0       1
grub.cfgの修正内容(書込みは:w!で強制書込みをします)
UUIDの書き換えが必要な箇所は"### BEGIN /etc/grub.d/10_linux ###"から"### END /etc/grub.d/10_linux ###"の間にある
"linux"始まる行です。(ほかの部分は8.のdpkg-reconfigureの時に直ります。)
--- sda10_grub.cfg.org 2010-05-02 20:28:18.581936565 +0900
+++ sda10_grub.cfg.new 2010-05-02 20:31:53.980286836 +0900
@@ -63,22 +63,22 @@
 ### BEGIN /etc/grub.d/10_linux ###
 menuentry 'Ubuntu, with Linux 2.6.32-21-generic' --class ubuntu --class gnu-linux --class gnu --class os {
    recordfail
    insmod ext2
    set root='(hd0,8)'
    search --no-floppy --fs-uuid --set 32c50640-99e1-49c1-837f-05701e9e7def
-   linux   /boot/vmlinuz-2.6.32-21-generic root=UUID=32c50640-99e1-49c1-837f-05701e9e7def ro   quiet splash
+   linux   /boot/vmlinuz-2.6.32-21-generic root=UUID=2bd68985-c6cf-4eb5-9c55-aaee3b173656 ro   quiet splash
    initrd  /boot/initrd.img-2.6.32-21-generic
 }
 menuentry 'Ubuntu, with Linux 2.6.32-21-generic (recovery mode)' --class ubuntu --class gnu-linux --class gnu --class os {
    recordfail
    insmod ext2
    set root='(hd0,8)'
    search --no-floppy --fs-uuid --set 32c50640-99e1-49c1-837f-05701e9e7def
    echo    'Loading Linux 2.6.32-21-generic ...'
-   linux   /boot/vmlinuz-2.6.32-21-generic root=UUID=32c50640-99e1-49c1-837f-05701e9e7def ro single 
+   linux   /boot/vmlinuz-2.6.32-21-generic root=UUID=2bd68985-c6cf-4eb5-9c55-aaee3b173656 ro single 
    echo    'Loading initial ramdisk ...'
    initrd  /boot/initrd.img-2.6.32-21-generic
 }
 ### END /etc/grub.d/10_linux ###
 
 ### BEGIN /etc/grub.d/20_memtest86+ ###

7.リストアしたパーティションを起動時に選択可能にするためupdate-grubを実行

$ sudo update-grub

8.リブートして/dev/sda9から起動、dpkg-reconfigureでgrub-pcのインストール先を修正

$ sudo dpkg-reconfigure grub-pc
2つほど設定を訊かれますがデフォルトで進めると下記のような画面が出るので grubのインストール先を選択しなおします。

0 件のコメント:

コメントを投稿