Armadilloフォーラム

abos-ctrl make-installer(Armadillo-640)で異常となる現象が発生しました。

ftokioka

2024年6月14日 8時57分

abos-ctrl make-installer(Armadillo-640)で異常となる現象が発生しました。
BaseOSのディスクイメージのバージョンは、下記を使用しております。

baseos-600-installer-3.19.1-at.2.img
USBにar640-bto-installer.imgを出力するにあたり、下記のエラーとなりました。原因と対策はわかりますでしょうか?

armadillo:~# mount /dev/sda1 /mnt
armadillo:~# abos-ctrl make-installer --output /mnt/ar640-bto-installer.img
WARNING: using emmc for podman-storage is a development option and not supported for production
WARNING: consider switching back to tmpfs with 'abos-ctrl podman-storage --tmpfs' first
Continue building image? [y/N]
y
An installer system is already available on image file. Use it? [Y/n]
y
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 - 53): y
Please enter digits only

Checking and growing installer main partition
Resize device id 1 (/dev/loop0p1) from 394.00MiB to max
Copying boot image
Copying rootfs
Copying appfs
At subvol app/snapshots/volumes
At subvol app/snapshots/boot_volumes
At subvol app/snapshots/boot_containers_storage
At subvol app/snapshots/containers_storage
Terminating, cleaning up...
lzop: short write: No space left on device
ERROR: Failed compressing or writing lzo file

コメント

at_dominique.m…

2024年6月14日 10時32分

ftokiokaさん
お世話になっています、
マルティネです。

> lzop: short write: No space left on device

このエラーは、コンテナのイメージを保存している際にディスクの容量が足りないというメッセージです。
ここのディスクというのは、USB ディスクではなく作ろうとしているイメージのことです:abos-ctrl make-installer コマンドが自動設定したサイズが足りません。
(細かいところまで説明すると、Armadillo Base OS のコンテナは圧縮されていて、イメージを書込みする際にも圧縮しますがその際の圧縮方式は違いますので、圧縮率の差で齟齬があります。今回不足したサイズは結局当てているだけなので、余裕を残したつもりでしたが今回は足りませんでしたね…すみません。)

対策としては abos-ctrl make-installer に「--image-size」の引数でサイズを手動に選べばいいです。
ファイルは後で最適化されますので、多めに設定しても問題ありません。

例えば 16GB の USB メモリではこういう風に設定できます:

armadillo:~# df -h /mnt
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda1        15G   33M   14G   1% /mnt
armadillo:~# abos-ctrl make-installer --output /mnt/bto-installer.img --image-size 13G

その際にすでに存在しているイメージを使いまわしても問題ありません。

また、今後の対応としてはサイズを参考にしたいですが、イメージを保存できた後に以下の出力を提供していただけますでしょうか?

# appfs のサイズ確認
armadillo:~# df -h /var/app/volumes/
Filesystem      Size  Used Avail Use% Mounted on
/dev/mmcblk2p5  6.5G   99M  5.9G   2% /var/app/volumes
# ネットワーク接続があれば、compsize をメモリ上にインストールして圧縮状態も確認したいです。
# (ネットワーク接続なければスキップしてください)
# 再起動すると消えますので影響ありません(make-installer のイメージにも影響ありません)
# このコマンドはちょっと時間かかります。
armadillo:~# apk add btrfs-compsize
armadillo:~# compsize -x /var/app/volumes/ /var/app/rollback/volumes/ /var/lib/containers/storage_readonly/ /var/lib/containers/storage/
Processed 983 files, 1235 regular extents (1316 refs), 334 inline.
Type       Perc     Disk Usage   Uncompressed Referenced  
TOTAL       65%       92M         142M         152M       
none       100%       70M          70M          74M       
zstd        30%       21M          71M          78M       
 
# 生成したイメージをマウントして、インストーラー圧縮のサイズ確認
armadillo:~# mount -o offset=10485760 /mnt/bto-installer.img /target/
armadillo:~# ls -lh /target/appfs.lzo 
-rw-r--r-- 1 root root 75M Jun 14 10:16 /target/appfs.lzo
armadillo:~# umount /target

