导航:首页 > 编程系统 > linux设备发现过程

linux设备发现过程

发布时间:2024-01-27 05:15:07

linux系统初始化设备的过程主要有哪些

1.自检:依赖于CPU,ROM中的程序
.加载BIOS,Boot Sequence确定启动顺序
3.MBR:
硬盘0磁道0扇区的MBR文件,共512字节
446:BootLoader
64:分区表,每16字节一个分区
2:5A(一个特殊标记)
4.kernel文件vmlinuz+initrd:只能放在基本磁盘分区,BootLoader会把vmlinuz当做根来使用,即/vmlinuz
将vmlinuz加载到内存中使用。vmlinuz分为两段,前半部分未压缩段,是为了解压第二段。
至此BootLoader任务完成,退场。
操作系统安装时会执行一个命令,安装程序完成后自动运行脚本,收集操作系统运行需要的脚本,将所需要的模块打包成initrd,帮助内核完成初始化
initrd: ram disk,内核将之作为根来使用,将硬盘模拟成磁盘
5.initrd将所需文件复制到/下,内核完成初始化后进行根切换
6.启动/sbin/init,由内核空间进入用户空间
/lib/moles
/sbin/init:
/etc/inittab
id:3:initdefault:
/etc/rc.d/rc.sysinit脚本

Ⅱ 请问linux是如何产生和其发展的过程

一、简单的说: 一个名叫Linus Torvalds 的芬兰大学生想要了解Intel的新CPU386。他认为比较好的学习方法是自己编写一个操作系统的内核。出于这种目的,加上他对当时Unix 变种版本(即Minix)对于80386类机器的脆弱支持十分不满,他决定要开发出一个全功能的、支持POSIX标准的、类Unix的操作系统内核,该系统吸收了BSD和System V的优点,同时摒弃了它们的缺点。Linus独立把这个内核开发到0.02 版,这个版本已经可以运行gcc、bash 和很少的一些应用程序。这些就是他开始的全部工作了。后来,他又开始在因特网上寻求广泛的帮助。

二、具体的分析: Linux 操作系统的诞生、发展和成长过程依赖于以下五个重要支柱:
UNIX 操作系统、 MINIX操作系统、 GNU 计划、 POSIX 标准 、 Internet 网络

UNIX操作系统
Linux 操作系统是UNIX 操作系统的一个克隆版本。UNIX 操作系统是美国贝尔实验室的Ken.Thompson和Dennis Ritchie 于1969 年夏在DEC PDP-7 小型计算机上开发的一个分时操作系统。Ken Thompson 为了能在闲置不用的PDP-7 计算机上运行他非常喜欢的星际旅行(Space travel)游戏,于是在1969 年夏天乘他夫人回家乡加利福尼亚渡假期间,在一个月内开发出了UNIX 操作系统的原型。当时使用的是BCPL 语言(基本组合编程语言),后经Dennis Ritchie 于1972 年用移植性很强的C语言进行了改写,使得UNIX 系统在大专院校得到了推广。

MINIX操作系统
MINIX 系统是由Andrew S. Tanenbaum(AST)开发的。AST 是在荷兰Amsterdam 的Vrije 大学数学与计算机科学系统工作,是ACM 和IEEE 的资深会员(全世界也只有很少人是两会的资深会员)。MINIX 是他1987 年编制的,主要用于学生学习操作系统原理。到1991 年时版本是1.5。目前主要有两个版本在使用:1.5 版和2.0 版。当然目前MINIX 系统已经是免费的,可以从许多FTP 上下载。
对于Linux 系统,他后来曾表示对其开发者Linus的称赞。但他认为Linux的发展很大原因是由于他为了保持MINIX 的小型化,能让学生在一个学期内就能学完,因而没有接纳全世界许多人对MINIX的扩展要求。因此在这样的前提下激发了Linus 编写Linux 系统。当然Linus 也正好抓住了这个好时机。
作为一个操作系统,MINIX 并不是优秀者,但它同时提供了用C 语言和汇编语言编写的系统源代码。这是第一次使得有抱负的程序员或hacker 能够阅读操作系统的源代码。在当时,这种源代码是软件商们一直小心守护着的秘密。

