Armadilloフォーラム

Armadillo-640(Buster)インストールディスクイメージが作成できない。

yabumoto

2021年9月5日 12時30分

お世話になります。
以下サイトを参考にインストールディスクイメージを作成しようとしていますが、エラーが発生して作成出来ません。
https://armadillo.atmark-techno.com/resources/software/armadillo-iot-g3

/linux/make-install-disk-image-v1.2.0</b></font>$ sudo ./build.sh a640 u-boot.imx uImage a640.dtb debian-buster-armhf-a600-20210604.tar.gz
0+0 レコード入力
0+0 レコード出力
0 bytes copied, 3.9108e-05 s, 0.0 kB/s
Checking that no-one is using this disk right now ... OK
 
<b>Disk /dev/loop0: 1 GiB, 1080033280 bytes, 2109440 sectors</b>
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
 
&gt;&gt;&gt; Created a new DOS disklabel with disk identifier 0xdcccc653.
/dev/loop0p1: Created a new partition 1 of type &apos;W95 FAT32&apos; and of size 2 MiB.
/dev/loop0p2: Created a new partition 2 of type &apos;Linux&apos; and of size 1 GiB.
/dev/loop0p3: Done.
 
New situation:
Disklabel type: dos
Disk identifier: 0xdcccc653
 
<b>Device</b>       <b>Boot</b> <b>Start</b> <b>    End</b> <b>Sectors</b> <b>Size</b> <b>Id</b> <b>Type</b>
/dev/loop0p1       2048    6143    4096   2M  b W95 FAT32
/dev/loop0p2       6144 2109439 2103296   1G 83 Linux
 
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.
mkfs.fat 4.1 (2017-01-24)
mke2fs 1.44.5 (15-Dec-2018)
Discarding device blocks: done                            
Creating filesystem with 262912 4k blocks and 65808 inodes
Filesystem UUID: 2d15f336-1e98-48c2-ac85-ccc974f3e5a8
Superblock backups stored on blocks: 
	32768, 98304, 163840, 229376
 
Allocating group tables: done                            
Writing inode tables: done                            
Creating journal (8192 blocks): done
Writing superblocks and filesystem accounting information: done
 
cp: &apos;/tmp/tmp.LOvkDPmhtt/images/uImage&apos; の書き込みエラー: デバイスに空き領域がありません
cp: &apos;/tmp/tmp.LOvkDPmhtt/images/a640.dtb&apos; の書き込みエラー: デバイスに空き領域がありません
cp: ディレクトリ &apos;/tmp/tmp.LOvkDPmhtt/lib&apos; を作成できません: デバイスに空き領域がありません
cp: ディレクトリ &apos;/tmp/tmp.LOvkDPmhtt/media&apos; を作成できません: デバイスに空き領域がありません
cp: ディレクトリ &apos;/tmp/tmp.LOvkDPmhtt/mnt&apos; を作成できません: デバイスに空き領域がありません
cp: ディレクトリ &apos;/tmp/tmp.LOvkDPmhtt/opt&apos; を作成できません: デバイスに空き領域がありません
cp: ディレクトリ &apos;/tmp/tmp.LOvkDPmhtt/proc&apos; を作成できません: デバイスに空き領域がありません
cp: ディレクトリ &apos;/tmp/tmp.LOvkDPmhtt/root&apos; を作成できません: デバイスに空き領域がありません
cp: ディレクトリ &apos;/tmp/tmp.LOvkDPmhtt/sbin&apos; を作成できません: デバイスに空き領域がありません
cp: ディレクトリ &apos;/tmp/tmp.LOvkDPmhtt/sys&apos; を作成できません: デバイスに空き領域がありません
cp: ディレクトリ &apos;/tmp/tmp.LOvkDPmhtt/tmp&apos; を作成できません: デバイスに空き領域がありません
cp: ディレクトリ &apos;/tmp/tmp.LOvkDPmhtt/usr&apos; を作成できません: デバイスに空き領域がありません
cp: ディレクトリ &apos;/tmp/tmp.LOvkDPmhtt/var&apos; を作成できません: デバイスに空き領域がありません
291+0 レコード入力
291+0 レコード出力
297984 bytes (298 kB, 291 KiB) copied, 0.0861155 s, 3.5 MB/s

ルートにも余裕があり

~/linux/make-install-disk-image-v1.2.0</b></font>$ df -h /tmp
ファイルシス   サイズ  使用  残り 使用% マウント位置
/dev/sda1         26G   17G  7.7G   69% /tmp

http://mylinux.blog42.fc2.com/blog-entry-673.html を参考に色々と試しましたがエラーがとれません。
また、仮想環境(Virtualbox)のメモリサイズを4GB→12GBまで増やしたり、ルートサイズを拡張しても同じでした。

