Linux——构建根文件系统

内核如何启动第一个程序:
1.open(/dev/console);
其中有两个sys_dup(0);
2.run_init_process启动应用程序(命令行中的init = “xxx”)
如果命令行中没有设置该命令,则按照以下顺序启动

if (execute_command) {
		run_init_process(execute_command);
		printk(KERN_WARNING "Failed to execute %s.  Attempting "
					"defaults...\n", execute_command);
	}
	run_init_process("/sbin/init");
	run_init_process("/etc/init");
	run_init_process("/bin/init");
	run_init_process("/bin/sh");

busybox:
包括了ls cd cp等命令,是busybox的链接
在这里插入图片描述
使用ls相当于使用busybox ls
在这里插入图片描述
内核启动sbin/init也是bin/busybox链接
在这里插入图片描述
配置、编译busybox:

init程序:
配置文件;
解析配置文件;
执行(用户程序)

最小根文件系统必须条件:
(1) /dec/console /dev/null
(2) init程序(来源于busybox)
(3) /etc/inittab(该文件中定义了某些必要的应用程序)
(4) 配置文件指定的应用程序
(5) 必要的库

安装busybox:
解压busybox (tar xjf 压缩文件)
make menuconfig(生成.config )
make (编译)
make CONFIG_PREFIX=/work/nfs_root/first_fs install(交叉编译并安装在指定目录,不要直接使用inatall会损坏pc机)

创建dev/console和dev/null
在这里插入图片描述
创建etc文件夹,文件夹中建立inittab文件,里面加入console::askfirst:-/bin/sh
只执行askfirst bin/sh 标准输入标准输出和标准错误定位到console中去;
在这里插入图片描述
必要的库
在根文件系统中创建lib文件夹,并将必要的库赋值到该文件夹下
在这里插入图片描述
最小根文件系统建立完成:
在这里插入图片描述
烧入到开发板中:
制作yaffs映像文件:
在这里插入图片描述
然后通过usb将yaffs映像文件烧入开发板,启动开发板可以看到
在这里插入图片描述
开发板中的根文件系统
在这里插入图片描述

优化根文件系统:
参考博文

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值