「SSDからRaspbianを起動する方法」の版間の差分

提供:MochiuWiki - SUSE, Electronic Circuit, PCB
ナビゲーションに移動 検索に移動
 
(同じ利用者による、間の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
   
   
  --結果--
  # 出力
Device        Boot  Start      End  Sectors  Size Id Type
/dev/mmcblk0p1        2048  3656250  3654203  1.8G  e W95 FAT16 (LBA)
/dev/mmcblk0p2      3656251 123494399 119838149 57.1G  5 Extended
/dev/mmcblk0p5      3661824  3727357    65534  32M 83 Linux
/dev/mmcblk0p6      3727360  3868671    141312  69M  c W95 FAT32 (LBA)
/dev/mmcblk0p7      3874816 123494399 119619584  57G 83 Linux
  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>
続いて、以下のように設定する。<br>
  # d でパーティションを削除する
  # 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 で現在の状態を確認
  # 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 でパーティションを作成(何も入力しない場合は全てデフォルトとなる)
  # 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 で作成したパーティションを確認する
  # 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 で変更を書き込む
  # 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>
===== 作成したパーティションの確認 =====
上記で作成したパーティションを確認するため、以下のコマンドを実行する。<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  58.9G  0 disk  
  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>
 
==== パーティションのフォーマット ====
===== パーティションのフォーマット(ext4) =====
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  '''←"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へ) ====
/etc/fstabにSSDのPARTUUIDを登録することにより、起動時に自動マウントすることができる。<br>
SDカードのルートパーティションにおいて、/bootディレクトリを除くルートディレクトリの全てのデータをSSDへコピーする。<br>
PARTUUIDを登録する理由は、SSDのフルパスが変更されてもマウントできるからである。<br>
<br>
<br>
まず、SSDのパーティションをアンマウントする。
まず、SSDのパーティションをアンマウントする。
  sudo umount /dev/sda1
  sudo umount /dev/sda1
<br>
<br>
次に、マウントポイントを作成する。(ここでは、tmpディレクトリ内に作成する)<br>
次に、マウントポイントを作成する。(ここでは、/tmpディレクトリ内に作成する)<br>
# マウントポイントの作成
  sudo mkdir /tmp/mmcrf /tmp/ssdrf
  sudo mkdir /tmp/mmcrf /tmp/ssdrf
  sudo mount /dev/mmcblk0p2 /tmp/mmcrf   ←Raspbian OSのルートディレクトリをマウント
# SDカードのRaspbianのルートディレクトリのパーティションをマウント
  sudo mount /dev/mmcblk0p2 /tmp/mmcrf
# SSDのルートディレクトリのパーティションをマウント
  sudo mount /dev/sda1 /tmp/ssdrf
  sudo mount /dev/sda1 /tmp/ssdrf
<br>
<br>
上記で作成した/tmp/mmcrfから/tmp/ssdrfへtarコマンドを使用して全てコピーする。
上記で作成した/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.txtを編集する。(cmdline.txtのバックアップを作成すること)<br>
 
cmdline.txtの中にあるroot=/dev/mmcblk0p2をroot=PARTUUID=xxxxに変更する。<br>
==== 自動マウントの設定 ====
/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 /tmp/boot/cmdline.txt
  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>
fstabを編集して、PARTUUIDの値を変更する。<br>
次に、/etc/fstabファイルを編集して、PARTUUIDの値を変更する。<br>
fstabの設定に誤りがある場合、再起動時にemergency modeで起動されるので、必ずfstabファイルのバックアップを取ること。<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 OSを再起動する。<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/mmcblk0p2root=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にインストールする方法
  1. まず、Raspberry Piの公式Webサイトにアクセスして、
    最新のRaspbian Buster with desktop and recommended software(2019/6/26現在)をダウンロードする。
    このとき、zipファイルは解凍しなくてもよい。
  2. 次に、RaspbianをSSD(またはSDカード)に書き込むソフトウェアであるEtcherをダウンロードしてインストールする。
  3. 最後に、Etcherを起動してダウンロードしたRaspbianをSSDへ書き込む。


  • SD Card Copierでクローンを作成する方法
SSDへのインストールにはSD Card Copierを使うので、起動中のRaspbianがSSDをブロックデバイスとして認識できれば、
事前のパーティション操作やフォーマットは不要である。
SSDのUSBコネクタをRaspberry PiのUSB端子に挿入すると、[リムーバブルメディアの挿入]画面が開くので、[キャンセル]ボタンを押下する。
Raspberry-Pi-Setup-01.png


  1. まず、デスクトップ画面のタスクバー左端のメニューアイコンから[アクセサリ]→[SD Card Copier]を押下する。
  2. 次に、[SD Card Copier]画面にある[Copy From Device:]項目のプルダウンから、
    コピー元のmicroSDカードのデバイスファイル名(/dev/mmcblk0)″を選択する。
  3. 同様に、[Copy To Device:]項目のプルダウンから、コピー先のSSDのデバイスファイル名(/dev/sda)を選択する。
    Raspberry-Pi-Setup-02.png

    Raspberry-Pi-Setup-03.png
  4. コピー先がmicroSDカードではないので、[New Partition UUIDs]チェックボックスにはチェックを入れずに[Start]ボタンを押下する。
  5. "これはデバイス上のすべてのコンテンツを消去します。よろしいですか?"というメッセージが表示されるので、[Yes]ボタンを押下する。
  6. 準備ができると2つのパーティションがコピーされる。
  7. [Copy complete]画面が表示されたら[OK]ボタンを押下、[Close]ボタンを押下して[SD Card Copier]を終了する。


ブートファイルの設定

ブートファイルである/boot/cmdline.txtを、以下のように編集する。(cmdline.txtファイルはバックアップを作成すること)
/boot/cmdline.txtファイルの内容において、root=/dev/mmcblk0p2root=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