回避方法をご教授頂きたく。
何卒よろしくお願いいたします。

コメント

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

yabumotoさん:
>以下サイトを参考にインストールディスクイメージを作成しようとしていますが、エラーが発生して作成出来ません。
>https://armadillo.atmark-techno.com/resources/software/armadillo-iot-g3

エラー内容を見ると、お使いになっているインストールディスクイメージ作成ツールの build.sh の内容が正しくないか、手順のどこかで手違いがあるように思われます。こちらのドキュメントも、ご覧になってみて下さい:

 Armadillo標準ガイド Armadillo入門編
 https://manual.atmark-techno.com/armadillo-guide-std/armadillo-guide-st…
 https://armadillo.atmark-techno.com/resources/documents/armadillo-guide…

ここで、Armadillo-6x0 用のインストールディスクイメージ作成ツールは、インストールディスクイメージの第2パーティションに uImage と .dtb を配置しますが、Armadillo-IoT G3/G3L/X1 用のインストールディスクイメージ作成ルーツは、第1パーティションに uImage と .dtb を配置します。以下のエラーメッセージを見ると、サイズ 2MB で作成された第1パーティションに uImage を書き込もうとして満杯になってしまい、以後エラーになっているようです。

/linux/make-install-disk-image-v1.2.0</b></font>$ sudo ./build.sh a640 u-boot.imx uImage a640.dtb debian-buster-armhf-a600-20210604.tar.gz
0+0 レコード入力
0+0 レコード出力
0 bytes copied, 3.9108e-05 s, 0.0 kB/s
Checking that no-one is using this disk right now ... OK
 
Disk /dev/loop0: 1 GiB, 1080033280 bytes, 2109440 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
 
>>> Created a new DOS disklabel with disk identifier 0xdcccc653.
/dev/loop0p1: Created a new partition 1 of type &apos;W95 FAT32&apos; and of size 2 MiB.
/dev/loop0p2: Created a new partition 2 of type &apos;Linux&apos; and of size 1 GiB.
/dev/loop0p3: Done.
 
New situation:
Disklabel type: dos
Disk identifier: 0xdcccc653
 
Device      Boot  Start     End Sectors   Size Id  Type
/dev/loop0p1       2048    6143    4096   2M  b W95 FAT32
/dev/loop0p2       6144 2109439 2103296   1G 83 Linux
 
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.
mkfs.fat 4.1 (2017-01-24)
mke2fs 1.44.5 (15-Dec-2018)
Discarding device blocks: done                            
Creating filesystem with 262912 4k blocks and 65808 inodes
Filesystem UUID: 2d15f336-1e98-48c2-ac85-ccc974f3e5a8
Superblock backups stored on blocks: 
	32768, 98304, 163840, 229376
 
Allocating group tables: done                            
Writing inode tables: done                            
Creating journal (8192 blocks): done
Writing superblocks and filesystem accounting information: done
 
cp: '/tmp/tmp.LOvkDPmhtt/images/uImage' の書き込みエラー: デバイスに空き領域がありません
cp: '/tmp/tmp.LOvkDPmhtt/images/a640.dtb' の書き込みエラー: デバイスに空き領域がありません
cp: ディレクトリ '/tmp/tmp.LOvkDPmhtt/lib' を作成できません: デバイスに空き領域がありません
cp: ディレクトリ '/tmp/tmp.LOvkDPmhtt/media' を作成できません: デバイスに空き領域がありません
cp: ディレクトリ '/tmp/tmp.LOvkDPmhtt/mnt' を作成できません: デバイスに空き領域がありません
cp: ディレクトリ '/tmp/tmp.LOvkDPmhtt/opt' を作成できません: デバイスに空き領域がありません
cp: ディレクトリ '/tmp/tmp.LOvkDPmhtt/proc' を作成できません: デバイスに空き領域がありません
cp: ディレクトリ '/tmp/tmp.LOvkDPmhtt/root' を作成できません: デバイスに空き領域がありません
cp: ディレクトリ '/tmp/tmp.LOvkDPmhtt/sbin' を作成できません: デバイスに空き領域がありません
cp: ディレクトリ '/tmp/tmp.LOvkDPmhtt/sys' を作成できません: デバイスに空き領域がありません
cp: ディレクトリ '/tmp/tmp.LOvkDPmhtt/tmp' を作成できません: デバイスに空き領域がありません
cp: ディレクトリ '/tmp/tmp.LOvkDPmhtt/usr' を作成できません: デバイスに空き領域がありません
cp: ディレクトリ '/tmp/tmp.LOvkDPmhtt/var' を作成できません: デバイスに空き領域がありません
291+0 レコード入力
291+0 レコード出力
297984 bytes (298 kB, 291 KiB) copied, 0.0861155 s, 3.5 MB/s

