编译busybox--制作linux文件系统

来源:互联网 发布:手机淘宝图片尺寸 编辑:程序博客网 时间:2024/05/20 18:22
reference: http://blog.sina.com.cn/s/blog_5248460001013dqn.html




文件系统:
1.Uboot:启动内核
2.内核:启动应用程序
3.应用程序,构建:根文件系统;
内核怎样启动第一个应用程序?
1.启动open(/dev/console sys_dup(),sys_dop(0))
2.run_init_process()

ls -l /bin/ls   //
busybox ls     //
应用程序的目的是启动用户程序,启动用户程序的第一个进程是/sbin/init
 
bosybox-启动->init_main
parse_inittab
file = fopen(INITTAB,"r");

new_init_action()      //1创建一个init_action结构,填充
//2把这个结构放入init_action_list链表;

从默认的new_init_action反推出默认的配置文件;
#inittab格式:
#<id>:<runlevels>:<action>:<process>

new_init_action(ASKFIRST,"-/bin/sh","/dev/tty2");
static void new_init_action(int_action,const char*command,const char *cons)
1创建一个init_action结构,填充
2把这个结构放入init_action_list链表;

查看/example中的inittab;
inittab格式:
<id>:<runlevels>:<action>:<process>

id =>/dev/id, 用作终端:stdin,stdout.......

busybox一共有5相基本要素
1.dev/console
  dev/null
2.init-->busybox   //读取配置文件-->解析配置文件-->启动用户程序;
3./etc/inittab
4.配置文件指定的程序  //最小的文件系统时此条没必要
5.C库

busybox
解压文件中install中描述到:
Building:
=========

The BusyBox build process is similar to the Linux kernelbuild:

  make menuconfig    # This creates a file called ".config"
  make              # Thiscreates the "busybox" executable
  make install       # or makeCONFIG_PREFIX=/path/from/root install
//直接make install 会将busybox安装到默认的虚拟机操作系统中,而造成red hat损坏;
//尝试直接Make install 后,生成本目录下文件夹 _install ,即为文件系统;
查看red hat系统文件ls /dev/console /dev/null -l
crw------- 1 root root 5, 1 05-20 09:16 /dev/console
crwxrwxrwx 1 root root 1, 3 05-20 09:15 /dev/null
在生成的FS文件夹里面
mkdir dev
cd dev
mknod console c 5 1   //(如果出现权限问题sudo mknodconsole c 5 1)         #重中之重,没有这个在编译initramfs时起不来。还找不到是哪的原因。汗
sudo mknod null c 1 3  //同Red Hat里面比较

cd ..
mkdir etc
vi etc/inittab      //内容为console::askfrist:-bin/sh

mkdir lib  
        //CP *.so文件,至此;
//Copy的lib是:(arm的gcc编译器中的交叉编译器的库文件)即:/usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/armv4t/lib下的*.so动态库;

原创粉丝点击