Busybox下mdev配置說明

来源:http://www.cnblogs.com/OpenShiFt/archive/2016/10/28/6008562.html
-Advertisement-
Play Games

[TOC] mdev說明 mdev是busybox自帶的一個簡化版的udev,適合嵌入式應用場合。其具有使用簡單的特點。它的作用就是在 系統啟動 和 熱插拔 或 動態載入驅動程式 時,自動產生驅動程式所需要的節點文件。在以busybox為基礎構建嵌入式linux根文件系統時,使用它時最優的選擇。 m ...


[TOC]

mdev說明

mdev是busybox自帶的一個簡化版的udev,適合嵌入式應用場合。其具有使用簡單的特點。它的作用就是在系統啟動熱插拔動態載入驅動程式時,自動產生驅動程式所需要的節點文件。在以busybox為基礎構建嵌入式linux根文件系統時,使用它時最優的選擇。

mdev原理

  1. mdev不加參數時就是利用hotplug機制來決定創建什麼樣的設備文件。
  2. mdev -s程式通過掃描/sys/class/sys/block中所有的類設備目錄,利用這些信息在/dev下創建設備節點。

mdev使用

mdev在使用過程中分為兩部分,由於系統啟動時mdev需要根據/sys目錄下的信息來生成設備節點,因此在使用前需要對系統進行一些配置。mdev同過hotplug機制來創建設備節點是根據/etc/mdev.conf文件來生成設備節點的。

系統設置

在系統執行mdev -s前需要執行如下操作:

  1. 配置內核

    make menuconfig
    General setup ---->
    Configure standard kernel features (for small systems) ---->
       [*] load all symbols for debugging/ksymoops
       [*] Include all symbols in kallsyms
       [*] Support for hot-pluggable devices
       [*] Enable support for printk
  2. 配置busybox

    make menuconfig
    Linux System Utilities ---->
    [*] mdev
    [*] Support /etc/mdev.conf
    [*] Support subdirs/symlinks
    [*] Support regular expressions substitutions when renaming device
    [*] Support command execution at device addition/removal
    [*] Support loading of firmwares
  3. 系統啟動時

    Vi  /etc/init.d/rcS
        mount -t tmpfs tmpfs /dev 
        mkdir /dev/pts
        mount -t devpts devpts /dev/pts
        mount -t proc proc /proc 
        mount -t sysfs sysfs /sys
        echo /sbin/mdev>/proc/sys/kernel/hotplug//啟動熱插拔事件;
        mdev –s

    首先掛載/dev/dev/pts/proc/sys文件系統,mdev需要用到這些文件系統。然後告訴系統當有設備熱插拔時,使用mdev來處理。最後執行mdev -s來掃描系統中的設備和驅動等。

配置文件/etc/mdev.conf

系統中的hotplug是通過mdev.conf文件來生成設備節點的,該配置文件格式如下:

  1. 基本格式

    <device regex>   <uid>:<gid>  <octal permissions>
    <device regex>       :設備名稱,支持正則表達式如hd[a-z][0-9]*等
    <uid>:<gid>          :用戶ID和組ID
    <octal permissions>  :八進位表示的設備屬性
  2. 執行腳本格式

    <device regex>   <uid>:<gid>  <octal permissions> [=|>path] [@|$|*]
    [=|>path]:這個選項可以更改設備節點的命名和路徑,如:
          <1> =/driver: 可以將設備節點移動到driver目錄下
          <2> =newname: 可以講設備節點改為newname命名
          <3> >/driver/newname: 可以在/driver目錄下創建一個設備節點的鏈接,並命名為newname
    [@|$|*]:這個選項當設備匹配成功時,執行指令,這個指令可以是自己編寫的腳本。前面的符號含義如下:
          <1>@:在設備節點創建完執行
          <2>$:在設備節點刪除前執行
          <3>*:在設備節點創建完和刪除前執行
    此外在mdev成功匹配設備後會設置兩個系統變數$MDEV和$ACTION。其中$MDEV用來存放匹配到的設備名,$ACTION用來存放設備插拔狀態其值為add和remove。這兩個變數可以在腳本中使用。

腳本實例

mdev.conf
# system all-writable devices
full    0:0 0666
null    0:0 0666
ptmx    0:0 0666
random  0:0 0666
tty 0:0 0666
zero    0:0 0666

# console devices
tty[0-9]*   0:5 0660
vc/[0-9]*   0:5 0660

# serial port devices
s3c2410_serial0 0:5 0666    =ttySAC0
s3c2410_serial1 0:5 0666    =ttySAC1
s3c2410_serial2 0:5 0666    =ttySAC2
s3c2410_serial3 0:5 0666    =ttySAC3

