日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

MDEV Primer

發布時間:2025/7/14 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MDEV Primer 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
/*************************************************************************** MDEV Primer* 說明:* 本文內容來自busybox的文檔,以前一直想搞清楚熱插拔的本質是什么,* 設備節點是怎么創建,權限該如何給,如何存儲設備是如何掛載的,等等信息。** 2016-1-15 深圳 南山平山村 曾劍鋒*************************************************************************/-------------MDEV Primer -------------For those of us who know how to use mdev, a primer might seem lame. For everyone else, mdev is a weird black box that they hear is awesome, but can't seem to get their head around how it works. Thus, a primer. 對于那些知道怎么使用mdev的人來說,這篇文章顯得是多余的。對于其他的人來說, 像一個黑夾子,不知道她是怎么工作的,根本沒有頭緒。這就是這份文檔的意義所在: 基礎教程。-----------Basic Use -----------Mdev has two primary uses: initial population and dynamic updates. Both require sysfs support in the kernel and have it mounted at /sys. For dynamic updates, you also need to have hotplugging enabled in your kernel. Mdev有兩個基本功能:全局初始化和動態更新。這兩個都需要內核中的sysfs文件系統 的支持,并且其被掛載在/sys目錄下。對于動態更新,需要在內核中開啟熱插拔的功能。Here's a typical code snippet from the init script: 下面是典型的初始化腳本: [0] mount -t proc proc /proc [1] mount -t sysfs sysfs /sys [2] echo /sbin/mdev > /proc/sys/kernel/hotplug [3] mdev -sAlternatively, without procfs the above becomes: 當然在沒有procfs的情況下,你也可以使用下面的形式。 [1] mount -t sysfs sysfs /sys [2] sysctl -w kernel.hotplug=/sbin/mdev [3] mdev -sOf course, a more "full" setup would entail executing this before the previous code snippet: 當然,如果你想要一個更加全面的設置如下,那么在前面的代碼執行之前,你可以加入 以下的內容。 [4] mount -t tmpfs -o size=64k,mode=0755 tmpfs /dev [5] mkdir /dev/pts [6] mount -t devpts devpts /dev/ptsThe simple explanation here is that [1] you need to have /sys mounted before executing mdev. Then you [2] instruct the kernel to execute /sbin/mdev whenever a device is added or removed so that the device node can be created or destroyed. Then you [3] seed /dev with all the device nodes that were created while the system was booting. 綜上所述:1. 首先在執行mdev之前,你需要掛在sysfs文件系統掛在在/sys目錄;2. 接下來指定執行/sbin/mdev無論什么時候設備插入、拔除,設備節點都能夠被創建或者銷毀;3. 當系統跑起來之后,你可以在/dev下看到設備節點是否被創建。For the "full" setup, you want to [4] make sure /dev is a tmpfs filesystem (assuming you're running out of flash). Then you want to [5] create the /dev/pts mount point and finally [6] mount the devpts filesystem on it. 對于完整的設置,你需要確認/dev下是一個tmpfs文件系統。同時你想要創建 /dev/pts掛載點,并將devpts文件系統掛在在上面。-------------MDEV Config (/etc/mdev.conf) -------------Mdev has an optional config file for controlling ownership/permissions of device nodes if your system needs something more than the default root/root permissions. 當系統需要除了默認的root/root 666的用戶、分組、權限之外,Mdev有一個 操作配置文件用于設置設備節點的用戶、分組、權限。The file has the format: 文件格式如下:[-][envmatch]<device regex> <uid>:<gid> <permissions> or[envmatch]@<maj[,min1[-min2]]> <uid>:<gid> <permissions> or$envvar=<regex> <uid>:<gid> <permissions>For example:hd[a-z][0-9]* 0:3 660The config file parsing stops at the first matching line. If no line is matched, then the default of 0:0 660 is used. To set your own default, simply create your own total match like so: 從前往后,最先匹配的到的那一行有效,之后系統會停止解析配置文件。 如果最新的設備節點與配置文件中沒有一行匹配,那么使用默認的值0:0 660。 對于設置自己的默認值,只需要簡簡單單的加入如下配置就行了。.* 1:1 777You can rename/move device nodes by using the next optional field. 你可以重命名/移動設備節點通過如下的操作域。<device regex> <uid>:<gid> <permissions> [=path]So if you want to place the device node into a subdirectory, make sure the path has a trailing /. If you want to rename the device node, just place the name. 這樣如果你想要將一個設備節點放入子目錄下,確保目錄后面有一個"/"尾巴, 如果你想要重命名設備節點,僅僅需要寫上名字就行了。hda 0:3 660 =drives/ This will move "hda" into the drives/ subdirectory. 將"hda"設備節點放入"drives/"目錄下。hdb 0:3 660 =cdrom This will rename "hdb" to "cdrom". 將"hdb"設備節點改名為"cdrom"。Similarly, ">path" renames/moves the device but it also creates a direct symlink /dev/DEVNAME to the renamed/moved device. 類似,">path"重命名、移動設備節點,也同時在/dev下創建一個軟鏈 接到設備節點上。For example: ---8<--- # block devices ([hs]d[a-z]) root:disk 660 >disk/%1/0 ([hs]d[a-z])([0-9]+) root:disk 660 >disk/%1/%2 mmcblk([0-9]+) root:disk 660 >disk/mmc/%1/0 mmcblk([0-9]+)p([0-9]+) root:disk 660 >disk/mmc/%1/%2 # network devices (tun|tap) root:network 660 >net/%1 ---8<---You can also prevent creation of device nodes with the 4th field as "!": 也可以防止創建設備節點使用第四個域的值:"!"tty[a-z]. 0:0 660 !pty[a-z]. 0:0 660 !If you also enable support for executing your own commands, then the file has the format: 如果你想當設備節點生成的時候執行你自己安排的命令,格式如下:<device regex> <uid>:<gid> <permissions> [=path] [@|$|*<command>]or<device regex> <uid>:<gid> <permissions> [>path] [@|$|*<command>]or<device regex> <uid>:<gid> <permissions> [!] [@|$|*<command>]The special characters have the meaning:@ Run after creating the device.$ Run before removing the device.* Run both after creating and before removing the device. 上面特殊的字符的意義如下:@ 運行于設備節點創建之后。$ 運行于刪除設備節點之前。* 運行于創建設備節點之后、刪除設備節點之前。The command is executed via the system() function (which means you're giving a command to the shell), so make sure you have a shell installed at /bin/sh. You should also keep in mind that the kernel executes hotplug helpers with stdin, stdout, and stderr connected to /dev/null. 這些命令是通過system()函數執行的(這也就意味著是shell命令),所以請確認你 系統中有"/bin/sh"。同時在心里一定要記住熱插拔的標準輸入、標準輸出、標準錯誤 都被重定向到"/dev/null"。For your convenience, the shell env var $MDEV is set to the device name. So if the device "hdc" was matched, MDEV would be set to "hdc". 為了方便使用,shell的環境變量$MDEV被設置為設備名,如果設備"hdc"匹配上了, MDEV將被設置為"hdc"----------FIRMWARE ----------Some kernel device drivers need to request firmware at runtime in order to properly initialize a device. Place all such firmware files into the /lib/firmware/ directory. At runtime, the kernel will invoke mdev with the filename of the firmware which mdev will load out of /lib/firmware/ and into the kernel via the sysfs interface. The exact filename is hardcoded in the kernel, so look there if you need to know how to name the file in userspace. 一些內核設備驅動在運行時為了更好的初始化設備需要加載固件。將固件文件放入 "/lib/firmware"目錄下,在運行時,內核將通過固件的名字激活mdev,mdev將 通過sysfs系統接口加載固件到內核,在內核中抽取的文件是硬編碼,所以看 一下你是否需要知道怎么在用戶空間命名。------------SEQUENCING ------------Kernel does not serialize hotplug events. It increments SEQNUM environmental variable for each successive hotplug invocation. Normally, mdev doesn't care. This may reorder hotplug and hot-unplug events, with typical symptoms of device nodes sometimes not created as expected.However, if /dev/mdev.seq file is found, mdev will compare its contents with SEQNUM. It will retry up to two seconds, waiting for them to match. If they match exactly (not even trailing '\n' is allowed), or if two seconds pass, mdev runs as usual, then it rewrites /dev/mdev.seq with SEQNUM+1.IOW: this will serialize concurrent mdev invocations.If you want to activate this feature, execute "echo >/dev/mdev.seq" prior to setting mdev to be the hotplug handler. This writes single '\n' to the file. NB: mdev recognizes /dev/mdev.seq consisting of single '\n' character as a special case. IOW: this will not make your first hotplug event to stall for two seconds.Example(https://git.busybox.net/busybox/tree/examples/mdev.conf):# Note: the first field is a regex matcher# Syntax: %s %d:%d %s# devices user:group modenull 0:0 666zero 0:0 666grsec 0:0 660urandom 0:0 444console 0:5 600fd0 0:11 660hdc 0:6 660kmem 0:9 640mem 0:9 640port 0:9 640ptmx 0:5 660sda[0-9] 0:6 660sdb[0-9] 0:6 660hda[0-9] 0:6 660ttyS[0-9] 0:14 640tty[0-9] 0:0 660tty.+ 0:5 660