GNU计划
软件产业在70年代成就了两位针锋相对的领袖人物,来自哈佛大学的比尔·盖茨和Richard M.Stallman。前者宣布了Copyright(版权)时代的到来,并构建了微软帝国的辉煌;后者于1984年创立自由软件体系GNU,拟定普遍公用版权协议(GeneralPublicLicense,简称GPL),今天Linux的成功就得益于GPL协议。
所有GPL协议下的自由软件都遵循着Richard M. Stallman的"Copyleft"(非版权)原则:即自由软件允许用户自由拷贝、修改和销售,但是对其源代码的任何修改都必须向所有用户公开。
GNU 计划和自由软件基金会FSF(the Free Software Foundation)是由Richard M. Stallman 于1984 年一手创办的。旨在开发一个类似UNIX 并且是自由软件的完整操作系统:GNU 系统(GNU 是"GNU's Not Unix"的递归缩写,它的发音为"guh-NEW")。
各种使用Linux 作为核心的GNU 操作系统正在被广泛的使用。虽然这些系统通常被称作"Linux",但是Stallman 认为,严格地说,它们应该被称为GNU/Linux系统。
到上世纪90 年代初,GNU 项目已经开发出许多高质量的免费软件,其中包括有名的emacs 编辑系统、bash shell 程序、gcc 系列编译程序、gdb 调试程序等等。这些软件为Linux 操作系统的开发创造了一个合适的环境。这是Linux 能够诞生的基础之一,以至于目前许多人都将Linux 操作系统称为“GNU/Linux”操作系统。

POSIX标准
POSIX(Portable Operating System Interface for Computing Systems)是由IEEE 和ISO/IEC 开发的一簇标准。该标准是基于现有的UNIX 实践和经验,描述了操作系统的调用服务接口。用于保证编制的应用程序可以在源代码一级上在多种操作系统上移植和运行。它是在1980 年早期一个UNIX 用户组(usr/group)的早期工作基础上取得的。该UNIX 用户组原来试图将AT&T 的System V 操作系统和BerkeleyCSRG 的BSD 操作系统的调用接口之间的区别重新调和集成。并于1984 年定制出了/usr/group 标准。
关于POSIX标准的制定过程:略。
在90 年代初,POSIX 标准的制定正处在最后投票敲定的时候,那是1991-1993 年间。此时正是Linux刚刚起步的时候,这个UNIX 标准为Linux 提供了极为重要的信息,使得Linux 能够在标准的指导下进行开发,并能够与绝大多数UNIX 操作系统兼容。在最初的Linux 内核源代码中(0.01 版、0.11 版)就已经为Linux 系统与POSIX 标准的兼容做好了准备工作。在Linux 0.01 版内核的/include/unistd.h 文件中就已经定义了几个有关POSXI 标准要求的符号常数,而且Linus 在注释中已写道:“OK,这也许是个玩笑,但我正在着手研究它呢”。
可参考下《Linux就该这么学》了解更详细的Linux知识。

Ⅲ 如何在Linux下实现设备的配置

现在的Linux内核中使用kmod来完成设备模块的自动加载,它的一般工作机制是:在第一次引用设备模块时,内核使用系统命令/sbin/modprobe加载这个设备模块。为了使这种机制正常工作,您首先需要使用depmod -a建立表述模块之间依赖关系的文件moles.dep,然后在/etc/moles.conf中设置正确的设备别名,如果还需要设置设备对应的参数。举例来说,在设置网卡时网卡的驱动程序是ne2k-pci,网卡的设备别名是eth0,则在文件/etc/moles.conf中加入别名alias eth0 ne2k-pci,就设置了ne2000兼容的PCI网卡,这样当有程序要尝试访问网络时,内核会自动加载网卡驱动程序ne2k-pci。

其二是需要根据设备的类型,以及安装的拆芦团Linux系统版本(不同的Linux发行版对于同一设备的配置脚本文件存在差异),设置设备对应的配置脚本文件。

