从零开始搭建Linux驱动开发环境
linux驱动开发(一)

linux驱动开发(⼀)1:驱动开发环境要进⾏linux驱动开发我们⾸先要有linux内核的源码树,并且这个linux内核的源码树要和开发板中的内核源码树要⼀直;⽐如说我们开发板中⽤的是linux kernel内核版本为2.6.35.7,在我们ubuntu虚拟机上必须要有同样版本的源码树,我们再编译好驱动的的时候,使⽤modinfo XXX命令会打印出⼀个版本号,这个版本号是与使⽤的源码树版本有关,如果开发板中源码树中版本与modinfo的版本信息不⼀致使⽆法安装驱动的;我们开发板必须设置好nfs挂载;这些在根⽂件系统⼀章有详细的介绍;2:开发驱动常⽤的⼏个命令lsmod :list moduel 把我们机器上所有的驱动打印出来,insmod:安装驱动rmmod:删除驱动modinfo:打印驱动信息3:写linux驱动⽂件和裸机程序有很⼤的不同,虽然都是操作硬件设备,但是由于写裸机程序的时候是我们直接写代码操作硬件设备,这只有⼀个层次;⽽我们写驱动程序⾸先要让linux内核通过⼀定的接⼝对接,并且要在linux内核注册,应⽤程序还要通过内核跟应⽤程序的接⼝相关api来对接;4:驱动的编译模式是固定的,以后编译驱动的就是就按照这个模式来套即可,下⾯我们来分下⼀下驱动的编译规则:#ubuntu的内核源码树,如果要编译在ubuntu中安装的模块就打开这2个#KERN_VER = $(shell uname -r)#KERN_DIR = /lib/modules/$(KERN_VER)/build# 开发板的linux内核的源码树⽬录KERN_DIR = /root/driver/kernelobj-m += module_test.oall:make -C $(KERN_DIR) M=`pwd` modulescp:cp *.ko /root/porting_x210/rootfs/rootfs/driver_test.PHONY: cleanclean:make -C $(KERN_DIR) M=`pwd` modules cleanmake -C $(KERN_DIR) M=`PWD` modules这句话代码的作⽤就是到 KERN_DIR这个⽂件夹中 make modules把当前⽬录赋值给M,M作为参数传到主⽬录的Makefile中,实际上是主⽬录的makefile中有⽬标modules,下⾯有⼀定的规则来编译驱动;#KERN_VER = $(shell uname -r)#KERN_DIR = /lib/modules/$(KERN_VER)/build我们在ubuntu中编译内核的时候⽤这两句代码,因为在ubuntu中为我们保留了⼀份linux内核的源码树,我们编译的时候直接调⽤那个源码树的主Makefile以及⼀些头⽂件、内核函数等;了解规则以后,我们设置好KERN_DIR、obj-m这两个变量以后直接make就可以了;经过编译会得到下⾯⼀些⽂件:下⾯我们可以使⽤lsmod命令来看⼀下我们ubuntu机器现有的⼀些驱动可以看到有很多的驱动,下⾯我们使⽤insmod XXX命令来安装驱动,在使⽤lsmod命令看⼀下实验现象可以看到我们刚才安装的驱动放在了第⼀个位置;使⽤modinfo来打印⼀下驱动信息modinfo xxx.ko这⾥注意vermagic 这个的1.8.0-41是你⽤的linux内核源码树的版本号,只有这个编译的版本号与运⾏的linux内核版本⼀致的时候,驱动程序才会被安装注意license:GPL linux内核开元项⽬的许可证⼀般都是GPL这⾥尽量设置为GPL,否则有些情况下会出现错误;下⾯使⽤rmmod xxx删除驱动;-------------------------------------------------------------------------------------5:下⾯我们分析⼀下驱动。
嵌入式Linux驱动开发教程PDF