?

總結

以上是生活随笔為你收集整理的MDEV Primer的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 一区二区三区黄色 | av大片网站 | 精品乱码一区二区三区四区 | 国产免费脚交足视频在线观看 | 亚洲狼人在线 | 超碰97av在线 | 97人妻精品视频一区 | 亚洲色图欧美在线 | 成年人视频在线观看免费 | 91精品一区二区三 | 丰满人妻一区二区三区性色 | 久久久久久久久久久久久久 | 丰满少妇乱子伦精品看片 | 欧美精品一区在线 | 亚洲高清一区二区三区 | 中文日韩在线 | 黑丝国产在线 | 97超碰免费 | 日本羞羞网站 | 青青草国产在线视频 | 久久新网址 | 手机看片日韩 | 国产欧美一区二区视频 | 亚洲顶级毛片 | 国产猛男猛女超爽免费视频 | 日韩久久视频 | 人人爱人人插 | 美日韩成人av | 亚洲天堂免费看 | caobi视频 | 欧美人与禽猛交乱配视频 | 欧美第一夜 | 日韩亚洲精品视频 | 国产视频一区二区在线播放 | 婷婷亚洲五月 | 国产乱大交 | 亚洲综合在线观看视频 | 亚洲午夜久久久久久久久红桃 | 欧洲-级毛片内射 | 国产 欧美 日韩 一区 | 97影音| 成人在线观看网 | 成人网导航 | 亚洲黄色一级 | 午夜桃色 | 香蕉视频毛片 | 女女同性高清片免费看 | 夜夜躁日日躁狠狠久久av | 视频精品久久 | 欧美一级特黄aaaaaa大片在线观看 | 热热久| 青青青国产精品一区二区 | 国产亚洲一区二区在线 | 色偷偷av一区二区三区 | va视频在线 | 三级黄色网络 | 国产在线视频91 | 91在线无精精品一区二区 | 欧美人妖xxxx | 狠狠干夜夜爽 | 丰满人妻熟女aⅴ一区 | 91欧美激情一区二区三区 | 亚洲第一视频 | 波多野结衣在线观看视频 | 欧美日比视频 | 成人久久久精品乱码一区二区三区 | 男男黄色片 | 亚洲熟妇无码av | 黄色网址在线看 | 打白嫩屁屁网站视频短裙 | 狠狠干美女 | 久久久久亚洲 | 黄色片在线播放 | 亚洲欧美日韩网站 | 亚洲精品资源在线 | 亚洲第一看片 | 操你妹影院 | 狠狠干干 | 国产最新自拍视频 | 午夜精品福利一区二区三区蜜桃 | 日日色综合 | 美女野外找人搭讪啪啪 | 久久久久国产精品视频 | 在线观看日韩一区 | 免费在线观看小视频 | 久久久精品国产 | 美女xx网站 | 精品熟女一区二区三区 | 女优视频在线观看 | 天堂色区 | 免费观看黄色小视频 | 欧洲精品在线观看 | 成人刺激视频 | 中国一区二区三区 | 91视频最新入口 | 亚洲视频一二 | 美女午夜视频 | 欧美大片xxx | 久久久久久久久99精品 |