ことのはじめ
先日システムドライブで使っていたSSDからSMARTエラーが
出ちゃったのでシステムドライブのお引越しをキメてみた。
作業の流れ
- LiveCDから起動
- 新規SSDにパーティション作成
- rsyncでシステムドライブの中身をコピー
- GRUBのインストール
用意するもの
- Linuxが稼働しているPC
- 稼働しているOSと同じバージョンのLiveCD
- 新しいSSD
- 折れない心
新旧SSDとデバイス名の関係
旧SSD:/dev/sda
新SSD:/dev/sdb
LiveCDから起動する
BIOSのブートオプションからLiveCDのドライブを選択し起動する
rootになる
以下のコマンドでrootになる。
sudo su -
新SSDにパーティションを作成
fdisk /dev/sdb
Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4):1
First cylinder (1-767) :1
Last cylinder or +size or +sizeM or +sizeK: <そのままEnter>
Command (m for help): t
Partition number (1-4):1
Hex code (type L to list codes) : 83
Command (m for help): w
新SSDをext4でフォーマット
mkfs.ext4 /dev/sdb1
rsyncでシステムドライブの中身をコピー
LiveCDから起動し、新SSDと旧SSDをそれぞれマウント。
mkdir /mnt/old
mount /dev/sda1 /mnt/old
mkdir /mnt/new
mount /dev/sdb1 /mnt/new
rsyncで特殊フォルダを除外してコピー。
rsync -aAXHv --exclude={"/mnt/old/dev/*","/mnt/old/proc/*","/mnt/old/sys/*","/mnt/old/tmp/*","/mnt/old/run/*","/mnt/old/lost+found"} /mnt/old/ /mnt/new
特殊フォルダをバインド
特殊フォルダ /sys
/proc
/dev
をバインド。
mount --bind /sys /mnt/new/sys
mount --bind /proc /mnt/new/proc
mount --bind /dev /mnt/new/dev
GRUBのインストール
以下のコマンドを実行してGRUBをインストールし、ブート構成情報を再作成する。
chroot /mnt/new
grub-install --recheck /dev/sdb
update-grub
システムドライブのUUIDを更新する
通常システムドライブはUUIDでマウントされているため、
コピーしたままのfstab
では起動できない。
そのため、新SSDのUUIDを調べてfstab
に反映させる必要がある。
blkid /dev/sdb
UUID="新SSDのUUID"
をfstabのrootファイルシステムの行にある
UUIDと置き換える
(ダブルクォーテーションは外した方がいいかも)
fstab
#UUID=旧SSDのUUID / ext4 noatime,errors=remount-ro 0 1
UUID=新SSDのUUID / ext4 noatime,errors=remount-ro 0 1
再起動する
再起動し、動作確認してみる。
reboot