《理解Linux文件系統(tǒng)和設備文件系統(tǒng).ppt》由會員分享,可在線閱讀,更多相關(guān)《理解Linux文件系統(tǒng)和設備文件系統(tǒng).ppt(23頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、Linux文件系統(tǒng)和設備文件系統(tǒng),,主要內(nèi)容,Linux文件系統(tǒng)目錄結(jié)構(gòu) sysfs文件系統(tǒng)及測試 設備文件系統(tǒng)及測試,一、Linux文件系統(tǒng)目錄結(jié)構(gòu),/dev: 設備文件存儲目錄。 /lib: 庫文件目錄。 /var: 這個目錄的內(nèi)容經(jīng)常變動,如/var/log目錄被用來存放系統(tǒng)日志。 /etc: 系統(tǒng)配置文件所在目錄。 /proc: 系統(tǒng)運行時,進程和內(nèi)核信息存放在這里。 /bin: 包含基本命令。,一、Linux文件系統(tǒng)目錄結(jié)構(gòu)(續(xù)),/mnt: 用來存放掛載存儲設備的掛載目錄。 /usr: 存放用戶程序的目錄。 /tmp: 用來存放臨時文件。 /sys: sysfs文件系統(tǒng)被映射到此目
2、錄。 /sbin: 存放系統(tǒng)管理的命令,是超級用戶root的可執(zhí)行命令存放地。 /root: 超級用戶root的家目錄,查看系統(tǒng)中注冊的設備,輸入命令: cat /proc/devices 查看系統(tǒng)中注冊的設備。 分為“Character devices”和“Block devices”。 第1列為主設備號,第2列為設備名。,查看系統(tǒng)中注冊的設備(續(xù)),輸入命令: ls l /dev/ 也可以查看系統(tǒng)注冊的設備文件。 日期的前兩列對應于設備的主設備號和次設備號。,二、sysfs文件系統(tǒng),輸入命令: ls -l /sys 查看sysfs文件系統(tǒng)目錄。 sysfs文件系統(tǒng)把連接在系統(tǒng)上的設備和總線
3、組織成一個個分級的文件,向用戶空間導出內(nèi)核數(shù)據(jù)結(jié)構(gòu)以及它們的屬性,并可以由用戶空間存取。,二、sysfs文件系統(tǒng)(續(xù)),輸入命令: echo xxx /sys/devices/platform/hhtech_gpio/backlight_level 調(diào)節(jié)LCD屏的背光亮度。其中,“xxx”的范圍是0100,分別對應背光的最小值和最大值。,輸入命令: cat /sys/devices/platform/hhtech_gpio/backlight_level 讀取當前LCD屏的背光亮度。,二、sysfs文件系統(tǒng)(續(xù)),修改drivers/char/hhtech_gpio.c,添加如下內(nèi)容: sta
4、tic DEVICE_ATTR(backlight_level, 0666, hhtech_sysfs_show_backlight_level, hhtech_sysfs_store_backlight_level); 創(chuàng)建和初始化“backlight_level”屬性。,二、sysfs文件系統(tǒng)(續(xù)),修改drivers/char/hhtech_gpio.c,向數(shù)組attrs添加如下內(nèi)容: &dev_attr_backlight_level.attr 將“backlight_level”屬性添加到sysfs文件系統(tǒng)中。,二、sysfs文件系統(tǒng)(續(xù)),hhtech_sysfs_show_bac
5、klight_level函數(shù),hhtech_sysfs_store_backlight_level函數(shù),二、sysfs文件系統(tǒng)(續(xù)),重新編譯內(nèi)核,二、sysfs文件系統(tǒng)(續(xù)),重新打包固件并測試,三、設備文件系統(tǒng),/dev是設備文件的存放目錄,那怎么生成相應的設備文件節(jié)點呢?使用設備文件系統(tǒng)udev。 udev完全工作在用戶空間,利用設備加入或者移除時內(nèi)核向應用層發(fā)送的熱插拔事件來工作。 熱插拔時,設備的詳細信息會由內(nèi)核輸出到sysfs文件系統(tǒng)中,udev利用sysfs的信息來動態(tài)創(chuàng)建和刪除設備文件或者執(zhí)行其它動作。,mdev(udev的精簡版本)的原理,執(zhí)行mdev -s :以-s為參數(shù)調(diào)
6、用 /sbin/mdev,mdev掃描 /sys/class 和 /sys/block 中所有的類設備目錄,如果在目錄中含有名為“dev”的文件,且文件中包含有設備號,則mdev就利用這些信息為這個設備在/dev 下創(chuàng)建設備節(jié)點文件。一般只在啟動時才執(zhí)行一次 “mdev -s”。,mdev的原理(續(xù)),熱插拔事件:由于啟動時運行了命令:echo /sbin/mdev /proc/sys/kernel/hotplug ,那么當有熱插拔事件產(chǎn)生時,內(nèi)核就會調(diào)用/sbin/mdev。這時mdev通過環(huán)境變量中的 ACTION 和 DEVPATH,來確定此次熱插拔事件的動作及影響了/sys中的哪個目錄
7、。接著會看看這個目錄中是否有“dev”的屬性文件,如果有就利用這些信息為這個設備在/dev下創(chuàng)建設備節(jié)點文件。,mdev的使用,在啟動時加上使用mdev的命令: # 掛載/sys為sysfs文件系統(tǒng) /bin/mount -t sysfs sysfs /sys # 啟動mdev程序 /bin/echo /sbin/mdev /proc/sys/kernel/hotplug mdev -s,mdev的使用(續(xù)),在rootfs/etc/inittab文件中添加: ::sysinit:/bin/mount -t sysfs none /sys -o noexec,nosuid,nodev 掛載/s
8、ys為sysfs文件系統(tǒng),mdev的使用(續(xù)),在rootfs/etc/inittab文件中添加: ::sysinit:/bin/echo /sbin/mdev /proc/sys/kernel/hotplug ::sysinit:/sbin/mdev -s 啟動mdev程序,mdev的使用(續(xù)),例如: 當插入SD卡后,能自動生成/dev/mmcblk1p1設備, 并且自動mount到/mnt/mmcblk1p1目錄上去。,mdev的使用(續(xù)),例如: 當拔出SD卡后,能自動刪除/dev/mmcblk1p1設備。,mdev的實驗,將rootfs/etc/inittab文件中的“::sysinit:/bin/echo /sbin/mdev /proc/sys/kernel/hotplug”語句注釋掉 重新編譯固件,然后測試SD卡能否自動識別?,Any Questions?,