mknod를 사용하여 장치 파일을 수동으로 만드는 방법은 무엇입니까?

mknod를 사용하여 장치 파일을 수동으로 만드는 방법은 무엇입니까?

임베디드 리눅스 2.6.26.5. 비지박스 셸(initramfs)에서 루트 파일 시스템을 수동으로 마운트해야 합니다. 이 Linux 커널은 devtmpfs를 사용하지 않기 때문에 mknod( /dev/null, /dev/zero, dev/mtdblock{0-10}, ) 를 사용하여 기본 장치 노드를 수동으로 생성해야 합니다 ttys. /dev/mtdblock및 의 올바른 형식이 확실하지 않습니다 ttys. /dev/mtdblock 및 /dev/mtd에 대한 노드를 만들어야 합니까? 장치는 nand0에 11개의 MTD 파티션을 생성합니다. 장치에 할당된 메이저 및 마이너 번호는 어디에서 찾을 수 있나요? tty에 대한 동일한 질문: 올바른 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

장치 파일은 본질적으로 커널의 테이블입니다. AC 어레이.

보다 정확하게는 C 배열의 2단계 트리 구조입니다. 상위 레벨은 기본 숫자이고 하위 레벨은 정도입니다.

드라이버(및 커널)는 드라이버 처리기를 등록할 수 있습니다. 운전자는 항상 대표번호를 사용합니다. 예를 들어 소프트웨어 RAID("md") 사용자는 마스터 블록 9를 사용합니다.

현재 파일에 등록되어 있는 블록 및 문자 장치의 목록을 얻을 수 있습니다 /proc/devices.

최종 대답은 커널 소스 코드에 "(un)register_block_device" 또는 커널 코어에 유사한 호출이 있다는 것입니다. grep전체 목록을 얻을 수 있도록 해당 항목을 찾아보세요 .

답변2

관련 정보