linux内核知识
文章平均质量分 63
liangkaiming
这个作者很懒,什么都没留下…
展开
-
主设备号和次设备号
<br /> Linux的设备管理是和文件系统紧密结合的,各种设备都以文件的形式存放在/dev目录下,称为设备文件。应用程序可以打开、关闭和读写这些设备文件,完成对设备的操作,就像操作普通的数据文件一样。为了管理这些设备,系统为设备编了号,每个设备号又分为主设备号和次设备号。主设备号用来区分不同种类的设备,而次设备号用来区分同一类型的多个设备。对于常用设备,Linux有约定俗成的编号,如硬盘的主设备号是3。<br /> 一个字符设备或者块设备都有一个主设备号和次设备号。主设备号和次设备号统称原创 2011-03-09 15:04:00 · 33065 阅读 · 6 评论 -
各种烧写文件格式简介
一、ELFExecutable and linking format(ELF)文件是x86 Linux系统下的一种常用目标文件(object file)格式,有三种主要类型:(1)适于连接的可重定位文件(relocatable file),可与其它目标文件一起创建可执行文件和共享目标文件。 (2)适于执行的可执行文件(executable file),用于提供程序的进程映像,加载到内存执行。 (3)共享目标文件(shared object file),连接器可将它与其它可重定位文件和共享目标文件连接成其它的转载 2011-03-15 19:27:00 · 1718 阅读 · 0 评论 -
Linux2.6 内核的 Initrd 机制解析
<br />1.什么是 Initrd<br />initrd 的英文含义是 boot loader initialized RAM disk,就是由 boot loader 初始化的内存盘。在 linux内核启动前, boot loader 会将存储介质中的 initrd 文件加载到内存,内核启动时会在访问真正的根文件系统前先访问该内存中的 initrd 文件系统。在 boot loader 配置了 initrd 的情况下,内核启动被分成了两个阶段,第一阶段先执行 initrd 文件系统中的"某个文件",完转载 2011-03-11 11:12:00 · 869 阅读 · 0 评论 -
MTD问题解决
***求教使用MTD的问题*** <br /><br />1。我把bootloader和zImage放到了一个2M的NOR Flash上,现在想把自己做的根文件系统fs.jffs2放入另一块8M的NAND Flash上供kernel启动时使用。请问如果我想对NAND FLASH分区,是不是只需对/drivers/mtd/maps下对应的nand_flash.c文件中的"static struct mtd_partition"结构进行改动就可以了? <br />2。文件系统/dev下面的mtd0,mtd1..转载 2011-03-10 19:35:00 · 5138 阅读 · 0 评论 -
内核启动无法挂载根文件系统的问题
<br />这类问题很常见,先总体介绍一下解决思路。<br />能出现让人激动的的控制台,那么系统移植已经接近完成;但是不少人在最后一步出现问题。<br />要点如下:<br />1. 在正确的位置烧写正确格式的文件系统映象:<br />2. 内核支持这种文件系统格式<br />3. 文件系统的内容要完备<br /> <br />上面说得简单,一个个介绍。<br /> <br />1. 在正确的位置烧写正确的文件系统映象:<br /> <br />(a). 正确的位置<br />嵌入式开发中,常通过boot转载 2011-03-10 19:33:00 · 2200 阅读 · 0 评论 -
initrd
<br />什么是初始 RAM 磁盘?<br />初始 RAM 磁盘(initrd)是在实际根文件系统可用之前挂载到系统中的一个初始根文件系统。initrd 与内核绑定在一起,并作为内核引导过程的一部分进行加载。内核然后会将这个 initrd 文件作为其两阶段引导过程的一部分来加载模块,这样才能稍后使用真正的文件系统,并挂载实际的根文件系统。<br />initrd 中包含了实现这个目标所需要的目录和可执行程序的最小集合,例如将内核模块加载到内核中所使用的 insmod 工具。<br />在桌面或服务器 L原创 2011-03-10 16:44:00 · 1555 阅读 · 0 评论 -
mknod
<br />mknod - make block or character special files<br />mknod [OPTION]... NAME TYPE [MAJOR MINOR]<br /> option 有用的就是 -m 了<br /> name 自定义<br /> type 有 b 和 c 还有 p<br /> 主设备号<br /> 次设备号<br /><br />主设备号是由linux/major.h定义的,如下定义了一个DOC设备: <br /原创 2011-03-09 17:00:00 · 10079 阅读 · 1 评论 -
devfs、sysfs、udev
<br />一、devfs<br />linux下有专门的文件系统用来对设备进行管理,devfs和sysfs就是其中两种。在2.6内核以前一直使用的是devfs,devfs挂载于/dev目录下,提供了一种类似于文件的方法来管理位于/dev目录下的所有设备,我们知道/dev目录下的每一个文件都对应的是一个设备,至于当前该设备存在与否先且不论,而且这些特殊文件是位于根文件系统上的,在制作文件系统的时候我们就已经建立了这些设备文件,因此通过操作这些特殊文件,可以实现与内核进行交互。但是devfs文件系统有一些缺点转载 2011-03-11 10:18:00 · 985 阅读 · 0 评论 -
ramdisk
1、Ram Disk介绍1.1 什么是Ram DiskRam Disk 就是将内存中的一块区域作为物理磁盘来使用的一种技术。对于用户来说,可以把RAM disk与通常的硬盘分区(如/dev/hda1)同等对待来使用。 1.2 Ramdisk与硬盘分区的不同RAM disk不适合作为长期保存文件的介质,掉电后Ramdisk的内容会随内存内容的消失而消失。RAM disk的其中一个优势是它的读写速度高,内存盘的存取速度要远快于目前的物理硬盘,可以被用作需要高速读写的文件。注意:在2.6版本后,Ramd原创 2011-03-10 15:27:00 · 4101 阅读 · 0 评论 -
struct file_operations
<br /> linux驱动程序中最重要的涉及3个重要的内核数据结构,分别为file_operations,file和inode。<br /> 在linux中inode结构用于表示文件,而file结构则表示打开的文件的描述,因为对于单个文件而言可能会有许多个表示打开的文件的描述符,因而就可能会的对应有多个file结构,但是都指向单个inode结构。<br /> 在系统内部,I/O设备的存取操作通过特定的的入口来进行,而这组特定的入口由驱动程序来提供的。通常这组设备驱动的接口是由结构体fil原创 2011-03-09 16:32:00 · 1197 阅读 · 0 评论 -
asmlinkage宏
<br />asmlinkage是个宏,使用它是为了保持传递参数在stack中。因为从汇编语言到C语言代码参数的传递是通过stack的,它也可能从stack中得到一些不需要的参数。Asmlinkage将要解析那些参数。看一下/usr/include/asm/linkage.h里面的定义:<br />#define asmlinkage CPP_ASMLINKAGE __attribute__((regparm(0)))<br />__attribute__是关键字,是gcc的C语言扩展,regparm(0)原创 2011-03-18 09:30:00 · 979 阅读 · 0 评论