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
  • 示例項目結構 在 Visual Studio 中創建一個 WinForms 應用程式後,項目結構如下所示: MyWinFormsApp/ │ ├───Properties/ │ └───Settings.settings │ ├───bin/ │ ├───Debug/ │ └───Release/ ...
  • [STAThread] 特性用於需要與 COM 組件交互的應用程式,尤其是依賴單線程模型(如 Windows Forms 應用程式)的組件。在 STA 模式下,線程擁有自己的消息迴圈,這對於處理用戶界面和某些 COM 組件是必要的。 [STAThread] static void Main(stri ...
  • 在WinForm中使用全局異常捕獲處理 在WinForm應用程式中,全局異常捕獲是確保程式穩定性的關鍵。通過在Program類的Main方法中設置全局異常處理,可以有效地捕獲並處理未預見的異常,從而避免程式崩潰。 註冊全局異常事件 [STAThread] static void Main() { / ...
  • 前言 給大家推薦一款開源的 Winform 控制項庫,可以幫助我們開發更加美觀、漂亮的 WinForm 界面。 項目介紹 SunnyUI.NET 是一個基於 .NET Framework 4.0+、.NET 6、.NET 7 和 .NET 8 的 WinForm 開源控制項庫,同時也提供了工具類庫、擴展 ...
  • 說明 該文章是屬於OverallAuth2.0系列文章,每周更新一篇該系列文章(從0到1完成系統開發)。 該系統文章,我會儘量說的非常詳細,做到不管新手、老手都能看懂。 說明:OverallAuth2.0 是一個簡單、易懂、功能強大的許可權+可視化流程管理系統。 有興趣的朋友,請關註我吧(*^▽^*) ...
  • 一、下載安裝 1.下載git 必須先下載並安裝git,再TortoiseGit下載安裝 git安裝參考教程:https://blog.csdn.net/mukes/article/details/115693833 2.TortoiseGit下載與安裝 TortoiseGit,Git客戶端,32/6 ...
  • 前言 在項目開發過程中,理解數據結構和演算法如同掌握蓋房子的秘訣。演算法不僅能幫助我們編寫高效、優質的代碼,還能解決項目中遇到的各種難題。 給大家推薦一個支持C#的開源免費、新手友好的數據結構與演算法入門教程:Hello演算法。 項目介紹 《Hello Algo》是一本開源免費、新手友好的數據結構與演算法入門 ...
  • 1.生成單個Proto.bat內容 @rem Copyright 2016, Google Inc. @rem All rights reserved. @rem @rem Redistribution and use in source and binary forms, with or with ...
  • 一:背景 1. 講故事 前段時間有位朋友找到我,說他的窗體程式在客戶這邊出現了卡死,讓我幫忙看下怎麼回事?dump也生成了,既然有dump了那就上 windbg 分析吧。 二:WinDbg 分析 1. 為什麼會卡死 窗體程式的卡死,入口門檻很低,後續往下分析就不一定了,不管怎麼說先用 !clrsta ...
  • 前言 人工智慧時代,人臉識別技術已成為安全驗證、身份識別和用戶交互的關鍵工具。 給大家推薦一款.NET 開源提供了強大的人臉識別 API,工具不僅易於集成,還具備高效處理能力。 本文將介紹一款如何利用這些API,為我們的項目添加智能識別的亮點。 項目介紹 GitHub 上擁有 1.2k 星標的 C# ...