お知らせ

  • 利用規約を守って投稿してください。また、よくある質問および投稿の手引きも参照してください。
  • メッセージの投稿にはアカウントが必要です。未登録の方は、ユーザ登録ページからアカウントを作成することができます。

#1 2009-08-19 21:50:19

Mild7
メンバ
登録日: 2009-02-23

USBメモリのオートマウント

BeagleBoardという組み込みLinuxなのでお門ちがいかも知れませんがUbuntuなのでこちらに来ました。
オペレーティングシステム Ubuntu Linux 9.04
Kernel and CPU Linux 2.6.28 on armv7l
USB自体は gparted  で ext3 と ntfs の両方のフォーマットで試したがNGでした。
手動で
$ sudo mount /dev/sda1 /mild7www
これなら普通にマウントできるのですが、起動時に自動的にマウントさせたいのです。
/etc/fstab の状況は
~$ sudo vi /etc/fstab

proc /proc proc defaults 0 0
tmpfs /tmp tmpfs defaults 0 0
# /dev/sda1 /mild7www ntfs defaults 0 0  これで試してもNG
# /dev/sda1   /mild7www  auto    noauto,user 0 0 これで試してもNG
~
どなたか、ご教授ください お願いします。
(夜は遅くまで起きてられません 年なので。。。)

オフライン

 

#2 2009-08-19 22:38:37

n_saito
メンバ
登録日: 2009-06-23

Re: USBメモリのオートマウント

Mild7 による投稿:

$ sudo mount /dev/sda1 /mild7www
これなら普通にマウントできるのですが、起動時に自動的にマウントさせたいのです。

USBメモリ(?)を起動時にすでに挿されていて認識させようとするということであれば、/etc/fstabに
/dev/sda1 /mild7www ext3 defaults 0 0
でext3でフォーマットしたものではどうでしょうか?
もちろん/mild7wwwディレクトリは作成済みにしておいてください。

オプションの部分の記述とかが怪しいので、端末上で
man fstab
man mount
あたりのドキュメントも読むことをオススメします。

またUSBメモリ(?)を使おうとするLinux上でNTFSで使いたい場合は
cat /proc/filesystems
で扱えるファイルシステムとしてNTFSがサポートされているか、fuseを使うとした場合にはfuseがサポートされていることと
ntfs-3g
ntfs-config
ntfsprogs
などのパッケージが存在するか確認してください。

オフライン

 

#3 2009-08-20 20:50:30

Mild7
メンバ
登録日: 2009-02-23

Re: USBメモリのオートマウント

ありがとうございます。
USBフラッシュメモリは fat32   ext3 で最初に試しました 起動の前挿し 後挿し どちらも NGでした。
NTFS用の ntfs-3g ntfs-config ntfsprogs はインストール済みです。
いろいろやっているうちに $ df -h  ではマウントが確認できないけれど
/dev/disk/by-id や /dev/block にUSBが表示されることが解りました。
これらを利用して /etc/rcS.d  に何か追記して出来ないものでしょうか??
この何か が問題ですけど。。。。
再度のご教授お願いします。

オフライン

 

#4 2009-08-21 02:25:26

petitbootang
メンバ
From: 東京都
登録日: 2009-02-12

Re: USBメモリのオートマウント

/etc/fstab にこんな感じではどうでしょうか?

/dev/sdb1    /media/usb    vfat auto,users,umask=000,rw,utf8    0    0

あ!私の環境での例なので、/media/usb は実際のマウントポイントに置き換えてください。
あと、手持ちに FAT32 フォーマットの USB メモリしかなかったので、type は vfat ですが。
済みません、ext3 でも試してみれば良かったのですが、フォーマットし直して良いメモリが無かったもので(^^;)
ここまでしつこく書くと、ユーザ権限でマウント及び読み書き出来るはずです。
もちろん、ユーザ権限でのアンマウントも出来ます。
root 権限でのみマウントしたければ、users,umask=000 を書くのはやめといてください。
参照だけで良ければ、rw も ro で良いですね。

オフライン

 

#5 2009-08-21 06:06:39

Mild7
メンバ
登録日: 2009-02-23

Re: USBメモリのオートマウント

ありがとうございます。
土曜日に試してみます。

オフライン

 

#6 2009-08-22 11:29:28

Mild7
メンバ
登録日: 2009-02-23

Re: USBメモリのオートマウント

/dev/sdb1    /media/usb    vfat auto,users,umask=000,rw,utf8    0    0
これを試してみましたが NG でした。
BeagleBoardは普通のUbuntuとちがうようで無理なのかも知れませんね
今回は あきらめ とします。
ありがとうございました。

オフライン

 

#7 2009-08-22 11:38:40

petitbootang
メンバ
From: 東京都
登録日: 2009-02-12

Re: USBメモリのオートマウント

あ、#1 を良く見たら、/dev/sda1 となってましたね。
USB が /dev/sda1 と認識されると言うことは、BeagleBoard というのはストレージが無いんですね。
済みません、もし↓のままやったのなら、
/dev/sdb1    /media/usb    vfat auto,users,umask=000,rw,utf8    0    0
↓/dev/sda1 に変えてやってみた場合はどうでしょうか?
/dev/sda1    /media/usb    vfat auto,users,umask=000,rw,utf8    0    0

オフライン

 

#8 2009-08-22 11:45:52

n_saito
メンバ
登録日: 2009-06-23

Re: USBメモリのオートマウント

Mild7 による投稿:

ありがとうございます。
\いろいろやっているうちに $ df -h  ではマウントが確認できないけれど
/dev/disk/by-id や /dev/block にUSBが表示されることが解りました。
これらを利用して /etc/rcS.d  に何か追記して出来ないものでしょうか??

それは /dev/disk/なんとか をfstabにツッコむだけで良いのでは...?
通常のUbuntuとかであればudevが色々やってくれるので/dev/sda1とかと言ったデバイスになると思いますが、udevを組み込んでいないのであれば長いブロックデバイス名でやるしかない気がします。

オフライン

 

#9 2009-08-22 16:44:43

petitbootang
メンバ
From: 東京都
登録日: 2009-02-12

Re: USBメモリのオートマウント

ふーむ、それでは n_saito さんのご意見を参考にして…
直接?アクセスするように変更してみましょうか。

USB メモリを挿しこんだまま端末から、

$ ls -l /dev/disk/by-uuid

とやると、UUID が調べられますので、USB メモリのデバイス名(sda1?) のところに表示されている、英数文字の羅列をコピペして fstab を下記のように変更します。

62F2-2E03    /media/usb    vfat auto,users,umask=000,rw,utf8    0    0

上記の 62F2-2E03 は、私の USB メモリの場合ですので、Mild7 さんの端末で表示された文字列と置き換えてください。
UUID はユニークですので、フォーマットなどして変更されない限りは、そのストレージ(デバイス)を絶対的に特定できるものとなりますので、udev の仕組みが無くてもこれで上手くいくんぢゃないかなぁ…だんだん泪目。

オフライン

 

#10 2009-08-22 19:09:18

einundzwanzighundertsechs
メンバ
登録日: 2008-12-28

Re: USBメモリのオートマウント

もう諦めたとのことですが参考になれば...

此方の「玄箱」は ubuntu でなく,LFS 気味で udev は動いていません.
3 台の USB 外付け HD を /etc/fstab に以下のとおり記述していますが,

コード:

/dev/hda1    /boot        ext3    defaults,noatime        0 0
/dev/hda2    swap        swap    defaults            0 0
/dev/sda5    /mnt/disk0    vfat    defaults,dmask=022,fmask=133,uid=1000,gid=1000    0 0
/dev/sdb5    /mnt/disk1    vfat    defaults,dmask=022,fmask=133,uid=1000,gid=1000    0 0
/dev/sdc5    /mnt/disk2    vfat    defaults,dmask=022,fmask=133,uid=1000,gid=1000    0 0

