この記事はSeeed UG Advent Calendar 2022 18日の記事です。
今更ながらJetson nanoを触ってみたくなり、Jetson nano開発者キットを探そうとすると在庫が全然なくて買えないんですよね…(執筆時点では値上げして販売再開されましたね)
そんななか、今年に入ってSeeedさんからJetsonモジュールを搭載したreComputerが発売されました。
まだJetson nano開発者キットの在庫がないときに試しに一番安いJ1010を買ってみました。(Bazaarで買ったのでついでに何個か小物買いました)
販売再開されたJetson Nano開発者キットの価格よりは割高ですが、蓋付きのアルミケースがあることを考えると値段としては妥当じゃないかなと思います。
でこのreComputerがJetson Nano開発者キットと大きく違う点がデフォルトのブートデバイスがeMMCであることです。
電源入れればすぐ起動することができるのはメリットですが、16GBしかないのでガッツリ色々ソフトを入れるとストレージが圧倒的に足りません。
というわけでガッツリ遊びたければディスク拡張をしていきたいわけです。
それで調べてみたらSSDでディスクを拡張する方法がありますが、残念ながら今回買ったJ1010はSSD接続用の端子がないのでこの方法が使えません…
というわけでUSBブートさせる方法をさがしてドキュメントが見つかりましたが、説明がよくわからなくてうまくいきませんでした…
なので今回はうまくいった拡張方法を書いておきます。
用意するもの
用意するのは16GBより大きいサイズのUSBメモリーだけです。今回は64GBのUSBを用意しました。
クリーンインストール
まずは以下の記事を参考にOSをクリーンインストールします。USBケーブルの選定で地味に苦戦しましたがM5 Stackで使うType-Cケーブルだと接続できました。
USBをフォーマットする
今度はUSBをフォーマットします。USBのボリュームを選択して Format Volume
をクリックしてext4形式にフォーマットします。
ボリューム名は自分が分かればいいので何でもOKです。
フォーマット後、ディスクがマウントされてないときは画像の赤丸の箇所が再生ボタンのマークになっているのでクリックして四角なっていることを確認します。
また、あとで使用するのでデバイスのパスも確認しておきます。
USBから起動できるようにする
以下のコマンドでセットアップに必要なスクリプト一式をクローンします。
git clone https://github.com/limengdu/rootOnUSB.git
クローンしたら起動時の早い段階でUSBが認識されるようにする設定をするスクリプトを実行します。
cd rootOnUSB ./addUSBToInitramfs.sh
以下のスクリプトを実行して起動ファイル一式をUSBにコピーします。引数に指定しているデバイスのパスはフォーマット時に確認したものに書き換えます
./copyRootToUSB.sh /dev/sda1
最後にUSBのrootfsから起動されるようにするために /boot/extlinux/extlinux.conf
の APPEND
の行を以下に書き換えます。
この他にもデバイスのUUIDを指定する方法やディスクのボリューム名を指定する方法があります。
APPEND ${cbootargs} root=/dev/sda1 rootwait rootfstype=ext4
再起動後、以下のようにルートのパス( /
)がUSBでマウントされてたらUSBブートは正常に成功しています。
以下はJetPack(Jetson向けのSDK一式)をインストールしたあとのディスク容量ですがそれでもディスク容量に問題ないことが確認できました。
これでディスク容量に悩まされることなく開発を進めることができますね!
$ df -h . Filesystem Size Used Avail Use% Mounted on /dev/sda1 57G 12G 43G 21% /