用BusyBox制作Linux根文件系统

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/253768.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Angular Elements 组件在非angular 页面中使用的DEMO

2019独角兽企业重金招聘Python工程师标准>>> 一、Angular Elements 介绍 Angular Elements 是伴随Angular6.0一起推出的新技术。它借助Chrome浏览器的ShadowDom API,实现一种自定义组件。 这种组件可以用Angular普通组件的开发技术进行编写,…

(转) android里,addContentView()动态增加view控件,并实现控件的顶部,中间,底部布局...

http://blog.csdn.net/bfboys/article/details/52563089转载于:https://www.cnblogs.com/zhangminghan/p/6182909.html

verilog仿真——$test$plusargs 和 $value$plusargs

VERILOG的参数可以用define和parameter的方式定义,这种方法要求我们在编译前将变量必须定义好,编译完成之后再也不能修改; 然而,有时候我们在进行仿真时,需要从外部传递参数,这个要求怎么满足呢&#xff1…

卢卡斯定理

卢卡斯定理:解决一类组合数取模问题 A、B是非负整数,p是质数。AB写成p进制:Aa[n]a[n-1]...a[0],Bb[n]b[n-1]...b[0]。 则组合数C(A,B)与C(a[n],b[n])*C(a[n-1],b[n-1])*...*C(a[0],b[0]) modp同余 即:Lucas(n,m,p)c(n%p,m%p)*Luc…

内核理解

在纯技术方面,内核是硬件与软件之间的一个中间层。其作用是将应用程序的请求传递给硬件,并充当底层的驱动程序,对系统中的各种设备和组件。内核启动init程序作为第一个进程,该进程负责进一步的系统初始化操作,并显示登…

loadrunner中对https证书的配置

1、准备好网站的证书,一般证书是cer格式; 2、因为loadrunner只支持pem格式的证书,所以要将证书转换格式,利用openssl工具;(或者直接让开发提供pem格式的证书)3、得到pem格式的证书之后&#xff…

Android 9 Pie震撼来袭 同步登陆WeTest

作者:We Test小编商业转载请联系腾讯WeTest获得授权,非商业转载请注明出处。原文链接:wetest.qq.com/lab/view/40…WeTest 导读2018年8月7日,Google对外发布最新 Android 9.0 正式版系统,并宣布系统版本Android P 被正…

Datapath综合代码规范(Verilog)

一、一般准则 1、有符号数运算 利用类型“signed”完成有符号数运算,而不是用无符号数模拟有符号数运算。这样可以得到更好的QoR。在资源报告中检查操作数的类型和大小。 2、符号/零扩展 尽量不要手动扩展。verilog利用signed/unsigned会自动完成扩展。这样代码可…

Linux下V4L2编程小结

http://www.360doc.com/content/12/0318/16/532901_195392228.shtml :davind dm365linux移植 http://www.embedhq.org/html/jsbw/2010/0425/390.html :Linux下V4L2编程小结

百(垃)度(圾)之星初赛B hdu6114

Chess 题意:中文题 思路:其实就是在n个格子上放m个棋子(n>m)(xjb套Lucas的板子... AC代码: #include "iostream" #include "string.h" #include "stack" #include "…

variable 'xxx' unsafe in 'case'的处理

问题描述: case get(?Player_LoopTaskInfo) of{TargetCnt, TaskStar, TaskExp} ->ok;_ ->throw("not_found_loop_task_info") end 在case语句中,这样写,编译时,会提示变量unsafe,解决编译器报错的…

SDUT 3347 数据结构实验之数组三:快速转置

数据结构实验之数组三&#xff1a;快速转置 Time Limit: 1000 ms Memory Limit: 65536 KiBProblem Description 转置运算是一种最简单的矩阵运算&#xff0c;对于一个m*n的矩阵M( 1 < m < 10000,1 < n < 10000 )&#xff0c;它的转置矩阵T是一个n*m的矩阵&…

linux设备和驱动加载的先后顺序

Linux驱动先注册总线&#xff0c;总线上可以先挂device&#xff0c;也可以先挂driver&#xff0c;那么究竟怎么控制先后的顺序呢。 Linux系统使用两种方式去加载系统中的模块&#xff1a;动态和静态。 静态加载&#xff1a;将所有模块的程序编译到Linux内核中&#xff0c;由do_…

CMOS 图像传感器——Skipping 和 Binning 模式

在通常的CMOS读取方式中&#xff0c;由于像素读取规模的差异&#xff0c;不同的分辨率对应不同的帧率。在通道带宽固定的前提下&#xff0c;想要提高帧率就要考虑是否需要缩小视野&#xff08;外圈裁切&#xff09;。若不希望视野缩小&#xff0c;需要减少采样的分辨率。 常用的…

DAVINCI DM365-368中 linux-2.6.32的移植

http://www.360doc.com/content/12/0318/16/532901_195392228.shtml 很详细的一篇文章&#xff0c;在此感谢了&#xff01; http://www.rosoo.net/a/201001/8316.html DM系列芯片外设详细介绍

Jacoco--测试覆盖率工具

介绍JaCoCo&#xff08;Java Code Coverage&#xff09;是一种分析单元测试覆盖率的工具&#xff0c;使用它运行单元测试后&#xff0c;可以给出代码中哪些部分被单元测试测到&#xff0c;哪些部分没有没测到&#xff0c;并且给出整个项目的单元测试覆盖情况百分比&#xff0c;…

HTML 标记大全参考手册

1.文件结构 文件类型 <HTML></HTML> &#xff08;放在文档的开头与结尾&#xff09; 文件主题 <TITLE></TITLE> &#xff08;必须放在「文头」区块内&#xff09; 文头 <HEAD></HEAD> &#xff08;描述性资料&#xff0c;如「主题」&#…

APB协议学习

APB(Advanced Peripheral Bus) 1、APB的概述与特点 APB主要用于低带宽的周边外设之间的连接&#xff0c;例如UART、1284等&#xff0c;它的总线架构不像AHB支持多个主模块&#xff0c;在APB里面唯一的主模块就是APB 桥。其特性包括&#xff1a;两个时钟周期传输&#xff1b;无…

私有协议栈开发

通信协议从广义上区分&#xff0c;可以分为公有协议和私有协议。由于私有协议的灵活性&#xff0c;它往往会在某个公司或者组织内部使用&#xff0c;按需定制&#xff0c;也因为如此&#xff0c;升级起来会非常方便&#xff0c;灵活性好。绝大多数的私有协议传输层都基于TCP/IP…

制作NFS

最近学习NFS&#xff0c;用本地测试. 以下是我的测试过程 环境 ubuntu 10.4 vm 7.1 终端 ifconfig 得到 ubuntu资料 INET ADDR 192.168.0.4 BCAST 192.168.0.255 MASK 255.255.255.0 一 安装NFS $ sudo apt-get install nfs-kernel-server $ sudo apt-get install nfs…