Linux内核目录文件简介

Linux内核目录文件简介
Linux内核目录文件简介

Linux V0.11目录文件简介

●Makefile文件:该文件是编译辅助工具软件make的参数配置文件。

●boot目录:功能是当计算机加电时引导内核启动,将内核代码加载到内存中,并做一些进入入32位保护运行方式前的系统初始化工作。

①Bootsect.s:磁盘引导块程序,驻留磁盘第一个扇区。0x7C00

②Setup.s:读取机器的硬件配置参数,并把内核模块system移动到适当的内存位置处。

③Head.s:被编译连接在system模块的最前部分,主要进行硬件设备的探测设置和内存管理页面的初始设置工作。

●fs目录:文件系统实现程序的目录。

1、file_table.c文件中,目前仅定义了一个文件句柄(描述符)结构数组。

2、ioctl.c文件将引用kernel/chr_dev/tty.c中的函数,实现字符设备的io控制功能。

3、exec.c程序主要包含一个执行程序函数do_execve(),它是所有exec()函数簇中的主要函数。

4、fcntl.c程序用于实现文件i/o控制的系统调用函数。

5、read_write.c程序用于实现文件读/写和定位三个系统调用函数。

6、stat.c程序中实现了两个获取文件状态的系统调用函数。

7、open.c程序主要包含实现修改文件属性和创建与关闭文件的系统调用函数。

8、char_dev.c主要包含字符设备读写函数rw_char()。

9、pipe.c程序中包含管道读写函数和创建管道的系统调用。

10、file_dev.c程序中包含基于i节点和描述符结构的文件读写函数。

11、namei.c程序主要包括文件系统中目录名和文件名的操作函数和系统调用函数。

12、block_dev.c程序包含块数据读和写函数。

13、inode.c程序中包含针对文件系统i节点操作的函数。

14、truncate.c程序用于在删除文件时释放文件所占用的设备数据空间。

15、bitmap.c程序用于处理文件系统中i节点和逻辑数据块的位图。

16、super.c程序中包含对文件系统超级块的处理函数。

17、buffer.c程序主要用于对内存高速缓冲区进行处理。

·虚框中的ll_rw_block是块设备的底层读函数,它并不在fs目录中,而是

kernel/blk_dev/ll_rw_block.c中的块设备读写驱动函数。放在这里只是让我们清楚的看到,文件系统对于块设备中数据的读写,都需要通过高速缓冲区与块设备的驱动程序

(ll_rw_block())来操作来进行,文件系统程序集本身并不直接与块设备的驱动程序打交道。

●include目录:头文件目录。

1、主目录:

a.out头文件,定义了a.out执行文件格式和一些宏。

常数符号头文件,目前仅定义了i节点中i_mode字段的各标志位。

字符类型头文件。定义了一些有关字符类型判断和转换的宏。

错误号头文件。包含系统中各种出错号。(Linus从minix中引进的)。

文件控制头文件。用于文件及其描述符的操作控制常数符号的定义。

信号头文件。定义信号符号常量,信号结构以及信号操作函数原型。

标准参数头文件。以宏的形式定义变量参数列表。主要说明了-个类型(va_list)和三个宏(va_start,va_arg和va_end),用于vsprintf、vprintf、vfprintf 函数。

标准定义头文件。定义了NULL,offsetof(TYPE,MEMBER)。

字符串头文件。主要定义了一些有关字符串操作的嵌入函数。

终端输入输出函数头文件。主要定义控制异步通信口的终端接口。

?时间类型头文件。其中最主要定义了tm结构和一些有关时间的函数原形。

?Linux标准头文件。定义了各种符号常数和类型,并申明了各种函数。如定义了__LIBRARY__,则还包括系统调用号和内嵌汇编_syscall0()等。

?用户时间头文件。定义了访问和修改时间结构以及utime()原型。

2、asm目录:体系结构相关头文件子目录。要定义了一些与CPU体系结构密切相关的数据结构、宏函数和变量。

io头文件。以宏的嵌入汇编程序形式定义对io端口操作的函数。

内存拷贝头文件。含有memcpy()嵌入式汇编宏函数。

段操作头文件。定义了有关段寄存器操作的嵌入式汇编函数。

系统头文件。定义了设置或修改描述符/中断门等的嵌入式汇编宏。

3、linux目录:Linux内核专用头文件子目录。

内核配置头文件。定义键盘语言和硬盘类型(HD_TYPE)可选项。

软驱头文件。含有软盘控制器参数的一些定义。

文件系统头文件。定义文件表结构(file,buffer_head,m_inode等)。

硬盘参数头文件。定义访问硬盘寄存器端口,状态码,分区表等信息。

head头文件,定义了段描述符的简单结构,和几个选择符常量。

内核头文件。含有一些内核常用函数的原形定义。

内存管理头文件。含有页面大小定义和一些页面释放函数原型。

调度程序头文件,定义了任务结构task_struct、初始任务0的数据,还有一些有关描述符参数设置和获取的嵌入式汇编函数宏语句。

系统调用头文件。含有72个系统调用C函数处理程序,以'sys_'开头。

tty头文件,定义了有关tty_io,串行通信方面的参数、常数。

4、sys目录:系统专用数据结构子目录。

文件状态头文件。含有文件或文件系统状态结构stat{}和常量。

定义了进程中运行时间结构tms以及times()函数原型。

类型头文件。定义了基本的系统数据类型。

系统名称结构头文件。

等待调用头文件。定义系统调用wait()核waitpid()及相关常数符号。

●init目录:内核初始化程序目录

该目录中仅包含一个文件main.c。用于执行内核所有的初始化工作,然后移到用户模式创建新进程,并在控制台设备上运行shell程序。

●kernel目录:内核程序主目录。

1、主目录:

①asm.s:用于处理系统硬件异常所引起的中断。

②traps.c:对各硬件异常的实际处理程序,在各个中断处理过程中,将分别调用traps.c中相应的C语言处理函数。

③exit.c:程序主要包括用于处理进程终止的系统调用。包含进程释放、会话(进程组)终止和程序退出处理函数以及杀死进程、终止进程、挂起进程等系统调用函数。

④fork.c:程序给出了sys_fork()系统调用中使用了两个C语言函数:

find_empty_process()和copy_process()。

⑤mktime.c:程序包含一个内核使用的时间函数mktime(),用于计算从1970年1月1日0时起到开机当日的秒数,作为开机秒时间。仅在init/main.c中被调用一次。

⑥panic.c:程序包含一个显示内核出错信息并停机的函数panic()。

