やりたいこと
- Ubuntu ServerをSDカードに焼いた状態で起動
- Raspberry Pi上でSDカードをSSDにコピー
- そのままSSDから起動
SSDを挿入する
今回購入したのはArgon ONE M.2ケース
M.2 SSDに関しては,MVNE接続には非対応で,SATA接続のみに対応しているので注意する.
Raspberry piを起動後,fdisk -l
コマンドで,/dev/sda
が認識されていることを確認する
$ sudo fdisk -l
...
省略
...
Disk /dev/sda: 238.47 GiB, 256060514304 bytes, 500118192 sectors
Disk model: Forty
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: dos
Disk identifier: 0xbb5da92e
SDカードをSSDにコピー
まずrpi-clone
をRaspberry piにインストール.
本家のrpi-cloneだとUbuntu Serverでは動かなかったので,matthijskooijman氏のフォーク版を使用する
cd ~
git clone https://github.com/matthijskooijman/rpi-clone.git -b keep-fs-labels
cd rpi-clone
sudo cp rpi-clone rpi-clone-setup /usr/local/bin
次にsudo rpi-clone sda
コマンドを実行する
$ sudo rpi-clone sda
...
省略
...
Initialize and clone to the destination disk sda? (yes/no): yes # yesと入力しエンターキーを押す
Optional destination ext type file system label (16 chars max): # エンターキーを押す
Initializing
Imaging past partition 1 start.
=> dd if=/dev/mmcblk0 of=/dev/sda bs=1M count=5 ...
Resizing destination disk last partition ...
Resize success.
Changing destination Disk ID ...
=> mkfs -t vfat -F 32 /dev/sda1 ...
=> mkfs -t ext4 /dev/sda2 ...
Syncing file systems (can take a long time)
Syncing mounted partitions:
Mounting /dev/sda2 on /mnt/clone
=> rsync // /mnt/clone with-root-excludes ...
Mounting /dev/sda1 on /mnt/clone/boot/firmware
=> rsync /boot/firmware/ /mnt/clone/boot/firmware ...
===============================
Done with clone to /dev/sda
Start - 08:23:51 End - 08:26:37 Elapsed Time - 2:46
Cloned partitions are mounted on /mnt/clone for inspection or customizing.
Hit Enter when ready to unmount the /dev/sda partitions ... # エンターキーを押す
unmounting /mnt/clone/boot/firmware
unmounting /mnt/clone
===============================
fdisk -l
で正しく書き込まれているか確認./sda1
と/sda2
が生成されているので大丈夫そう
...
省略
...
Disk /dev/sda: 238.47 GiB, 256060514304 bytes, 500118192 sectors
Disk model: Forty
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: dos
Disk identifier: 0x9fc6f1c8
Device Boot Start End Sectors Size Id Type
/dev/sda1 * 2048 526335 524288 256M c W95 FAT32 (LBA)
/dev/sda2 526336 500118191 499591856 238.2G 83 Linux
起動順位設定
SSDから起動するように変更する
まずraspi-config
をインストール
sudo apt update
sudo apt install raspi-config
次に実行
sudo raspi-config
6 Advanced Options
,A6 Boot Order
, B2 USB Boot
の順で選択する
再起動&動作確認
再起動後,もう一度ssh接続を行う.
lsblk
コマンドで確認すると,/
がsda2
にマウントされていることがわかる.
$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
loop0 7:0 0 59.2M 1 loop /snap/core20/1977
loop1 7:1 0 59.3M 1 loop /snap/core20/2019
loop2 7:2 0 109.6M 1 loop /snap/lxd/24326
loop3 7:3 0 46.4M 1 loop /snap/snapd/19459
loop4 7:4 0 35.5M 1 loop /snap/snapd/19998
sda 8:0 0 238.5G 0 disk
├─sda1 8:1 0 256M 0 part
└─sda2 8:2 0 238.2G 0 part /
mmcblk0 179:0 0 14.5G 0 disk
├─mmcblk0p1 179:1 0 256M 0 part /boot/firmware
└─mmcblk0p2 179:2 0 14.2G 0 part
これでも良かったが,なぜか/boot/firmware
がまだSDカードにマウントされているようなので,SDカードを抜いて再起動すると両方ともsda
が使われるようになった.
$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
loop0 7:0 0 59.2M 1 loop /snap/core20/1977
loop1 7:1 0 59.3M 1 loop /snap/core20/2019
loop2 7:2 0 46.4M 1 loop /snap/snapd/19459
loop3 7:3 0 109.6M 1 loop /snap/lxd/24326
loop4 7:4 0 35.5M 1 loop /snap/snapd/19998
sda 8:0 0 238.5G 0 disk
├─sda1 8:1 0 256M 0 part /boot/firmware
└─sda2 8:2 0 238.2G 0 part /