Armadilloフォーラム

microSDカードが認識されない。

k_o

2023年11月17日 11時26分

お世話になっております。
CON1のインターフェイスにmicroSDカードを挿入したのですが、
外部記憶装置として/dev/mmcblk1に認識されないです。
何か特殊な設定とかありますでしょうか?
私たちはmicroSDカードをただの外部記憶装置として使用したいです。

コメント

at_shinya.koga

2023年11月17日 11時51分

アットマークテクノの古賀です。

k_oさん:
>お世話になっております。
>CON1のインターフェイスにmicroSDカードを挿入したのですが、
>外部記憶装置として/dev/mmcblk1に認識されないです。
>何か特殊な設定とかありますでしょうか?

取り急ぎ確認ですが、お手元の Armadillo-IoT A6E は、A6E WLAN モデルや A6E Cat.1 モデル(開発セットまたは、WLAN コンボ搭載の量産用モデル)など、WLAN + BT コンボモジュール搭載モデルでしょうか?
 https://armadillo.atmark-techno.com/armadillo-iot-a6e/models

WLAN + BT コンボモジュール搭載モデルをお使いの場合は、ハードウェア上の制限により、CON1 の microSD スロットに microSD カードを装着しても、ストレージとして使用できないのです:
 https://manual.atmark-techno.com/armadillo-iot-a6e/armadillo-iotg-a6e_p…

>私たちはmicroSDカードをただの外部記憶装置として使用したいです。

WLAN + BT コンボモジュール搭載モデルでは、コンボモジュールと CON1 の microSD カードを同時に使用できません。そのため、CON1 の microSD カードスロットに microSD カードを装着しても、インストールディスクにしか使用できないのです:
 https://manual.atmark-techno.com/armadillo-iot-a6e/armadillo-iotg-a6e_p…

つまり、お手元の Armadillo-IoT A6E が、WLAN + BT コンボモジュール搭載モデルの場合には、ハードウェア上の制限で CON1 の microSD スロットに装着した microSD カードをストレージとして使用できません。
お手元の Armadillo-IoT A6E が、A6E Cat.M1 モデルなど WLAN + BT コンボモジュールを搭載していないモデルの場合には、別の要因ですので、お知らせください。

k_o

2023年11月20日 9時44分

ご回答ありがとうございます。

今回、使用しているモデルはArmadillo-IoT A6E(AG6211-C02D) 
WLAN モデルになります。

WLAN +BTモジュールをソフトウェア的に無効にするまたは
物理的に取り外す対応をとった場合、micro SDを認識させることは
可能でしょうか?

そもそもこのモデルでは、どういった対応をとっても、micro sdを
外部記憶媒体として使用することは不可でしょうか?

at_shinya.koga

2023年11月20日 11時02分

アットマークテクノの古賀です。

k_oさん:
>ご回答ありがとうございます。
>
>今回、使用しているモデルはArmadillo-IoT A6E(AG6211-C02D) 
>WLAN モデルになります。

了解しました。ご確認有難うございます。

>WLAN +BTモジュールをソフトウェア的に無効にするまたは
>物理的に取り外す対応をとった場合、micro SDを認識させることは
>可能でしょうか?

はい。ソフトウェア的に無効にすることは可能で、インストールディスクの場合にも、その仕組みを使ってインストール時に microSD カードをストレージとして使用しています。

WLAN+BT モジュールをソフトウェア的に無効にするには、WLAN+BT コンボモジュール用の DTS overlay を使用しない設定に変更すればよいです。
 https://manual.atmark-techno.com/armadillo-iot-a6e/armadillo-iotg-a6e_p…

/boot/overlays.txt をご覧になって頂くと、armadillo-iotg-a6e-lwb5plus.dtbo が記載されているはずです。その記載を削って /boot/overlays.txt の変更内容を永続化することで、次回起動時に WLAN+BT モジュールが無効化され、microSD カードを認識するようになります:
 https://manual.atmark-techno.com/armadillo-iot-a6e/armadillo-iotg-a6e_p…

いかがでしょうか?

k_o

2023年11月21日 13時26分

お世話になっております。

/boot/overlays.txtにarmadillo-iotg-a6e-lwb5plus.dtbo は記述されており、その記述を削除したところ

