NOOBSのインストールとブートについて
ラズパイを購入したので、気になった点を書きとめます。
購入した機器
今回購入した「Raspberry Pi 3 Model B+ スターターセット」の内容は以下のとおりです。
- Raspberry Pi 3 Model B+ 本体(有線・無線LAN接続、USBポート x4)
- ケース
- ACアダプタ
- HDMIケーブル
- MicroSDHCカード16GB(NOOBSプリインストール)
手元に届くまでの時間や保障を気にしないのであれば、中華サイトの方が安く購入できるかもしれません。
ラズパイのセットアップ
ラズパイをセットアップするのに以下の機器を用意しました。
- HDMI接続可能なモニタ
- SDカードリーダー・ライター
- キーボードとマウス(USB接続)
- LANケーブル(有線接続の場合)
NOOBSプリインストールモデルを購入したので、電源投入後は画面の指示に従ってセットアップをおこないます。
セットアップ中の画面については、こちらで紹介されています。
NOOBSのインストール
NOOBSは、ラズパイにRaspbianやLibreELECなどのOSをインストールするためのソフトです。
NOOBSの動作を確認したいので、こちらを参考に現在使用しているSDカードを初期化して、NOOBSを再インストールします。
作業に必要なものは以下のとおりです。
NOOBSは「NOOBS」と「NOOBS Lite」の2種類のイメージが提供されています。ここでは「NOOBS」(v3.0.1 / 2019年4月現在)をダウンロードしてインストールします。
SDカードの構成情報の消去
ラズパイで使用していたSDカードを「ディスクの管理」で確認すると、下図のパーティション構成が確認できるので、SDカードを初期化する前に構成情報を消去します。新品のSDカードを使用する場合は、この手順は必要ありません。
以下は、Windowsでの構成情報消去の手順です。
- SDカードリーダー・ライターにSDカード(上図の16GB SDカード)をセットします。
- 「コマンドプロンプト(管理者)」を実行します。
diskpart
コマンドでディスク(SDカード)の構成情報を消去します。SDカードのデータは全て消去されるので注意してください。
C:\Windows\system32>diskpart Microsoft DiskPart バージョン 10.0.17763.1 Copyright (C) Microsoft Corporation. コンピューター: UNKO DISKPART> list disk # SDカードのディスク番号を確認します。 ディスク 状態 サイズ 空き ダイナ GPT ### ミック ------------ ------------- ------- ------- --- --- ディスク 0 オンライン 1863 GB 0 B * ディスク 1 オンライン 465 GB 0 B * ディスク 2 オンライン 465 GB 0 B * ディスク 3 オンライン 1863 GB 0 B * ディスク 4 オンライン 14 GB 7168 KB DISKPART> select disk 4 # この環境ではSDカードはディスク 4です。ディスク 4を選択します。 ディスク 4 が選択されました。 DISKPART> list disk # 選択したディスクを確認します。 ディスク 状態 サイズ 空き ダイナ GPT ### ミック ------------ ------------- ------- ------- --- --- ディスク 0 オンライン 1863 GB 0 B * ディスク 1 オンライン 465 GB 0 B * ディスク 2 オンライン 465 GB 0 B * ディスク 3 オンライン 1863 GB 0 B * * ディスク 4 オンライン 14 GB 7168 KB DISKPART> list partition # ディスク 4のパーティション構成を確認します。 Partition ### Type Size Offset ------------- ------------------ ------- ------- Partition 1 プライマリ 1821 MB 4096 KB Partition 0 拡張 13 GB 1825 MB Partition 2 論理 31 MB 1828 MB Partition 3 論理 66 MB 1860 MB Partition 4 論理 12 GB 1928 MB # 次のコマンドで選択したディスク上のデータは、すべて消去されます。 DISKPART> clean # ディスク 4の構成情報を消去します。 DiskPart はディスクを正常にクリーンな状態にしました。 DISKPART> exit # diskpartコマンドを終了します。 DiskPart を終了しています...
パーティション構成情報が「ディスクの管理」と異なりますが、diskpart
コマンドで確認した「プライマリ x1、論理 x3」が正しい構成情報になります。
SDカードの初期化
「SDメモリカードフォーマッター」で、SDカードを初期化(クイックフォーマット)します。
NOOBSのインストール
初期化したSDカード(ここでは、Hドライブ)に、展開したNOOBSをコピーします。
以上で、NOOBSのインストールは完了です。
NOOBSのブートについて
少し古い情報(2016年3月)ですが、NOOBSのブートについては、こちらが参考になりました。
低レベルモード
NOOBSをインストールしたSDカードを挿入した状態で電源を入れると、ラズパイは「低レベルモード」で起動します。
- ラズパイのROMは、SDカードの/dev/mmcblk0p1(FAT32フォーマットの基本パーティション)のbootcode.binを読み込んで実行します。
- bootcode.binはstart.elfを読み込んで実行します。start.elfが存在しない場合(NOOBSには存在しません)は、recovery.elfを読み込んで実行します。
- recovery.elfはrecovery.cmdlineを読み込み、recovery.img(Linux kernel)に引き渡してルートファイルシステムとしてrecovery.rfsを読み込みます。
- recovery.cmdlineにruninstallerが設定されている場合は「セットアップモード」に移行します。runinstallerが設定されていない場合は「リカバリモード」または「ブートモード」に移行します。初回起動時は、runinstallerが設定されているので「セットアップモード」に移行します。
セットアップモード
「セットアップモード」では、SDカードのパーティション構成を変更します。
- /dev/mmcblk0p1(FAT32フォーマットの基本パーティション)に含まれるファイルを保持できる大きさにパーティションのサイズを自動的に縮小して「RECOVERY」とラベルを付けます。
- パーティションサイズ縮小後にできた空き領域から/dev/mmcblk0p2(拡張パーティション)を作成します。
- 拡張パーティションに/dev/mmcblk0p5(サイズ32MBのext4フォーマットの論理パーティション)を作成して、「SETTINGS」とラベルを付けます。「SETTINGS」パーティションにはNOOBSの設定(どのOSがインストールされているのか、どのパーティションにインストールされているのか、どのOSがデフォルトでロードされるべきかなどの情報や、NOOBSの言語/キーボード設定などの情報)が保存されます。
- recovery.cmdlineからruninstallerを削除して、次回起動時に「セットアップモード」に移行しないようにします。「セットアップモード」が再度実行されると、拡張パーティションは初期化されます。
- 「リカバリーモード」に移行します。
リカバリーモード
OSがまだインストールされていないことをNOOBSが検出した場合、またはユーザーがShiftキーを押している場合(または他のトリガー操作が有効な場合)NOOBSは「リカバリーモード」に移行します。
- メニューからラズパイにインストールするOSを選択します。
- インストールするOSのpartitions.jsonを読み込み、論理パーティションを作成します。
- 作成した論理パーティションにインストールするOSを展開します。
- OSの展開が完了すると再起動します。