⑦printk.c:程序包含一个内核专用信息显示函数printk()。

⑧sched.c:程序中包括有关调度的基本函数(sleep_on、wakeup、schedule等)以及一

些简单的系统调用函数。另外还有几个与定时相关的软盘操作函数。

⑨signal.c:程序中包括了有关信号处理的4个系统调用以及一个在对应的中断处理程序中处理信号的函数do_signal()。

⑩sys.c:程序包括很多系统调用函数,其中有些还没有实现。

?system_call.s:程序实现了linux系统调用(int0x80)的接口处理过程,实际的处理过程则包含在各系统调用相应的C语言处理函数中,这些处理函数分布在整个linux 内核代码中。

?vsprintf.c:程序实现了现在已经归入标准库函数中的字符串格式化函数。

2、blk_dev目录:块设备驱动程序子目录。

①blk.h块设备程序专用头文件。定义了3个C程序中共用的块设备结构和数据块请求结构。

②hd.c:程序主要实现对硬盘数据块进行读/写的底层驱动函数,主要是

do_hd__request()函数。

③floppy.c:程序中主要实现了对软盘数据块的读/写驱动函数,主要是

do_fd_request()函数。

④ll_rw_blk.c:中程序实现了低层块设备数据读/写函数ll_rw_block(),内核中所有其它程序都是通过该函数对块设备进行数据读写操作。

⑤ramdisk.c:

3、chr_dev目录:字符设备驱动程序子目录

①tty_io.c:程序中包含tty字符设备读函数tty_read()和写函数tty_write(),另外还包括在串行中断处理过程中调用的C函数do_tty_interrupt(),该函数将会在中断类型为读字符的处理中被调用。

②console.c:文件主要包含控制台初始化程序和控制台写函数con_write(),用于被tty设备调用。还包含对显示器和键盘中断的初始化设置程序con_init()。

③rs_io.s汇编程序用于实现两个串行接口的中断处理程序。该中断处理程序会根据从中断标识寄存器(端口0x3fa或0x2fa)中取得的4种中断类型分别进行处理,并在处理中断类型为读字符的代码中调用do_tty_interrupt()。

④serial.c用于对异步串行通信芯片UART进行初始化操作,并设置两个通信端口的中断向量。另外还包括tty用于往串口输出的rs_write()函数。

⑤tty_ioctl.c程序实现了tty的io控制接口函数tty_ioctl()以及对termio(s)终端io结构的读写函数,并会在实现系统调用sys_ioctl()的fs/ioctl.c程序中被调用。

⑥keyboard.S程序主要实现了键盘中断处理过程keyboard_interrupt。

4、math目录:协处理器仿真和操作程序子目录。

仅有一个C程序math_emulate.c。其中的math_emulate()函数是中断int7的中断处理程序调用的C函数。当机器中没有数学协处理器,而CPU却又执行了协处理器的指令时,就会引发该中断。因此,使用该中断就可以用软件来仿真协处理器的功能。

●lib目录:内核库函数目录

内核库函数主要用于用户编程调用,是编译系统标准库的接口函数之一。

包含各种子函数文件。

●mm目录:内存管理程序目录

①page.s:文件包括内存页面异常中断(int14)处理程序,主要用于处理程序由于缺页而引起的页异常中断和访问非法地址而引起的页保护。

②memory.c程序包括对内存进行初始化的函数mem_init(),由page.s的内存处理中断过程调用的do_no_page()和do_wp_page()函数。在创建新进程而执行复制进程操作时,即使用该文件中的内存处理函数来分配管理内存空间。

●tools目录:编译内核工具程序目录

build.c用于将Linux各个目录中被分别编译生成的目标代码连接合并成一个可运行的内核映象文件image。

Linux内核崩溃原因分析及错误跟踪技术

Linux内核崩溃原因分析及错误跟踪技术 随着嵌入式Linux系统的广泛应用,对系统的可靠性提出了更高的要求,尤其是涉及到生命财产等重要领域,要求系统达到安全完整性等级3级以上[1],故障率(每小时出现危险故障的可能性)为10-7以下,相当于系统的平均故障间隔时间(MTBF)至少要达到1141年以上,因此提高系统可靠性已成为一项艰巨的任务。对某公司在工业领域14 878个控制器系统的应用调查表明,从2004年初到2007年9月底,随着硬软件的不断改进,根据错误报告统计的故障率已降低到2004年的五分之一以下,但查找错误的时间却增加到原来的3倍以上。 这种解决问题所需时间呈上升的趋势固然有软件问题,但缺乏必要的手段以辅助解决问题才是主要的原因。通过对故障的统计跟踪发现,难以解决的软件错误和从发现到解决耗时较长的软件错误都集中在操作系统的核心部分,这其中又有很大比例集中在驱动程序部分[2]。因此,错误跟踪技术被看成是提高系统安全完整性等级的一个重要措施[1],大多数现代操作系统均为发展提供了操作系统内核“崩溃转储”机制,即在软件系统宕机时,将内存内容保存到磁盘[3],或者通过网络发送到故障服务器[3],或者直接启动内核调试器[4]等,以供事后分析改进。 基于Linux操作系统内核的崩溃转储机制近年来有以下几种: (1) LKCD(Linux Kernel Crash Dump)机制[3]; (2) KDUMP(Linux Kernel Dump)机制[4]; (3) KDB机制[5]; (4) KGDB机制[6]。 综合上述几种机制可以发现,这四种机制之间有以下三个共同点: (1) 适用于为运算资源丰富、存储空间充足的应用场合; (2) 发生系统崩溃后恢复时间无严格要求; (3) 主要针对较通用的硬件平台,如X86平台。 在嵌入式应用场合想要直接使用上列机制中的某一种,却遇到以下三个难点无法解决: (1) 存储空间不足 嵌入式系统一般采用Flash作为存储器,而Flash容量有限,且可能远远小于嵌入式系统中的内存容量。因此将全部内存内容保存到Flash不可行。

linux 目录结构及常用命令

Linux目录结构简介及常用命令 Linux,免费开源,多用户多任务系统。基于Linux有多个版本的衍生。RedHat、Ubuntu、Debian (一)初学Linux,首先需要弄清Linux 标准目录结构 / ?root --- 启动Linux时使用的一些核心文件。如操作系统内核、引导程序Grub等。 ?home --- 存储普通用户的个人文件 ?ftp --- 用户所有服务 ?httpd ?samba ?user1 ?user2 ?bin --- 系统启动时需要的执行文件(二进制) ?sbin --- 可执行程序的目录,但大多存放涉及系统管理的命令。只有root权限才能执行 ?proc --- 虚拟,存在linux内核镜像;保存所有内核参数以及系统配置信息? 1 --- 进程编号 ?usr --- 用户目录,存放用户级的文件 ?bin --- 几乎所有用户所用命令,另外存在与/bin,/usr/local/bin ?sbin --- 系统管理员命令,与用户相关,例如,大部分服务器程序

?include --- 存放C/C++头文件的目录 ?lib --- 固定的程序数据 ?local --- 本地安装软件保存位置 ?man --- 手工生成的目录 ?info --- 信息文档 ?doc --- 不同包文档信息 ?tmp ?X11R6 --- 该目录用于保存运行X-Window所需的所有文件。该目录中还包含用于运行GUI要的配置文件和二进制文件。 ?X386 --- 功能同X11R6,X11 发行版5 的系统文件 ?boot --- 引导加载器所需文件,系统所需图片保存于此 ?lib --- 根文件系统目录下程序和核心模块的公共库 ?modules --- 可加载模块,系统崩溃后重启所需模块 ?dev --- 设备文件目录 ?etc --- 配置文件 ?skel --- home目录建立,该目录初始化 ?sysconfig --- 网络,时间,键盘等配置目录 ?var ?file ?lib --- 该目录下的文件在系统运行时,会改变 ?local --- 安装在/usr/local的程序数据,变化的 ?lock --- 文件使用特定外设或文件,为其上锁,其他文件暂时不能访问 ?log --- 记录日志 ?run --- 系统运行合法信息 ?spool --- 打印机、邮件、代理服务器等假脱机目录 ?tmp ?catman --- 缓存目录 ?mnt --- 临时用于挂载文件系统的地方。一般情况下这个目录是空的,而在我们将要挂载分区时在这个目录下建立目录,再将我们将要访问的设备挂载在这个目录上,这样我们就可访问文件了。 ?tmp --- 临时文件目录,系统启动后的临时文件存放在/var/tmp ?lost+found --- 在文件系统修复时恢复的文件 /:根目录,一般根目录下只存放目录,不要存放文件,/etc、/bin、/dev、/lib、/sbin 应该和根目录放置在一个分区中 /bin:/usr/bin:可执行二进制文件的目录,如常用的命令ls、tar、mv、cat等。 /boot:放置linux系统启动时用到的一些文件。/boot/vmlinuz为linux的内核文件,以及/boot/gurb。建议单独分区,分区大小100M即可 /dev:存放linux系统下的设备文件,访问该目录下某个文件,相当于访问某个设备,常用的是挂载光驱mount /dev/cdrom /mnt。

关于Linux 内核中五个主要子系统的介绍

关于Linux 内核中五个主要子系统的介绍 发布时间:2008.01.02 06:23来源:赛迪网作者:sixth 1.进程调度(SCHED):控制进程对CPU的访问。当需要选择下一个进程运行时,由调度程序选择最值得运行的进程。可运行进程实际上是仅等待CPU资源的进程,如果某个进程在等待其它资源,则该进程是不可运行进程。Linux使用了比较简单的基于优先级的进程调度算法选择新的进程。 2.内存管理(MM)允许多个进程安全的共享主内存区域。Linux的内存管理支持虚拟内存,即在计算机中运行的程序,其代码,数据,堆栈的总量可以超过实际内存的大小,操作系统只是把当前使用的程序块保留在内存中,其余的程序块则保留在磁盘中。必要时,操作系统负责在磁盘和内存间交换程序块。内存管理从逻辑上分为硬件无关部分和硬件有关部分。硬件无关部分提供了进程的映射和逻辑内存的对换;硬件相关的部分为内存管理硬件提供了虚拟接口。 3.虚拟文件系统(VirtualFileSystem,VFS)隐藏了各种硬件的具体细节,为所有的设备提供了统一的接口,VFS提供了多达数十种不同的文件系统。虚拟文件系统可以分为逻辑文件系统和设备驱动程序。逻辑文件系统指Linux所支持的文件系统,如ext2,fat等,设备驱动程序指为每一种硬件控制器所编写的设备驱动程序模块。 4.网络接口(NET)提供了对各种网络标准的存取和各种网络硬件的支持。网络接口可分为网络协议和网络驱动程序。网络协议部分负责实现每一种可能的网络传输协议。网络设备驱动程序负责与硬件设备通讯,每一种可能的硬件设备都有相应的设备驱动程序。 5.进程间通讯(IPC) 支持进程间各种通信机制。处于中心位置的进程调度,所有其它的子系统都依赖它,因为每个子系统都需要挂起或恢复进程。一般情况下,当一个进程等待硬件操作完成时,它被挂起;当操作真正完成时,进程被恢复执行。例如,当一个进程通过网络发送一条消息时,网络接口需要挂起发送进程,直到硬件成功地完成消息的发送,当消息被成功的发送出去以后,网络接口给进程返回一个代码,表示操作的成功或失败。其他子系统以相似的理由依赖于进程调度。

探究linux内核,超详细解析子系统

探究linux内核,超详细解析子系统 Perface 前面已经写过一篇《嵌入式linux内核的五个子系统》,概括性比较强,也比较简略,现在对其进行补充说明。 仅留此笔记,待日后查看及补充!Linux内核的子系统 内核是操作系统的核心。Linux内核提供很多基本功能,如虚拟内存、多任务、共享库、需求加载、共享写时拷贝(Copy-On-Write)以及网络功能等。增加各种不同功能导致内核代码不断增加。 Linux内核把不同功能分成不同的子系统的方法,通过一种整体的结构把各种功能集合在一起,提高了工作效率。同时还提供动态加载模块的方式,为动态修改内核功能提供了灵活性。系统调用接口用户程序通过软件中断后,调用系统内核提供的功能,这个在用户空间和内核提供的服务之间的接口称为系统调用。系统调用是Linux内核提供的,用户空间无法直接使用系统调用。在用户进程使用系统调用必须跨越应用程序和内核的界限。Linux内核向用户提供了统一的系统调用接口,但是在不同处理器上系统调用的方法

各不相同。Linux内核提供了大量的系统调用,现在从系统 调用的基本原理出发探究Linux系统调用的方法。这是在一个用户进程中通过GNU C库进行的系统调用示意图,系 统调用通过同一个入口点传入内核。以i386体系结构为例,约定使用EAX寄存器标记系统调用。 当加载了系统C库调用的索引和参数时,就会调用0x80软件中断,它将执行system_call函数,这个函数按照EAX 寄存器内容的标示处理所有的系统调用。经过几个单元测试,会使用EAX寄存器的内容的索引查system_call_table表得到系统调用的入口,然后执行系统调用。从系统调用返回后,最终执行system_exit,并调用resume_userspace函数返回用户空间。 linux内核系统调用的核心是系统多路分解表。最终通过EAX寄存器的系统调用标识和索引值从对应的系统调用表 中查出对应系统调用的入口地址,然后执行系统调用。 linux系统调用并不单层的调用关系,有的系统调用会由

Linux标准目录结构及说明

Linux标准目录结构及说明 路径名说明 /bin 最核心的操作系统命令所在位置 /boot 内核和内核加载所需要的文件位置 /dev 硬盘、伪终端、打印机等设备文件的位置 /etc 关键的启动文件和配置文件的位置 /home 普通用户默认的主目录(家目录)位置 /lib 库、共享库、部分C编译器的位置 /media 可移动设备文件系统的挂在点位置,例如:U盘、移动硬盘等 /mnt 可移动设备文件系统的临时挂在点位置,例如:U盘、移动硬盘等 /opt 可选的应用软件包位置,一般情况下,自己安装的软件可以考虑放在此位置 /proc 虚拟文件系统位置,所有正在运行进程的信息所在位置 /root 根用户(root用户)的主目录位置 /sbin 系统最小规模运行所需命令的位置 /tmp 临时目录,每次重启其中的文件就会消失 /usr 次要文件和命令所在位置 /usr/bin 大多数命令和可执行程序文件的位置 /usr/include 编译C程序时头文件的位置 /usr/lib 库,标准程序运行所需的支持库位置 /usr/lib64 库,64位标准程序运行所需的支持库位置 /usr/local 用户编写或安装的软件的位置,第三方安装包大部分安装到此位置 /usr/sbin 不太关键的系统运维管理命令的位置 /usr/share 多种系统共用内容的位置 /usr/share/man Man命令使用时的联机手册的位置 /usr/src 非本地软件包的源代码位置 /usr/tmp 更多的临时空间位置,重启后其中的文件依然存在 /var 系统专用的数据和配置文件的位置,例如:默认MySQL数据的位置为/var/lib/mysql /var/adm 日志、系统设置记录、奇怪的管理信息的位置 /var/log 各种系统服务对应的日志文件的位置 /var/spool 邮件、打印机等使用的假脱机目录位置 /var/tmp 更多的临时空间位置,重启后其中的文件依然存在

linux内核IMQ源码实现分析

本文档的Copyleft归wwwlkk所有,使用GPL发布,可以自由拷贝、转载,转载时请保持文档的完整性,严禁用于任何商业用途。 E-mail: wwwlkk@https://www.360docs.net/doc/2814837380.html, 来源: https://www.360docs.net/doc/2814837380.html,/?business&aid=6&un=wwwlkk#7 linux2.6.35内核IMQ源码实现分析 (1)数据包截留并重新注入协议栈技术 (1) (2)及时处理数据包技术 (2) (3)IMQ设备数据包重新注入协议栈流程 (4) (4)IMQ截留数据包流程 (4) (5)IMQ在软中断中及时将数据包重新注入协议栈 (7) (6)结束语 (9) 前言:IMQ用于入口流量整形和全局的流量控制,IMQ的配置是很简单的,但很少人分析过IMQ的内核实现,网络上也没有IMQ的源码分析文档,为了搞清楚IMQ的性能,稳定性,以及借鉴IMQ的技术,本文分析了IMQ的内核实现机制。 首先揭示IMQ的核心技术: 1.如何从协议栈中截留数据包,并能把数据包重新注入协议栈。 2.如何做到及时的将数据包重新注入协议栈。 实际上linux的标准内核已经解决了以上2个技术难点,第1个技术可以在NF_QUEUE机制中看到,第二个技术可以在发包软中断中看到。下面先介绍这2个技术。 (1)数据包截留并重新注入协议栈技术

(2)及时处理数据包技术 QoS有个技术难点:将数据包入队,然后发送队列中合适的数据包,那么如何做到队列中的数

激活状态的队列是否能保证队列中的数据包被及时的发送吗?接下来看一下,激活状态的队列的 证了数据包会被及时的发送。 这是linux内核发送软中断的机制,IMQ就是利用了这个机制,不同点在于:正常的发送队列是将数据包发送给网卡驱动,而IMQ队列是将数据包发送给okfn函数。

linux目录结构

1、什么是文件系统 当您使用Linux的时候,如果您通过ls –l / 就会发现,在/下包涵很多的目录,比如etc、usr、var、bin ... ... 等目录,而在这些目录中,我们进去看看,发现也有很多的目录或文件。文件系统在Linux下看上去就象树形结构,所以我们可以把文件系统的结构形象的称为树形结构。 linux文件系统的最顶端是/,我们称/为Linux的root,也就是 Linux操作系统的文件系统。Linux的文件系统的入口就是/,所有的目录、文件、设备都在/之下,/就是Linux文件系统的组织者,也是最上级的领导者。 2、文件系统的类型 LINUX有四种基本文件系统类型:普通文件、目录文件、连接文件和特殊文件,可用file命令来识别。 普通文件:如文本文件、C语言元代码、SHELL脚本、二进制的可执行文件等,可用cat、less、more、vi、emacs来察看内容,用mv来改名。 目录文件:包括文件名、子目录名及其指针。它是LINUX储存文件名的唯一地方,可用ls列出目录文件。 连接文件:是指向同一索引节点的那些目录条目。用ls来查看是,连接文件的标志用l开头,而文件面后以"->"指向所连接的文件。 特殊文件:LINUX的一些设备如磁盘、终端、打印机等都在文件系统中表示出来,这一类文件就是特殊文件,常放在/dev目录内。例如,软驱A称为/dev/fd0。LINUX无C:的概念,而是用/dev/sda 来指第一硬盘。 3、目录结构的详细解说 文件系统的组织结构分析,我们能分析什么呢?也就是当我们列/目录时,所看到的/usr、 /etc ... ... /var 等目录是做什么用的,这些目录是不是有些特定的用途。无论哪个哪个版本的Linux系统,都有这些目录,这些目录应该是标准的。当然各个Linux发行版本也会存在一些小小的差异,但总体来说,大体还是差不多。 言归正传,下面将讲到本文最核心的部分:linux文件系统的目录结构。 / Linux文件系统的入口,也是处于最高一级的目录; /bin 系统所需要的那些命令位于此目录,比如 ls、cp、mkdir等命令;功能和/usr/bin类似,这个目录中的文件都是可执行的、普通用户都可以使用的命令。作为基础系统所需要的最基础的命令就是放在这里。 /boot Linux的内核及引导系统程序所需要的文件目录,比如 vmlinuz initrd.img 文件都位于这个目录中。在一般情况下,GRUB或LILO系统引导管理器也位于这个目录;