嵌入式Linux驱动开发教程PDF嵌入式Linux驱动开发教程是一本非常重要和实用的教材,它主要介绍了如何在Linux操作系统上开发嵌入式硬件设备的驱动程序。
嵌入式系统是指将计算机系统集成到其他设备或系统中的特定应用领域中。
嵌入式设备的驱动程序是连接操作系统和硬件设备的关键接口,所以对于嵌入式Linux驱动开发的学习和理解非常重要。
嵌入式Linux驱动开发教程通常包括以下几个主要的内容:1. Linux驱动程序的基础知识:介绍了Linux设备模型、Linux内核模块、字符设备驱动、块设备驱动等基本概念和原理。
2. Linux驱动编程的基本步骤:讲解了如何编译和加载Linux内核模块,以及编写和注册设备驱动程序所需的基本代码。
3. 设备驱动的数据传输和操作:阐述了如何通过驱动程序与硬件设备进行数据的传输和操作,包括读写寄存器、中断处理以及与其他设备的通信等。
4. 设备驱动的调试和测试:介绍了常用的驱动调试和测试技术,包括使用调试器进行驱动程序的调试、使用模拟器进行驱动程序的测试、使用硬件调试工具进行硬件和驱动的联合调试等。
通常,嵌入式Linux驱动开发教程的PDF版本会提供示例代码、实验步骤和详细的说明,以帮助读者更好地理解和掌握嵌入式Linux驱动开发的核心技术和要点。
读者可以通过跟随教程中的示例代码进行实际操作和实验,深入了解和体验嵌入式Linux驱动开发的过程和方法。
总之,嵌入式Linux驱动开发教程是一本非常重要和实用的教材,对于想要在嵌入式领域从事驱动开发工作的人员来说,具有非常重要的指导作用。
通过学习嵌入式Linux驱动开发教程,读者可以系统地了解和学习嵌入式Linux驱动开发的基本原理和技术,提高自己在嵌入式Linux驱动开发方面的能力和水平。
Linux下的软件开发和编译环境配置

Linux下的软件开发和编译环境配置在Linux操作系统中,配置适合软件开发和编译的环境是非常重要的。
正确地设置开发环境,可以提高开发效率,同时确保软件的质量和稳定性。
本文将介绍如何在Linux下配置软件开发和编译环境,以帮助开发人员顺利进行开发工作。
一、安装必要的开发工具在开始配置软件开发环境之前,您需要安装一些必要的开发工具。
在Linux中,常用的开发工具包括GCC编译器、Make工具、调试器(如GDB)、版本控制工具(如Git)等。
您可以通过包管理器(如APT、YUM等)来安装这些工具。
以下是安装这些工具的示例命令(以基于Debian的系统为例):```sudo apt-get updatesudo apt-get install build-essentialsudo apt-get install gdbsudo apt-get install git```通过执行这些命令,您可以安装所需的开发工具,以便后续的配置步骤。
二、配置开发环境要配置软件开发环境,您需要设置一些环境变量和配置文件。
以下是一些常见的配置步骤:1. 配置PATH环境变量在Linux中,PATH环境变量用于指定可执行程序的搜索路径。
为了方便地访问开发工具和编译器,您应该将它们所在的目录添加到PATH环境变量中。
您可以通过编辑`.bashrc`文件来实现这一点。
打开终端,输入以下命令编辑文件:```vi ~/.bashrc```在文件末尾添加以下行(假设开发工具的路径为`/usr/local/bin`):```export PATH=$PATH:/usr/local/bin```保存并退出文件。
然后,使用以下命令使更改生效:```source ~/.bashrc```现在,您可以在任何目录下直接运行开发工具和编译器。
2. 配置编辑器选择一个适合您的编辑器来编写代码是很重要的。
在Linux中有多种编辑器可供选择,如Vim、Emacs、Sublime Text等。
如何安装和使用Linux操作系统

