参考博客http://www.cnblogs.com/Charles-Zhang-Blog/p/3419301.html

一、构建根文件系统该有的目录

  • 即在/rootfs/目录下创建该有的空目录;
  • 一般有dev/   etc/   lib/   usr/   var/   proc/   tmp/   home/   root/   mnt/   bin/   sbin/  sys/ ;
  • /bin  /sbin由于是用busybox构建,再拷贝到此目录下的,所以可以先不创建;

二、使用busybox构建/bin  /sbin   linuxrc

1、获取busybox源码

  • busybox是开源项目,版本差异不大;这里选择busybox-1.24.1版本。
  • 官方网站下载:https://busybox.net/downloads/

2、解压后修改Makefile

  • ARCH = arm
  • CROSS_COMPILE = /usr/local/arm/arm-2009q3/bin//arm-none-linux-gnueabi-

3、配置busybox

  • 先make defconfig,然后make menuconfig,安装下面图示进行配置。

p.s:出现错误

解决思路方法:此文件和主功能无关,可以避开。

(1)先找到sync.c文件:在此目录下find -name "sync.c",知道其在./coreutils/sync.c

(2)cd coreutils,在Kbuild文件中,查找sync.o,可知由宏CONFIG_SYNC来控制是否编译

(3)在make menuconfig中,查找SYNC的位置,转到其位置,选择为N。

4、输入make进行编译,然后输入make install进行安装

(1)make install,执行busybox顶层目录的一个目标install。

(2)安装目录默认在busybox/_install,里面有bin/  sbin/  linuxrc三个(目录)文件。

  • 也可以指定目录安装,以便后期不用再拷贝。

(3)make install的解释

  • 安装软件的指令,在传统的linux系统中,安装软件时都是选择源代码方式安装的。
  • 下载要安装的软件源代码,然后配置、编译、安装。
  • 安装的含义是,将编译生成的可执行程序及其依赖的库文件、配置文件、头文件安装到当前系统中指定的目录下。

5、将bin/  sbin/  linuxrc拷贝到rootfs文件夹下

  • 指令是cp bin/  sbin/  linuxrc /root/rootfs -ra;

三、构建etc目录

主要是拷贝一些文件到etc/目录下,并进行一些修改

