「SSDからRaspbianを起動する方法」の版間の差分
(同じ利用者による、間の7版が非表示) | |||
1行目: | 1行目: | ||
== 概要 == | == 概要 == | ||
microSDカードには書き込み回数の上限や劣化による寿命があり、起動しなくなる可能性がある。<br> | |||
そこで、USB接続したSSD等の外部ストレージからRaspbianを起動することで寿命を延ばすことができる。<br> | |||
<br><br> | <br><br> | ||
== SDカード必要 SSD起動ディスク化 == | == SDカード必要 SSD起動ディスク化 == | ||
==== デバイス名の確認 ==== | |||
以下のコマンドを実行する。<br> | 以下のコマンドを実行する。<br> | ||
sudo fdisk -l | grep /dev/sda | sudo fdisk -l | grep /dev/sda | ||
# 出力 | |||
Disk /dev/sda: 111.8 GiB, 120034121728 bytes, 234441644 sectors | Disk /dev/sda: 111.8 GiB, 120034121728 bytes, 234441644 sectors | ||
Units: sectors of 1 * 512 = 512 bytes | Units: sectors of 1 * 512 = 512 bytes | ||
23行目: | 17行目: | ||
Disk identifier: 0x3d0e23d3 | Disk identifier: 0x3d0e23d3 | ||
<br> | <br> | ||
==== パーティションの作成 ==== | |||
SSDのパーティションを作成するため、以下のコマンドを実行する。<br> | SSDのパーティションを作成するため、以下のコマンドを実行する。<br> | ||
# パーティションテーブルの設定を行う | |||
sudo fdisk /dev/sda | sudo fdisk /dev/sda | ||
<br> | <br> | ||
続いて、以下のように設定する。<br> | |||
# | # dでパーティションを削除する | ||
Command (m for help): d | Command (m for help): d | ||
Selected partition 1 | Selected partition 1 | ||
Partition 1 has been deleted. | Partition 1 has been deleted. | ||
# | # pで現在の状態を確認 | ||
Command (m for help): p | Command (m for help): p | ||
Disk /dev/sda: 3.7 TiB, 4000787030016 bytes, 7814037168 sectors | Disk /dev/sda: 3.7 TiB, 4000787030016 bytes, 7814037168 sectors | ||
44行目: | 37行目: | ||
Disk identifier: F3BA4D9C-C2F7-43FF-837C-D3BFBFBF5C1D | Disk identifier: F3BA4D9C-C2F7-43FF-837C-D3BFBFBF5C1D | ||
# | # nでパーティションを作成(何も入力しない場合は全てデフォルトとなる) | ||
Command (m for help): n | Command (m for help): n | ||
Partition number (1-128, default 1): 1 | Partition number (1-128, default 1): 1 | ||
52行目: | 45行目: | ||
Created a new partition 1 of type 'Linux filesystem' and of size 3.7 TiB. | Created a new partition 1 of type 'Linux filesystem' and of size 3.7 TiB. | ||
# | # pで作成したパーティションを確認する | ||
Command (m for help): p | Command (m for help): p | ||
Disk /dev/sda: 3.7 TiB, 4000787030016 bytes, 7814037168 sectors | Disk /dev/sda: 3.7 TiB, 4000787030016 bytes, 7814037168 sectors | ||
64行目: | 57行目: | ||
/dev/sda1 2048 7814037134 7814035087 3.7T Linux filesystem | /dev/sda1 2048 7814037134 7814035087 3.7T Linux filesystem | ||
# | # wで変更を書き込む | ||
Command (m for help): w | Command (m for help): w | ||
The partition table has been altered! | The partition table has been altered! | ||
70行目: | 63行目: | ||
Syncing disks. | Syncing disks. | ||
<br> | <br> | ||
次に、上記で作成したパーティションを確認するため、以下のコマンドを実行する。<br> | |||
sudo fdisk -l | sudo fdisk -l | ||
# 出力 | |||
...省略 | ...省略 | ||
Disk /dev/sda: 111.8 GiB, 120034121728 bytes, 234441644 sectors | Disk /dev/sda: 111.8 GiB, 120034121728 bytes, 234441644 sectors | ||
Units: sectors of 1 * 512 = 512 bytes | Units: sectors of 1 * 512 = 512 bytes | ||
87行目: | 81行目: | ||
<br> | <br> | ||
lsblk | lsblk | ||
# 結果 | |||
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT | NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT | ||
sda 8:0 0 111.8G 0 disk | sda 8:0 0 111.8G 0 disk | ||
└─sda1 8:1 0 111.8G 0 part | └─sda1 8:1 0 111.8G 0 part | ||
mmcblk0 179:0 0 | mmcblk0 179:0 0 29.9G 0 disk | ||
├─mmcblk0p1 179:1 0 42.9M 0 part /boot | ├─mmcblk0p1 179:1 0 42.9M 0 part /boot | ||
└─mmcblk0p2 179:2 0 29.8G 0 part | └─mmcblk0p2 179:2 0 29.8G 0 part | ||
<br> | <br> | ||
==== パーティションのフォーマット ==== | |||
SSDに作成したパーティションをフォーマットするため、以下のコマンドを実行する。<br> | SSDに作成したパーティションをフォーマットするため、以下のコマンドを実行する。<br> | ||
ここでは、ext4でフォーマットを実行している。<br> | |||
sudo mkfs.ext4 /dev/sda1 | sudo mkfs.ext4 /dev/sda1 | ||
# 出力 | |||
mke2fs 1.43.4 (31-Jan-2017) | mke2fs 1.43.4 (31-Jan-2017) | ||
Found a dos partition table in /dev/sda1 | Found a dos partition table in /dev/sda1 | ||
Proceed anyway? (y,N) y '''← | Proceed anyway? (y,N) y '''← yを入力''' | ||
Creating filesystem with 29305205 4k blocks and 7331840 inodes | Creating filesystem with 29305205 4k blocks and 7331840 inodes | ||
Filesystem UUID: bf3db726-f1fa-4a6c-a64b-fe48bbfa9a99 | Filesystem UUID: bf3db726-f1fa-4a6c-a64b-fe48bbfa9a99 | ||
115行目: | 111行目: | ||
<br> | <br> | ||
==== | ==== ルートディレクトリのコピー(SDカードからSSDへ) ==== | ||
/ | SDカードのルートパーティションにおいて、/bootディレクトリを除くルートディレクトリの全てのデータをSSDへコピーする。<br> | ||
<br> | <br> | ||
まず、SSDのパーティションをアンマウントする。 | まず、SSDのパーティションをアンマウントする。 | ||
sudo umount /dev/sda1 | sudo umount /dev/sda1 | ||
<br> | <br> | ||
次に、マウントポイントを作成する。( | 次に、マウントポイントを作成する。(ここでは、/tmpディレクトリ内に作成する)<br> | ||
# マウントポイントの作成 | |||
sudo mkdir /tmp/mmcrf /tmp/ssdrf | sudo mkdir /tmp/mmcrf /tmp/ssdrf | ||
sudo mount /dev/mmcblk0p2 /tmp/mmcrf | |||
# SDカードのRaspbianのルートディレクトリのパーティションをマウント | |||
sudo mount /dev/mmcblk0p2 /tmp/mmcrf | |||
# SSDのルートディレクトリのパーティションをマウント | |||
sudo mount /dev/sda1 /tmp/ssdrf | sudo mount /dev/sda1 /tmp/ssdrf | ||
<br> | <br> | ||
上記で作成した/tmp/ | 上記で作成した/tmp/mmcrfディレクトリから/tmp/ssdrfディレクトリへ以下のコマンドを実行して全てコピーする。<br> | ||
cd /tmp/mmcrf | cd /tmp/mmcrf | ||
sudo tar --backup -c * | sudo tar -C /tmp/ssdrf -xv | sudo tar --backup -c * | sudo tar -C /tmp/ssdrf -xv | ||
135行目: | 135行目: | ||
sudo e2fsck -f /dev/sda1 | sudo e2fsck -f /dev/sda1 | ||
<br> | <br> | ||
cmdline. | ==== 自動マウントの設定 ==== | ||
/etc/fstabファイルにSSDのPARTUUIDを記述することにより、起動時に自動マウントすることができる。<br> | |||
PARTUUIDを記述する理由は、SSDのフルパス(例 : /dev/sda1等)が変更されてもマウントできるからである。<br> | |||
<br> | |||
ブートファイルである/boot/cmdline.txtファイルを編集する。(必ず、/boot/cmdline.txtファイルのバックアップを作成すること)<br> | |||
/boot/cmdline.txtファイルの内容において、<code>root=/dev/mmcblk0p2</code>を<code>root=PARTUUID=xxxxxxxx-xx</code>に変更する。<br> | |||
(PARTUUIDの値は、blkidコマンドを実行することで表示される)<br> | (PARTUUIDの値は、blkidコマンドを実行することで表示される)<br> | ||
sudo cp /boot/cmdline.txt /boot/cmdline.txt.org | sudo cp /boot/cmdline.txt /boot/cmdline.txt.org | ||
sudo nano | sudo nano /boot/cmdline.txt | ||
# 変更前 | # 変更前 | ||
dwc_otg.lpm_enable=0 console=serial0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait | dwc_otg.lpm_enable=0 console=serial0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait | ||
# 変更後 | # 変更後 | ||
dwc_otg.lpm_enable=0 console=serial0,115200 console=tty1 root=PARTUUID=xxxxxxxx-xx rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait | dwc_otg.lpm_enable=0 console=serial0,115200 console=tty1 root=PARTUUID=xxxxxxxx-xx rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait | ||
<br> | <br> | ||
次に、/etc/fstabファイルを編集して、PARTUUIDの値を変更する。<br> | |||
もし、/etc/fstabファイルの設定に誤りがある場合、再起動時にemergency modeで起動されるので、必ずfstabファイルのバックアップを作成すること。<br> | |||
sudo cp /etc/fstab /etc/fstab.org | sudo cp /etc/fstab /etc/fstab.org | ||
sudo nano /etc/fstab | sudo nano /etc/fstab | ||
# proc /proc proc defaults 0 0 | # proc /proc proc defaults 0 0 | ||
PARTUUID=xxxxxxxx-xx / ext4 defaults,noatime 0 1 | PARTUUID=xxxxxxxx-xx /boot vfat defaults 0 2 # SDカード内のbootディレクトリ | ||
PARTUUID=xxxxxxxx-xx / ext4 defaults,noatime 0 1 # SSD内のルートディレクトリ | |||
<br> | <br> | ||
最後に、Raspbianを再起動する。<br> | |||
sudo reboot | sudo reboot | ||
<br><br> | |||
== SDカード不要 SSD起動ディスク化 == | |||
Raspberry Pi 3 model Bにおいて、USBブートは実験的であり設定をOTP(One Time Programmable)メモリに書き込むと<br> | |||
2度と元の設定には戻せなくなる。(model B+では標準でUSBブートが可能になった)<br> | |||
但し、USBブートはmicroSDカードが挿入されていない場合のみ、USB接続した外部ストレージからの起動を可能にするものであり、<br> | |||
今まで通りmicroSDカードを挿入すればUSBブートは無効になる。<br> | |||
<br> | |||
==== Program USB Boot Modeの有効化 ==== | |||
まず、現在のOTPメモリの設定を確認するため、以下のコマンドを実行する。<br> | |||
17:1020000aが表示されていれば、Program USB Boot Modeが無効であることを表している。<br> | |||
sudo vcgencmd otp_dump | grep 17: | |||
<br> | |||
次に、Program USB Boot Modeを有効にするため、bootディレクトリに存在するconfig.txtファイルを編集する。<br> | |||
また、USBからの起動を待つタイムアウトを既定の2秒から5秒に延長するオプションも設定する。<br> | |||
sudo nano /boot/config.txt | |||
最下行に以下を入力する | |||
# Enable usb boot | |||
program_usb_boot_mode=1 | |||
program_usb_boot_timeout=1 #USBブートの起動を待つタイムアウトを5秒に延長 | |||
<br> | |||
Raspberry Piを再起動する。<br> | |||
sudo shutdown -r now | |||
<br> | |||
1度OTPメモリに書き込めば、Program USB Boot Modeの設定は不要なので、<br> | |||
再度、config.txtファイルを開いて program_usb_boot_mode=1のみをコメントアウトして保存する。<br> | |||
<br> | |||
OTPメモリの設定が変更されているか確認するため、以下のコマンドを実行する。<br> | |||
sudo vcgencmd otp_dump | grep 17: | |||
17:3020000aが表示されていれば、Program USB Boot Modeが有効であることを表す。<br><br> | |||
<br> | |||
==== SSDへRaspbianをインストール ==== | |||
外部ストレージとしてUSB2.0で接続可能な外付タイプのSSDを使用する。<br> | |||
SSDにRaspbianをインストールする方法は2種類存在し、両方を以下に記載する。<br> | |||
<br> | |||
* zipファイルからSSDにインストールする方法 | |||
:# まず、Raspberry Piの[https://www.raspberrypi.org/downloads/raspbian/ 公式Webサイト]にアクセスして、<br>最新のRaspbian Buster with desktop and recommended software(2019/6/26現在)をダウンロードする。<br>このとき、zipファイルは解凍しなくてもよい。<br> | |||
:# 次に、RaspbianをSSD(またはSDカード)に書き込むソフトウェアである[https://www.balena.io/etcher/ Etcher]をダウンロードしてインストールする。<br> | |||
:# 最後に、Etcherを起動してダウンロードしたRaspbianをSSDへ書き込む。<br> | |||
<br> | |||
* SD Card Copierでクローンを作成する方法 | |||
:SSDへのインストールにはSD Card Copierを使うので、起動中のRaspbianがSSDをブロックデバイスとして認識できれば、<br> | |||
:事前のパーティション操作やフォーマットは不要である。<br> | |||
:SSDのUSBコネクタをRaspberry PiのUSB端子に挿入すると、[リムーバブルメディアの挿入]画面が開くので、[キャンセル]ボタンを押下する。 | |||
: [[ファイル:Raspberry-Pi-Setup-01.png|center]]<br><br> | |||
:# まず、デスクトップ画面のタスクバー左端のメニューアイコンから[アクセサリ]→[SD Card Copier]を押下する。 | |||
:# 次に、[SD Card Copier]画面にある[Copy From Device:]項目のプルダウンから、<br>コピー元のmicroSDカードのデバイスファイル名(/dev/mmcblk0)″を選択する。 | |||
:# 同様に、[Copy To Device:]項目のプルダウンから、コピー先のSSDのデバイスファイル名(/dev/sda)を選択する。<br>[[ファイル:Raspberry-Pi-Setup-02.png|フレームなし|中央|Raspberry-Pi-Setup-02.png]]<br>[[ファイル:Raspberry-Pi-Setup-03.png|フレームなし|中央|Raspberry-Pi-Setup-03.png]] | |||
:# コピー先がmicroSDカードではないので、[New Partition UUIDs]チェックボックスにはチェックを入れずに[Start]ボタンを押下する。 | |||
:# "これはデバイス上のすべてのコンテンツを消去します。よろしいですか?"というメッセージが表示されるので、[Yes]ボタンを押下する。 | |||
:# 準備ができると2つのパーティションがコピーされる。 | |||
:# [Copy complete]画面が表示されたら[OK]ボタンを押下、[Close]ボタンを押下して[SD Card Copier]を終了する。 | |||
<br> | |||
==== ブートファイルの設定 ==== | |||
ブートファイルである/boot/cmdline.txtを、以下のように編集する。(cmdline.txtファイルはバックアップを作成すること)<br> | |||
/boot/cmdline.txtファイルの内容において、<code>root=/dev/mmcblk0p2</code>を<code>root=PARTUUID=xxxxxxxx-xx</code>に変更する。<br> | |||
PARTUUIDの値は、<code>blkid</code>コマンドを実行して確認すること。<br> | |||
sudo cp /boot/cmdline.txt /boot/cmdline.txt.org | |||
sudo nano /boot/cmdline.txt | |||
# 変更前 | |||
dwc_otg.lpm_enable=0 console=serial0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait | |||
# 変更後 | |||
dwc_otg.lpm_enable=0 console=serial0,115200 console=tty1 root=PARTUUID=xxxxxxxx-xx rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait | |||
<br> | |||
==== SSDからRaspbianを起動 ==== | |||
まず、Raspbianをシャットダウンして、Raspberry PiからmicroSDカードを取り外す。<br> | |||
<br> | |||
次に、SSDはUSB端子に接続したまま電源を入れて、Raspbianが起動すれば完了である。<br> | |||
<br> | |||
最後に、SSDのパーティション構成とマウント状況を確認するため、以下のコマンドを実行する。<br> | |||
sudo lsblk | |||
<br><br> | <br><br> | ||
__FORCETOC__ | __FORCETOC__ | ||
[[カテゴリ:Raspberry_Pi]] | [[カテゴリ:Raspberry_Pi]] |
2020年11月18日 (水) 22:37時点における最新版
概要
microSDカードには書き込み回数の上限や劣化による寿命があり、起動しなくなる可能性がある。
そこで、USB接続したSSD等の外部ストレージからRaspbianを起動することで寿命を延ばすことができる。
SDカード必要 SSD起動ディスク化
デバイス名の確認
以下のコマンドを実行する。
sudo fdisk -l | grep /dev/sda # 出力 Disk /dev/sda: 111.8 GiB, 120034121728 bytes, 234441644 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disklabel type: dos Disk identifier: 0x3d0e23d3
パーティションの作成
SSDのパーティションを作成するため、以下のコマンドを実行する。
# パーティションテーブルの設定を行う sudo fdisk /dev/sda
続いて、以下のように設定する。
# dでパーティションを削除する Command (m for help): d Selected partition 1 Partition 1 has been deleted. # pで現在の状態を確認 Command (m for help): p Disk /dev/sda: 3.7 TiB, 4000787030016 bytes, 7814037168 sectors 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: gpt Disk identifier: F3BA4D9C-C2F7-43FF-837C-D3BFBFBF5C1D # nでパーティションを作成(何も入力しない場合は全てデフォルトとなる) Command (m for help): n Partition number (1-128, default 1): 1 First sector (34-7814037134, default 2048): 2048 Last sector, +sectors or +size{K,M,G,T,P} (2048-7814037134, default 7814037134): Created a new partition 1 of type 'Linux filesystem' and of size 3.7 TiB. # pで作成したパーティションを確認する Command (m for help): p Disk /dev/sda: 3.7 TiB, 4000787030016 bytes, 7814037168 sectors 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: gpt Disk identifier: F3BA4D9C-C2F7-43FF-837C-D3BFBFBF5C1D Device Start End Sectors Size Type /dev/sda1 2048 7814037134 7814035087 3.7T Linux filesystem # wで変更を書き込む Command (m for help): w The partition table has been altered! Calling ioctl() to re-read partition table. Syncing disks.
次に、上記で作成したパーティションを確認するため、以下のコマンドを実行する。
sudo fdisk -l # 出力 ...省略 Disk /dev/sda: 111.8 GiB, 120034121728 bytes, 234441644 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disklabel type: dos Disk identifier: 0x2a6be21a Device Boot Start End Sectors Size Id Type /dev/sda1 2048 234441643 234439596 111.8G 83 Linux
lsblk # 結果 NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 111.8G 0 disk └─sda1 8:1 0 111.8G 0 part mmcblk0 179:0 0 29.9G 0 disk ├─mmcblk0p1 179:1 0 42.9M 0 part /boot └─mmcblk0p2 179:2 0 29.8G 0 part
パーティションのフォーマット
SSDに作成したパーティションをフォーマットするため、以下のコマンドを実行する。
ここでは、ext4でフォーマットを実行している。
sudo mkfs.ext4 /dev/sda1 # 出力 mke2fs 1.43.4 (31-Jan-2017) Found a dos partition table in /dev/sda1 Proceed anyway? (y,N) y ← yを入力 Creating filesystem with 29305205 4k blocks and 7331840 inodes Filesystem UUID: bf3db726-f1fa-4a6c-a64b-fe48bbfa9a99 Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 4096000, 7962624, 11239424, 20480000, 23887872 Allocating group tables: done Writing inode tables: done Creating journal (131072 blocks): done Writing superblocks and filesystem accounting information: done
ルートディレクトリのコピー(SDカードからSSDへ)
SDカードのルートパーティションにおいて、/bootディレクトリを除くルートディレクトリの全てのデータをSSDへコピーする。
まず、SSDのパーティションをアンマウントする。
sudo umount /dev/sda1
次に、マウントポイントを作成する。(ここでは、/tmpディレクトリ内に作成する)
# マウントポイントの作成 sudo mkdir /tmp/mmcrf /tmp/ssdrf # SDカードのRaspbianのルートディレクトリのパーティションをマウント sudo mount /dev/mmcblk0p2 /tmp/mmcrf # SSDのルートディレクトリのパーティションをマウント sudo mount /dev/sda1 /tmp/ssdrf
上記で作成した/tmp/mmcrfディレクトリから/tmp/ssdrfディレクトリへ以下のコマンドを実行して全てコピーする。
cd /tmp/mmcrf sudo tar --backup -c * | sudo tar -C /tmp/ssdrf -xv
ディスクの調整を行う。
sudo umount /dev/sda1 sudo e2fsck -f /dev/sda1
自動マウントの設定
/etc/fstabファイルにSSDのPARTUUIDを記述することにより、起動時に自動マウントすることができる。
PARTUUIDを記述する理由は、SSDのフルパス(例 : /dev/sda1等)が変更されてもマウントできるからである。
ブートファイルである/boot/cmdline.txtファイルを編集する。(必ず、/boot/cmdline.txtファイルのバックアップを作成すること)
/boot/cmdline.txtファイルの内容において、root=/dev/mmcblk0p2
をroot=PARTUUID=xxxxxxxx-xx
に変更する。
(PARTUUIDの値は、blkidコマンドを実行することで表示される)
sudo cp /boot/cmdline.txt /boot/cmdline.txt.org sudo nano /boot/cmdline.txt # 変更前 dwc_otg.lpm_enable=0 console=serial0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait # 変更後 dwc_otg.lpm_enable=0 console=serial0,115200 console=tty1 root=PARTUUID=xxxxxxxx-xx rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait
次に、/etc/fstabファイルを編集して、PARTUUIDの値を変更する。
もし、/etc/fstabファイルの設定に誤りがある場合、再起動時にemergency modeで起動されるので、必ずfstabファイルのバックアップを作成すること。
sudo cp /etc/fstab /etc/fstab.org sudo nano /etc/fstab # proc /proc proc defaults 0 0 PARTUUID=xxxxxxxx-xx /boot vfat defaults 0 2 # SDカード内のbootディレクトリ PARTUUID=xxxxxxxx-xx / ext4 defaults,noatime 0 1 # SSD内のルートディレクトリ
最後に、Raspbianを再起動する。
sudo reboot
SDカード不要 SSD起動ディスク化
Raspberry Pi 3 model Bにおいて、USBブートは実験的であり設定をOTP(One Time Programmable)メモリに書き込むと
2度と元の設定には戻せなくなる。(model B+では標準でUSBブートが可能になった)
但し、USBブートはmicroSDカードが挿入されていない場合のみ、USB接続した外部ストレージからの起動を可能にするものであり、
今まで通りmicroSDカードを挿入すればUSBブートは無効になる。
Program USB Boot Modeの有効化
まず、現在のOTPメモリの設定を確認するため、以下のコマンドを実行する。
17:1020000aが表示されていれば、Program USB Boot Modeが無効であることを表している。
sudo vcgencmd otp_dump | grep 17:
次に、Program USB Boot Modeを有効にするため、bootディレクトリに存在するconfig.txtファイルを編集する。
また、USBからの起動を待つタイムアウトを既定の2秒から5秒に延長するオプションも設定する。
sudo nano /boot/config.txt
最下行に以下を入力する # Enable usb boot program_usb_boot_mode=1 program_usb_boot_timeout=1 #USBブートの起動を待つタイムアウトを5秒に延長
Raspberry Piを再起動する。
sudo shutdown -r now
1度OTPメモリに書き込めば、Program USB Boot Modeの設定は不要なので、
再度、config.txtファイルを開いて program_usb_boot_mode=1のみをコメントアウトして保存する。
OTPメモリの設定が変更されているか確認するため、以下のコマンドを実行する。
sudo vcgencmd otp_dump | grep 17:
17:3020000aが表示されていれば、Program USB Boot Modeが有効であることを表す。
SSDへRaspbianをインストール
外部ストレージとしてUSB2.0で接続可能な外付タイプのSSDを使用する。
SSDにRaspbianをインストールする方法は2種類存在し、両方を以下に記載する。
- zipファイルからSSDにインストールする方法
- SD Card Copierでクローンを作成する方法
- SSDへのインストールにはSD Card Copierを使うので、起動中のRaspbianがSSDをブロックデバイスとして認識できれば、
- 事前のパーティション操作やフォーマットは不要である。
- SSDのUSBコネクタをRaspberry PiのUSB端子に挿入すると、[リムーバブルメディアの挿入]画面が開くので、[キャンセル]ボタンを押下する。
- まず、デスクトップ画面のタスクバー左端のメニューアイコンから[アクセサリ]→[SD Card Copier]を押下する。
- 次に、[SD Card Copier]画面にある[Copy From Device:]項目のプルダウンから、
コピー元のmicroSDカードのデバイスファイル名(/dev/mmcblk0)″を選択する。 - 同様に、[Copy To Device:]項目のプルダウンから、コピー先のSSDのデバイスファイル名(/dev/sda)を選択する。
- コピー先がmicroSDカードではないので、[New Partition UUIDs]チェックボックスにはチェックを入れずに[Start]ボタンを押下する。
- "これはデバイス上のすべてのコンテンツを消去します。よろしいですか?"というメッセージが表示されるので、[Yes]ボタンを押下する。
- 準備ができると2つのパーティションがコピーされる。
- [Copy complete]画面が表示されたら[OK]ボタンを押下、[Close]ボタンを押下して[SD Card Copier]を終了する。
ブートファイルの設定
ブートファイルである/boot/cmdline.txtを、以下のように編集する。(cmdline.txtファイルはバックアップを作成すること)
/boot/cmdline.txtファイルの内容において、root=/dev/mmcblk0p2
をroot=PARTUUID=xxxxxxxx-xx
に変更する。
PARTUUIDの値は、blkid
コマンドを実行して確認すること。
sudo cp /boot/cmdline.txt /boot/cmdline.txt.org sudo nano /boot/cmdline.txt # 変更前 dwc_otg.lpm_enable=0 console=serial0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait # 変更後 dwc_otg.lpm_enable=0 console=serial0,115200 console=tty1 root=PARTUUID=xxxxxxxx-xx rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait
SSDからRaspbianを起動
まず、Raspbianをシャットダウンして、Raspberry PiからmicroSDカードを取り外す。
次に、SSDはUSB端子に接続したまま電源を入れて、Raspbianが起動すれば完了である。
最後に、SSDのパーティション構成とマウント状況を確認するため、以下のコマンドを実行する。
sudo lsblk