起動時には自動マウントしません.一旦 ssh root@玄箱 でログインし,mount -a でマウントしてます.
# nfs で共有している為か,一度マウントしてしまうと(nfs を落としても)アンマウント出来なります.
# 自動マウントしないのはメンテの面からは好都合なため,解決策は講じていません.

内臓 HD や DVD が USB 接続だったりして,かなり早い段階で USB が使用可能になっている最近の普通の PC に比べ,
玄箱は USB の認識がやや遅い様です.ちなみに usb ドライバはカーネル組み込みです.

dmesg によると /etc/fstab にしたがって swap が有効化され,内臓 HD がマウントされた

コード:

   136  Adding 257032k swap on /dev/hda2.  Priority:-1 extents:1 across:257032k
   137  EXT3-fs warning: maximal mount count reached, running e2fsck is recommended
   138  EXT3 FS on hda3, internal journal
   139  RPC: Registered udp transport module.
   140  RPC: Registered tcp transport module.
   141  Installing knfsd (copyright (C) 1996 [email protected]).
   142  kjournald starting.  Commit interval 5 seconds
   143  EXT3-fs warning: maximal mount count reached, running e2fsck is recommended
   144  EXT3 FS on hda1, internal journal
   145  EXT3-fs: recovery complete.
   146  EXT3-fs: mounted filesystem with ordered data mode.

そのちょっと後に USB HD ハードウェアの認識が来ます.

コード:

   164  scsi 0:0:0:0: Direct-Access     LOGITEC  LHD-EDU2         1.51 PQ: 0 ANSI: 0
   165  sd 0:0:0:0: [sda] 625142447 512-byte hardware sectors (320073 MB)
   166  sd 0:0:0:0: [sda] Write Protect is off
   167  sd 0:0:0:0: [sda] Mode Sense: 23 00 00 00
   168  sd 0:0:0:0: [sda] Assuming drive cache: write through
   169  sd 0:0:0:0: [sda] 625142447 512-byte hardware sectors (320073 MB)
   170  sd 0:0:0:0: [sda] Write Protect is off
   171  sd 0:0:0:0: [sda] Mode Sense: 23 00 00 00
   172  sd 0:0:0:0: [sda] Assuming drive cache: write through
   173   sda: sda1 < sda5 >
   174  sd 0:0:0:0: [sda] Attached SCSI disk
   175  usb-storage: device scan complete

BeagleBoard が 玄箱と同じかどうか知りませんが,dmesg で起動時の挙動を調べては如何がでしょう?

オフライン

 

#11 2009-08-22 21:38:30

petitbootang
メンバ
From: 東京都
登録日: 2009-02-12

Re: USBメモリのオートマウント

UUID=62F2-2E03    /media/usb    vfat auto,users,umask=000,rw,utf8    0    0

上記のように、UUID= を付けるのが正しいようですね。ただ、付けなくても動作はします。

einundzwanzighundertsechs さん、いつもお世話になります。
自動マウントしないのは、auto ではなく defaults でマウントしているからではなく、ですか?

オフライン

 

#12 2009-08-22 22:04:53

einundzwanzighundertsechs
メンバ
登録日: 2008-12-28

Re: USBメモリのオートマウント

こんばんは,

petitbootangさん による投稿:

自動マウントしないのは、auto ではなく defaults でマウントしているからではなく、ですか?

すこし書き足りませんでした.ありがとうございます.