1 配置键盘
1.1 配置键盘的设备模块
对于我们常见的键盘一般有三种类型,其一为老式的五针键盘,其二为ps/2键盘,其三是usb鼠标。对于前两种键盘,一般现在的Linux发行版都把它们需要的设备模块打包入内核,所以无需进行附加的模块插入操作,键盘就能够正常工作。而对于usb类型的键盘,一般而言,要使它正常工作必须先插入对应的设备模块。

对于usb类型的键盘,您若是要通过手动加载模块的方式使其工作,必须首先插入usb桥接器模块,然后您还必须插入键盘模块usbkbd.o,以及keybdev.o,这样usb键盘才能够正常工作。此时,运行的系统命令:
/sbin/modprobe usbkbd
/sbin/modprobe keybdev

对于2.2.x系列的内核若要内核的kmod在需要时自动加载则必须在/etc/moles.conf文件中设置别名usb-interface,它对应您所使用的桥接器模块。例如,当桥接器的类型为UHCI时,在/etc/moles.conf中加入设备别名:
alias usb-interface usb-uhci

对于2.4.x系列的内核,此设备别名则变为:
alias usb-controller usb-uhci
在设置了此别名之后,系统启动时会自动进行usb设备检测。当检测过程发现连结的设备是系统支持的,那么系统会自动插入所需的模块。

1.2 键盘配置文件
键盘的配置文件/etc/sysconfig/keyboard,它的内容很简单,可选配置项为KEYTABLE(随着发行版本的不同这个文件的内容会有所差异,但是这个字段是最重要的)。例如,当设置KEYTABLE = "us"时,表示系统使用美式键盘。

然后,为了正确的使用键盘上的功能键,您还需要调用命令mpkeys生成文件/etc/sysconfig/console/default.kmap。
/usr/bin/mpkeys > /etc/sysconfig/console/default.kmap
这个文件描述了键盘的键盘扫描码和加入键盘修饰之后的键盘的相应的键盘扫描码。

同样,为了键盘能在X系统环境下正常工作,您可能也需要在X系统下对键盘进行设置,这时您就必须使用xmodmap来设置正确的键盘映射。例如,
/usr/X11R6/bin/xmodmap /usr/share/xmodmap/xmodmap.fr
设置您的X系统下的键盘为法语键盘。

在正确的配置了/etc/sysconfig/keyboard文件之后,X系统的配置程序会根据此文件的信息配置X中关于键盘配置的小节。当此文件内容不正确或者是此文件不存在时,X系统是无法启动和配置的。

2 配置鼠标
2.1 鼠标的哗滑基本信息
Linux支持四种不同的总线鼠标硬件接口:Inport(Microsoft),Logitech,PS/旅橘2和ATI-XL。2.4内核也支持IBM PC110数字化板和Apple Desktop鼠标。

Inport mice
Inport mice包含大多数旧类型的微软鼠标。Inport mice通常连接到主板的接口卡上。假如鼠标线连接头是圆的,有9针,则可能是Inport mice。
Logitech mice
PS/2 mice
ATI combo video/mice
IBM PC110 palmtop digitizer
Apple Desktop Mouse
Hybrid Mice
对于鼠标协议,大多数总线鼠标使用BusMouse协议,一些古老的Logitech鼠标使用MouseSystems协议,而一些更老的微软鼠标使用Logitech协议。PS/2鼠标总是使用PS/2协议。

不同类型的鼠标对应的设备文件:

接口类型 设备 主设备号 次设备号
Logitech /dev/logibm 10 0
PS/2 /dev/psaux 10 1
Inport /dev/inportbm 10 2
ATI-XL /dev/atibm 10 3
USB mouse /dev/input/mice 13 63
表2-1

创建对应设备的命令:
mknod /dev/logimm c 10 0
mknod /dev/psaux c 10 1
mknod /dev/inportbm c 10 2
mknod /dev/atibm c 10 3
mknod /dev/input/mice c 13 63

在创建了鼠标对应的设备文件之后,因为现在很多程序都使用/dev/mouse作为缺省的鼠标设备文件,所以为了使鼠标正常工作你还要创建一个符号连接/dev/mouse指向真实的鼠标设备文件。例如,对于ps/2鼠标,/dev/mouse指向/dev/psaux,对于usb鼠标,/dev/mouse/指向/dev/input/mice,对于串口鼠标/dev/mouse指向/dev/ttyS0。对于不同的linux发行版本,这些文件可能有所不同,上述介绍主要是基于Redhat发布的配置。