如何安装和使用Linux操作系统第一章:引言和背景知识Linux操作系统是一种免费开源的操作系统,以其稳定性和安全性而闻名。
本章将介绍Linux操作系统的背景知识,包括其起源、发展和主要特点。
第二章:选择适合您的Linux发行版Linux操作系统有许多不同的发行版本,每个版本都具有自己的特点和用途。
本章将指导您选择适合您需求的Linux发行版,并对常见发行版进行介绍。
第三章:准备安装所需材料在安装Linux操作系统之前,您需要准备一些必要的材料和设备。
本章将介绍您需要准备的硬件设备、安装介质和其他必要的准备步骤。
第四章:安装Linux操作系统本章将详细介绍如何安装Linux操作系统。
涵盖的内容包括从镜像文件创建安装介质、启动计算机并进入安装程序、分区和格式化磁盘、选择安装选项、设置用户账户和密码等。
第五章:初次启动和基本配置当安装完成后,您需要进行一些初次启动和基本设置,以确保Linux操作系统正常运行。
本章将介绍如何进行初次启动、配置网络连接、更新软件包、设置系统时区等。
第六章:使用Linux命令行界面Linux操作系统以其强大的命令行界面而著名,熟练使用命令行界面是运维人员的必备技能。
本章将介绍基本的Linux命令,包括文件和目录操作、用户和权限管理、进程管理等。
第七章:安装和配置常用应用程序本章将介绍如何安装和配置常用的Linux应用程序,例如Web 服务器、数据库、邮件服务器等。
同时,还将介绍如何使用包管理器进行软件的安装和更新。
第八章:远程访问和文件传输远程登录和文件传输是管理Linux系统的常见任务之一。
本章将介绍如何通过SSH协议远程登录Linux系统,并使用SCP或SFTP实现文件的传输和管理。
第九章:系统监控和故障排除在运维过程中,系统监控和故障排除是非常重要的。
本章将介绍常用的系统监控工具和技术,以及处理常见故障的方法。
第十章:安全性和更新Linux操作系统以其高度的安全性而闻名,但仍然需要采取一些额外的措施来确保系统的安全。
电脑安装Linux系统教程从零开始的指导

电脑安装Linux系统教程从零开始的指导Linux系统是一种开放源代码的操作系统,具有稳定性和安全性高的特点,因此越来越多的人选择在自己的电脑上安装Linux系统。
但是对于新手来说,安装Linux系统可能会有一些困难。
本篇文章将从零开始,为你提供安装Linux系统的指导。
第一步:选择Linux发行版Linux有许多不同的发行版可供选择,如Ubuntu、Fedora、Debian 等。
每个发行版都有其自己的特点和适用场景。
对于新手来说,推荐选择Ubuntu发行版,因为它具有友好的用户界面和广泛的社区支持。
第二步:下载Linux发行版镜像文件在安装Linux系统之前,需要先从官方网站下载所选发行版的镜像文件。
确保选择适合你电脑硬件配置的版本,并注意下载的文件格式是ISO。
第三步:准备安装媒介安装Linux系统需要一个可启动的安装媒介,可以是DVD或USB。
在制作安装媒介之前,需要确保媒介是干净的,没有损坏或有其他操作系统的安装文件。
对于DVD:将下载的ISO文件刻录到DVD光盘上,确保刻录软件设置为“刻录镜像”或“写入映像”。
对于USB:将一个空的USB闪存驱动器格式化为FAT32文件系统,并使用软件如Rufus或UNetbootin将下载的ISO文件写入USB。
第四步:调整计算机BIOS设置在安装Linux之前,需要进入计算机的BIOS设置界面,并将启动顺序设置为首先从DVD或USB启动,以便能够引导到安装媒介。
通常,当你开机时,按下DEL、F2或F12键可以进入BIOS设置界面。
具体的按键可能因计算机品牌和型号而异,请在开机时密切观察计算机屏幕上的提示信息。
第五步:启动并安装Linux系统完成上述步骤后,将制作好的安装媒介插入计算机,并重新启动计算机。
计算机会从安装媒介启动,并显示Linux系统安装界面。
根据界面上的提示,选择安装选项和语言设置,并跟随安装向导完成安装过程。
在安装过程中,可能会涉及分区和磁盘格式化等设置。
如何在Linux系统中安装驱动程序

如何在Linux系统中安装驱动程序Linux系统作为一个开源的操作系统,广泛应用于各种设备和领域。
而安装驱动程序是在Linux系统中使用外部硬件设备的关键步骤之一。
在本文中,我们将学习如何在Linux系统中安装驱动程序的方法和步骤。
1. 检查硬件设备在安装驱动程序之前,首先需要确定硬件设备的型号和制造商。
可以通过查询设备的型号或者查看设备的相关文档来获取这些信息。
这是非常重要的,因为不同的设备可能需要不同的驱动程序来正确地工作。
2. 更新系统在安装驱动程序之前,确保你的Linux系统已经是最新的状态。
可以通过在终端中运行以下命令来更新系统:```sudo apt-get updatesudo apt-get upgrade```更新系统可以确保你拥有最新的软件包和驱动程序,以获得更好的兼容性和性能。
3. 查找合适的驱动程序一般来说,大部分硬件设备的驱动程序都可以在Linux系统的软件仓库中找到。
可以通过使用包管理器(如apt、yum等)来查找并安装合适的驱动程序。
运行以下命令来搜索并安装特定的驱动程序:```sudo apt-cache search 驱动程序名称sudo apt-get install 驱动程序名称```注意替换“驱动程序名称”为具体的驱动程序名称。
安装驱动程序可能需要输入管理员密码和确认安装。
如果你无法在软件仓库中找到合适的驱动程序,可以转向设备的制造商网站或者开源社区来获取。
下载驱动程序后,根据驱动程序提供的文档和说明来安装。
4. 编译和安装驱动程序有些驱动程序可能需要手动编译和安装。
在这种情况下,你需要确保你的系统已经安装了编译工具(如GCC、make等)。
在终端中切换到驱动程序所在的目录,并按照以下步骤进行编译和安装:```./configuremakesudo make install```以上命令将分别进行配置、编译和安装驱动程序。
在进行安装之前,可能需要输入一些配置选项或者确认安装。
linux 开发环境 原理

