Enginear
902 文字
5 分
OrangePi3BをeMMCからBootする

先日買ったOrangePi3Bには専用のeMMCインターフェースが存在している。 OrangePi3Bの背面実装画像 今回アリエクから購入したOrangePiは32GBのeMMCがセットになっている商品の為、MicroSDカードを使わずeMMCを使ったUbuntuの実行方法について紹介。

注意#

今回行った手順は公式のユーザーマニュアルを元に行った物である。ユーザーマニュアルが更新される等により今回記載している方法と異なって居る場合があるので留意して欲しい。

eMMCへの焼き込み手段#

eMMCへの焼き込み手段は大まかに二通り存在する

  • 公式の提供するツールを使う(WindowsOSが必要)
  • SDカードからLinuxを起動してOrangePiからeMMCへ書き込む

前者のツールを使う手段はマニュアルを見た感じ雑に出来そうな所があったが、USB-AMale to USB-AMaleケーブルが必要になる。また、Windowsのツールがバリバリ中国語&クローズドソースっぽく若干怖かった為、今回は後者のSDカードでLinuxを起動した状態からの書き込みを行った。当然Linuxが起動出来るMicroSDカードが一枚必要になるので注意。

準備する物#

今回はRockChip向けにパッチが当てられたUbuntu22.04LTSを使っていきます。SDカードで実行するOSもeMMCに書き込むOSも両方このOSの想定です。

手順#

MicroSDカードヘのUbuntuインストールは調べて行って下さい。山程転がっています。

SDカードにUbuntuを保存#

現在OrangePi3BのMicroSDカードから起動しているUbuntuに、ubuntu-22.04.3-preinstalled-server-arm64-orangepi-3b.img.xzを保存します。SDカードに同じOSを焼いていれば手元にあるはずなので、sftp等でOrangePiに転送してください。何かしらの理由で転送が出来ない場合はcurlやwgetで再度リポジトリのリリースから取得を行ってSDカード上に保存して下さい。

eMMCを接続#

一度SDカードから実行しているOrangePiの電源を落として、基板背面のeMMCインターフェースにeMMCを取り付け、その後再起動。eMMCには有効なOSが入っていないはずなので再度SDカードから起動が行われる。

.xzの解凍#

ここからSDカードのDocumentフォルダ直下にubuntu-22.04.3-preinstalled-server-arm64-orangepi-3b.img.xzが保存されていると仮定します。 まず以下のコマンドで.xzを解凍

xz -d ubuntu-22.04.3-preinstalled-server-arm64-orangepi-3b.img.xz

解凍後Document直下にubuntu-22.04.3-preinstalled-server-arm64-orangepi-3b.imgが存在する事を確認する。

eMMDの接続ノードを確認#

以下のコマンドでeMMCのノードを確認する。

ls /dev/mmcblk*boot0 | cut -c1-12

実行後/dev/mmcblk0といった具合にeMMCの接続先が表示される。このディレクトリは今後のコマンドで使用するので把握する事。

eMMCの初期化#

以下のコマンドを使い接続しているeMMCの初期化を行います。

sudo dd bs=1M if=/dev/zero of='先程のノード' count=1000 status=progress
sudo sync

若干時間がかかる筈。

Ubuntuのコピー#

ddコマンドを用いてeMMCへUbuntuを書き込む

sudo dd bs=1M if=ubuntu-22.04.3-preinstalled-server-arm64-orangepi-3b.img of='先程のノード' status=progress
sudo sync

こちらもまあまあ時間がかかる筈。

コマンドが完了したらシャットダウンしてSDカードを抜いてから再度起動したらeMMCからOSが起動する。サーバーOSを焼いた場合ユーザー名パスワード共にubuntuとなっている。
ドキュメント読むのは面倒だったが実際やる分にはそこまで難しくなかった。