Linux内核结构详解教程

Linux内核结构详解教程 ─────Linux内核教程 linux内核就像人的心脏,灵魂,指挥中心。 内核是一个操作系统的核心,它负责管理系统的进程,内存,设备驱动程序,文件和网络系统,决定着系统的性能和稳定性。内核以独占的方式执行最底层任务,保证系统正常运行。协调多个并发进程,管理进程使用的内存,使它们相互之间不产生冲突,满足进程访问磁盘的请求等等. 严格说Linux并不能称做一个完整的操作系统.我们安装时通常所说的Linux,是有很多集合组成的.应称为GNU/Linux. 一个Linux内核很少1.2M左右,一张软盘就能放下. 内容基础,语言简短简洁 红联Linux论坛是致力于Linux技术讨论的站点,目前网站收录的文章及教程基本能满足不同水平的朋友学习。 红联Linux门户: https://www.360docs.net/doc/2814837380.html, 红联Linux论坛: https://www.360docs.net/doc/2814837380.html,/bbs 红联Linux 论坛大全,所有致力点都体现在这 https://www.360docs.net/doc/2814837380.html,/bbs/rf/linux/07.htm

目录 Linux内核结构详解 Linux内核主要五个子系统详解 各个子系统之间的依赖关系 系统数据结构 Linux的具体结构 Linux内核源代码 Linux 内核源代码的结构 从何处开始阅读源代码 海量Linux技术文章

Linux内核结构详解 发布时间:2006-11-16 19:05:29 Linux内核主要由五个子系统组成:进程调度,内存管理,虚拟文件系统,网络接口,进程间通信。

Linux内核主要五个子系统详解 发布时间:2006-11-16 19:05:54 1.进程调度(SCHED):控制进程对CPU的访问。当需要选择下一个进程运行时,由调度程序选择最值得运行的进程。可运行进程实际上是仅等待CPU资源的进程,如果某个进程在等待其它资源,则该进程是不可运行进程。Linux使用了比较简单的基于优先级的进程调度算法选择新的进程。 2.内存管理(MM)允许多个进程安全的共享主内存区域。Linux的内存管理支持虚拟内存,即在计算机中运行的程序,其代码,数据,堆栈的总量可以超过实际内存的大小,操作系统只是把当前使用的程序块保留在内存中,其余的程序块则保留在磁盘中。必要时,操作系统负责在磁盘和内存间交换程序块。内存管理从逻辑上分为硬件无关部分和硬件有关部分。硬件无关部分提供了进程的映射和逻辑内存的对换;硬件相关的部分为内存管理硬件提供了虚拟接口。 3.虚拟文件系统(VirtualFileSystem,VFS)隐藏了各种硬件的具体细节,为所有的设备提供了统一的接口,VFS提供了多达数十种不同的文件系统。虚拟文件系统可以分为逻辑文件系统和设备驱动程序。逻辑文件系统指Linux所支持的文件系统,如ext2,fat等,设备驱动程序指为每一种硬件控制器所编写的设备驱动程序模块。 4.网络接口(NET)提供了对各种网络标准的存取和各种网络硬件的支持。网络接口可分为网络协议和网络驱动程序。网络协议部分负责实现每一种可能的网络传输协议。网络设备驱动程序负责与硬件设备通讯,每一种可能的硬件设备都有相应的设备驱动程序。 5.进程间通讯(IPC) 支持进程间各种通信机制。 处于中心位置的进程调度,所有其它的子系统都依赖它,因为每个子系统都需要挂起或恢复进程。一般情况下,当一个进程等待硬件操作完成时,它被挂起;当操作真正完成时,进程被恢复执行。例如,当一个进程通过网络发送一条消息时,网络接口需要挂起发送进程,直到硬件成功地完成消息的发送,当消息被成功的发送出去以后,网络接口给进程返回一个代码,表示操作的成功或失败。其他子系统以相似的理由依赖于进程调度。

1.6.3 Linux目录结构[共2页]

嵌入式Linux操作系统 18 ①“-”表示普通文件。 ②“d”表示目录文件。 ③“l”表示链接文件。 ④“c”表示字符设备。 ⑤“b”表示块设备。 ⑥“p”表示命名管道比如FIFO文件(First In First Out,先进先出)。 ⑦“f”表示堆栈文件比如LIFO文件(Last In First Out,后进先出)。 第1个字符之后有3个3位字符组如下。 ①第1个3位字符组表示对于文件拥有者(u)对该文件的权限。 ②第2个3位字符组表示文件用户组(g)对该文件的权限。 ③第3个3位字符组表示系统其他用户(o)对该文件的权限。 ④若该用户组对此没有权限,一般显示“-”字符。 1.6.2 文件系统类型介绍 1.ext2和ext3 ext3是现在Linux(包括Red Hat、Mandrake)下常见的默认的文件系统,它是ext2的升级版 本。正如Red Hat公司的首席核心的开发人员Michael K.Johnson所说,从ext2转换到ext3主要有以下4个理由:可用性、数据完整性、速度和易于转化。ext3中采用了日志式的管理机制,它使文件系统具有很强的快速恢复能力,并且由于从ext2转换到ext3无需进行格式化,因此,更加推进了ext3文件系统的大大推广。 2.swap文件系统 该文件系统是Linux中作为交换分区使用的。在安装Linux的时候,交换分区是必须建立的,并且它所采用的文件系统类型必须是swap而没有其他选择。 3.vfat文件系统 Linux中把DOS中采用的FAT文件系统(包括FAT12、FAT16和FAT32)都称为vfat文件系统。 4.NFS文件系统 NFS文件系统是指网络文件系统,这种文件系统也是Linux的独到之处。它可以很方便地在局域网内实现文件共享,并且使多台主机共享同一主机上的文件系统。而且NFS文件系统访问速度快、稳定性高,已经得到了广泛的应用,尤其在嵌入式领域,使用NFS文件系统可以很方便地实现文件本地修改,而免去了一次次读写Flash的忧虑。 5.ISO9660文件系统 这是光盘所使用的文件系统,在Linux中对光盘已有了很好的支持,它不仅可以提供对光盘的读写,还可以实现对光盘的刻录。 1.6.3 Linux目录结构 Linux的目录结构如图1.19所示。下面以Red Hat Enterprise 4 AS为例,详细列出了Linux文