無事microSDカードを認識することができました。

ご教授ありがとうございました。

k_o

2023年12月20日 9時52分

このスレッドにてご教授いただいた、

WLAN+BT コンボモジュール用の DTS overlay を使用しない設定にした場合、

microSDをストレージとして認識させることができております。
手順は下記です。

①vi /boot/overlays.txt
#右辺を削除して保存
fdt_overlays= armadillo-iotg-a6e-lwb5plus.dtbo
②persist_file /boot/overlays.txt
③reboot

このイメージをabos-ctrl make-installerにてimgファイルにして

SDカードのアップデートをかけたところ、アップデート後は有効に戻ってしまいます。

armadillo:/boot# cat overlays.txt
fdt_overlays= armadillo-iotg-a6e-lwb5plus.dtbo

無効の状態のイメージファイルを作成したいのですが、方法ありますでしょうか?

at_shinya.koga

2023年12月20日 11時58分

アットマークテクノの古賀です。

k_oさん:
>①vi /boot/overlays.txt
>#右辺を削除して保存
>fdt_overlays= armadillo-iotg-a6e-lwb5plus.dtbo
>②persist_file /boot/overlays.txt
>③reboot
>
>このイメージをabos-ctrl make-installerにてimgファイルにして
>
>SDカードのアップデートをかけたところ、アップデート後は有効に戻ってしまいます。
>
>armadillo:/boot# cat overlays.txt
>fdt_overlays= armadillo-iotg-a6e-lwb5plus.dtbo

/boot/overlays.txt の内容は、インストールディスクイメージに収録しているインストールスクリプトがインストール時に作成するため、クローンするためのインストールディスクの場合も、クローン元の内容が保存されないのです。ごめんなさい。

>無効の状態のイメージファイルを作成したいのですが、方法ありますでしょうか?

追加で手順が必要になってしまいますが、インストールディスクイメージの作成後に、インストールディスクの内容かまたは、インストールディスクイメージをマウントして内容を書き換えることで対処可能です。
具体的には、(Armadillo-IoT G4 の)マニュアルの「開発したシステムをインストールディスクにする」にある「インストール時に任意のシェルスクリプトを実行する」で説明している install_overrides.sh を作成し、このスクリプトの postinstall() の内容を次のようにすればよいでしょう。
 https://manual.atmark-techno.com/armadillo-iot-g4/armadillo-base-os-dev…

postinstall() {
	sed -i -e "s/armadillo-iotg-a6e-lwb5plus.dtbo//g" /target/boot/overlays.txt
}

インストールディスクイメージをマウントして内容を書き換える場合は、次のコマンドを実行してください:

# losetup /dev/loop0 [インストールディスクイメージファイルのパス]
# mount /dev/loop0p1 [マウントするディレクトリ]

イメージ内容を書き換えたら、アンマウントした後、ループバックデバイスを削除してください:

# umount [マウントしたディレクトリ]
# losetup -d /dev/loop0

以上、不明な点などありましたら、お知らせください。

k_o

2023年12月20日 15時45分

お世話になっております。

imgファイルの中身を書き換えるのに苦戦しております。

現在弊社はarmadillo用のアプリケーション(cベース)を開発しております。
アプリケーションからoverlays.txtの内容を書き換えるでも問題ないですよね?

at_shinya.koga

2023年12月21日 15時21分

古賀です。

k_oさん:
>現在弊社はarmadillo用のアプリケーション(cベース)を開発しております。
>アプリケーションからoverlays.txtの内容を書き換えるでも問題ないですよね?

御社で実装していらっしゃるアプリケーションが、/boot/overlays.txt の内容を起動時に確認して、armadillo-iotg-a6e-lwb5plus.dtbo が記載されていれば、内容を変更・保存したうえで perist_file で保存内容を永続化して、さらに自動的に再起動する、ということですね?
であれば、それでも問題ないと思います。

ところで、

>imgファイルの中身を書き換えるのに苦戦しております。

