Armadilloフォーラム

アンマウントできない時の対応方法

nic-segawa

2017年7月19日 15時43分

お世話になっております。

マイクロSDカードやUSBメモリーをマウント・アンマウントして使用しております。
アンマウントする際に「Device or resource busy」でアンマウントできない場合があります。
マウントしているデバイスを使用しているプロセスがあることが原因だと考え、プロセスを終了してからアンマウントする処理を組み込もうとしています。
「fuser」もしくは「lsof」コマンドを用いてプロセスを特定しようとしているのですが、デフォルトのユーザーランドでは使用できないようです。
コンフィギュレーションの変更でこれらのコマンドは使用可能になるのでしょうか?
もしくはこれとは別の方法があるのでしょうか?

よろしくお願い致します。

コメント

at_mizo

2017年7月20日 10時41分

溝渕です。

> 「fuser」もしくは「lsof」コマンドを用いてプロセスを特定しようとしているのですが、デフォルトのユーザーランドでは使用できないようです。
> コンフィギュレーションの変更でこれらのコマンドは使用可能になるのでしょうか?

上記コマンドは共に、以下から取得できる標準ユーザーランドイメージにインストールされています。

http://armadillo.atmark-techno.com/armadillo-410/downloads

インストールパスは次の通りです。

/usr/bin/lsof
/usr/bin/fuser

nic-segawa

2017年7月20日 13時51分

溝渕様

ご回答ありがとうございます。
標準のユーザーランドイメージでlsofとfuser共にインストールされていることを確認しました。
現在、以下のサイトからダウンロードできるQt用のユーザーランドイメージを使用しております。

http://armadillo.atmark-techno.com/howto/armadillo-440-qt-1

Qt用のユーザーランドイメージではlsofとfuser共にインストールされていないようです。
コンフィギュレーションの変更でインストールされると思うのですが、インストールする方法を教えて頂けないでしょうか?

よろしくお願い致します。

at_mizo

2017年7月20日 14時08分

溝渕です。

> 現在、以下のサイトからダウンロードできるQt用のユーザーランドイメージを使用しております。
>
> http://armadillo.atmark-techno.com/howto/armadillo-440-qt-1
>
> Qt用のユーザーランドイメージではlsofとfuser共にインストールされていないようです。
> コンフィギュレーションの変更でインストールされると思うのですが、インストールする方法を教えて頂けないでしょうか?

コンフィギュレーションの変更ではインストールすることはできません。

このHowtoで利用しているAtmark-Distのバージョンが古く、busybox-1.20.2が
含まれていないためです。

Qt用のユーザーランドで、lsof等を使う方法はいくつか考えられます。
1. Debianのパッケージに含まれるコンパイル済みのバイナリを使う
2. Qt用のAtmark-Distにbusybox-1.20.2を移植してビルドする
3. 最新のAtmark-DistにQtを移植してビルドする

ライブラリ等の依存関係が問題いならなければ、"1."が最も簡単だと思います。
http://armadillo.atmark-techno.com/howto/use-debian-binary

lsofのバイナリパッケージは以下より取得できます。
https://packages.debian.org/wheezy/armel/lsof/download

nic-segawa

2017年7月20日 14時27分

溝渕様

ご回答ありがとうございました。
ご提示頂いた方法のいづれかで対応しようと思います。