如何使用 mknod 手动创建设备文件?

如何使用 mknod 手动创建设备文件?

嵌入式 Linux 2.6.26.5。我需要从 busybox shell (initramfs) 手动挂载根文件系统。因为这个 Linux 内核不使用 devtmpfs,所以我必须手动创建基本设备节点,使用 mknod ( /dev/null, /dev/zero, dev/mtdblock{0-10}, ttys)。我不确定/dev/mtdblock和 的正确格式ttys。我应该为 /dev/mtdblock 和 /dev/mtd 创建节点吗?设备在 nand0 上创建 11 个 MTD 分区。在哪里可以找到分配给设备的主设备号和次设备号?对于 ttys 来说同样的问题:正确的 mknod 命令是什么 5 /dev/tty- 4 tty它们在不同的地方吗?

mknod -m 666 tty c 4 0
mknod -m 666 /dev/tty c 5 0

编辑:分区、设备和文件系统

# cat /proc/partitions
major minor  #blocks  name

  31     0        384 mtdblock0
  31     1        128 mtdblock1
  31     2      20352 mtdblock2
  31     3       7168 mtdblock3
  31     4      18816 mtdblock4
  31     5       2048 mtdblock5
  31     6       1024 mtdblock6
  31     7        512 mtdblock7
  31     8        128 mtdblock8
  31     9        512 mtdblock9
  31    10        512 mtdblock10
# cat /proc/devices
Character devices:
  1 mem
  2 pty
  3 ttyp
  4 /dev/vc/0
  4 tty
  4 ttyS
  5 /dev/tty
  5 /dev/console
  5 /dev/ptmx
  7 vcs
 10 misc
 13 input
 89 i2c
 90 mtd
108 ppp
128 ptm
136 pts
153 spi
204 ttyJ
254 cordless

Block devices:
  1 ramdisk
 31 mtdblock
 93 nftl

答案1

设备文件本质上是内核中的一张表。交流阵列。

更准确地说,C 数组的两级树结构:上层为主数,下层为次数。

驱动程序(和内核)可以为它们注册驱动程序处理程序。驱动程序始终使用主号码。例如,软件 raid (“md”) 用户使用主区块 9。

您可以获取文件中当前注册的块设备和字符设备的列表/proc/devices

最终的答案是在内核源码中,有“(un)register_block_device”或内核核心的类似调用。为他们找到他们grep,这样您就可以获得完整的列表。

答案2

相关内容