linux 建立设备文件

来源:互联网 发布:西门子200plc编程实例 编辑:程序博客网 时间:2024/05/22 00:41

摘自:http://blog.chinaunix.net/uid-22028680-id-2421497.html


依照unix的传统,在Linux系统中任何对象(包括设备 )都可以视为文件,在Linux系统中所有的设备文件都放在dev目录下面,建立设备文件通常有两种方法,一个是直接把宿主机上面的拷贝过来(拷贝的时候需要加上dpR参数),另外一种方法就是自己手工用mknod创建(注意这两种方法都需要root权限)。

一般情况下我们都是使用第一种方法,但是这里面为了便于大家更深入的理解设备文件,我使用第二种方法来创建。首先来看如何使用mknod命令来创建特定的设备文件。

#cd   dev

#mknod  -m 666 null  c  1 3

上面这条命令创建了null设备,-m 参数指定所创建设备的基本权限,null是设备名称,c代表是字符设备,相应的块设备用b表示,1是主编号,3是次编号。

关于设备的主次编号的权威信息的来源可以查看内核源码树中的

       Documentation/devices.txt

我们这里需要建立的dev条目如表格所示。

文件名

说明

类型

主编号

次编号

权限位

mem

物理内存存取

字符设备

1

1

600

console

系统控制台

字符设备

5

1

600

urandom

真随机数产生器

字符设备

1

8

644

null

null(黑洞)设备

字符设备

1

3

666

zero

以null byte(零值字节)为数据来源

字符设备

1

5

666

tty

现行的tty设备

字符设备

5

0

666

tty0

现行的虚拟控制台

字符设备

4

0

600

tty1

第一个虚拟控制台

字符设备

4

1

600

ptyp0

first pseudo-tty master

字符设备

2

0

666

ttyp0

first BSD pseudo-tty slave

字符设备

3

0

666

ram0

第一块 ram盘

块设备

1

0

640

hda

主IDE硬盘(或者光盘)

块设备

3

0

660

hda1

上述主盘的第一个分区

块设备

3

1

660

hdb

从IDE硬盘(或者光盘)

块设备

3

64

660

hdb1

上述从盘的第一个分区

块设备

3

65

660

sda

第一块scsi盘的整个盘

块设备

8

0

660

sda1

第一块scsi盘的第一个分区

块设备

8

1

660

sdb

第二块scsi盘的整个盘

块设备

8

16

660

sdb1

第二块scsi盘的第一个分区

块设备

8

16

660

fd0

第一个软盘设备

块设备

2

0

660

下面我们写一个sh脚本mkdev.sh来创建这些设备,脚本内容如下:

#!/bin/sh

rm -rf  mem console urandom null zero  tty*  ptyp*  ram*   hda*  hdb*  \

        sda*  sdb*  fd*  hdc  cdrom 

mknod   -m 600  mem      c  1 1

mknod   -m 600  console    c  5 1

mknod   -m 644  urandom   c  1 8

mknod   -m 666  null       c  1 3

mknod   -m 666  zero      c  1 5

 

mknod   -m 666  tty      c  5 0

for i in  0 1 2 3 4

do

        mknod   -m 600  tty$i   c  4  $i

        mknod   -m 660  ttyp$i  c  3  $i

done

for i in  0 1 2 3 4

do

             mknod   -m 660  ptyp$i  c  2  $i

done

 

mknod   -m 640  ram0     b  1 0

mknod   -m 640  ram1     b  1 1

 

mknod  -m  660  hda      b  3   0

mknod  -m  660  hdb      b  3   64

mknod  -m  660  hdc      b  22  0

ln -s  hdc  cdrom

for i in 1 2 3 4 5 6 7 8 9 10

do

        mknod   -m 660   hda$i  b  3   $i

        mknod   -m 660   hdbd$i  b  3   `expr 64 + $i`

done

 

mknod  -m  660  sda      b  8  0

mknod  -m  660  sdb      b  8  16

for  i   in  1 2 3 4 5

do

        mknod   -m 660   sda$i  b  8   $i

        mknod   -m 660   sdb$i  b  8   `expr 16 + $i`

done

 mknod  -m  640  fd0      b  2  0

 #end

 #./mkdev.sh

0 0
原创粉丝点击