
Ubuntu日本語フォーラム

ログインしていません。
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
~
どなたか、ご教授ください お願いします。
(夜は遅くまで起きてられません 年なので。。。)
オフライン
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
などのパッケージが存在するか確認してください。
オフライン
ありがとうございます。
USBフラッシュメモリは fat32 ext3 で最初に試しました 起動の前挿し 後挿し どちらも NGでした。
NTFS用の ntfs-3g ntfs-config ntfsprogs はインストール済みです。
いろいろやっているうちに $ df -h ではマウントが確認できないけれど
/dev/disk/by-id や /dev/block にUSBが表示されることが解りました。
これらを利用して /etc/rcS.d に何か追記して出来ないものでしょうか??
この何か が問題ですけど。。。。
再度のご教授お願いします。
オフライン
/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 で良いですね。
オフライン
/dev/sdb1 /media/usb vfat auto,users,umask=000,rw,utf8 0 0
これを試してみましたが NG でした。
BeagleBoardは普通のUbuntuとちがうようで無理なのかも知れませんね
今回は あきらめ とします。
ありがとうございました。
オフライン
あ、#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
オフライン
Mild7 による投稿:
ありがとうございます。
\いろいろやっているうちに $ df -h ではマウントが確認できないけれど
/dev/disk/by-id や /dev/block にUSBが表示されることが解りました。
これらを利用して /etc/rcS.d に何か追記して出来ないものでしょうか??
それは /dev/disk/なんとか をfstabにツッコむだけで良いのでは...?
通常のUbuntuとかであればudevが色々やってくれるので/dev/sda1とかと言ったデバイスになると思いますが、udevを組み込んでいないのであれば長いブロックデバイス名でやるしかない気がします。
オフライン
ふーむ、それでは 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 の仕組みが無くてもこれで上手くいくんぢゃないかなぁ…だんだん泪目。
オフライン
もう諦めたとのことですが参考になれば...
此方の「玄箱」は 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 で起動時の挙動を調べては如何がでしょう?
オフライン
UUID=62F2-2E03 /media/usb vfat auto,users,umask=000,rw,utf8 0 0
上記のように、UUID= を付けるのが正しいようですね。ただ、付けなくても動作はします。
einundzwanzighundertsechs さん、いつもお世話になります。
自動マウントしないのは、auto ではなく defaults でマウントしているからではなく、ですか?
オフライン
こんばんは,
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 のオプションを含みます.
オフライン
defaults は auto のオプションを含みます.
あぁー、確かにそうですね、すびばせん。
明示的に、auto とした方が良いのかな、何となく思ってました。
でも、fstab も奥が深くて面白いですよね。
オフライン
fstabにUUID=547D-34A9 /media/www vfat auto,users,umask=000,rw,utf8 0 0
これやってみましたが NG でした。
dmesg で調べるとやはり sda 認識は最後ですね
自動マウントは無理なようです。
みなさま ありがとうございました。
オフライン
手段を選ばず目的を達成してみるテスト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
オフライン
shin-sasaki さん、こんにちは。
shin-sasaki さん による投稿:
/etc/rc.local で mount してみては?
/etc/rc.local でマウントする場合、具体的にどういう記述にしたらよいでしょうか?
不勉強で申し訳ありません。
オフライン
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 とか入れてみてください。
オフライン
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 の検証を行うのはやや難しいかも知れないですね。
オフライン
shin-sasaki さん による投稿:
BeagleBoard で遊んでらっしゃるとの事でしたので、結構 linux に詳しい方かと思ってしまいました。説明不足で申し訳ないです。
shin-sasaki さん、済みません。
知りたいのは、Mild7 さん本人ではなく、わたくし petitbootang です。
どちらにしても、私自身が不勉強であったことは確かなのですが(^^;)済みません。
ただ、#19 でも書きましたが、
udev が普通に働いている通常の Ubuntu では、マウントに成功していても、rc.local の記述でマウントされたのか、udev でマウントされたのかの区別が付かないですよね?
これを見分ける方法があるなら、これまた私の不勉強さなのですが・・・。
udev を停止すると結構大変なことになってしまったので、Mild7 さんの環境に限りなく近い形で疑似体験出来る方法は無いでしょうかね・・・。
オフライン
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"
かな?
オフライン
失礼しました。今は 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 さんからもレスが付いてましたね。
少々重複していた内容になってしまいましたが、ご容赦下さい。
オフライン
訂正です.
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 に正しくエントリが記述してあることが前提です.
オフライン
追加です.udev ルールで RUN で指定するコマンドはフルパスが良いでしょう.mount -> /bin/mount
オフライン
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
オフライン