基于S3C2440构建根文件系统

来源:互联网 发布:jiragn 类似的软件 编辑:程序博客网 时间:2024/05/17 19:59
如何构建根文件系统 2016.6.3


1.内核怎样启动第一个应用程序
a.打开了第一个设备
run_init_process(execute_command)要么是命令行里指定的
run_init_process("/sbin/init")


ps查看当前正在跑的程序


init程序:
a.读取配置文件
b.解析配置文件
c.执行用户程序


ls -l bin cp


busybox->init_main
parse_inittab(解析init表) 
file = fopen(打开配置文件etc/inittab)
inittab格式:
    <id>:<runlevels>:<action>:<process> 
    runlevels : 忽略
    action    :执行时机
    process   :应用程序和脚本
  
  id => /dev/id,用做终端 : stdin,stdout,stderr,printf,scanf,err
  new_init_action
 
  new_init_action(ASKFIRST, bb_default_login_shell, VC_2); 
  new_init_action(ASKFIRST, -/bin/sh, /dev/tty2); 


 static void new_init_action(int action, const char *command, const char *cons)
 ①创建一个init_action结构,填充
 ②把这个结构放入init_action_list
 run_actions执行动作
 
一个根文件系统需要的项
/dev/console
/dev/null
/etc/inittab配置文件
配置文件里指定的应用程序
库(fopen())
init本身,即busybox


编译时遇到
/work/tools/usr/local/arm/4.3.2/bin/../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 
头文件的开头添加缺少的头文件:#include<netinet/in.h>


构建最小根文件系统




mount -a挂在根文件系统


NFS挂载


手工挂接
配置网卡:
ifconfig eth0 up创建网卡




直接从NFS启动
set bootargs noinitrd root=/dev/nfs nfsroot=10.1.4.27:/work/nfs_root/sec_fs ip=10.1.4.26:10.1.4.27:10.1.4.254:255.255.255.0::eth0:off init=/linuxrc console=ttySAC0
save 


make install        # or make CONFIG_PREFIX=/path/from/root install安装busbox
0 0
原创粉丝点击