これは、具体的には、どこで困っていらっしゃるでしょうか?差し支えなければ、教えてくださいませ。
なお、img ファイルをマウントして内容を書き換えるのではなく、img ファイルを dd で書き込んだ microSD カードを、Armadillo や ATDE にマウントして内容を書き換える、という方策も可能です。それもうまくいかない、という場合には、お知らせください。

k_o

2023年12月22日 15時20分

お世話になっております。

>installer_overrides.sh を書くためのサンプルとして、 インストールディスクイメージの第1パーティション及び、
>「開発したシステムをインストールディスクにする」で作成したのであれば第2パーティション直下に installer_overrides.sh.sample を用意してあります。
>このサンプルをコピーして編集するなどして、行ないたい処理を記述してください。

このあたりになります。imgファイルの第2パーティションに具体的にどうやってアクセスするか知見がなく
苦戦しております。

at_shinya.koga

2023年12月22日 18時12分

アットマークテクノの古賀です。

k_oさん;
>>installer_overrides.sh を書くためのサンプルとして、 インストールディスクイメージの第1パーティション及び、
>>「開発したシステムをインストールディスクにする」で作成したのであれば第2パーティション直下に installer_overrides.sh.sample を用意してあります。
>>このサンプルをコピーして編集するなどして、行ないたい処理を記述してください。
>
>このあたりになります。imgファイルの第2パーティションに具体的にどうやってアクセスするか知見がなく
>苦戦しております。

ごめんなさい。12/20 に書いた以下のコメントですが、実際に確認せず、うろ覚えで書いていたので手順に間違いがありました。また、「第2パーティション」については、マニュアルが分かりにくいですね。
 https://armadillo.atmark-techno.com/forum/armadillo/17770#comment-15082
以下、順に説明します。

まず、インストールディスクイメージのイメージファイルをマウントするには、次のコマンドを実行してください。

armadillo:~# sudo losetup -Pf [インストールディスクイメージのファイルパス]

12/20 のコメントでは、losetup をオプション無しで実行し、ループバックデバイス名を明示指定していましたが、この使い方の場合、ループバックデバイスのパーティションテーブルを読み取って認識させるためのコマンドも実行しなければいけません。さらに、明示指定したループバックデバイスが使用中だとエラーしてしまいます。
ループバックデバイス名を指定せず、-Pf オプションを指定することにより、空いているループバックデバイスを自動的に割り当て、さらに、イメージ内のパーティションテーブルを読みとって、対応するデバイスファイルを生成してくれます。

上記のコマンドを実行した後、'ls /dev/loop*' を実行してみてください。使用中のループバックデバイスが losetup の実行以前に存在していなければ、ABOS の場合は、次のような出力になります:

armadillo:~# ls /dev/loop*
/dev/loop-control  /dev/loop0         /dev/loop0p1       /dev/loop0p2

これは、インストールディスクイメージに二つのパーティションが存在している場合です。ちなみに、ABOS ではなく ATDE 上で losetup を実行した場合は、割り当てたループバックデバイス名を出力してくれるので、ls で確認する必要は、ありません。

次に「第2パーティション」ですが、これは、abos-ctrl make-nstaller コマンドを実行した時に、以下の質問に 0 でない値を指定していなければ作られません:

Would you like to create a windows partition?
That partition would only be used for customization script at the end of
install, leave at 0 to skip creating it.
Custom partition size (MB, [0] or 16 - 36): 16

マニュアルでは、このことが分かりにくいですね。ごめんなさい。
このカスタムパーティションを作成していなければ、インストールディスクイメージにはパーティションが一つしかありませんので、第1パーティションをマウントしてください。つまり、ループバックデバイスが loop0 であれば、

armadillo:~# mount /dev/loop0p1 [マウントディレクトリ]

です。マウントしたディレクトリを見ると、中に installer_overrides.sh.sample というファイルがあるはずです。

いかがでしょうか?12/20 に書いたコメントの内容が不正確だったために、お手数をかけてしまい申し訳ありませんでした。

k_o

2024年1月25日 9時23分

お世話になっております。

あまり時間が取れず、大分前の内容になりますが上記確認致しました。

installer_overrides.sh.sampleをバージョンアップファイルをマウントすることで確認でき

無事 、目的のoverlays.txtでバージョンアップすることが可能でした。

ご教授ありがとうございました。