对于现在最常见的三种鼠标:串口鼠标、PS/2鼠标和USB鼠标而言,由于对PS/2鼠标支持一般都打在内核中,所以您也不需要在鼠标工作之前插入设备模块。但对于其他的两种鼠标,插入模块的操作一般是必须的。对于串口鼠标而言,您必须先插入模块serial.o,
/sbin/modprobe serial

成功的插入模块之后,如果串口鼠标支持即插即用的串口协议,您可以从串口(/dev/ttyS*)读到鼠标的类型信息,然后由此信息,完成鼠标的配置文件。对于USB鼠标,为了使其正常工作,您必须先插入模块usbmouse.o和mousedev.o
/sbin/modprobe usbmouse
/sbin/modprobe mousedev
同样,为了使鼠标驱动程序能够自动加载,您也需要在/etc/moles.conf文件中创建usb-interface(usb-controller)别名。

2.2 鼠标配置文件
正确配置鼠标必须生成配置文件/etc/sysconfig/mouse,它包括下列选项:MOUSETYPE、XMOUSETYPE、FULLNAME、XEMU3、DEVICE。该鼠标配置文件也是X配置文件中鼠标配置节的基础。如果没有这个文件,很多X配置程序将无法工作。

MOUSETYPE=
配置鼠标的类型,包括ps/2、Busmouse、imps2、netmouse、Microsoft、Logitech、MouseMan、MMHitTab、MouseSystems、pnp、logim、ms3、MMSeries等。

XMOUSETYPE=
X系统下配置的鼠标的类型,包括MouseMan、IntelliMouse、MMSeries、MMHittab、Logitech、MouseMan、Microsoft、MouseSystems、PS/2、BusMouse等。

FULLNAME=
描述鼠标设备的全名。例如,对于普通PS/2鼠标,其全名为PS/2|Standard。

XEMU3=
是否仿真三键鼠标,可选参数为yes或no。

DEVICE=
描述鼠标对应的设备文件。例如。对于普通PS/2鼠标,设备文件为psaux。

2.3 鼠标的配置技巧
通过gpm能在命令行方式下使用鼠标。这样在控制台方式下,就可以使用鼠标进行剪贴等操作了。例如,对于ps/2鼠标,它的配置方式是:
gpm -t ps/2 -m /dev/psaux
如果不指定-m选项,那么系统会去查找文件/dev/mouse。

鼠标移动不规则可能是因为对鼠标设置了错误的协议。如新的Logitech鼠标不使用Logitech协议,而用微软协议(MouseMan)。如果您的鼠标移动不规则,那您可能首先需要尝试更换一下MouseType(XMouseType)指定的值。
在X系统下,您如果需要更换鼠标的左、右键,那么可以执行xmodmap -e "pointer = 3 2 1"。

Ⅳ 嵌入式linux 驱动设备识别过程

驱动程序识别设备时,有以下两种方法:
(1)驱动程序本身带有设备的信息,比如开始地址、中断号等:加载驱动程序时,就可以根据这些信息来识别设备。
(2)驱动程序本身没有设备的信息,但是内核中已经(或以后)根据其他方式确定了很多设备的信息;加载驱动程序时,将驱动程序与这些设备逐个比较,确定两者是否匹配(match)。如果驱动程序与某个设备匹配,就可以通过该驱动程序操作这个设备了。内核常使用第二种方法来识别设备,这可以将各种设备集中在-一个文件中管理,当开发板的配置改变时,便于修改代码。在内核文件includePnuxÔatform _device.h 中,定义了两个数据结构来表示这些设备和驱动程序: platform_ device 结构用来描述设备的名称、ID、所占用的资源(比如内存地址/大小、中断号)等; platform_ driver 结构用来描述各种操作函数, 比如枚举函数、移除设备函数、驱动的名称等。内核启动后,首先构造链表将描述设备的platform_device结构组织起来,得到一一个设备的列表:当加载某个驱动程序的platform_ driver 结构时,使用一.些匹配函数来检查驱动程序能否支持这些设备,常用的检查方法很简单:比较驱动程序和设备的名称。

