Armadilloフォーラム

podmanコンテナ内からUSBメモリ内ファイルへアクセスする方法

nf

2022年11月21日 11時46分

podmanコンテナ内からUSBメモリ内ファイルへアクセスする方法についてお教えください。

armadillo-base-os-dev-guide_ja-1.3.1.pdf 「9.4.4.1 イベントをトリガにホストコマンドを実行する」「1. udev を用いてUSB メモリの挿入を検知しmount コマンドを実行する」に準じて、以下ファイルを作成しました。

armadillo:/# cat /etc/udev/rules.d/99-usb-automount.rules
# filesystem-specific mount options (777/666 dir/file perms for vfat)
ACTION=="add",ENV{mount_options_vfat}="gid=100,dmask=000,fmask=111,utf8,flush,rw,noatime,users"
 
# create directory and mount device
ACTION=="add", KERNEL=="sd*", SUBSYSTEM=="block", ENV{ID_FS_USAGE}=="filesystem", ENV{ID_FS_TYPE}=="vfat", RUN+="/bin/mkdir -p /media/usb"
ACTION=="add", KERNEL=="sd*", SUBSYSTEM=="block", ENV{ID_FS_USAGE}=="filesystem", ENV{ID_FS_TYPE}=="vfat", RUN+="/bin/mount -t auto -o %E{mount_options_vfat} /dev/%k '/media/usb'"

以下コマンドでコンテナを立ち上げました。

armadillo:/# podman run -it --privileged --volume=/media:/data/media localhost:(イメージ名)

この状態で、Armadillo に USB を挿すと、ホスト側では以下の通り USB メモリ内のファイルを認識します。

armadillo:/# ls -l /media/usb/
total 11072
-rw-rw-rw-  1 root users     583 Jul 13  2020 file1
-rw-rw-rw-  1 root users     332 Mar 28  2022 file2
-rw-rw-rw-  1 root users 3592547 Oct  9  2021 file3
-rw-rw-rw-  1 root users  245825 Jul 28 00:47 file4
                    :

一方で、コンテナ内からはUSBメモリ内のファイルを認識できません。

container:/ # ls -l /data/media/
total 0
drwxr-xr-x    2 root     root            40 Nov 21 11:38 usb
container:/ # ls -l /data/media/usb/
total 0

コンテナ内からUSBメモリ内ファイルにアクセスするにはどうすれば良いでしょうか?

コメント

at_dominique.m…

2022年11月21日 12時23分

nfさん

お世話になっています、
アットマークテクノのマルティネです。

> armadillo:/# podman run -it --privileged --volume=/media:/data/media localhost:(イメージ名)

このあたりのマニュアルの説明は分かりにくいですね、お手数をおかけしました。
podman のボリュームマウントはデフォルトで「private」になっていますので、この使い方の場合は「shared」をしていする必要があります。
nfさんの udev ルールのままで以下の podman コマンドで動作確認できました:

armadillo:~# podman run -ti --volume=/media:/media:shared docker.io/alpine
/ # ls /media/usb/
<空、その後にデバイスを挿しました>
/ # ls /media/usb/
<USBメモリの内容>

なお、podman を実行する前に /media が存在しないとエラーしますので、
podman_start (/etc/atmark/containers/*.confファイルによるコンテナの自動起動)を使う場合はコンフィグに mkdir -p を直接によぶか、/run/media を使うことをおすすめします。 /run 内のボリュームの場合は podman_start で対応して podman を実行する前に作成します。

よろしくお願いします。