linux中的熱插拔和mdev機制
作用是在系統啟動(dòng)和熱插拔 或動(dòng)態(tài)加載驅動(dòng)程序時(shí),自動(dòng)產(chǎn)生驅動(dòng)程序所需的節點(diǎn)文件,在文件系統中的/dev目錄下的設備節點(diǎn)都是由mdev創(chuàng )建的
mdev掃描/sys/class和/sys/block中所有的類(lèi)設備目錄,如果在目錄中含有名為"dev"的文件,且文件中包含的是設備號,則mdev就利用這些信息為這個(gè)設備在/dev下創(chuàng )建設備節點(diǎn)
用法:
1. 執行mdev前要掛載 /sys
mount -t tmpfs mdev /dev
mount -t sysfs sysfs /sys
2.命令內核在增刪設備時(shí)執行/sbin/mdev,使設備節點(diǎn)會(huì )被創(chuàng )建和刪除
echo /sbin/mdev > /proc/sys/kernel/hotplug
3.設置mdev,讓它在系統啟動(dòng)時(shí)創(chuàng )建所有的設備節點(diǎn)
mdev -s
嵌入式linux文件系統中etc/fstab的內容如下
- #devicemount-pointtypeoptionsdumpfsckorder
- proc/procprocdefaults00
- tmpfs/tmptmpfsdefaults00
- sysfs/syssysfsdefaults00
- tmpfs/devtmpfsdefaults00
- var/devtmpfsdefaults00
etc/fstab對etc/fstab的解釋
1. 第1列是需要掛載的文件系統或存儲設備
2. 第2列是掛載點(diǎn)
3. 第3列指定文件系統或分區的類(lèi)型
4. 掛載選項,下面列出一些常用的選項
掛載選項:
auto: 系統自動(dòng)掛載,fstab默認就是這個(gè)選項
ro: read-only
rw: read-write
defaults: rw, suid, dev, exec, auto, nouser, and async
5. 第5列為dump選項,設置是否讓備份程序dump備份文件系統,0為忽略,1為備份。
6. 第6列為fsck選項,告訴fsck程序以什么順序檢查文件系統,0為忽略。
嵌入式linux文件系統中etc/init.d/rcS的的內容如下
- #!/bin/sh
- PATH=/sbin:/bin:/usr/sbin:/usr/bin
- runlevel=S
- prevlevel=N
- umask022
- exportPATHrunlevelprevlevel
- #
- #TrapCTRL-C&conlyinthisshellsowecaninterruptsubprocesse.
- mount-a
- mkdir/dev/pts
- mount-tdevptsdevpts/dev/pts
- echo/sbin/mdev>/proc/sys/kernel/hotplug
- mdev-s
- mkdir-p/var/lock
關(guān)于熱插拔:
需要內核中支持hotplug
編寫(xiě)mdev配置文件:/etc/mdev.conf
該文件的作用是:mdev在找到匹配設備時(shí)自動(dòng)執行自定義命令
格式為:
@ 創(chuàng )建節點(diǎn)后執行的
$ 刪除節點(diǎn)前執行的
* 創(chuàng )建后和刪除前都運行的
如自動(dòng)掛載U盤(pán)和SD卡腳本:
sd[a-z][0-9] 0:0 0660 @/etc/hotplug/usb/udisk_insert
sd[a-z] 0:0 0660 $/etc/hotplug/usb/udisk_remove
mmcblk[0-9]p[0-9] 0:0 0660 @/etc/hotplug/sd/sd_insert
mmcblk[0-9] 0:0 0660 $/etc/hotplug/sd/sd_remove
當檢測到類(lèi)似sda1這樣的設備時(shí),執行/etc/hotplug/usb里的腳本,腳本的內容就是掛載和卸載U盤(pán)
當檢測到類(lèi)似mmcblk0p1這樣的設備時(shí),執行/etc/hotplug/sd里的腳本,腳本的內容就是掛載和卸載SD卡
評論