ysugie
2024年7月19日 19時31分
Base OS以上でwgetやaptコマンドを実行すると以下にようなエラーが発生し、失敗してしまいます。
回避策を教えてください。
armadillo:/home/atmark# apt update
ERROR: Unable to lock database: Read-only file system
ERROR: Failed to open apk database: Read-only file system
尚、インターネットは問題なく接続できることを確認しています。
koga
2024年7月21日 11時17分
アットマークテクノの古賀(休日モード)です。
ysugieさん:
>Base OS以上でwgetやaptコマンドを実行すると以下にようなエラーが発生し、失敗してしまいます。
>回避策を教えてください。
>armadillo:/home/atmark# apt update
>ERROR: Unable to lock database: Read-only file system
>ERROR: Failed to open apk database: Read-only file system
>
>尚、インターネットは問題なく接続できることを確認しています。
上では、apt コマンドを実行した時の出力しか示されていませんが、wget を実行した場合は、どのようなエラーになるのでしょうか?
また、apt コマンドは Armadillo Base OS に存在していないのですが、ご自分でインストールされたのでしょうか?
さて、「回避策」について、以下に説明します。
Armadillo Base OS (ABOS) では、Debian や Ubuntu の apt に相当するパッケージマネージャは apk です。apk は、ABOS がベースにしている Alpine Linux のパッケージマネージャです:
https://kleinblog.net/alpine-apk-cmd
https://blog.stormcat.io/post/entry/alpine-entry-apk/
https://blog.kasei-san.com/entry/2020/08/25/084430
https://wiki.alpinelinux.org/wiki/Comparison_with_other_distros
以下のコマンドであればエラーしないはずですので、試してみてください:
さて、apt をお使いになろうとしていらっしゃるということは、何らかのパッケージをインストールしてお使いになりたいのだと思います。
ABOS では、提供していないパッケージを ABOS 上に直接インストールすることは推奨しておらず、追加パッケージやアプリケーション用のコンテナを作ってコンテナにインストールして使うことを推奨しています。
これは、セキュリティの向上とアプリケーション用のルートファイルシステムの可搬性向上のための方策です。
https://armadillo.atmark-techno.com/guide/armadillo-base-os
apt を使ってパッケージをインストールしたい場合は、まず Debian のコンテナを作り、Debian コンテナで apt を実行してください。
Armadillo-IoT G4 用に Debian 11 (bullseye) のコンテナイメージを提供していますので、それをダウンロードして使うのが簡単です。
https://armadillo.atmark-techno.com/resources/software/armadillo-iot-g4…
以下に、Debian 11 コンテナで bash を起動するまでの手順を示します:
(1) Debian 11 のコンテナイメージをダウンロードする
(2) ダウンロードしたコンテナイメージをコンテナエンジン(podman)にロードする
(3) Debian 11 のコンテナを起動時に自動作成・起動する設定ファイルを作成する(設定ファイルのサンプルをコピーして永続化)
(4) Debian コンテナを作成・起動して bash を起動
Debian コンテナの bash が起動したら、apt コマンドを実行してみてください。期待通りに動作するはずです。
なお、apt コマンドで Debian コンテナにインストールしたパッケージは、ABOS を再起動すると消えてしまいます。つまり、コンテナのルートファイルシステムに加えた変更は、再起動時に消えてしまいます。
コンテナのルートファイルシステムに加えた変更を保存するには、マニュアルの「コンテナの基本的な動作」の節にある、「コンテナの変更を保存する」で説明している podman commit コマンドを使います:
https://manual.atmark-techno.com/armadillo-iot-g4/armadillo-iotg-g4_pro…
以下に、apt コマンドで Debian コンテナにパッケージをインストールした後、コンテナのルートファイルシステムに加わった変更をコンテナイメージに保存する手順を示します:
(5) bash を終了して Debian コンテナを停止した後、コンテナの変更内容をコンテナイメージに保存する
(6) コンテナイメージの保存内容を永続化する
こうすれば、これ以後 ABOS を再起動しても apt でコンテナにインストールした内容が失われず、'podman exec -it ad-debian-image /bin/bash' でコンテナの bash を起動すれば、Debian コンテナにインストールしたパッケージを Debian コンテナ上で対話操作できます。
その他の使い方については、マニュアルの「コンテナ」をご覧になってみてください:
https://manual.atmark-techno.com/armadillo-iot-g4/armadillo-iotg-g4_pro…
以上、参考になりましたら幸いです。