↑のようなものを作るにあたって、今まではなぜか存在しているいわゆる「Test.tar」機能を利用し、起動中のスクリプトに割り込む形で各種機能を実現していました。
しかし、このままでは
・Test.tar昨日はrootfs内のスクリプトで実行されているため、メーカーがこの機能を外すと起動できなくなる
・iCamera_appなどを使わず、自前の録画アプリなどを動かそうとすると、その前にウォッチドッグが有効化されてしまい、定期的に犬に餌を与えなければならない。それは結構めんどくさい
など、若干の問題があります。
また、ハードウェアや周辺機器を最大に生かすためにはカーネルの再構築がどうしても最終目標として挙がってきます。
かろうじて今まではinsmod可能なkoモジュールの導入に成功していましたが、カーネルを実際にコンパイルし、flashに書き込んでみると途中で止まってしまったりしてうまくいきませんでしたが、あれこれオプションをいじっていることで、どうにか単体起動な独自カーネルuImageが完成しました。
しかし、これを実際に動かすためにユーザーがFlashに書き込むというのは若干のリスクがあり、また、それを動かすためのdemo.binを生成するというのも少々めんどくさいという問題がありました。
で、今までu-bootのメッセージに出ていたこのfactory_t31_ZMC6tiIDQNという謎ファイルを探している表示について改めて調べてみることにしました。
すると、発売直後にアトムテックにオネダリしてもらったu-bootのソースコードの中に見つけました(まぁ前から見つけてはいたんだけど)
動作をよく見てみると、どうやらSDカード上にこのファイルがあると、メモリ上に全部ロードして、ヘッダチェック後、bootmコマンドで起動してくれそうな感じでした。
キタコレ!
しかし、これではコマンドラインが固定されてしまっています。
おそらくrescure mode的な使用が想定されているのでしょう。
また、出荷時にu-bootのdelayが0に指定されているため、手動でu-bootの環境を変えるのもめんどくさいです。
そこで、カーネルのコンパイルオプションとして、本来普通に起動するときに使われているパラメーターを埋め込み、さらに、起動時にu-bootから渡されるこのcmdlineを無視するように設定します(ふつうはつかわないきのうです)
こうすると、内蔵Flashのルートシステムを使い、自前のカーネルで起動させられそうです。
出来上がったuImageを「factory_t31_ZMC6tiIDQN」の名前でSDカードに配置してATOMCamに挿入して電源を入れると…
あ、なんだ。割と簡単に独自kernelで立ち上げられるじゃん。これなら本当にFlash書き換えなしでなんでも動かせるわ。 pic.twitter.com/lDo3rHB954
— はにらぼ@ひろみつ (@bakueikozoEx) October 7, 2021
見事にSDカードからカーネルを読み込んで起動してくれました!
Flashの書き換えも何も必要ではありません。ファイルを置くだけ。
Test.tarと違ってスクリプトへの割り込みやファイルシステムの縛りもない
自由なLinux環境が手に入りました。
また、これはuboot環境での仕様なので、rootfsやkernelのOTA更新によって改変される可能性がかなり低いです。素晴らしい。
とりあえずusb-hdmiを使ってHDMIディスプレイをつないで遊んでみる
我ながらどうかと思いますが、ATOMCamにUSB-HDMIを繋いでfbを生やしました
— ひろみつ (@bakueikozo) October 7, 2021
俺のスキルも上がったもんだ pic.twitter.com/P2lFbOxAyC
ATOMCam2にUSB-HDMIを繋いで、ローカルでmplayerを使って自身のRTSPを表示する冗談(0.1fpsぐらいしか出ない上にメモリ不足で落ちた)
— ひろみつ (@bakueikozo) October 7, 2021
まあ、生ストリームをパラパラと出したりするぐらいの遊びはできるのかもしれん pic.twitter.com/hYYDhEKYb7
ローカルの画像や動画が表示できるので、もしかしたらカメラの設置とかそういうのにも使えるんじゃね??とか思ってますが、もしかするとパフォーマンスが足りないかもね。
まぁ、こんな感じで割と簡単にLinuxを起動できることが確認できました。
いまはbuildrootでrootfsを作っていますが、普通にdebianとかも入れられる気がします。
ATOMCam2の暗視性性能はかなりお墨付きで、天文観察愛好家の方々がいろいろ試行錯誤して使っているのが観察されています。
このようなガチ工夫によって、何らかの新しい使い方が発見できないか、今後もいろいろ試していきますので、何かそういったことがありましたら是非教えてください。