# loop devices 
loop[0-9]*  0:0 0660    =loop/

# i2c devices
i2c-0   0:0 0666    =i2c/0
i2c-1   0:0 0666    =i2c/1

# frame buffer devices
fb[0-9] 0:0 0666

# input devices
mice    0:0 0660    =input/
mouse.* 0:0 0660    =input/
event.* 0:0 0660    =input/
ts.*    0:0 0660    =input/

# rtc devices
rtc0    0:0 0644    >rtc
rtc[1-9]    0:0 0644

# misc devices
mmcblk0p1   0:0 0600    =sdcard */bin/hotplug.sh
mmcblk0 0:0 0600    =mmcblk0 */bin/hotplug.sh
sda1    0:0 0600    =udisk * /bin/hotplug.sh
/bin/hotplug.sh
#!/bin/sh

case $MDEV in
sda1)
    DEVNAME=udisk
    MOUNTPOINT=/udisk
    ;;
mmcblk0p1)
    DEVNAME=sdcard
    MOUNTPOINT=/sdcard
    ;;
mmcblk0)
    DEVNAME=mmcblk0
    MOUNTPOINT=/sdcard 
    ;;  
*)
    exit 0
    ;;
esac

case $ACTION in
remove)
    /bin/umount $MOUNTPOINT || true
    rmdir $MOUNTPOINT >/dev/null 2>&1 || true
    ;;
*)
    /bin/mkdir $MOUNTPOINT > /dev/null 2>&1 || true
    /bin/mount -o sync -o noatime -o nodiratime -t vfat /dev/$DEVNAME $MOUNTPOINT > /dev/null 2>&1 || true
    ;;
esac

exit 0

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 我們在項目開發的時候都不可避免的會有非同步化的問題,比較好的解決方案就是使用消息隊列,可供選擇的隊列產品也有很多,比如輕量級的redis, 當然還有重量級的專業產品rabbitmq,rabbitmq好就好在是用erlang(二郎神)開發的,它那天生的OTP並行計算框架,輕而易舉的進程間通訊,我都恨 不 ...
  • aggregateByKey 這個RDD有點繁瑣,整理一下使用示例,供參考 直接上代碼 輸出結果說明: 參考代碼及下麵的說明進行理解 官網的說明 源碼中函數的說明 ...
  • 【鎖】Oracle死鎖(DeadLock)的分類及其模擬 1 BLOG文檔結構圖 2 前言部分 2.1 導讀和註意事項 各位技術愛好者,看完本文後,你可以掌握如下的技能,也可以學到一些其它你所不知道的知識,~O(∩_∩)O~: ① 死鎖的概念及其trace文件 ② 死鎖的分類 ③ 行級死鎖的模擬 ④ ...
  • 我是個懶人,能yum就yum啦 所有軟體的版本一直會升級,註意自己當時的版本是不是已經更新了。 首先裝centos7 如果你忘了設置swap分區,下麵的文章可以教你怎麼補一個上去: http://www.2cto.com/os/201409/338170.html 裝好centos7後預設是不能上網 ...
  • 我們在使用 "$top" 的時候有一列NI參數,這個參數就是進程的nice值,用來表示進程在系統調度中的優先順序,Linux中的進程nice從 20到+19,越小表明調度的優先順序越高,用戶進程的最小nice值就是0,比這個還要小的都是系統進程,非管理員不允許指定小於0的進程 `$nice n [新的n ...
  • 相關結構 相關函數 主調用 如果函數調用失敗,都返回 1,調用失敗會在全局變數error里有相應的值 不涉及到讀取、發送的時候,調用正常都返回0 socket() 創建套接字 family: 協議或地址族,TCP/IP為PF_INET,(ipv6為PF_INET6),也可以使用AF_INET typ ...
  • 最近剛換了新的筆記本電腦,終於使用上intel i7處理器,可以使用硬體虛擬化技術安裝系統。配置如下: 主機 ThinkPad P50s OS Window 10 虛擬機軟體 Oracle VirtualBox (個人感覺速度很快,並且可以創建相容 VMWare 和Hyper-V的虛擬機文件格式) ...
  • Hello World! ——《新手指南之玩轉實驗樓》第1節 實驗介紹 本節主要介紹電腦相關技術的基本概念,面向完全沒有編程經驗的朋友. 電腦體系 電腦系統 人機交互 編程語言種類 我的操作 1.電腦相關技術基本概念介摘錄 電腦體系: 電腦是一個很龐大的體系,主要領域可以包括:電腦系統 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...