Ⅳ linux内核怎么访问设备节点

设备节点代表是每个机算机硬件,那个软件要用那个硬件,它就会打开那内设备节点嘛。。。 /dev/ttyS0这个是串容口0 也就是windows 里面的com1 ,只有要用到串口0的程序才会打开这个设备节点。 个人愚见,仅供参考,望及时采纳

Ⅵ linux操作系统怎么识别USB接口设备

linux系统会自动识别USB接口为串口磁盘sda(通常为sda1,可通过fdisk
-l命令查询),挂载就可用。
例:新建挂载目录mkdir
/mnt/usb,挂载mount
/dev/sda1
/mnt/usb,用完卸载挂起点unmount
/dev/sda1
/mnt/usb。

Ⅶ linux用mknod怎么创建设备怎么用

首先要明白什么是设备文件,简单的我们说,操作系统与外部设备(入磁盘驱动器,打印机,modern,终端
等等)都是通过设备文件来进行通信的,在Unix/Linux系统与外部设备通讯之前,这个设备必须首先要有一个设备文件,设备文件均放在/dev目录下。
一般情况下在安装系统的时候系统自动创建了很多已检测到的设备的设备文件,但有时候我们也需要自己手动创建,命令行生成设备文件的方式有
insf,mksf,mknod等等
根据mknod命令的使用参数来看【mknod
Name
{
b
|
c
}
Major
Minor
】,使用mknod之前,至少要明白以下几点:
设备文件类型:分为块设备和字符设备。ls
-l
/dev
结果显示第一个字段有b***

c****,这里即标识了块设备和字符设备。
字符设备文件----字符设备文件传送数据给设备的时候,一次传送一个字符,终端,打印机,绘图仪,modern等设备都经过字符设备文件传送数据
块设备---系统通过块设备文件存取一个设备的时候,先从内存中的buffer中读或写数据,而不是直接传送数据到物理磁盘,这种方式能有效的提高磁盘和CD-ROMS的I/O性能。磁盘和CD-ROMS即可以使用字符设备文件也可使用块设备文件。
主号和次号
主号:当在任意目录使用ls
-l
时,结果的第5个字段就是主号,设备主号代表了这个设备使用的是哪个设备驱动程序
次号:次号是一个24位的十六进制数字,定义了设个设备在系统中的物理的位置
就拿我们常用的创建卷组来看:
先来看看mknod
命令,如果该设备文件你想放在一个特定的文件夹下当然就先创建文件夹
mknod
设备文件名[/dev/xyz]
b/c
主号
次号
{
mkdir
/dev/vg01
mknod
/dev/vg01/group
c
64
0X010000}
创建之后,就可以使用你想要创建的设备对于德创建命令了,如我现在的卷组的创建命令:
vgcreate
/dev/vg01
/dev/dsk/c*t*d*
一直进行下去,之后的步骤根据不同的设备而不尽相同。

阅读全文

与linux设备发现过程相关的资料

热点内容
刘骏微信 浏览:113
书旗旧版本80 浏览:467
教编程考什么证 浏览:990
下载编程猫后哪里有客服 浏览:13
如何编辑歌曲文件格式 浏览:638
cf无限领取cdk工具 浏览:350
如何让手机文件保存到电脑上 浏览:459
sa数据库默认密码是多少 浏览:191
电脑正在查找文件 浏览:541
一个文件盒省内寄顺丰多少钱 浏览:41
诛仙62坐骑怎么升级到63 浏览:926
linux以日期查看日志记录 浏览:446
工业大数据是什么东西 浏览:881
魅族note3怎么重置网络 浏览:510
c语言程序设计模 浏览:92
儿童怎么做可编程机 浏览:603
数据计算属于什么统计学 浏览:921
07word怎么去掉标记 浏览:979
qq缓存的数据是什么 浏览:348
LED主Kv文件多少兆 浏览:856

友情链接