構建根檔案系統的 dev目錄

2021-06-18 21:45:07 字數 1574 閱讀 1565

在嵌入式arm開發中,用busybox製作根檔案系統時,其中必須構建的乙個目錄就是/dev目錄。這個目錄對所有的使用者都十分重要,因為在這個目錄中包含了所有linux系統中使用到的外部裝置,即所有的裝置節點。

構建/dev目錄時,有兩種方法:即靜態構建和mdev裝置管理工具構建。

1. 靜態構建:

使用靜態方法構建,就是根據預先知道要掛載的驅動,用mknod命令逐一構建各種裝置節點。

新建/dev目錄,先建立5個裝置檔案(必須的):

mkdir -p root_fs/dev

cd root_fs/dev

sudo mknod console c 5 1

sudo mknod null c 1 3

sudo mknod ttysac0 c 204 64

sudo mknod mtdblock0 b 31 0

sudo mknod mtdblock1 b 31 1

sudo mknod mtdblock2 b 31 2

其他裝置檔案:當系統啟動後,使用cat /proc/devices命令檢視核心中註冊了那些裝置,然後一一建立相應的裝置檔案。

使用靜態建立dev目錄的缺點:不支援熱插拔裝置

2. mdev動態建立:

mdev是udev的簡化版本,通過讀取核心相應資訊來動態建立裝置檔案或裝置節點。其主要用途有:初始化dev目錄、動態更新、支援熱插拔。要使用mdev裝置管理系統,需要核心支援sysfs檔案系統,為了減少flash的讀寫,還要支援tmpfs檔案系統(事實上目前dev目錄都為tmpfs檔案系統目錄)。一般情況下,預設的核心配置已經滿足使用mdev的要求。

修改etc/init.d/rcs檔案,修改後如下:

#!/bin/sh

echo "mount pseudo filesystem ......"

mount -t tmpfs -o size=64k,mode=0755 tmpfs /dev  // dev目錄為tmpfs檔案系統目錄

mkdir /dev/pts

mount -t devpts devpts /dev/pts

mount -t sysfs sysfs /sys

echo /sbin/mdev > /proc/sys/kernel/hotplug   // 支援熱插拔

mdev -s

其中的語句是和mdev的使用方法幾乎一樣。可參考busybox/doc/mdev.txt文件。

另外,mdev是通過init程序啟動,在使用mdev構造/dev目錄前,init程序至少要用到/dev/console和/dev/null,所以要像使用靜態方法一樣先構建它們。在/dev/下執行

sudo

mknod console c 5

1sudo

mknod null c 1

3

而proc mnt tmp sys root 等都按照原來方法構建空目錄即可。

這樣,跟檔案系統的dev目錄的裝置檔案就會在系統啟動時自動生成。

構建根檔案系統

wget make defconfig make cross compile arm linux gnueabi make install編譯完install後會預設安裝在busybox原始碼目錄下 install目錄內,但是此檔案系統並不完整,只有四個目錄 root ls bin linuxrc ...

構建根檔案系統

wget make defconfig make cross compile arm linux gnueabi make install編譯完install後會預設安裝在busybox原始碼目錄下 install目錄內,但是此檔案系統並不完整,只有四個目錄 root ls bin linuxrc ...

構建根檔案系統

tar xjf busybox 1.7.0.tar.bz2 cd busybox 1.7.0 make menuconfig 編譯busybox 1.7.0出現如下錯誤 busybox 1.7.0 make menuconfig makefile 405 mixed implicit and nor...