farsight 构建Linux根文件系统.pdf

farsight 构建Linux根文件系统.pdf

ID:51494692

大小:98.99 KB

页数:5页

时间:2020-03-25

farsight 构建Linux根文件系统.pdf_第1页
farsight 构建Linux根文件系统.pdf_第2页
farsight 构建Linux根文件系统.pdf_第3页
farsight 构建Linux根文件系统.pdf_第4页
farsight 构建Linux根文件系统.pdf_第5页
资源描述:

《farsight 构建Linux根文件系统.pdf》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、构建Linux根文件系统1.根文件系统1.1定义存放系统启动所必需的文件内核映像文件(嵌入式系统中,内核一般单独存放在一个分区中);内核启动后运行的第一个程序(init);shell程序;应用程序所依赖的库;…...1.2目录结构1.2.1FHS标准:(FilesystemHierarchyStandard,文件系统层次标准);定义文件系统中目录、文件存放的原则,不是强制性标准。1.2.2目录:/bin存放所有用户都可以使用的、基本的命令;比须和根文件系统在一个分区中。/sbin存放系统命令,只有管理员可以使用的命令必须和根文件系统在

2、同一分区中。/---/sbin*基本的系统命令,用于启动系统、修复系统等。*---/usr/sbin*不是急迫需要使用的系统命令。*---/usr/local/sbin/本地安装的系统命令。/dev:存放设备文件。/etc:存放配置文件。/lib/---libc.so.*动态链接C库。*---ld*链接器、加载器。/---modules内核可加载模块存放的目录。/home:用户目录。/root:根用户目录。/usr存放共享、只读的数据和程序;可以存放在另一个分区中,系统启动后再挂接到根文件系统的/usr目录下。/var:存放可变的数据

3、。/procproc文件系统的挂接点;proc文件系统是一个虚拟的文件系统,用来表示系统的运行状态。/mnt:用于临时挂接某个文件系统的挂接点。/tmp用于存放临时文件;为减少对Flash的操作,可以在/tmp目录上挂接内存文件系统。2.Busybox2.1init进程2.1.1定义由内核启动的第一个(唯一的一个)用户进程(ID=1);是后续所有进程的发起者,根据配置文件决定启动哪些程序;执行的程序通常是/sbin/init,也可以传入命令行参数指定一个程序作为init进程运行。2.1.2内核如何启动init进程内核启动的最后一步是启

4、动init进程,代码在linux内核源码的init/main.c中。staticintnoinlineinit_post(void){free_initmem();unlock_kernel();mark_rodata_ro();system_state=SYSTEM_RUNNING;numa_default_policy();/*打开标准输入(stdin)、标准输出(stdout)、标准错误(stderr);*对应的文件描述符分别是0,1,2。*///打开/dev/console设备文件,他是init进程的标准输入设备。if(sys

5、_open((constchar__user*)"/dev/console",O_RDWR,0)<0)printk(KERN_WARNING"Warning:unabletoopenaninitialconsole.");//将文件描述符0复制给文件描述符1,2;//标准输入、标准输出、标准错误对应同一个文件(设备)。(void)sys_dup(0);(void)sys_dup(0);/*ramdisk_execute_command*指定了要执行的程序*1.如果命令行参数中指定了”rdinit=...”*ramdisk_exec

6、ute_command等于此指定值。*2.如果/init程序存在*ramdisk_execute_command=/init*3.ramdisk_execute_command为空。*/if(ramdisk_execute_command){/*run_init_process函数*使用他的参数所指定的程序来创建一个用户进程;*一旦创建进程成功,此函数将不会返回。*/run_init_process(ramdisk_execute_command);printk(KERN_WARNING"Failedtoexecute%s",ra

7、mdisk_execute_command);}/*execute_command*指定了要执行的程序*1.如果命令行参数中指定了”init=...”*execute_command等于此指定值。*2.execute_command为空*/if(execute_command){run_init_process(execute_command);printk(KERN_WARNING"Failedtoexecute%s.Attempting""defaults...",execute_command);}//依次尝试执行/sbin

8、/init、/etc/init、/bin/init、/bin/sh。run_init_process("/sbin/init");run_init_process("/etc/init");run_init_proces

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。