linux内核启动 Android系统启动过程详解

linux内核启动+Android系统启动过程详解 第一部分:汇编部分 Linux启动之 linux-rk3288-tchip/kernel/arch/arm/boot/compressed/ head.S分析这段代码是linux boot后执行的第一个程序,完成的主要工作是解压内核,然后跳转到相关执行地址。这部分代码在做驱动开发时不需要改动,但分析其执行流程对是理解android的第一步 开头有一段宏定义这是gnu arm汇编的宏定义。关于GUN 的汇编和其他编译器,在指令语法上有很大差别,具体可查询相关GUN汇编语法了解 另外此段代码必须不能包括重定位部分。因为这时一开始必须要立即运行的。所谓重定位,比如当编译时某个文件用到外部符号是用动态链接库的方式,那么该文件生成的目标文件将包含重定位信息,在加载时需要重定位该符号,否则执行时将因找不到地址而出错 #ifdef DEBUG//开始是调试用,主要是一些打印输出函数,不用关心 #if defined(CONFIG_DEBUG_ICEDCC)

……具体代码略 #endif 宏定义结束之后定义了一个段, .section ".start", #alloc, #execinstr 这个段的段名是 .start,#alloc表示Section contains allocated data, #execinstr表示Section contains executable instructions. 生成最终映像时,这段代码会放在最开头 .align start: .type start,#function /*.type指定start这个符号是函数类型*/ .rept 8 mov r0, r0 //将此命令重复8次,相当于nop,这里是为中断向量保存空间 .endr b 1f .word 0x016f2818 @ Magic numbers to help the loader

linux目录结构

linux目录结构 / 根目录 /bin 常用的命令 binary file 的目录 /boot 存放系统启动时必须读取的档桉,包括核心 (kernel) 在内 /boot/grub/menu.lst GRUB设置 /boot/vmlinuz 内核 /boot/initrd 核心解压缩所需 RAM Disk /dev 系统周边设备 /etc 系统相关设定文件 /etc/DIR_COLORS 设定颜色 /etc/HOSTNAME 设定用户的节点名 /etc/NETWORKING 只有YES标明网络存在 /etc/host.conf 文件说明用户的系统如何查询节点名 /etc/hosts 设定用户自已的IP与名字的对应表 /etc/hosts.allow 设置允许使用inetd的机器使用 /etc/hosts.deny 设置不允许使用inetd的机器使用 /etc/hosts.equiv 设置远端机不用密码 /etc/inetd.conf 设定系统网络守护进程inetd的配置 /etc/gateways 设定路由器 /etc/protocols 设定系统支持的协议 /etc/named.boot 设定本机为名字服务器的配置文件 /etc/sysconfig/network-scripts/ifcfg-eth0 设置IP /etc/resolv.conf 设置DNS /etc/X11 X Window的配置文件,xorg.conf 或 XF86Config 这两个 X Server 的设定档 /etc/fstab 记录开机要mount的文件系统 /etc/inittab 设定系统启动时init进程将把系统设置成什么样的runlevel /etc/issue 记录用户登录前显示的信息 /etc/group 设定用户的组名与相关信息 /etc/passwd 帐号信息 /etc/shadow 密码信息 /etc/sudoers 可以sudo命令的配置文件 /etc/securetty 设定哪些终端可以让root登录 /etc/login.defs 所有用户登录时的缺省配置 /etc/exports 设定NFS系统用的 /etc/init.d/ 所有服务的预设启动 script 都是放在这裡的,例如要启动或者关闭 /etc/xinetd.d/ 这就是所谓的 super daemon 管理的各项服务的设定档目录 /etc/modprobe.conf 内核模块额外参数设定 /etc/syslog.conf 日志设置文件 /home 使用者家目录 /lib 系统会使用到的函数库 /lib/modules kernel 的相关模块 /var/lib/rpm rpm套件安装处 /lost+found 系统不正常产生错误时,会将一些遗失的片段放置于此目录下 /mnt 外设的挂载点 /media 与/mnt类似 /opt 主机额外安装的软件 /proc 虚拟目录,是内存的映射 /proc/version 内核版本 /proc/sys/kernel 系统内核功能 /root 系统管理员的家目录 /sbin 系统管理员才能执行的指令 /srv 一些服务启动之后,这些服务所需要取用的资料目录 /tmp 一般使用者或者是正在执行的程序暂时放置档桉的地方 /usr 最大的目录,存许应用程序和文件 /usr/X11R6: X-Window目录 /usr/src: Linux源代码 /usr/include:系统头文件 /usr/openwin 存放SUN的OpenWin /usr/man 在线使用手册 /usr/bin 使用者可执行的 binary file 的目录 /usr/local/bin 使用者可执行的 binary file 的目录

Linux内核分析-网络[五]:网桥

看完了路由表,重新回到netif_receive_skb ()函数,在提交给上层协议处理前,会执行下面一句,这就是网桥的相关操作,也是这篇要讲解的容。 view plaincopy to clipboardprint? 1. s kb = handle_bridge(skb, &pt_prev, &ret, orig_dev); 网桥可以简单理解为交换机,以下图为例,一台linux机器可以看作网桥和路由的结合,网桥将物理上的两个局域网LAN1、LAN2当作一个局域网处理,路由连接了两个子网1.0和2.0。从eth0和eth1网卡收到的报文在Bridge模块中会被处理成是由Bridge收到的,因此Bridge也相当于一个虚拟网卡。 STP五种状态 DISABLED BLOCKING LISTENING LEARNING FORWARDING 创建新的网桥br_add_bridge [net\bridge\br_if.c] 当使用SIOCBRADDBR调用ioctl时,会创建新的网桥br_add_bridge。 首先是创建新的网桥: view plaincopy to clipboardprint?

