tsato_814
2022年6月17日 0時01分
お世話になります。
佐藤と申します。
当方では、Armadillo-X1 を使った IoT機器を生産させて頂いています。
カスタマイズされた、Linuxカーネルイメージを、
以下のようにして自社のwebサイトからダウンロードし、
書き換えています。
-------------------------------------------------------------
wget https://xxx.xxx/xxx/uImage -O /home/tmp/uImage
mount -t vfat /dev/mmcblk2p1 /mnt
cp /home/tmp/uImage /mnt/uImage
umount /mnt
-------------------------------------------------------------
(サイトのurlは伏せさせていただきました)
生産工場の都合により、ネットからは、
光回線 → ONU → 有線LAN → WiFiルータ → WiFi → PC → 有線LAN → Armadillo-X1
の経路でダウンロードしていますが、途中経路の不調により、
ダウンロードがうまくいかず、エラーとなった模様で
(なお、エラーとなった部分は、上記の前後にも数か所あったことを
実際に確認していますが、その際のログを保存しておらず、
記憶に頼っているのみです)、
それを気付かずにrebootしたところ、カーネルが壊れてしまったようで、
添付ファイルのようなメッセージが出力され、起動できませんでした。
(同様の現象が2台発生したため、1台目を「1台目の電源投入時画面出力.txt」、
2台目を「2台目の電源投入時画面出力.txt」としています。)
その対応として、
工場出荷イメージと同じイメージのインストールディスクイメージを作成し、
SDカードに書き込んで、インストールディスクを作り、ひとまず工場出荷状態に
復旧させてから、以降通常の作業することで、なんとかならないか、
と考えました。
ところが、Armadillo-X1 であるため、SDスロットがないわけですが、
動作する「SD スロット拡張ボード」も現在なくなってしまったため、
実際にはSDから復旧できない状況です。
U-Bootの環境変数のデフォルト値を変更することで、USBメモリから起動するように
変更する方法もある旨、拝見しましたが、
おそらく、あらかじめその変更をしていないと不可なのではと予想しています。
とりあえず、「SD スロット拡張ボード」を手配するよう動いていますが、
何か他に方法があるようでしたら、ご教示頂きたくお願い申し上げます。
なお、先程の画面出力の最後は、U-Boot コマンドプロンプトのようだったので、
試しに、各種U-Bootコマンドを入力した際の結果も、
「1台目のU-Bootコマンド入力時ログ.txt」と
「2台目のU-Bootコマンド入力時ログ.txt」に添付しておきます。
この際、helpコマンドを入力してみてわかったのですが、
「usbboot」というコマンドがあるらしいのですが、これを使ってUSBメモリから
インストールしたり、あるいはSDブートしたりできないか、
と淡い期待を抱いています。(「ums」コマンドも必要?)
コメント
tsato_814
2022年6月21日 17時15分
入江様
アドバイスありがとうございます。佐藤です。
急遽の出張が入ったため対応できず、返事が遅れてしまい、申し訳ありません。
ご教示して頂いた通りやってみましたが、うまくいきませんでした。
その際のログを添付します。
もしかしたら、カーネルイメージだけではなく、
他の部分も壊してしまっていた可能性もあります。
前回書き忘れましたが、X1の型番は、「AX1110-U01Z」(メモリ 1GB、WLAN コンボ搭載)です。
拡張ボードは載っていません。
ログで気になるのは、
Booting from net ...
となっていることですが、
「usb start」実行時のメッセージからすると、
USBの番号の指定が違うとか?よくわかりませんが。
あとは、
** Unable to read file boot.scr **
とありますが、これは前回添付したログにもあったので
関係ないかもしれません。
お手数をおかけしますが、もし何かわかればアドバイス頂けると助かります。
ファイル | ファイルの説明 |
---|---|
USBメモリからブート?した際のログ.txt |
at_akihito.irie
2022年6月17日 10時51分
入江です。
> 何か他に方法があるようでしたら、ご教示頂きたくお願い申し上げます。
カーネルイメージだけでしたら、以下の手順でUSBメモリ内のuImageを使用し
て(u-boot、dtb、rootfsはeMMC内のものを使用)起動できますのでお試しくだ
さい。
まず、適当なUSBメモリを用意します。
uImageが保存できればいいので容量は問いません。
そのUSBメモリをATDEなどでext4でフォーマットします。
以下はATDEに接続したUSBメモリが/dev/sdbとして認識された例です。
環境によって異なりますので、適宜読み替えてください。
その後、sdb1にuImageを配置してください。
USBメモリをArmadillo-X1に挿入し、u-bootで以下のコマンドを実行してください。
打ち間違いやすいのでコピーアンドペーストすることをおすすめします。
これでuImageのみUSBメモリのものを使用して起動できるはずです。
起動したら、eMMC内のuImageを正しいものに書き換えて、USBメモリを抜いた
状態で正しく起動するかご確認ください。
上記手順では
saveenv
していないので、次回起動時には環境変数は元に戻っています。