STEP 1:构建目录结构

创建根文件系统目录,主要包括以下目录
/dev  /etc /lib  /usr  /var /proc /tmp /home /root /mnt /bin  /sbin  /sys

#mkdir     /home/rootfs
#cd        /home/rootfs

#mkdir  dev  etc  lib  usr  var  proc  tmp  home  root  mnt   sys

STEP 2:    使用busybox构建/bin /sbin linuxrc

进入busybox-1.16.1目录,执行

#make defconfig

#make menuconfig

Busybox Setting ----->
    Build Options -----> 
        //1选择将busybox进行静态编译 
        [*]Build BusyBox as a static binary (no shared libs) 
        //2.指定交叉编译器为 
        (/usr/local/arm/4.3.2/bin/arm-linux-)Cross Compiler prefix

Installation Options ----->

//3.选择上 Don’t use /usr 
Busybox Library Tuning---> 
    [*]Username completion 
    [*]Fancy shell prompts 
    [*]Query  cursor  position  from  terminal 
        //4.编译出的busybox的shell命令解释器支持显示当前路径及主机信息

保存退出

#make   
#make install

在busybox目录下会看见 _install目录,里面有/bin /sbin linuxrc三个文件
将这三个目录或文件拷到第一步所建的rootfs文件夹下。

#cp bin/ sbin/ linuxrc /home/rootfs -ra 

   切记一定要带上-a的参数,因为bin目录里大部分都是链接,如果不带-a的参数,拷过去之后会做相应的复制,不再是链接的形式

 

STEP 3  构建etc目录:

1)进入根文件系统rootfs的etc目录,执行如下操作:

    拷贝Busybox-1.16.1/examples/bootfloopy/etc/* 到当前目录下
        #cp –r busybox-1.16.1/examples/bootfloopy/etc/*  rootfs/etc

修改inittab,把第二项改为::respawn:-/bin/login

        删除第三、第四行代码   

2)拷贝虚拟机上的/etc/passwd, /etc/group, /etc/shadow到rootfs/etc下

        # cp /etc/passwd   rootfs/etc
        # cp /etc/group    rootfs/etc 
        # cp /etc/shadow   roofs/etc

对以下三个文件修改,只保存与root相关的项,根据具体情况内容会有所不同。

修改passwd为root:x:0:0:root:/root:/bin/sh,即只保存与root相关项,而且最后改成/bin/ash。

修改group为root:x:0:root

修改shadow为root:$1$x9yv1WlB$abJ2v9jOlOc9xW/y0QwPs.:14034:0:99999:7:::

登陆开发板时需输入用户名密码,同虚拟机相同

3)修改profile

PATH=/bin:/sbin:/usr/bin:/usr/sbin          //可执行程序 环境变量

export LD_LIBRARY_PATH=/lib:/usr/lib        //动态链接库 环境变量

/bin/hostname sunplusedu

USER="`id -un`"

LOGNAME=$USER

HOSTNAME='/bin/hostname'

PS1='[\u@\h \W]# '                          //显示主机名、当前路径等信息:

4)修改 etc/init.d/rc.S文件

/bin/mount -n -t ramfs ramfs /var

/bin/mount -n -t ramfs ramfs /tmp

/bin/mount -n -t sysfs none /sys

/bin/mount -n -t ramfs none /dev

/bin/mkdir /var/tmp

/bin/mkdir /var/modules

/bin/mkdir /var/run

/bin/mkdir /var/log

/bin/mkdir -p /dev/pts                    //telnet服务需要

/bin/mkdir -p /dev/shm                    //telnet服务需要

echo /sbin/mdev > /proc/sys/kernel/hotplug//USB自动挂载需要

/sbin/mdev -s         //启动mdev在/dev下自动创建设备文件节点

/bin/mount -a

5)修改etc/fstab文件,增加以下文件

 none   /dev/pts    devpts   mode=0622      0 0
       tmpfs  /dev/shm    tmpfs    defaults       0 0

 

STEP 4 构建lib目录:

1)#cd /usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/armv4t/lib

将以下动态库拷贝到rootfs/lib下
     #cp  *so*  roofs/lib  -a

 2)#cd /usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/armv4t/usr/lib
     将以下动态库拷贝到rootfs/lib下 
     #cp ./libstdc++.so.*  rootfs/lib  -a

使用BusyBox制作Linux根文件系统的更多相关文章

  1. 使用BusyBox制作linux根文件系统(CramFS+mdev)

    转:http://www.360doc.com/content/10/0428/11/496343_25245348.shtml 操作系统:Ubuntu9.04 内核版本:linux-2.6.24.7 ...

  2. 制作linux根文件系统

    转载地址:http://wenku.baidu.com/view/2cb1b4707fd5360cba1adb14.html 2011十一月 24 转 嵌入式根文件系统制作 (3985) (0) 转自 ...

  3. linux根文件系统制作

    在嵌入式中移植的内核下载到开发板上,是没有办法真正的启动Linux操作系统的,会出现无法加载文件系统的错误. 那么根文件系统在系统启动中到底是什么时候挂载的呢?先将/dev/ram0挂载,而后执行/l ...

  4. linux根文件系统 /etc/resolv.conf 文件详解

    Linux根文件系统/etc/resolv.conf文件,它是DNS客户机配置文件,用于设置DNS服务器的IP地址及DNS域名,还包含了主机的域名搜索顺序.该文件是由域名解析器(resolver,以恶 ...

  5. linux根文件系统制作之busybox编译和系统构建【转】

    转自:http://blog.chinaunix.net/uid-29401328-id-5019660.html 介绍完相关文件后我们开始构建文件系统,涉及到的文件等到具体用到的时候再讲. 一.编译 ...

  6. 使用BusyBox制作嵌入式Linux根文件系统

    STEP 1:构建目录结构  创建根文件系统目录,主要包括以下目录/dev  /etc /lib  /usr  /var /proc /tmp /home /root /mnt /bin  /sbin ...

  7. linux根文件系统制作,busybox启动流程分析

    分析 busybox-1.1.6 启动流程,并 制作一个小的根文件系统 源码百度云链接:https://pan.baidu.com/s/1tJhwctqj4VB4IpuKCA9m1g 提取码 :l10 ...

  8. Linux根文件系统的制作

    转载:http://www.cnblogs.com/hnrainll/archive/2011/06/09/2076655.html 1. 根文件系统 文件系统是包括在一个磁盘(包括光盘.软盘.闪盘及 ...

  9. Linux 根文件系统制作

    1.创建根文件目录 mkdir rootfs(名字是随便取的) 2.创建子目录 cd rootfs mkdir bin dev etc lib proc sbin sys usr mnt tmp va ...

随机推荐

  1. MDI-多文档窗体

    1.IsMdicontainer属性设置是否为多文档窗体 this.IsMdiContainer = true; 2.MdiParent属性设置为父窗体 Frm_Child frm = new Frm ...

  2. IOS平台汉字转拼音方案

    iOS/Mac OS X 汉字转拼音 网络流行的汉字转拼音方案是带一个拼音码表,速度快.其实Core Foundation也提供了一种方案,而且还带声调! NSMutableString *ms =  ...

  3. EXTJS 4.2 资料 Grid嵌套

    如图: var ParentContCateId = 0; var start = 0; var limit = 20; DistributionPointForm = function () { E ...

  4. 【BZOJ 1013】 [JSOI2008]球形空间产生器sphere

    Description 有一个球形空间产生器能够在n维空间中产生一个坚硬的球体.现在,你被困在了这个n维球体中,你只知道球面上n+1个点的坐标,你需要以最快的速度确定这个n维球体的球心坐标,以便于摧毁 ...

  5. 微软职位内部推荐-This Job is no longer available.

    微软近期Open的职位: 如果你想试试这个职位,请跟我联系,我是微软的员工,可以做内部推荐.发你的中英文简历到我的邮箱:Nicholas.lu.mail(at)gmail.com

  6. 5.3:从bean的实例中获取对象

    5.3  从bean的实例中获取对象 在getBean方法中,getObjectForBeanInstance是个高频率使用的方法,无论是从缓存中获得bean还是根据不同的scope策略加载bean. ...

  7. c#保留小数点后两位

    double d = 23423.24234234d; Response.Write(d.ToString("0.00"));

  8. [转载]EasyUI Pagination 分页的两种做法

    EasyUI 的 datagrid 支持服务器端分页,但是官方的资料比较少,以下总结了两种 datagrid 的服务器端分页机制,可根据情况具体使用. 一:使用 datagrid 默认机制 后台: p ...

  9. sublime 配置g++

    资料来源: http://blog.csdn.net/leonsc/article/details/5853614 http://www.cnblogs.com/zhenglichina/archiv ...

  10. Jenkins任务启动的后台进程被自动kill

    在Jenkins的使用中,遇到过的一个场景是:在web代码更改之后,能自动的部署到测试服务器,我们写了run.sh脚本来重启服务,在使用Jenkins的任务自动跑这个脚本后发现,服务没有起来.开始以为 ...