构建根文件系统

时间:2023-01-25 16:30:26
6.11
1.文件系统启动第一个程序
内核怎样启动第一个应用程序
(1)open(/dev/console)//即终端
     sys_dup(0) sys_dup(0)
(2)run_init_process(execute_command)
而execute_command在命令行或者下面四个目录中的一个获得:


if(execute_command)
{run_init_process(execute_command)
  printK("Failed");
}
run_init_process("/sbin/init");
run_init_process("/etc/init");
run_init_process("/bin/init");
run_init_process("/bin/sh");

2.第二节构建文件系统之init进程分析(就是分析busybox源码)
ls=busybox ls
ls -l /bin/ls 可以查看到ls的链接
cp命令对应在内核有个cp_main()函数

最小根文件系统必须的东西有:
(1)/dev/console /dev/null (创建设备mknod console c 5 1)
(2)/etc/inittab (在里面写入console::askfirst:~/bin/sh)
(3)配置文件里指定的应用程序
(4)库
(5)init本身,即busybox

busybox->init_main
          parse_inittab 解析配置文件
            file=fopen(INITTAB,"r"); //打开配置文件/etc/inittab
inittab格式:
<id>:<runlevels>:<action>:<process>
 id=>/dev/id,用作终端:stdin,stdout,stderr:printf,scanf,err
 runlevels:忽略
 action:执行时机
 #包括:sysinit,respawn,askfirst,wait,once,restart,ctrlatdel,shutdown.
 process:应用程序或脚本

3.新建souceinsight工程,选择添加所以文件,再选择同步。

4.用busybox创建根文件系统就像配置内核一样:
(1)make menuconfig,选择需要哪些命令
(2)make
(3)make install

5 .a静态库 .so 动态库  cp *.so*  / -d 加上-d参数就不会把链接拷过去,没这么大

6.目录/proc为虚拟文件系统,mount -t proc none /proc(写/etc/init.d/rcS文件)
                        或者:mount -a(链接/etc/fstab脚本)
在fstab里面可以写入挂载哪些文件系统

7.udev:自动创建/dev目录下的设备节点
  mdev:是udev的缩减版,功能和udev类似

8.echo hello > test.txta 创建文本文件,内容为hello

9.挂载NFS
(1)从flash启动后,用mount手动挂载
(2)系统直接从NFS启动,在u-boot中设置
#set bootargs noinitrd root=/dev/nfs ..........;