mknod创建设备(加载新的设备驱动时候,通常会用到此命令)

mknod - make block or character special files
mknod [OPTION]... NAME
TYPE [MAJOR MINOR]
option 有用的就是-m 了
name 自定义
type 有b 和c 还有p

主设备号
次设备号

主设备号是由linux/major.h定义的,如下定义了一个DOC设备:
#define
IGEL_FLASH_MAJOR 62

假如有一个命令mknod
doc b 62 0 :
其中的doc为定义的名字,b指块设备,0指的是整个DOC。如果把0换为1,则1指的是DOC的第一个分区。2是第2个,对于块设备次设备号就表示该块设备上的分区号,依次类推。

至于mknod
console c 5 1 的意思也很相似:
console是设备的名字
c指字符设备
5是该设备在major.h中定义的标记
1是第一个子设备

mknod
console c 5 1
console为设备文件名,自己随便取
c是指字符型设备(可选b,块设备)

5是主设备号/dev/devices里面记录现有的设备
找个没有用的就可以了
1是次设备号,当你要给两个同样的设备上一个驱动的时候就要分了,从0开始,1就是第二个了,对于字符设备,次设备号就表示同类型设备的不同设备。

通常情况下,安装系统时已经创建了常用的设备文件,可以直接访问这些设备文件来访问设备。但在用户重新定制内核,并添加了新硬件驱动程序之后,新驱动程序对应的设备文件就可能不存在。在FreeBSD中,最常见的例子就是在内核中增加声卡的驱动程序时,就需要创建相应设备文件。

创建设备文件的基本方式是使用mknod,但是必须知道该设备的正确设备号才可以。另一种简单的方式是使用/dev目录下的shell程序MAKEDEV来完成,MAKEDEV实质上就是记录了很多设备的名字与其设备号之间的关系的程序,因此它能使用正确的设备号来创建设备。首先进入/dev目录,然后再执行MAKEDEV。

#
cd /dev

#
sh MAKEDEV snd0

MAKEDEV将使用设备名作参数创建设备文件,同时也创建这个设备文件依赖的其他相关设备文件。MAKEDEV的参数,并不一定为创建的设备文件名。例如建立
“MAKEDEV
vty8” 将建立ttyv0到ttyv7共8个设备文件,使用
“MAKEDEV
wd1s1a” 命令,将建立wd1、wd1s1、wd1s2等,以及wd1s1a、wd1s1b等设备文件。也可以使用all做MAKEDEV的参数,这将首先清除/dev目录下的所有设备文件,然后MAKEDEV创建所有预设的设备文件。一般情况下这将创建足够多的设备文件,其中的大部分设备文件在具体的系统中不会用得到。

如果对一个系统中没有(或者即使有但内核没有支持或探测到)的设备对应的设备文件进行操作,则系统返回Device
not configured的错误信息。

MAKEDEV将使用mknod和对应设备的正确参数,包括字符或块设备、主设备号和从设备号来建立相应的设备文件。管理员也可以直接使用mknod创建设备文件,但这就必须将这些设备参数统统指定正确才行。因此除非对系统中的硬件驱动程序特别熟悉,一般不直接使用mknod来创建设备文件。
[[email protected]]#
ll /dev/hd
hda
hda1 hda2 hda3 hda4 hda5 hdc
[[email protected]]#
ll /dev/hda
brw-r-----
1 root disk 3, 0 2008-12-18 /dev/hda
[[email protected]]#
ll /dev/hda4
brw-r-----
1 root disk 3, 4 2008-12-18 /dev/hda4
[[email protected]]#

mknod创建设备(加载新的设备驱动时候,通常会用到此命令)

时间: 2024-08-02 08:07:47

mknod创建设备(加载新的设备驱动时候,通常会用到此命令)的相关文章

javascript加载新的文档

说明 location.assign() 方法加载新的文档 示例 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <title>方法加载新的文档</title> <link rel="