>
>ルートにも余裕があり
>
>

>~/linux/make-install-disk-image-v1.2.0$ df -h /tmp
>ファイルシス   サイズ  使用  残り 使用% マウント位置
>/dev/sda1         26G   17G  7.7G   69% /tmp
>

>
>http://mylinux.blog42.fc2.com/blog-entry-673.html を参考に色々と試しましたがエラーがとれません。
>また、仮想環境(Virtualbox)のメモリサイズを4GB→12GBまで増やしたり、ルートサイズを拡張しても同じでした。

「デバイスに空き領域がありません」は、インストールディスクイメージのパーティションに対して出ているエラーメッセージですので、ATDE の空きディスク容量や仮想マシンのメモリサイズとは無関係だと思います。

>回避方法をご教授頂きたく。

各イメージファイルおよび、インストールディスクイメージ作成ツールを、全て Armadillo-640 用のダウンロードページからダウンロードして、再度作成手順を行ってみて頂けますか。
 https://armadillo.atmark-techno.com/resources/software/armadillo-640/to…
 https://armadillo.atmark-techno.com/armadillo-640/resources/software

先ほど、手元の ATDE で Armadillo-640 用のインストールディスクイメージ作成手順を実行してみたところ、エラーなく作成できました。

古賀様
早速のご対応ありがとうございます。

>各イメージファイルおよび、インストールディスクイメージ作成ツールを、全て Armadillo-640 用のダウンロードページからダウンロードして、再度作成手順を行ってみて頂けますか。

 同環境で問題なく作成できました。
 ルートファイルシステムをカスタマイズしている為、これだけをオリジナルにしたところNGでした。
 個別にイメージを書き込んで使用していましたが問題ありませんでした。

 サイズが問題なのでしょうか?

atmark@atde8:~/linux/make-install-disk-image-v1.2.0$ ls -l
合計 2225276
-rw-r--r-- 1 atmark atmark  231286429  9月  5 15:21 debian-buster-armhf-a600-20210224.tar.gz
-rw-r--r-- 1 atmark atmark  990389610  6月  4 20:11 debian-buster-armhf-a600-20210604.tar.gz
atmark@atde8:~/linux/make-install-disk-image-v1.2.0$ 

なんとか回避したく、ご確認のほどよろしくお願いいたします。

古関です。

> ルートにも余裕があり
>
> ~/linux/make-install-disk-image-v1.2.0$ df -h /tmp
> ファイルシス サイズ 使用 残り 使用% マウント位置
> /dev/sda1 26G 17G 7.7G 69% /tmp

iノード不足の可能性はないでしょうか。
小さいファイルを大量に作ったりしないとあまり起きませんが。。

以下のコマンドで見れると思います。
$ df -i /tmp

外れてたらごめんなさい。

古関様
ありがとうございます。

atmark@atde8:~/linux/make-install-disk-image-v1.2.0$ df -i /tmp
ファイルシス   Iノード  I使用   I残り I使用% マウント位置
/dev/sda1      1703936 348556 1355380    21% /

こんな感じです。
以上、よろしくお願いいたします。

古関です。

ご確認ありがとうございます。
iノードじゃないみたいですね。お役に立てずごめんなさい。

ファイルシス Iノード I使用 I残り I使用% マウント位置
/dev/sda1 1703936 348556 1355380 21% /

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

yabumotoさん:
>なんとか回避したく、ご確認のほどよろしくお願いいたします。

ごめんなさい。以下で書いていらっしゃることが、よく分かりませんのでコメントできません。yabumoto さん以外の人が読んでも分かるように書いて頂けますか。

>早速のご対応ありがとうございます。
>
>>各イメージファイルおよび、インストールディスクイメージ作成ツールを、全て Armadillo-640 用のダウンロードページからダウンロードして、再度作成手順を行ってみて頂けますか。
>←
> 同環境で問題なく作成できました。

ここまでは、了解しました。が、これ以降が分かりません。

> ルートファイルシステムをカスタマイズしている為、これだけをオリジナルにしたところNGでした。

「これだけ」というのは、何を指しているのでしょうか?具体的に書いて頂けますと助かります。

> 個別にイメージを書き込んで使用していましたが問題ありませんでした。

これは、文脈が分かりません。「個別にイメージを書き込んで使用していましたが」というのは、どれのことでしょうか?

a.) インストールディスクイメージを作成せず、ルートファイルシステムだけを書き換えていた時。
b.) それ以外。

>  サイズが問題なのでしょうか?

atmark@atde8:~/linux/make-install-disk-image-v1.2.0$ ls -l
合計 2225276
-rw-r--r-- 1 atmark atmark  231286429  9月  5 15:21 debian-buster-armhf-a600-20210224.tar.gz
-rw-r--r-- 1 atmark atmark  990389610  6月  4 20:11 debian-buster-armhf-a600-20210604.tar.gz
atmark@atde8:~/linux/make-install-disk-image-v1.2.0$ 