Linux开发环境的原理介绍Linux是一种开源的操作系统,由内核和应用程序构成。
它可以运行在各种硬件平台上,如个人电脑、服务器、智能手机等。
Linux 的内核主要负责系统的调度、进程管理和内存管理等基本操作,应用程序则负责实现用户所需的各种功能。
在Linux上开发应用程序需要一个完整的开发环境,包括编译器、调试器、集成开发环境(IDE)等。
下面将介绍这些组件的原理以及如何在Linux上搭建这样的开发环境。
1. 编译器Linux上的编译器主要用于将高级编程语言(如C、C++等)编译为可执行文件。
常用的编译器包括GCC、Clang等。
这些编译器使用Linux系统提供的函数库进行编程和编译,它们会使用文本文件(通常是源代码文件)创建可执行文件。
2. 调试器调试器是开发人员在开发应用程序时使用的工具,它可以帮助开发人员跟踪程序运行过程中的变量和表达式,以及定位和修复程序中的错误。
Linux上常用的调试器包括GDB、LLDB等。
这些调试器通过控制台与应用程序进行交互,并使用源代码文件分析程序的执行逻辑。
3. 集成开发环境(IDE)集成开发环境是一种用于编辑、编译和调试程序的软件工具,它可以提供一种易于使用的界面,让开发人员更轻松地进行程序开发。
Linux上常用的IDE包括Eclipse、IntelliJ IDEA等。
这些IDE会使用Linux系统提供的函数库进行编程和编译,它们会使用文本文件(通常是源代码文件)创建可执行文件。
4. 在Linux上搭建开发环境在Linux上搭建开发环境通常包括安装所需的软件包,如GCC、GDB等,并根据需要配置相关的环境变量。
在Ubuntu这样的易用的Linux操作系统上,可以通过命令行安装和配置这些组件。
同时,Ubuntu还提供了多个版本的安装镜像文件,可根据需要选择适合的版本进行安装。
需要注意的是,不同的Linux发行版和开发工具可能会有所不同,因此在搭建开发环境时需要根据实际情况选择适合的工具和环境。
想要成为Linux底层驱动开发高手这些技巧绝对不能错过