/etc/fstab の抜粋(#10)の最初の2行 /dev/hda[12] は 内蔵HD で defaults で  (dmesg にある通り)mount & swapon しています.
USB 外付け HD は 最後の3行 /dev/sd[abc]5 です.

コード:

$ man mount
...
       defaults
              Use default options: rw, suid,  dev,  exec,  auto,  nouser,  and
              async.
...

defaults は auto のオプションを含みます.

オフライン

 

#13 2009-08-22 22:16:13

petitbootang
メンバ
From: 東京都
登録日: 2009-02-12

Re: USBメモリのオートマウント

defaults は auto のオプションを含みます.

あぁー、確かにそうですね、すびばせん。
明示的に、auto とした方が良いのかな、何となく思ってました。
でも、fstab も奥が深くて面白いですよね。

オフライン

 

#14 2009-08-23 11:32:16

Mild7
メンバ
登録日: 2009-02-23

Re: USBメモリのオートマウント

fstabにUUID=547D-34A9    /media/www    vfat auto,users,umask=000,rw,utf8    0    0
これやってみましたが NG でした。
dmesg で調べるとやはり sda 認識は最後ですね
自動マウントは無理なようです。

みなさま ありがとうございました。

オフライン

 

#15 2009-08-23 14:28:09

shin-sasaki
メンバ
登録日: 2009-01-07

Re: USBメモリのオートマウント

/etc/rc.local で mount してみては?

オフライン

 

#16 2009-08-24 13:42:32

n_saito
メンバ
登録日: 2009-06-23

Re: USBメモリのオートマウント

手段を選ばず目的を達成してみるテストw

Mild7 による投稿:

fstabにUUID=547D-34A9    /media/www    vfat auto,users,umask=000,rw,utf8    0    0
これやってみましたが NG でした。
dmesg で調べるとやはり sda 認識は最後ですね

fstypeがvfatですけど、これは間違ってませんよね?

それはサテオキ、

どちらにしろUSBモジュールがロードされてからでないと認識できないはずなので、結構強引なやり方としては
「/etc/init.d にmountコマンドを仕込んだinit scriptを置いて、update-rc.dでシーケンスコードを99で実行可能にする」
というパターンもありだと思います。

update-rc.dコマンドの実行例としては
sudo update-rc.d foobar start 99 2 3 4 5 . stop 20 0 1 6 .
こんなカンジになります。

# stop側はumount作業となるでしょうから実質無しでも良いかも。

update-rc.dコマンドがない環境であれば
for i in 2 3 4 5 ; do cd /etc/rc$i.d && sudo ln -s ../init.d/foobar S99foobar ;done
と/etc/rc[2-5].dに/etc/init.d/foobarのシンボリックリンクを手動で張るという手があるかと。

# 実績としては「BIOSの問題で認識できていないslaveで設置したHDDを、システム起動のタイミングでmountさせていた」というのが数年前まで稼働していましたw

オフライン

 

#17 2009-08-24 20:54:48

petitbootang
メンバ
From: 東京都
登録日: 2009-02-12

Re: USBメモリのオートマウント

shin-sasaki さん、こんにちは。

shin-sasaki さん による投稿:

/etc/rc.local で mount してみては?

/etc/rc.local でマウントする場合、具体的にどういう記述にしたらよいでしょうか?
不勉強で申し訳ありません。

オフライン

 

#18 2009-08-24 21:21:36

shin-sasaki
メンバ
登録日: 2009-01-07

Re: USBメモリのオートマウント

BeagleBoard で遊んでらっしゃるとの事でしたので、結構 linux に詳しい方かと思ってしまいました。説明不足で申し訳ないです。

#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.

mount -t nfs /dev/sda1 /mild7www        <-- これを追加する。
exit 0

追加する内容は最初の投稿で書いておられる「手動でマウントできる」コマンドで結構です。
/etc/fstab に設定済みならば、'mount /mild7www' や 'mount -a' でも良いと思います。
Beagle Boad は持っていませんので(実はとっても欲しいんですが・・・)当方で確認は出来ませんが・・・
あと念のため、システムの起動が up-start になってから、getty の起動が早すぎることによる不具合が発生することがあると、どこかで聞いた覚えがあります。
まだ mount が早すぎる場合には、mount コマンドの前に sleep 5 とか入れてみてください。

オフライン

 

#19 2009-08-24 21:26:46

petitbootang
メンバ
From: 東京都
登録日: 2009-02-12

Re: USBメモリのオートマウント

n_saito さん、こんにちは。

update-rc.dコマンドの実行例としては
sudo update-rc.d foobar start 99 2 3 4 5 . stop 20 0 1 6 .
こんなカンジになります。

# stop側はumount作業となるでしょうから実質無しでも良いかも。

これ、具体的なマウント作業としては、どうしたら良いのでしょうか?
foorbar は mount コマンドを仕込んだスクリプト名ということですよね?
単に、sudo mount -t ~ と言うのを書き込めば良いのでしょうか。

それと、通常の Ubuntu ではやはり udev が働いているため、マウントに成功していても update-rc.d コマンドや rc.local の記述でマウントされたのか、udev でマウントされたのかの区別が付かないですよね?
そこで、udev を off にするためにパッケージ自体を削除してみようと思ったところ、ほとんどシステムの破壊と言って良いほど依存パッケージが削除されてしまうので、やむを得ず sysv-rc-conf で udev サービスを止めたところ、X が起動しなくなる上にマウント自体が不能になるようです。
udev の仕組み自体が、単にオートマウントが出来るとかの仕組み上の問題だけではなく、システムの根幹自体に深く食い込んでいるようなので、ノーマルの Ubuntu で BeagleBoard に搭載されている Ubuntu の検証を行うのはやや難しいかも知れないですね。

オフライン

 

#20 2009-08-24 21:36:17

petitbootang
メンバ
From: 東京都
登録日: 2009-02-12

Re: USBメモリのオートマウント

shin-sasaki さん による投稿:

BeagleBoard で遊んでらっしゃるとの事でしたので、結構 linux に詳しい方かと思ってしまいました。説明不足で申し訳ないです。

shin-sasaki さん、済みません。
知りたいのは、Mild7 さん本人ではなく、わたくし petitbootang です。
どちらにしても、私自身が不勉強であったことは確かなのですが(^^;)済みません。

ただ、#19 でも書きましたが、
udev が普通に働いている通常の Ubuntu では、マウントに成功していても、rc.local の記述でマウントされたのか、udev でマウントされたのかの区別が付かないですよね?
これを見分ける方法があるなら、これまた私の不勉強さなのですが・・・。

udev を停止すると結構大変なことになってしまったので、Mild7 さんの環境に限りなく近い形で疑似体験出来る方法は無いでしょうかね・・・。

オフライン

 

#21 2009-08-24 22:51:13

einundzwanzighundertsechs
メンバ
登録日: 2008-12-28

Re: USBメモリのオートマウント

petitbootang さんへ,
最近のデスクトップ linux で udev を止めると /dev/sd* 等のデバイスノードが作成されないので,結果としてファイルシステムはマウントされません.
# HW がほとんど固定の私の玄箱では udev も hal も不要なので動かしていません.静的にデバイスノードを /dev に作成しています.

私の理解する範囲では udev の動いているシステムでは

* udev はホットプラグイベントに反応して,ルールに従って /dev/ にデバイスノードを作成し,/dev/disk/by-uuid/ 等にシンボリックリンクを作成したりする.直接マウントはしない.

* 起動時では /etc/init.d/mountall.sh 等の rc スクリプトが mount -a で /etc/fstab に従ってマウントする.udev が起動時にデバイスノードを作成できたものに限る.

* その後は udev が /lib/udev/rules.d/90-hal.rules でイベントを hal にリレーし,D-Bus 経由で gnome-mount 等がマウントする.

が,大まかな流れではなかったかと... ですから,

Mild7さん#3 による投稿:

/dev/disk/by-id や /dev/block にUSBが表示されることが解りました。

との記述から,組み込みながらも「udev は動いているらしい」です.

私も,まずは /etc/fstab にエントリを記述して rcスクリプト のどこかで mount -a する方針が自然だと思いますが,もし rcスクリプトの実行タイミングでデバイスが認識されていない場合は,udev のルールにコマンドを記述して直接マウントさせるのも試す価値はあるのでは?

あまり詳しくないけれど,もっともシンプルなパターンでは

コード:

KERNEL=="sda1", RUN+="mount %k"

かな?

オフライン

 

#22 2009-08-25 01:18:37

shin-sasaki
メンバ
登録日: 2009-01-07

Re: USBメモリのオートマウント

失礼しました。今は petitbootang さんからの質問だったんですね。

ubuntu での auto mount の処理は udev だけでなく、hal, gnome-volume-manager などが関連しています。あと gnome-mount なんてのも関係あったかも。

> rc.local の記述でマウントされたのか、udev でマウントされたのかの区別が付かないですよね?
> これを見分ける方法があるなら、これまた私の不勉強さなのですが・・・。

udev の動作内容を確認したいのであれば、/var/log/udev を見たり、udevinfo コマンドで確認できると思います。

但し、手元の hardy で /etc/udev/rules.d の内容を見ましたが、udev では名前を決めてシンボリックリンクを作るだけで、マウントはしていないように見えます。
auto mount をさせたくないのであれば、gnome-volume-manager または gnome-mount を止めてみては如何ですか?

> udev を停止すると結構大変なことになってしまったので、Mild7 さんの環境に限りなく近い形で疑似体験出来る方法は無いでしょうかね・・・。

udev rule を書き換えれば、特定のデバイスを udev が扱わないように出来ると思います。
hardy では /etc/udev/rules.d/60-persistent-storage.rules の 32 行目

KERNEL=="sd*[!0-9]|sr*", ENV{ID_SERIAL}!="?*", SUBSYSTEMS=="usb", IMPORT{program}="usb_id --export %p"

この辺を書き換えれば良いのではと思いますが・・・下手をするとシステムが起動しなくなるかもしれませんから、試してみる場合には慎重に「人柱モード」でどうぞ。
あっ! udev rule のデバッグには udevtest というコマンドあるそうです。
(と言って焚きつけてますが)
試してみて結果がでたら教えていただけると嬉しいです。

と書いて送信しようとしたら einundzwanzighundertsechs さんからもレスが付いてましたね。
少々重複していた内容になってしまいましたが、ご容赦下さい。

オフライン

 

#23 2009-08-25 04:21:29

einundzwanzighundertsechs
メンバ
登録日: 2008-12-28

Re: USBメモリのオートマウント

訂正です.

einundzwanzighundertsechs による投稿:

コード:

KERNEL=="sda1", RUN+="mount %k"

かな?

%k には /dev が必要みたいです.%kを使う必要が起こるのは,例えば条件にパターンマッチを使う場合なので

コード:

KERNEL=="sd*", RUN+="mount /dev/%k"

でしょうか?  /dev/sda1 に決め打ちなら

コード:

KERNEL=="sda1", RUN+="mount /dev/sda1"

がもっとシンプルですね.(条件ACTION=="add" も追加する必要があるかも?)
mount /dev/sda1 だけでマウントできるように /etc/fstab に正しくエントリが記述してあることが前提です.

オフライン

 

#24 2009-08-25 04:34:46

einundzwanzighundertsechs
メンバ
登録日: 2008-12-28

Re: USBメモリのオートマウント

追加です.udev ルールで RUN で指定するコマンドはフルパスが良いでしょう.mount -> /bin/mount

オフライン

 

#25 2009-08-26 01:21:33

petitbootang
メンバ
From: 東京都
登録日: 2009-02-12

Re: USBメモリのオートマウント

shin-sasaki さん、こんにちは。

取り敢えず、gconf-editor の apps -> nautilus -> preferences で、media_automount と media_automount_open のチェックを外して自動マウントを停止し、rc.local に記述したところ起動時にマウントされていました。

mount -t vfat UUID=62F2-2E03 /media/usb

ただ、上記だけだと文字化けしてしまうので、/etc/fstab に書いていたのと同じ記述をそのまま使いました。

mount -t vfat UUID=62F2-2E03 /media/usb auto,users,umask=000,rw,utf8

オフライン

 

Board footer

Powered by FluxBB