カスタマイズされたと思わしきルートファイルシステムアーカイブ(debian-buster-armhf-a600-20210604.tar.gz)が、弊社からリリースしているもの(debian-buster-armhf-a600-20210224.tar.gz)より大きいことは分かりましたが、どのようなエラーが起きたのかが、分かりません。どのようなエラーが起きたのでしょうか?

古賀様
申し訳ございません。

> ルートファイルシステムをカスタマイズしている為、これだけをオリジナルにしたところNGでした。
OK

atmark@atde8:~/linux/make-install-disk-image-v1.2.0$ sudo ./build.sh a640 u-boot-a600-v2018.03-at9.imx armadillo-640-v4.14-at36.dtb uImage-a600-v4.14-at36 debian-buster-armhf-a600-20210224.tar.gz 

NG 上記の debian-buster-armhf-a600-20210224.tar.gz  → debian-buster-armhf-a600-20210604.tar.gz
エラーは最初に送ったものと同じエラーです。

atmark@atde8:~/linux/make-install-disk-image-v1.2.0$ sudo ./build.sh a640 u-boot-a600-v2018.03-at9.imx armadillo-640-v4.14-at36.dtb uImage-a600-v4.14-at36 debian-buster-armhf-a600-20210604.tar.gz 

> 個別にイメージを書き込んで使用していましたが問題ありませんでした。

 当該コマンドでイメージを作成しようとしている imx、dtb、カーネル、ルートファイルシステムを個別に書き込んで使用していたが問題なく使用できていたが、インストールディスクイメージが作成出来ない。

以上、よろしくお願いいたします。

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

yabumotoさん:
>申し訳ございません。
>
>> ルートファイルシステムをカスタマイズしている為、これだけをオリジナルにしたところNGでした。
>OK

atmark@atde8:~/linux/make-install-disk-image-v1.2.0$ sudo ./build.sh a640 u-boot-a600-v2018.03-at9.imx armadillo-640-v4.14-at36.dtb uImage-a600-v4.14-at36 debian-buster-armhf-a600-20210224.tar.gz 

>
NG 上記の debian-buster-armhf-a600-20210224.tar.gz  → debian-buster-armhf-a600-20210604.tar.gz

「これだけ」と書いていらしたのは、ルートファイルシステムアーカイブのことだったのですね。了解しました。

>エラーは最初に送ったものと同じエラーです。

atmark@atde8:~/linux/make-install-disk-image-v1.2.0$ sudo ./build.sh a640 u-boot-a600-v2018.03-at9.imx armadillo-640-v4.14-at36.dtb uImage-a600-v4.14-at36 debian-buster-armhf-a600-20210604.tar.gz 

これについても、了解しました。

>> 個別にイメージを書き込んで使用していましたが問題ありませんでした。
>←
> 当該コマンドでイメージを作成しようとしている imx、dtb、カーネル、ルートファイルシステムを個別に書き込んで使用していたが問題なく使用できていたが、インストールディスクイメージが作成出来ない。

こちらについても、了解しました。
とすると、build.sh で行っている、インストールディスクイメージの第2パーティションの必要容量の見積もり計算が出した数字が、実際に必要な容量と合っていないのかも知れません。

試しに、build.sh にある calc_disk_size_mb () を、次のように変更してみて頂けますか:

calc_disk_size_mb ()
{
	# Partition 1: total size of files + 1MB margin
	SIZE_DISK_P1=$(du -sm $TEMP/p1 | awk '{print $1}')
	SIZE_DISK_P1=$(( SIZE_DISK_P1 + 1 ))
 
	# Partition 2: total size of files + 50MB margin
	SIZE_DISK_P2=$(du -sm $TEMP/p2 | awk '{print $1}')
	SIZE_DISK_P2=$(( SIZE_DISK_P2 + 1000 ))
 
	SIZE_DISK=$(( SIZE_DISK_P1 + SIZE_DISK_P2 ))
}

SIZE_DISK_P2=$(( SIZE_DISK_P2 + 1000 )) の行は、'1000' の部分がオリジナルでは 50 になっています。50 というのは、見積もり計算で出した数字に 50MB のマージンを加えている、ということなのですが、マージンのサイズを 1000[MB] に増やしてみて、状況が変わるかどうかを試してみて下さいませ。

以上、お手数をかけますが、どうぞ宜しくお願いします。

古賀様
丁寧なご対応ありがとうございます。
連絡遅れ申し訳ございません。

ご指示頂いた対応にて、無事にimage作成する事が出来ました。
非常に助かりました、ありがとうございました。