平林孝太@東京大学研究のはなし、個人的なメモ書きなどのページになる予定です。。。 |
HDDからSSDへの換装作業ログ
512GBのSSDを買ってもらった。 研究室の端末のUbuntu 14.04をSSDにのせてシステムを高速化しよう。 /home は別HDDからマウントしてるので、バックアップはまぁとらなくてもいいか。 失敗したらクリーンインストールすりゃええねん。
換装前の blkid とか fdisk とかのログをとり忘れたけど、 2TBのHDD にシステム領域が10GB程度あるだけだった。 もったいないのであとでマウントして使う。
以下、HDDを /dev/sda, SSDを /dev/sdb としよう。 いろいろHDDが付いてる場合は全部ケーブル抜いてから作業するといいと思う。
システムファイルの引越し
パーティションの準備
2TBの領域を512GBのSSDにのせることはできないので、 HDD側のパーティションを小さくしておく。 マウントしてるとパーティションを変更できないので Live DVD からUbuntuを起動。 gparted ユーティリティを使ってマウスでポチポチ。 とりあえず50GBくらいまで小さくしておいた。
続いてSSD側にもパーティションを作っておく。
$ sudo cfdisk -z /dev/sdb
fdisk -l で確認したら次へ。
SSDにパーティションをコピー
データ復旧用のユーティリティを使ってまるごとコピーする。
$ sudo su
$ apt-get update
$ apt-get install gddrescue
と思ったがパッケージが見つからないと怒られたので、手動でインストールした。
$ apt-get install build-essential file-roller
$ wget http://ftp.heanet.ie/mirrors/gnu/ddrescue/ddrescue-1.18.1.tar.lz
$ tar -xvf ddrescue-1.18.1.tar.lz
$ cd ddrescue-1.18.1/
$ ./configure
$ make
$ make install
ちなみにライブ起動のrootにはパスワードがない。
インストールできたらコピー実行。
コピー元を /dev/sda1, コピー先のSSDを /dev/sdb1 としよう。
$ ddrescue -v -f /dev/sda1 /dev/sdb1
パーティションサイズを小さくしてあるのでそんなに時間はかからない。
終わったら、たぶんほとんどの領域が unallocated になってると思うので
また gparted を使ってパーティションを適当なサイズに修正。
自分は拡張領域を作って メモリと同サイズの swap も作成。
UUIDの罠
この段階で、なぜか /dev/sdb1 のUUIDが /dev/sda1 の値とまったく一緒になってしまった。 このままだと片方しか認識されなくていろいろまずいので、どちらかのUUIDをはやめに変更すべし。 gparted でNew UUIDを選択すると自動でランダムな値を振ってくれる。
fstab とか grub とか
自動マウントの設定
起動時に /dev/sdb1 を / にマウントするように /etc/fstab を修正する。
swap も設定した場合はそれも。
$ mkdir /mnt/ssd
$ mount /dev/sdb1 /mnt/ssd
$ vi /mnt/ssd/etc/fstab
デバイスファイル名ではなくUUIDで記述することを推奨。
grub のインストール
/dev/sda1 の fstab も同様に編集して再起動すると、 まず HDD (/dev/sda) のブートローダが起動して、 HDD の /etc/fstab の設定を参照して SSD が / にマウントされる、 という中途半端な状態になる。 SSD 単独でブート可能にするために /dev/sdb に grub をインストールする。
ここを参考にした。
ライブ起動した状態で、
$ mount /dev/sdb1 /mnt/ssd &&
$ mount --bind /dev /mnt/ssd/dev &&
$ mount --bind /dev/pts /mnt/ssd/dev/pts &&
$ mount --bind /proc /mnt/ssd/proc &&
$ mount --bind /sys /mnt/ssd/sys
$ chroot /mnt/ssd
$ grub-install /dev/sdb
$ grub-install --recheck /dev/sdb
$ update-grub
$ exit
$ umount /mnt/sys &&
$ umount /mnt/ssd/proc &&
$ umount /mnt/ssd/dev/pts &&
$ umount /mnt/ssd/dev
$ umount /mnt/ssd
これでインストール完了。
HDDとLive DVDを取り外して再起動すれば、SSDのgrubからブートローダが立ち上がる。
戦後処理
error: malformed file
もしかすると再起動したときにこんなエラーが出るかもしれない。
grub の不整合が原因っぽいがよくわからない。
フォーラムには
$ echo "GRUB_SAVEDEFAULT=true" >> /etc/default/grub
で解決するよ、みたいに書いてあったがエラーが2行に増えただけだった。
結局、わからんながらもうまくいったのは
$ echo "GRUB_SAVEDEFAULT=false" >> /etc/default/grub
$ update-grub
だった。再起動で全行程終了。