星期日, 9月 19, 2004

usb disk

usb-storage
ide-core
hotplug

from Moto

花了一些時間追蹤 USB 裝置的 hotplug 流程, 將其記錄下來

以下是 USB Storage 的掛載流程:
1. kernel 偵測到新的 USB 裝置, 依據 /proc/sys/kernel/hotplug 內容呼叫 應用程式 /sbin/hotplug, 參數一為 usb, 參數二為 usb.agent 參數

2. hotplug 呼叫 /etc/hotplug/usb.agent

3. usb.agent 會依據 $MODULE_DIR/modules.usbmap 作 USB 裝置參數設定

然後 執行兩個 case

add)
載入驅動程式( /etc/hotplug/hotplug.functions, 其中 load_drivers()
最後呼叫 updfstab)

設定 storage device 的 symlinks( man devlabel, /etc/sysconfig/devlabel)

remove)
移除驅動程式
updfstab ( man updfstab, /etc/updfstab.conf )

5. updfstab 會依據 /etc/updfstab.conf 及系統偵測到的裝置, 自動設定

/etc/fstab

由以上流程可知, 若要讓一般使用者能夠 mount 隨身碟,需設定

/etc/updfstab.conf.default, 讓 updfstab 產生 /etc/fstab entry 時, 加上

必要參數, 並且動態產生 /mnt/memstick 掛載點, 目前 updfstab 並無法根據設定

檔設定 mount 參數, 而是寫死在程式碼中

- 預設 usb storage 的 mount 參數為 "noauto,owner,kudzu"

- kudzu 表示這個 entry 是 updfstab 產生

- owner 表示可以讓 console 登入的使用者 mount, unmount, 因為在 console

登入的時, 該 device 擁有者會變成該使用者

- 透過 /etc/security/console.perms

設定 =/mnt/memstick* 讓一般使用者可以直接存取 /mnt/memstick*
由以上流程:

Redhat 9 不需設定就可以偵測 USB 隨身碟, 並設定好 /etc/fstab

一般使用者只要 mount /mnt/memstick 就可以掛載, 並存取 /mnt/memstick

但是因為 updfstab 對於 USB Storage mount 參數是寫死在程式中, 因此對於

中文檔名需要加入 iocharset=cp950 無法藉由設定達成, 因此需修改 updfstab

updfstab 其所屬套件為 kudzu, 編譯 kudzu 需要安裝 newt-devel, dietlibc

加入以下 patch:
------------------------------------------------------------------------------
--- kudzu-0.99.99/updfstab.c.org 2003-02-21 00:48:31.000000000 +0800
+++ kudzu-0.99.99/updfstab.c 2003-09-29 22:13:06.000000000 +0800
@@ -740,7 +740,7 @@
!(strcmp(addition->device->type->name, "cdrom") &&
strcmp(addition->device->type->name, "cdwriter") &&
strcmp(addition->device->type->name, "cdrw")) ?
- "noauto,owner,kudzu,ro" : "noauto,owner,kudzu",
+ "noauto,owner,kudzu,ro" : "noauto,owner,kudzu,iocharset=cp950",
0, 0);
}

------------------------------------------------------------------------------

強制掛載參數 iocharset=cp950, 這個方法非常 dirty ....

reference:

1.http://www.spinics.net/lists/rh-devel/msg00811.html
2.http://connecteduser.com/forum/viewtopic.php?t=111

沒有留言:

網誌存檔