tsato_814
2022年7月25日 10時45分
お世話になっております。佐藤と申します。
当方では、Armadillo-X1 を使ったIoT機器を生産させて頂いています。
量産にあたり、カスタマイズしたものを反映したインストールディスクを作成し、
SDカードから製品の書き換えを行うようにしたいと考えております。
インストールディスクイメージ作成ツールを使用して、作成しようとしていますが、
ユーザランド容量が通常とさほど変わらないサイズの場合(userland1.tar.gz:300MB強)は、
問題なく作成できました(添付「ユーザランドがそれほど大きくなく作成成功.txt」ファイル参照)。
ですが、ユーザランド容量が大きかった場合(userland2.tar.gz:1GB強)、
「/tmp/~ の書き込みエラー:デバイスに空き領域がありません」とのメッセージがでて、
うまく作成できませんでした(添付「ユーザランドが大きく作成失敗.txt」ファイル参照)。
インストールディスクイメージファイルは作成されますが(install_disk_sd_20220722_x1.img:1.1GB強)、
中身を見てみると、「作成できませんでした」のメッセージが出力されたディレクトリについては、
やはり作成されていませんでしたし、このインストールディスクを使っても、インストールは失敗しました。
仮想マシン上の空き容量を確認しましたが、添付「仮想マシンHDDの空き容量.txt」ファイルのとおり、
/tmp も /home/atmark/make_install_disk_image も/dev/sda1 上で、残り 11 GB あります。
また、Iノードも特に不足していることはないみたいです。
さらに、Linux カーネル 2.4 以降で、/tmp の容量制限として、物理メモリのサイズの半分、
という制限がかかった、という情報もみつけましたが、
VMwareの仮想マシンのメモリは7GB以上とってあり、すなわち/tmpとして3.5GBはあるので、
余裕のはずです。
ちなみに、本製品に使用している Armadillo-X1は、
AX1110-U01Z (メモリ1GB・ストレージ4GB、WLANコンボ搭載)品で、
eMMCの /dev/mmcblk2p1 は 30.6MB、/dev/mmcblk2p2 は3.5GB あるようです。
インストールディスクイメージ作成ツールを使う場合は、機種の指定はないみたいですが、
何か制限などあるのでしょうか。
原因や対策などがあれば教えて頂きたく、お願い申し上げます。
ファイル | ファイルの説明 |
---|---|
ユーザランドがそれほど大きくなく作成成功.txt | |
ユーザランドが大きく作成失敗.txt | |
仮想マシンHDDの空き容量.txt |
コメント
at_dominique.m…
佐藤さん、
アットマークテクノのマルティネです。
お世話になっています。
> さらに、Linux カーネル 2.4 以降で、/tmp の容量制限として、物理メモリのサイズの半分、
> という制限がかかった、という情報もみつけましたが、
> VMwareの仮想マシンのメモリは7GB以上とってあり、すなわち/tmpとして3.5GBはあるので、
> 余裕のはずです。
(ちなみにですが、この ATDE のバージョンでは /tmp が tmpfs としてマウントされていませんので、普通に / の領域です。空きは充分にあります)
> インストールディスクイメージファイルは作成されますが(install_disk_sd_20220722_x1.img:1.1GB強)、
> 中身を見てみると、「作成できませんでした」のメッセージが出力されたディレクトリについては、
> やはり作成されていませんでしたし、このインストールディスクを使っても、インストールは失敗しました。
失敗しますね。
build.sh のスクリプトでは、du でファイルのサイズを計ってパティションを合わせて作ってますが、問題としては du で計るだけで実際に使ってるスペースとちょっと異なります(メタデータのサイズ、paddingなどでマージンが必要です)
build.shで50MBのマージンを取ってますが、ファイルが多くなるとそのマージンが足りません。
本当の解決ではないが、ワークアラウンドとして build.sh を vi などで編集して、以下の変更を行ってください
# Partition 2: total size of files + 50MB margin SIZE_DISK_P2=$(du -sm "$TEMP"/p2 | awk '{print $1}') SIZE_DISK_P2=$(( SIZE_DISK_P2 + 50 )) ↑ この行にある 50MBのマージンを 200MB にします ↓ SIZE_DISK_P2=$(( SIZE_DISK_P2 + 200 ))
そうすれば作成できると思いますが、いかがでしょうか。
今後のために改善できないか考えてみます。
よろしくお願いします。
tsato_814
tsato_814
2022年7月25日 10時58分
佐藤です。
すみません。先程添付した「仮想マシンHDDの空き容量.txt」が空ファイルでした。
あたらめて添付します。
よろしくお願い致します。