きっかけ
UbuntuではSSD+HDD構成ではhome領域をHDDに入れることが推奨されているが普通のインストールではうまく設定できなかったのでコマンドラインを使って設定したので備忘録代わりに残す。
手順
- HDDを(ext4)にフォーマット
- HDDをマウント
- HDDに
/home/
領域をrsyncでコピー -
/home/
領域をバックアップにリネーム - からのマウントポジション
/home/
を作成 - HDDをアンマウント
- HDDを
/home/
領域にマウントし直す - 再起動時に
/home/
領域を認識できるように/etc/fstab
にUUID編集
である。UUIDはUniversally Unique IDの意味でソフトウェア上で認識しているオブジェクトに振られるユニークなIDであり/etc/fstab
はマウント先の設定である。
フォーマットと各デバイスの名前など
1.の手順はGPartedを使ってフォーマットしておく。
HDDは/dev/sdb
としてフォーマットされたパーティションは/dev/sdb1
であるとし、SSDは/dev/sda
、/dev/sda1
をブート領域、/dev/dev2
をその他の領域であるとする。
コマンド作業
作業はほぼ管理者権限が必要なのでsudo su -
を使って管理者になって行う
# cd /
# mkdir home.new
# mount -t ext4 /dev/sdb1 /home.new
# rsync -avz home/ home.new/
# mv home home.bak
# mkdir home
# umount home.new/
# mount -t ext4 /dev/sda1 /home
fstabの編集``
# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point> <type> <options> <dump> <pass>
# / was on /dev/sda2 during installation
UUID=${sda2のUUID} / ext4 errors=remount-ro 0 1
# /boot/efi was on /dev/sda1 during installation
UUID=${sda1のUUID} /boot/efi vfat umask=0077 0 1
# swap was on /dev/sda3 during installation
UUID=${sda3のUUID} none swap sw 0 0
このような形式になっているので/home/
用の設定を追加する
# /home/ was on /dev/sdb1 during installation
UUID=${sda2のUUID} /home ext4 nofail 0 1
の用に記述する。これで再起動してdf
コマンドで確認して/home
がHDDになっていたら成功でhome.new
はマウント先がなく空になっているので削除する。
その他、/home.bakも必要なければ削除してもいい。
エラーなど
まとめると上のような手順であるが調べながらで回り道もしたのですんなり行くかは断言できない。
途中で起こったエラーとして/etc/fstab
の編集に失敗してユーザーログインができなくなったのでUbuntuのリカバリーモードの管理者ログインをつかった。(シングルユーザーモード、ランレベル=1、だと何故かうまく動かなかったのでリカバリーモード推奨)。
最後に
OSをSSDにデータをHDDにという基本だが意外とまとまった記事がなかったので誰かの役に立てれば僥倖です。
管理者権限を使って低レベルの書き換えなので嵌まると大変なことになりそうです。
ここが動かない、間違ってるなどがあれば編集リクエストまたはコメントでお願いします。