想要成为Linux底层驱动开发高手这些技巧绝对不能错过对于想要成为Linux底层驱动开发高手的人来说,掌握一些关键技巧是非常重要的。
本文将介绍一些不能错过的技巧,帮助读者提升自己在Linux底层驱动开发领域的能力。
1. 深入理解Linux内核:在成为Linux底层驱动开发高手之前,你需要对Linux内核有深入的理解。
了解内核的基本概念、代码结构和内核模块之间的关系是非常重要的。
阅读Linux内核的源代码、参与内核邮件列表的讨论以及阅读相关的文献资料都是提升自己技能的好途径。
2. 熟悉底层硬件知识:作为底层驱动开发者,你需要熟悉底层硬件的工作原理。
这包括了解处理器架构、设备的寄存器操作、中断处理等。
掌握底层硬件知识可以帮助你编写高效、稳定的驱动程序。
3. 学习使用适当的开发工具:在Linux底层驱动开发中,使用适当的开发工具是非常重要的。
例如,使用调试器可以帮助你快速定位驱动程序中的问题。
掌握使用GCC编译器、GNU调试器(GDB)和性能分析工具(如OProfile)等工具可以提高你的开发效率。
4. 阅读相关文档和源代码:Linux底层驱动开发涉及到大量的文档和源代码。
阅读设备供应商提供的文档、Linux内核源代码以及其他相关文献资料可以帮助你更好地了解特定设备的工作原理和使用方法。
5. 编写清晰、高效的代码:编写清晰、高效的代码对于成为Linux底层驱动开发高手是至关重要的。
使用良好的编码风格、注释和命名规范可以提高代码的可读性。
此外,了解Linux内核的设计原则和最佳实践也是编写高质量驱动程序的关键。
6. 多实践、调试和优化:在实际开发过程中,积累经验是非常重要的。
通过多实践、调试和优化不同类型的驱动程序,你可以更好地理解Linux底层驱动开发的技巧和要点。
此外,学会使用内核调试工具和性能分析工具可以帮助你提高驱动程序的质量和性能。
7. 参与开源社区:参与开源社区是成为Linux底层驱动开发高手的好方法。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
参考:韦东山视频第10课第一节内核启动流程分析之编译体验第11课第三节构建根文件系统之busybox第11课第四节构建根文件系统之构建根文件系统韦东山书籍《嵌入式linux应用开发完全手册》其他《linux设备驱动程序》第三版平台:JZ2440、mini2440或TQ2440交叉网线和miniUSBPC机(windows系统和Vmware下的ubuntu12.04)一、交叉编译环境的选型具体的安装交叉编译工具,网上很多资料都有,我的那篇《arm-linux-gcc交叉环境相关知识》也有介绍,这里我只是想提示大家:构建跟文件系统中所用到的lib库一定要是本系统Ubuntu中的交叉编译环境arm-linux-gcc中的。
即如果电脑ubuntu中的交叉编译环境为arm-linux-二、主机、开发板和虚拟机要三者互通wIP v2.0》一文中有详细的操作步骤,不再赘述。
linux2.6.22.6_jz2440.patch组合而来,具体操作:1. 解压缩内核和其补丁包tar xjvf linux-2.6.22.6.tar.bz2 # 解压内核tar xjvf linux-2.6.22.6_jz2440.tar.bz2 # 解压补丁cd linux_2.6.22.6patch –p1 < ../linux-2.6.22.6_jz2440.patch3. 配置在内核目录下执行make2410_defconfig生成配置菜单,至于怎么配置,《嵌入式linux应用开发完全手册》有详细介绍。
4. 生成uImagemake uImage四、移植busybox在我们的根文件系统中的/bin和/sbin目录下有各种命令的应用程序,而这些程序在嵌入式系统中都是通过busybox来构建的,每一个命令实际上都是一个指向bu sybox的链接,busybox通过传入的参数来决定进行何种命令操作。
1)配置busybox解压busybox-1.7.0,然后进入该目录,使用makemenuconfig进行配置。
这里我们这配置两项一是在编译选项选择动态库编译,当然你也可以选择静态,不过那样构建的根文件系统会比动态编译的的大。
->Busybox Settings->Build Options二是在性能微调选项选择tab键补全功能。
->Busybox Settings->Busybox library Tuning->Command line editing->Tab completion其他的都是一些命令配置,如果你想使你的根文件系统具备哪些命令就选择那个命令。
我选择的是默认的配置,一般基本的命令都帮你选上了。
2)编译busybox修改Makefile,修改”ARCH ?= arm” 和”CROSS_COMPILE ?= arm-linux-“,然后使用make命令进行编译。
我在编译的过程出现如下错误:../arm-none-linux-gnueabi/libc/usr/include/linux/netfilter.h:44:error: field ‘in’ has incomplete type解决办法:修改arm-linux 交叉编译工具链在 usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/usr/include/linux/netfilter.h 头文件的开头添加缺少的头文件:#includ e <netinet/in.h>3)安装busybox这里我们先新建一个root_fs来构建根文件系统,[root@localhost root_fs]# ls -ltotal 12drwxr-xr-x 2 root root 4096 Oct 19 05:41 binlrwxrwxrwx 1 root root 11 Oct 22 11:17 linuxrc -> bin/busyboxdrwxr-xr-x 2 root root 4096 Oct 22 18:43 sbindrwxr-xr-x 4 root root 4096 Oct 22 16:52 usr进入bin目录,可以看出这些文件全部是指向busybox的链接(除了busybox本身)。
[root@localhost root_fs]# ls bin -ltotal 0lrwxrwxrwx 1 root root 7 Oct 22 11:17 addgroup -> busyboxlrwxrwxrwx 1 root root 7 Oct 22 11:17 adduser -> busyboxlrwxrwxrwx 1 root root 7 Oct 22 11:17 ash -> busybox-rwxr-xr-x 1 root root 0 Oct 23 13:20 busyboxlrwxrwxrwx 1 root root 7 Oct 22 11:17 cat -> busyboxlrwxrwxrwx 1 root root 7 Oct 22 11:17 catv -> busybox五、安装glibc库在root_fs下新建lib目录,再把arm-linux-交叉编译链下的lib文件拷贝到我们root_fs下的lib目录下。
我使用六、构建/etc,/dev,proc目录/etc和/dev是一个根文件系统必须的。
/etc文件需包含init进程启动所需的配置文件inittab.dev目录下需包含init进程启动需要的两个设备文件console 和null。
proc 目录要进来挂载内核的虚拟proc文件系统。
这样对进程的一些命令如ps才会有效。
1) 在dev目录下执行mkdir etc dev proc2) 在etc下新建文件inittab我们在里面写入两行配置信息。
::sysinit:/etc/init.d/rcS::askfirst:/bin/sh第一行是用来启动脚本文件rcS,之所以这样做,是因为我们可以利用这个文件来引导系统启动时为我们做一个工作比如说挂载文件系统或者启动一些其他的应用程序的。
第二个是启动shell解释器sh3)配置脚本文件rcS在etc下新建init.d目录,然后在init.d目录下新建rcS文件,再给rcS文件加上可执行权限。
#!bin/shmount –a在rcS里面执行mount –a命令,于是该命令就会根据etc下fstab文件来挂载相应的目录。
4)配置fstab文件在etc目录下新建fstab文件,然后在该文件内写入# device mount-point type options dump fsck orderproc /proc proc defaults 0 0第一个参数是设备,第二个是挂载点,第三个是设置。
其余的写两个0。
5)构建dev目录下的设备文件。
由于console和null设备是init进程启动所必须的,所以要建立这两个设备文件,进入dev目录,然后执行mknod console c 5 1mknod null c 1 3如果这两个设备文件没有手工mknod创建就在内核启动时会出现错误:Warning: unable to open an initial console.注意一定是在dev下创建这两个设备文件。
我因为一时糊涂在etc目录下创建了这两个文件,调了大半天才找到原因。
还有在cd etc或者cd完成了上述步骤,将根文件系统制作成yaffs2镜像烧到flash就能正常启动了。
七、配置mdev来支持热插拔busybox使用sbin目录下的一个mdev来支持热插拔,什么叫做支持热插拔?就是你linux系统启动时插入一个设备,则mdev会在dev目录下自动给你创建设备文件。
在/busybox源码中的mdev.txt有介绍。
我截取部分如下Mdev has two primary uses: initial population and dynamic updates. Bothrequire sysfs support in the kernel and have it mounted at /sys. For dynamic updates, you also need to have hotplugging enabled in your kernel.Here's a typical code snippet from the init script:[1] mount -t sysfs sysfs /sys[2] echo /bin/mdev > /proc/sys/kernel/hotplug[3] mdev -sOf course, a more "full" setup would entail executing this before the previouscode snippet:[4] mount -t tmpfs mdev /dev[5] mkdir /dev/pts[6] mount -t devpts devpts /dev/ptsThe simple explanation here is that [1] you need to have /sys mounted beforea device is added or removed so that the device node can be created or destroyed. Then you [3] seed /dev with all the device nodes that were created while the system was booting.For the "full" setup, you want to [4] make sure /dev is a tmpfs filesystem (assuming you're running out of flash). Then you want to [5] create the/dev/pts mount point and finally [6] mount the devpts filesystem on it.当我们在flash中使用使,则只需要前面[1][2][3]步就行了。
即[1] mount -t sysfs sysfs /sys[2] echo /bin/mdev > /proc/sys/kernel/hotplug[3] mdev -s于是我们在etc/init.d/rcS文件改为mount –aecho /bin/mdev > /proc/sys/kernel/hotplugmdev -s将ect/fstab文件改为# device mount-point type options dump fsck orderproc /proc proc defaults 0 0sysfs /sys sysfs defaults 0 0再在root_fs下新建一个sys目录。