お手数ですが、よろしくお願いします。

> > lzop: short write: No space left on device
>
> このエラーは、コンテナのイメージを保存している際にディスクの容量が足りないというメッセージです。
> ここのディスクというのは、USB ディスクではなく作ろうとしているイメージのことです:abos-ctrl make-installer コマンドが自動設定したサイズが足りません。
> (細かいところまで説明すると、Armadillo Base OS のコンテナは圧縮されていて、イメージを書込みする際にも圧縮しますがその際の圧縮方式は違いますので、圧縮率の差で齟齬があります。今回不足したサイズは結局当てているだけなので、余裕を残したつもりでしたが今回は足りませんでしたね…すみません。)
>
> 対策としては abos-ctrl make-installer に「--image-size」の引数でサイズを手動に選べばいいです。
> ファイルは後で最適化されますので、多めに設定しても問題ありません。
>
> 例えば 16GB の USB メモリではこういう風に設定できます:
>

> armadillo:~# df -h /mnt
> Filesystem      Size  Used Avail Use% Mounted on
> /dev/sda1        15G   33M   14G   1% /mnt
> armadillo:~# abos-ctrl make-installer --output /mnt/bto-installer.img --image-size 13G
> 

>
> その際にすでに存在しているイメージを使いまわしても問題ありません。
>
>
> また、今後の対応としてはサイズを参考にしたいですが、イメージを保存できた後に以下の出力を提供していただけますでしょうか?
>

> # appfs のサイズ確認
> armadillo:~# df -h /var/app/volumes/
> Filesystem      Size  Used Avail Use% Mounted on
> /dev/mmcblk2p5  6.5G   99M  5.9G   2% /var/app/volumes
> # ネットワーク接続があれば、compsize をメモリ上にインストールして圧縮状態も確認したいです。
> # (ネットワーク接続なければスキップしてください)
> # 再起動すると消えますので影響ありません(make-installer のイメージにも影響ありません)
> # このコマンドはちょっと時間かかります。
> armadillo:~# apk add btrfs-compsize
> armadillo:~# compsize -x /var/app/volumes/ /var/app/rollback/volumes/ /var/lib/containers/storage_readonly/ /var/lib/containers/storage/
> Processed 983 files, 1235 regular extents (1316 refs), 334 inline.
> Type       Perc     Disk Usage   Uncompressed Referenced  
> TOTAL       65%       92M         142M         152M       
> none       100%       70M          70M          74M       
> zstd        30%       21M          71M          78M       
> 
> # 生成したイメージをマウントして、インストーラー圧縮のサイズ確認
> armadillo:~# mount -o offset=10485760 /mnt/bto-installer.img /target/
> armadillo:~# ls -lh /target/appfs.lzo 
> -rw-r--r-- 1 root root 75M Jun 14 10:16 /target/appfs.lzo
> armadillo:~# umount /target
> 

>
> お手数ですが、よろしくお願いします。

回答ありがとうございます。
確認した情報は、下記となります。

armadillo:~# df -h /var/app/volumes/
Filesystem Size Used Available Use% Mounted on
/dev/mmcblk0p5 2.7G 159.6M 2.0G 7% /var/app/volumes
armadillo:~# mount -o offset=10485760 /mnt/ar640-bto-installer.img /target/
armadillo:~# ls -lh /target/appfs.lzo
-rw-r--r-- 1 root root 130.6M Jan 1 09:22 /target/appfs.lzo
armadillo:~# umount /target

at_dominique.m…

2024年6月14日 16時52分

ftokiokaさん

マルティネです。

> 確認した情報は、下記となります。

ありがとうございます。これはイメージ作成が成功した後の出力で合っていますね?
どのみちこれぐらいのコンテナのサイズはデフォルトできそうですが、もう少し確認してみます。

また、make-installer の 「--image-size」を設定した際でエラーがございましたらまたご連絡ください。

よろしくお願いします。