1. d ev = new_bridge_dev(net, name); 然后设置dev->dev.type为br_type,而br_type是个全局变量,只初始化了一个名字变量 view plaincopy to clipboardprint? 1. S ET_NETDEV_DEVTYPE(dev, &br_type); 2. s tatic struct device_type br_type = { 3. .name = "bridge", 4. }; 然后注册新创建的设备dev,网桥就相当一个虚拟网卡设备,注册过的设备用ifconfig 就可查看到: view plaincopy to clipboardprint? 1. r et = register_netdevice(dev); 最后在sysfs文件系统中也创建相应项,便于查看和管理: view plaincopy to clipboardprint? 1. r et = br_sysfs_addbr(dev); 将端口加入网桥br_add_if() [net\bridge\br_if.c] 当使用SIOCBRADDIF调用ioctl时,会向网卡加入新的端口br_add_if。 创建新的net_bridge_port p,会从br->port_list中分配一个未用的port_no,p->br会指向br,p->state设为BR_STATE_DISABLED。这里的p实际代表的就是网卡设备。 view plaincopy to clipboardprint? 1. p = new_nbp(br, dev); 将新创建的p加入CAM表中,CAM表是用来记录mac地址与物理端口的对应关系;而刚刚创建了p,因此也要加入CAM表中,并且该表项应是local的[关系如下图],可以看到,CAM表在实现中作为net_bridge的hash表,以addr作为hash值,链入 net_bridge_fdb_entry,再由它的dst指向net_bridge_port。

Linux文件系统目录结构的详细解说 1

linux一些重要子目录的解说收藏 /etc/init.d 这个目录是用来存放系统或服务器以System V模式启动的脚本,这在以System V 模式启动或初始化的系统中常见。比如Fedora/RedHat; /etc/xinit.d 如果服务器是通过xinetd模式运行的,它的脚本要放在这个目录下。有些系统没有这个目录,比如Slackware,有些老的版本也没有。在Rehat/Fedora中比较新的版本中存在。 /etc/rc.d 这是Slackware发行版有的一个目录,是BSD方式启动脚本的存放地;比如定义网卡,服务器开启脚本等。 /etc/X11 这是X-Windows相关的配置文件存放地。 /usr/bin 这个目录是可执行程序的目录,普通用户就有权限执行;当我们从系统自带的软件包安装一个程序时,他的可执行文件大多会放在这个目录。比如安装gaim软件包时。相似的目录是/usr/local/bin;有时/usr/bin中的文件是/usr/local/bin的链接文件; /usr/sbin 这个目录也是可执行程序的目录,但大多存放涉及系统管理的命令。只有root权限才能执行;相似目录是/sbin 或/usr/local/sbin或/usr/X11R6/sbin等; /usr/local 这个目录一般是用来存放用户自编译安装软件的存放目录;一般是通过源码包安装的软件,如果没有特别指定安装目录的话,一般是安装在这个目录中。这个目录下面有子目录。自己看看吧。 /usr/share 系统共用的东西存放地,比如/usr/share/fonts 是字体目录,/usr/share/doc和/usr/share/man帮助文件。 /usr/src 是内核源码存放的目录,比如下面有内核源码目录,比如linux 、linux-2.xxx.xx 目录等。有的系统也会把源码软件包安装在这里。比如Fedora/Redhat,当我们安装file.src.rpm 的时候,这些软件包会安装在/usr/src/redhat相应的目录中。 /var/adm 比如软件包安装信息、日志、管理信息等,在Slackware操作系统中是有这个目录的。在Fedora中好象没有;自己看看吧。 /var/log 系统日志存放,分析日志要看这个目录的东西; /var/spool 打印机、邮件、代理服务器等假脱机目录; 5、附录:目录结构的简明查阅手册

Linux 目录结构及主要内容-小米

Linux 目录结构及主要内容 1 “/”根目录部分有以下子目录: /usr 目录包含所有的命令、程序库、文档和其它文件。这些文件在正常操作中不会被改变的。这个目录也包含你的Linux发行版本的主要的应用程序,譬如,Netscape。 /var 目录包含在正常操作中被改变的文件:假脱机文件、记录文件、加锁文件、临时文件和页格式化文件等/home 目录包含用户的文件:参数设置文件、个性化文件、文档、数据、EMAIL、缓存数据等。这个目录在系统省级时应该保留。 /proc 目录整个包含虚幻的文件。它们实际上并不存在磁盘上,也不占用任何空间。(用ls –l 可以显示它们的大小)当查看这些文件时,实际上是在访问存在内存中的信息,这些信息用于访问系统 /bin 系统启动时需要的执行文件(二进制),这些文件可以被普通用户使用。 /sbin 系统执行文件(二进制),这些文件不打算被普通用户使用。(普通用户仍然可以使用它们,但要指定目录。)/etc 操作系统的配置文件目录。 /root 系统管理员(也叫超级用户或根用户)的Home目录。 /dev 设备文件目录。LINUX下设备被当成文件,这样一来

硬件被抽象化,便于读写、网络共享以及需要临时装载到文件系统中。正常情况下,设备会有一个独立的子目录。这些设备的内容会出现在独立的子目录下。LINUX没有所谓的驱动符。 /lib 根文件系统目录下程序和核心模块的共享库。 /boot 用于自举加载程序(LILO或GRUB)的文件。当计算机启动时(如果有多个操作系统,有可能允许你选择启动哪一个操作系统),这些文件首先被装载。这个目录也会包含LINUX 核(压缩文件vmlinuz),但LINUX核也可以存在别处,只要配置LILO并且LILO知道LINUX核在哪儿。 /opt 可选的应用程序,譬如,REDHAT 5.2下的KDE (REDHAT 6.0下,KDE放在其它的XWINDOWS应用程序中,主执行程序在/usr/bin目录下) /tmp 临时文件。该目录会被自动清理干净。 /lost+found 在文件系统修复时恢复的文件 “/usr”目录下比较重要的部分有: /usr/X11R6 X-WINDOWS系统(version 11, release 6) /usr/X11 同/usr/X11R6 (/usr/X11R6的符号连接) /usr/X11R6/bin 大量的小X-WINDOWS应用程序(也可能是一些在其它子目录下大执行文件的符号连接)。 /usr/doc LINUX的文档资料(在更新的系统中,这个目录移到/usr/share/doc)。 /usr/share 独立与你计算机结构的数据,譬如,字典中的词。

linux文件系统和各个文件夹的作用

