2016年2月19日 星期五

Linux devtmpfs 摘要

功能:
在 Linux 核心啟動早期建立一個初步的 /dev,使一般啟動程序不用等待 udev,縮短開機時間

linux kernel 2.6.32 前作法是
1.建立 static /dev 提供系統 booting
2.booting 完成後,掛載 tmpfs 到 /dev
3.udevadm 重新 trigger kernel
4.udev 動態在 /dev 建立相對應的 device node

linux kernel 2.6.32 使用 devtmpfs
1.Kernel 的 devtmpfs 負責建立 device node(devtmpfs 建立出來的預設屬性是 root:root 0660)
2.udev 接收 kernel 送出的 uevent (依照相對的資訊如 device id product id),載入 kernel module、管理 device node 權限與建立相對應的 symlink file

initramfs 中 init 代碼
if ! mount -t devtmpfs -o size=$tmpfs_size,mode=0755 udev /dev; then
        echo "W: devtmpfs not available, falling back to tmpfs for /dev"
        mount -t tmpfs -o size=$tmpfs_size,mode=0755 udev /dev
        [ -e /dev/console ] || mknod -m 0600 /dev/console c 5 1
        [ -e /dev/null ] || mknod /dev/null c 1 3
fi

顯示 devtmpfs
df -T

沒有留言: