BusyBox是一个复合了大量简易版Linux工具的程序,嵌入式系统中使用它可以快速建立一个相对简易的根文件系统。

1.下载busybox

官网 www.busybox.net

目前(2015.8.8)的最新稳定版为1.23.2

2.编译busybox

编译busybox前,请安装好交叉工具链,比如我这里是omapl138的工具链,安装位置/opt/arm-linux-gcc/omapl138/bin/,因为编译器前缀和另外一个编译器的相同,每次使用前设置环境变量

PATH=$PATH:/opt/arm-linux-gcc/omapl138/bin/

cd ~/buildspace

tar xf ~/Downloads/busybox-1.23.2.tar.bz2

cd  busybox-1.23.2

make menuconfig

make

make install

menuconfig时,

Busybox Settings  --->

Build Options  --->

()  Cross Compiler prefix          填入交叉工具链的前缀,这里是arm-none-linux-gnueab-

Installation Options("make install" behavior) ->

What kind of applet links to install (as soft-links)

(./_install) BusyBox installation prefix     安装路径,我喜欢用这个默认值

其他选项一般默认就够用。

3.构建根文件系统目录

以root用户创建根目录,拷贝busybox文件,创建几个目录

sudo -s

mkdir /home/rootfs

cd /home/rootfs

cp -r ~/biuldspace/busybox-1.23.2/_install/* .

mkdir dev etc lib mnt opt var tmp proc sys root

创建两个基本设备文件

mknod dev/console c 5 1

mknod dev/null c 1 3

创建/linuxrc的初始化配置文件/etc/inittab

该文件中指定linuxrc初始化完成后运行/etc/init.d.rcS脚本。然后在ttyS2运行一个shell,该shell不需要登陆。

::sysinit:/etc/init.d/rcS

::ctrlaltdel:/sbin/reboot

::shutdown:/sbin/swapoff -a

::shutdown:/bin/umount -a -r

::restart:/sbin/init

ttyS2::respawn:-/bin/sh

/etc/init.d/rcS的内容。在rcS文件中,必须使用绝对路径,因为环境变量还没有初始化......

mount -a                      # 挂载在/etc/fstab中定义的所有挂载点

echo /sbin/mdev > /proc/sys/kernel/hotplug  # 设置热插拔事件处理程序为mdev

mdev -s                       #设备节点维护程序mdev初始化

mkdir /dev/pts                   #为telnetd创建pts目录

mount -t devpts devpts /dev/pts          #挂载pts目录

/bin/hostname -F /etc/hostname          # 设置主机名。/etc/hostname 的内容为主机名字符串

mkdir /var/run                    #ifup需要该目录

/sbin/ifup -a                    #根据/etc/network/interface设置网卡

/usr/sbin/telnetd &                #运行telnetd

#后台运行你的程序

/etc/fstab的内容

tmpfs /dev tmpfs  defaults 0 0

proc /proc proc defaults 0 0

sysfs /sys sysfs defaults 0 0

tmpfs /var tmpfs defaults 0 0

tmpfs /tmp tmpfs defaults 0 0

创建ifup需要的文件夹

cd /home/rootfs/etc/

mkdir network

cd  network

mkdir if-down.d  if-post-down.d  if-pre-up.d  if-up.d

/etc/network/interfaces 的内容

auto lo

iface lo inet loopback

auto eth0

iface eth0 inet static

address 192.168.0.5

netmask 255.255.255.0

gateway 192.168.0.1

/etc/passwd 的内容

root::0:0:root:/root:/bin/sh

/etc/profile 的内容

PS1='\u@\h:\w \$ '            #设置终端提示符

PATH=$PATH:/usr/local/bin        #设置搜索路径

export TERM=vt102             #termcap的环境变量,gdb -tui需要

export TERMINFO=/usr/share/terminfo

拷贝动态库

cd /opt/arm-linux-gcc/omap_4.3.3/arm-none-linux-gnueabi/libc

cp lib/* /home/rootfs/lib/

cp usr/lib/libstdc++.* /home/rootfs/lib/

制作ubi镜像文件

if [ -e ubifs.img ]; then rm ubifs.img; fi

if [ -e ubi.img ]; then rm ubi.img; fi

rootfs=/home/rootfs

mkfs.ubifs -v -r ${rootfs} -m 2048 -e 126976 -c 3717 -o ubifs.img -F

ubinize -v -o ubi.img -O 2048 -m 2048 -p 128KiB -s 512 ubinize.cfg

rm ubifs.img

其中,mkfs.ubifs需要加-F参数,否则ubi文件系统很可能在启动一次后就坏掉。-F参数的意思是在第一次启动时清空空闲区域。

ubinize.cfg的内容

[rootfs]

mode=ubi

image=ubifs.img

vol_id=0

vol_type=dynamic

vol_name=rootfs

vol_flags=autoresize

mkfs.ubifs是创建单个卷(类似逻辑分区)的镜像,ubinize是创建一个可以包含多个卷的镜像(类似扩展分区)。ubinize.cfg中,[]内为卷的名字。

linux busybox路径,BusyBox构建根文件系统相关推荐

  1. 2.3【Linux系统移植之三】:使用BusyBox构建根文件系统(rootfs)

    文章目录 一.搭建NFS服务器 二.使用BusyBox构建跟文件系统 2.1 修改顶层Makefile 2.2 busybox中文支持 2.3 配置busybox 2.4 编译busybox 2.5 ...

  2. 【ARM】使用Busybox构建根文件系统

    Busybox构建根文件系统 介绍 下载 配置busybox 配置交叉编译器 取消静态库编译 添加vi命令的支持 取消简化模块 支持mdev 中文支持 编译 完善根文件系统 创建必要文件夹 复制库 启 ...

  3. Linux之系统移植与根文件系统构建

    Linux之系统移植与根文件系统构建 1.Uboot 1. 什么是Uboot: 一个裸机程序 就是一个bootloader用于启动Linux或其他系统 最主要的工作就是初始化DDR.因为Linux是运 ...

  4. 教你用 buildroot 构建根文件系统

    如果想要构建完整的根文件系统,大家一般都是使用buildroot,它不仅包含了 busybox 的功能,而且里面还集成了各种软件,需要什么软件就选择什么软件,不需要我们去移植. 嵌入式系统三大部分:b ...

  5. Buildroot 构建根文件系统(Jz2440)

    1. Buildroot 简介      Buildroot是Linux平台上一个构建嵌入式Linux系统的框架.整个Buildroot是由Makefile脚本和Kconfig配置文件构成的.你可以和 ...

  6. 野火i.MX6ULL Pro开发板构建根文件系统

    眼瞅着2020年马上就要到头了,承诺给大家的Linux移植三部曲还差最后一篇,这个拖延癌晚期恐怕今年是治不好了,不到最后的DL绝不妥协-- (这句话是年前写的,写了个开头就疫情了,封城,电脑丢在了公司 ...

  7. 笔记:使用buildroot构建根文件系统

    文章目录 简介 构建过程 buildroot包下载 配置 Target options配置项 Build options配置项 Toolchain配置项 System configuration配置项 ...

  8. 构建根文件系统(一)

    接着前边内核移植的文章,记录根文件系统的构建. 这里要用到强大的busybox,我选择的版本是busybox-1.18.5.tar.bz2 ,1.17的也可以:之所以选择这个版本是因为基于现在的交叉编 ...

  9. buildroot构建根文件系统

    buildroot构建根文件系统 一.简介 Buildroot是Linux平台上一个构建嵌入式Linux系统的框架.整个Buildroot是由Makefile脚本和Kconfig配置文件构成的.本文使 ...

  10. 从零开始构建根文件系统

    以下内容源于网络资源的学习与整理,如有侵权请告知删除. 参考博客 Uboot和系统移植(19)------- 根文件系统构建过程详解_big__C的博客-CSDN博客 一.总结 (1)本节在前面的理论 ...

最新文章

  1. 《Objective-c》Foundation框架 -(字符串:NSString和NSMutableString)
  2. R语言ggplot2可视化(facet图)使得第一个子图的坐标轴范围一致
  3. 软件Release版本异常捕获程序(BugReport)
  4. 洛谷P2158仪仗队(数学,观察找规律,欧拉函数)
  5. 轉Excel的一種簡單方法
  6. 用java设计节拍器_具有高速的Java节拍器
  7. bootstrap signin将邮件改成用户名_了解电子邮件传递背后的流程
  8. java怎么实现微博评论_关于微博评论功能的设计与思考
  9. 转:著名的100个管理定律点评9 - 成也细节,败也细节略
  10. 人像抠图——基于深度学习一键去除视频背景
  11. js实现图片无缝滚动特效
  12. 【Linux】系统管理命令
  13. Python编程入门教程(以在线评测平台为载体)
  14. Linux是如何避免内存碎片的
  15. YGG SEA 投资 5 万美元,购买 ARPG 游戏《变形机甲》中的 NFT 资产
  16. 从服务器分发性能,高性能P2P流媒体内容分发服务器的设计与实现
  17. bbpress 添加 featured image
  18. 从零开始搭建K8S--搭建K8S Ingress
  19. 中医门诊电子病历xml文档数据读入数据库实验流程演示
  20. 计算机电路计算公式,计算器电路,computer circuits,音标,读音,翻译,英文例句,英语词典...

热门文章

  1. 派遣和二分_与毕业生有关的就业概念:派遣、二分、待分与改派
  2. C++获取系统图标方法
  3. c_d是java 合法标识么,下面哪个不是Java合法标识符?A.()_number()B.()sum()C.()2Java()D.()$abc...
  4. 2019数据分析师必备资源(想成为数据分析师的点进来看看吧,小白也能看得懂嗷)
  5. android selector大小,使用xml写一个关于textSize的selector
  6. python中pylint使用方法(pylint代码检查)
  7. 基于Dubbo分布式超市进销存管理
  8. 笔记整理(我想睡懒觉,想熬夜打游戏,不想上课呜呜呜)
  9. fifaol4服务器位置,fifaonline4 不花钱能不能玩?给新手解答一下,考虑清楚在入坑。...
  10. mutations, payload