Linux 文件系统 Linux 最早的文件系统是Minix,但是专门为Linux 设计的文件系统——扩展文件系统第二版或EXT2被设计出来并添加到Linux中,这对Linux产生了重大影响。EXT2文件系统功能强大、易扩充、性能上进行了全面优化,也是现在所有Linux发布和安装的标准文件系统类型。 磁盘组织 ext2系统中,所有元数据结构的大小均基于“块”,而不是“扇区”。块的大小随文件系统的大小而有所不同。而一定数量的块又组成一个块组,每个块组的起始部分有多种多样的描述该块组各种属性的元数据结构。ext2系统中对各个结构的定义都包含在原始码的include/linux/ext2_fs.h文件中。 1、超级块 每个ext2文件系统都必须包含一个超级块,其中存储了该文件系统的大量基本信息,包括块的大小、每块组中包含的块数等。同时,系统会对超级块进行备份,备份被存放在块组的第一个块中。超级块的起始位置为其所在分区的第1024个字节,占用1KB的空间。2、块组描述符 一个块组描述符用以描述一个块组的属性。块组描述符组由若干块组描述符组成,描述了文件系统中所有块组的属性,存放于超级块所在块的下一个块中。 3、块位图和inode位图 块位图和inode位图的每一位分别指出块组中对应的那个块或inode是否被使用。 4、inode表 inode表用于跟踪定位每个文件,包括位置、大小等(但不包括文件名),一个块组只有一个inode表。 5、数据块 数据块中存放文件的内容,包括目录表、扩展属性、符号链接等。 目录结构 在ext2文件系统中,目录是作为文件存储的。根目录总是在inode表的第二项,而其子目录则在根目录文件的内容中定义。目录项在include/linux/ext2_fs.h文件中定义 文件扩展属性 文件的属性大多数是位于该文件的inode结构中的标准属性,也还包含其他一些扩展属性(于系统中所有的inode相关,通常用于增加额外的功能),在fs/ext2/xattr.h文件中定义。

基于Linux内核编程的实验报告(Linux内核分析实验报告)

基于Linux内核编程的实验报告(Linux内核分析实验 报告) 以下是为大家整理的基于Linux内核编程的实验报告(Linux内核分析实验报告)的相关范文,本文关键词为基于,Linux,内核,编程,实验,报告,分析,,您可以从右上方搜索框检索更多相关文章,如果您觉得有用,请继续关注我们并推荐给您的好友,您可以在教育文库中查看更多范文。 Linux内核分析实验报告

实验题目:文件系统实验 实验目的:linux文件系统使用虚拟文件系统VFs作为内核文件子系统。可以安装多种 不同形式的文件系统在其中共存并协同工作。VFs对用户提供了统一的文件访问接口。本实验的要求是 (1)编写一个get_FAT_boot函数,通过系统调用或动态模块调用它可以提 取和显示出FAT文件系统盘的引导扇区信息。这些信息的格式定义在内核文件的fat_boot_sector结构体中。函数可通过系统调用或动态模块调用。 (2)编写一个get_FAT_dir函数,通过系统调用或动态模块调用它可以 返回FAT文件系统的当 前目录表,从中找出和统计空闲的目录项(文件名以0x00打头的为从未使用过目录项,以0xe5打头的为已删除的目录项),将这些空闲的目录项集中调整到目录表的前部。这些信息的格式定义在内核文件的msdos_dir_entry结构体中。 硬件环境:内存1g以上 软件环境:Linux(ubuntu)2-6实验步骤: 一:实验原理: 以实验4为蓝本,在优盘中编译并加载模块,启动测试程序,查

/proc/mydir/myfile的文件内容。从优盘得到fat文件系统的内容存在msdos_sb_info结构中,然后得到msdos_sb_info结构相应的属性值,得到实验一的数据。实验二中,得到fat文件系统第一个扇区的十六个文件信息。然后按照文件名头文字的比较方法,应用归并排序的方法,将头文件是0x00和0xe5的文件调到前面,其他的文件调到后面 二:主要数据结构说明: (1)超级块对象: 数据结构说明:一个已经安装的文件系统的安装点由超级块对象代表。 structsuper_block{... conststructsuper_operations*s_op;} (2)索引i节点对象 数据结构说明:索引i节点对象包含了内核要操作的文件的全部控制信息,对应着打开文件的i节点表。structinode{ conststructinode_operations*i_op;...} (3)目录项对象 数据结构说明:录项对象代表了文件路径名的各个部分,目录文件名和普 通文件名都属于目录项对象。structdentry{

Linux内核启动流程分析(一)

很久以前分析的,一直在电脑的一个角落,今天发现贴出来和大家分享下。由于是word直接粘过来的有点乱,敬请谅解! S3C2410 Linux 2.6.35.7启动分析(第一阶段) arm linux 内核生成过程 1. 依据arch/arm/kernel/vmlinux.lds 生成linux内核源码根目录下的vmlinux,这个vmlinux属于未压缩, 带调试信息、符号表的最初的内核,大小约23MB; 命令:arm-linux-gnu-ld -o vmlinux -T arch/arm/kernel/vmlinux.lds arch/arm/kernel/head.o init/built-in.o --start-group arch/arm/mach-s3c2410/built-in.o kernel/built-in.o mm/built-in.o fs/built-in.o ipc/built-in.o drivers/built-in.o net/built-in.o --end-group .tmp_kallsyms2.o 2. 将上面的vmlinux去除调试信息、注释、符号表等内容,生成arch/arm/boot/Image,这是不带多余信息的linux内核,Image的大小约 3.2MB; 命令:arm-linux-gnu-objcopy -O binary -S vmlinux arch/arm/boot/Image 3.将 arch/arm/boot/Image 用gzip -9 压缩生成arch/arm/boot/compressed/piggy.gz大小约 1.5MB;命令:gzip -f -9 < arch/arm/boot/compressed/../Image > arch/arm/boot/compressed/piggy.gz 4. 编译arch/arm/boot/compressed/piggy.S 生成arch/arm/boot/compressed/piggy.o大小约1.5MB,这里实 际上是将piggy.gz通过piggy.S编译进piggy.o文件中。而piggy.S文件仅有6行,只是包含了文件piggy.gz; 命令:arm-linux-gnu-gcc -o arch/arm/boot/compressed/piggy.o arch/arm/boot/compressed/piggy.S 5. 依据arch/arm/boot/compressed/vmlinux.lds 将arch/arm/boot/compressed/目录下的文件head.o 、piggy.o 、misc.o链接生成arch/arm/boot/compressed/vmlinux,这个vmlinux是经过压缩且含有自解压代码的内核, 大小约1.5MB; 命 令:arm-linux-gnu-ld zreladdr=0x30008000 params_phys=0x30000100 -T arch/arm/boot/compressed/vmlinux.lds a rch/arm/boot/compressed/head.o arch/arm/boot/compressed/piggy.o arch/arm/boot/compressed/misc.o -o arch/arm /boot/compressed/vmlinux

相关文档
最新文档