1、将  busybox/examples/bootfloopy/etc/*  拷贝到  /rootfs/etc/  目录下,然后修改其中的inittab文件;

(1)开机免登陆,直接进入shell

#first:run the system script file
::sysinit:/etc/init.d/rcS
::askfirst:-/bin/sh
::ctrlaltdel:-/sbin/reboot
#umount all filesystem
::shutdown:/bin/umount -a -r
#restart init process
::restart:/sbin/init

或者

::sysinit:/etc/init.d/rcS
#::respawn:-/bin/sh
#::respawn:-/bin/login
console::askfirst:-/bin/sh  //这个和上面一样,只是id明确给出而已
#tty2::askfirst:-/bin/sh
::ctrlaltdel:/bin/umount -a -r

(2)开机需要登陆

::sysinit:/etc/init.d/rcS
#::respawn:-/bin/sh
::respawn:-/bin/login
#console::askfirst:-/bin/sh
#tty2::askfirst:-/bin/sh
::ctrlaltdel:/bin/umount -a -r

2、用户名、密码设置:将虚拟机ubuntu的  /etc/passwd、/etc/group、/etc/shadow  拷贝到  rootfs/etc/  目录下,然后修改三个文件的相关内容;

(1)只保存与root相关项,修改passwd为root:x:0:0:root:/root:/bin/sh。

(2)只保存与root相关项,修改group为root:x:0:root。

(3)只保存与root相关项,shadow其他不需要更改(或者清除密码),登陆密码和拷贝源的密码一致。


3、修改profile文件;

# Ash profile
# vim: syntax=sh# No core files by default
ulimit -S -c 0 > /dev/null 2>&1USER="`id -un`"
LOGNAME=$USER
PS1='[\u@\h \W]\# '
PATH=$PATHHOSTNAME=`/bin/hostname`export USER LOGNAME PS1 PATH

4、修改fstab文件;

添加以下内容:注意这里的挂载点需要预先建立(如果在第一步创建空目录是没有创建的话)

#<file system>     <mount point>     <type>    <options>    <dump>     <pass>
proc        /proc       proc    defaults    0   0
sysfs       /sys        sysfs   defaults    0   0
tmpfs       /var        tmpfs   defaults    0   0
tmpfs       /tmp        tmpfs   defaults    0   0
tmpfs       /dev        tmpfs   defaults    0   0

5、修改etc/init.d/rc.S文件;

#!/bin/sh
PATH=/sbin:/bin:/usr/sbin:/usr/binrunlevel=S
prevlevel=Numask 022export PATH runlevel prevlevelmount -aecho /sbin/mdev > /proc/sys/kernel/hotplug
mdev -s/bin/hostname -F /etc/sysconfig/HOSTNAMEifconfig eth0 192.168.1.10

四、构建lib目录

将动态链接库拷贝到/root/rootfs/lib/目录下,动态链接库在  /usr/local/arm/arm-2009q3/arm-none-linux-gnueabi/libc/lib/  目录下。

  • 指令  cp /usr/local/arm/arm-2009q3/arm-none-linux-gnueabi/libc/lib/*so* /root/rootfs/lib/ -rdf

使用BusyBox制作根文件系统的操作步骤相关推荐

  1. 嵌入式Linux利用busybox制作根文件系统

    本文介绍如何利用busybox制作一个最小根文件系统,系统包含ls.cd.ifconfig等基本指令,文件系统采用动态加载的方式. 1.去busybox官网下载源码   官网地址:busybox官网 ...

  2. 使用BusyBox制作根文件系统的理论分析

    以下内容源于朱有鹏嵌入式课程的学习,如有侵权,请告知删除. 一.inittab文件介绍 #first:run the system script file ::sysinit:/etc/init.d/ ...

  3. [架构之路-30]:目标系统 - 系统软件 - Linux OS根文件系统rootfs的概念、组成、制作以及用busybox制作根文件系统

    目录 前言: 第1章 什么是根文件系统 1.1 什么是文件 1.2 什么是文件系统 1.3 文件系统组织文件的方式:树形结构 1.4 统一的虚拟文件系统 1.5 物理存储介质与物理文件系统类型 1.5 ...

  4. 使用busybox制作根文件系统(rootfs)

    我们知道一个linux的启动过程,包括BIOS的加电自检POST,拷贝MBR的信息(启动BootLoader),加载内核,挂载根文件安系统这几大步,在嵌入式系统的移植方面我们也要自己动手制作内核映像, ...

  5. busybox制作根文件系统

    一.分配空间 制作64M的镜像文件,命名为myrootfs.ext3 sudo dd if=/dev/zero of=myrootfs.ext3 bs=1M count=64 用ext3格式化上一步的 ...

  6. Linux 利用busybox制作根文件系统

    busybox版本:1.17.3 官网下载路径:https://busybox.net/downloads/ 网盘下载路径:https://pan.baidu.com/s/1nvrEa73 密码:7y ...

  7. 使用Busybox制作根文件系统

    使用Busybox手工制作 Busybox本身包含了很了Linux命令,但是要编译其他程序的话需要手工下载.编译,如果它需要某些依赖库,你还需要手工下载.编译这些依赖库. 如果想做一个极简的文件系统, ...

  8. 嵌入式 详解制作根文件系统以及文件系统中init以及其他文件详解

    一.FHS(Filesystem Hierarchy Standard)标准介绍 当我们在linux下输入ls  / 的时候,见到的目录结构以及这些目录下的内容都大同小异,这是因为所有的linux发行 ...

  9. 根文件系统制作一制作根文件系统树

    完成了u-boot移植后就是内核移植然后是根文件系统制作,这次分为这几部分书写:根文件系统树.文件系统initramfs.jaffs2.ubifs 有必要了解一些存储系统和文件系统的知识 Norfla ...

最新文章

  1. (循环练习题) 五只猴子分桃子
  2. 在报文摘要算法MD5中,首先要进行明文分组与填充,其中分组时明文报文摘要按照(42)位分组。【答案】C
  3. 计算机改名后无法上网,CDEF磁盘分区无法修改名字修复方法
  4. python的GUI库PyQt5的使用
  5. PHP文件包含漏洞原理分析和利用方法
  6. JZOJ 5354. 【NOIP2017提高A组模拟9.9】导弹拦截
  7. 第一个Android项目
  8. 【Qt】Qt数据库简介
  9. Mac OS 被XCode搞到无法正常开机怎么办?
  10. 单词替换(信息学奥赛一本通-T1406)
  11. websocket php MySQL_PHP写了一个websocket服务,mysql连接实例丢失问题怎么解决?
  12. 简述隐含表法化简状态步骤
  13. 苹果Mac电脑上fn键的妙用
  14. 安消一体智能分析终端服务器
  15. SSMS 18 安装过程中出现严重错误
  16. win10 搜索本地应用没反应,Cortana显示已挂起 的解决办法
  17. win10便签常驻桌面_win10技巧分享第六篇——win10自带的备忘录便签功能
  18. 北大青鸟消防控制器组网_北大青鸟消防报警主机维修与调试
  19. 马云收购士兰微_2019中国500强民企榜单出炉!阿里第一腾讯第二
  20. 用三角函数计算两个坐标点距离

热门文章

  1. Oulipo (KMP出现次数)
  2. js控制语句练习(回顾)
  3. Django models模型
  4. Android报“android.content.res.Resources$NotFoundException: String resource ID #0x2”错误
  5. Rotate String
  6. 图论测试题(一)第一题:longest
  7. 基于java的数据结构学习——数组实现的队列和循环队列及性能对比
  8. 数据结构排序法之鸡尾酒排序法he快速排序法
  9. .NET高级代码审计(第三课)Fastjson反序列化漏洞
  10. Android性能优化-App后台优化