酒飲んで、車いじって、トロンボーン吹いて、寝る。そんな生活に憬れる今日この頃。
日記の更新は気の向くまま、つれづれなるままに・・・

Raspberry PiのシステムOSをUSBメモリに移動して起動させる

Raspberry Piは通常SDカード上にパーティションを作成して起動するのだが、より安価なUSBカードへOSを移動させて起動することにした。

参考にしたのはこちら

Raspberry Pi USB HDD起動 

用意するのはUSBカードと起動用SDカード。起動用SDカードは64MB以上あればよいのだが、今時そんな小容量のSDカードなんか存在しないので、適当なものがあればそれでOK。それとカードリーダー2個。あとLinuxのgpartedが起動できるPC。SystemRescueCDKNOPPIX等でもよい。というかこちらのほうが便利。

  • linux PCかSystemRescueCDを起動させて、そこにカードリーダーを2個取り付けて、Raspberry PiのOS(Raspbian)がインストールしてあるSDカードと、新規に作成する起動用SDカードをそれぞれ挿入する。
  • gpartedを起動して、OSがインストールしてあるSDカードのFATパーティションを起動用SDカードにコピーする。起動用SDカードにパーティションが存在していたら、事前に削除した後にコピーをする。
  • 次にOSをコピーするUSBメモリを挿し、OSがインストールしてあるSDカードのExt4パーティションUSBメモリにコピーする。SDカードのパーティションよりUSBメモリの容量が大きければそのままコピーできるが、USBメモリの容量が小さい場合は、事前にSDカードのExt4パーティションサイズをUSBメモリ以下にしておく必要がある。いずれも、この作業は時間が掛かる(私の場合、32GB程度で8時間近く掛かった(涙)必要に応じてパーティション複数作成しておく。
  • Raspberry Piにこれまで使っていたSDカードとUSBメモリの両方を挿して起動し、fdisk -lでデバイス名を確認しておく。私の場合は/dev/sda1となっていた
  • USBメモリを一旦マウントして、USBメモリ上の/etc/fstabのルートパーティションの設定を変更した後にRaspberry Piをシャットダウン

% su
# mount -t ext4 /dev/sda1 /ext
# /mnt/etc/fstab

               #/dev/mmcblk0p2 / ext4 defaults,noatime 0 1
               /dev/sda1 / ext4 defaults,noatime 0 1

# umount /dev/sda1
# poweroff

  • 起動用のSDカードをWindows PCに接続して、その中にあるcmdline.txtをテキストエディタで開き"root=/dev/mmcblk0p2"という箇所を"root=/dev/sda1"に変更
  • 起動用SDカードとUSBメモリをRaspberry Piに接続して起動。何事もなければそのまま普通に起動してくれる

USBメモリのほうが信頼性が高い、と勝手に思い込んでいる私のような人は、ぜひお試しあれ(w