WP8_GestureListener实现列表向下滑动加载新数据

利用GestureListener的OnDragCompleted事件,实现列表向下滑动时,加载新的数据: (不建议使用 Touch.FrameReported+=Touch_FrameReported; 此事件是全局的,如果没有注销事件,在离开页面后仍会得到响应,而这不是希望的效果) 前台代码: <Border> <!- 此处放置ScrollViewer或 ListBox--> <ScrollViewer/>   <toolkit:GestureService.

VMware 克隆虚拟机或加载新的已安装虚拟机时System eth0不能使用的解决方法

近年来的大数据应用特别热,特别是Hadoop和Spark.但大家使用这些分布式文件系统和计算框架都需要一个分布式的集群环境,而大家手头一般没有多余的机器部署master和多个slave节点,就只能在VMware上多安装几个虚拟机来模拟集群的搭建,但是安装好一台虚拟机后,我想大部分的人都不想再耗时再重复地去装一台虚拟机,所以有以下两种选择: (1)使用VMware的克隆功能: (2)复制一份已安装好的虚拟机数据,然后再将*.vmx文件加载到VMware Workstation中. 任选以上方法都可

JavaSE GUI显示列表 JTable的刷新 重新加载新的数据

JTable在显示所有数据之后,假如需要搜索某个名字,则会获取新的列表数据. 假设datas是JTable的数据,定义为: private Vector<Vector> datas = new Vector<Vector>(); 当你刷新数据的时候,应该这样: if (datas != null) { datas.clear(); Vector<Vector> vectors = getDatasFromList(studentList); datas.addAll(v

Android四大组件之Activity(活动)及其布局的创建与加载布局

Android四大组件之Activity(活动)及其布局的创建与加载布局 什么是Activity ? 活动(Activity)是包含用户界面的组件,主要用于和用户进行交互的,一个应用程序中可以包含零个或多个活动. 手动创建Activity的过程详解 到现在为止,你还没有手动创建过活动呢,在第一个安卓工程中,HelloWorldActivity是ADT帮我们创建的,手动创建活动可以加深我们的理解,因此现在是时候应该自己动手了. 首先,你需要再新建一个 Android 项目,项目名可以叫做 Acti

Assetbundle创建与加载

[Assetbundle创建与加载] Unity有两种动态加载机制:一种是Resource.Load.一种是AssetBundle.Assetbundle是Unity Pro提供的功能,它可以把多个游戏对象或者资源二进制文件封装到Assetbundle中.供加载.解压使用. [创建Assetbundle] 使用方法 BuildPipeline.BuildAssetBundle (Object, assets , pathName , options , targetPlatform) 参数1:它

React-native 加载新项目的时候出错

sudo react-native init FirstApp 使用react-native加载新的项目的时候报错了!!!! p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px "Andale Mono"; color: #29f914; background-color: #000000 } p.p2 { margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px "Andale Mono

7.创建及加载模块

模块(Module)和包(Package)是 Node.js最重要的支柱.开发一个具有一定规模的程序不可能只用一个文件,通常需要把各个功能拆分.封装,然后组合起来,模块正是为了实现这种方式而诞生的.1.什么是模块: 2.如何创建并加载模块: 3.如何创建一个包: 4.如何使用包管理器: 1.什么是模块 ==> 一个文件就是一个模块 模块是 Node.js 应用程序的基本组成部分,文件和模块是一一对应的.换言之,一个Node.js 文件就是一个模块,这个文件可能是JavaScript 代码.JSO

Framework7学习笔记之 无限滚动(滚动到底部时加载新内容)

一:为页面添加无限滚动控件 在可滚动的容器上(一般为page-content)添加"infinite-scroll"类:在页面底部定义 加载指示器. <div class="page"> <div class="page-content infinite-scroll" data-distance="100"> ... <!-- 加载提示符 --> <div class="i