Linux 利用busybox制作根文件系统
busybox版本:1.17.3
官网下载路径:https://busybox.net/downloads/
网盘下载路径:https://pan.baidu.com/s/1nvrEa73 密码:7y4r
交叉编译工具:arm-2009q3.tar.bz2
网盘下载路径:http://pan.baidu.com/s/1dE7P9rb 密码:300i
1、创建根文件系统目录
xxx@ubuntu:~$ mkdir myrootfs
xxx@ubuntu:~$ cd myrootfs/
xxx@ubuntu:~/myrootfs$ mkdir rootfs
xxx@ubuntu:~/myrootfs$ cd rootfs/
xxx@ubuntu:~/myrootfs/rootfs$ mkdir bin sbin lib etc sys dev proc root home usr mnt tmp opt var
xxx@ubuntu:~/myrootfs/rootfs$ ls
bin dev etc home lib mnt opt proc root sbin sys tmp usr var
2、拷贝busybox到myrootfs中并解压
xxx@ubuntu:~/myrootfs$ ls
busybox-1.17.3.tar.bz2 rootfs
xxx@ubuntu:~/myrootfs$ tar -xvf busybox-1.17.3.tar.bz2
3、配置交叉工具链
xxx@ubuntu:~/myrootfs$ cd busybox-1.17.3/
xxx@ubuntu:~/myrootfs/busybox-1.17.3$ vim Makefile
修改以下,保存退出:
CROSS_COMPILE ?= arm-none-linux-gnueabi-
ARCH ?= arm
4、配置menuconfig并保存
xxx@ubuntu:~/myrootfs/busybox-1.17.3$ make menuconfig
Busybox Settings --->
Build Options --->
[*] Build BusyBox as a static binary (no shared libs)
Installation Options --->
[*] Don't use /usr
5、 编译并安装
xxx@ubuntu:~/myrootfs/busybox-1.17.3$ make
xxx@ubuntu:~/myrootfs/busybox-1.17.3$ make install
6、将拷贝到制作的文件系统目录中
xxx@ubuntu:~/myrootfs/busybox-1.17.3$ cd _install/
xxx@ubuntu:~/myrootfs/busybox-1.17.3/_install$ ls
bin linuxrc sbin
xxx@ubuntu:~/myrootfs/busybox-1.17.3/_install$ cp -raf * ../../rootfs/
7、拷贝交叉编译工具链中的库,交叉工具链的位置与自己安装路径有关,详见:Linux 安装交叉编译工具链
xxx@ubuntu:~/myrootfs/busybox-1.17.3/_install$ cd ../../rootfs/
xxx@ubuntu:~/myrootfs/rootfs$ cp -raf /usr/local/arm/arm-2009q3/arm-none-linux-gnueabi/libc/lib/* lib/
xxx@ubuntu:~/myrootfs/rootfs$ du -h lib/
3.8M lib/
8、为交叉编译工具链瘦身
xxx@ubuntu:~/myrootfs/rootfs$ chmod a+w lib/*
xxx@ubuntu:~/myrootfs/rootfs$ arm-none-linux-gnueabi-strip lib/*
xxx@ubuntu:~/myrootfs/rootfs$ du -h lib/
3.0M lib/
9、参照 busybox 源码中的 busybox-1.17.3/examples/inittab 例子编写 inittab
xxx@ubuntu:~/myrootfs/rootfs$ cd etc/
xxx@ubuntu:~/myrootfs/rootfs/etc$ touch inittab
xxx@ubuntu:~/myrootfs/rootfs/etc$ vim inittab
::sysinit:/etc/init.d/rcS
::askfirst:-/bin/sh
::ctrlaltdel:/sbin/reboot
::shutdown:/sbin/swapoff -a
::shutdown:/bin/umount -a -r
::restart:/sbin/init
格式说明:
<id>:<runlevels>:<action>:<process> : 在什么时间启动什么进程
id: 进程所使用的终端名
runlevels:不用填写
<action>: Valid actions include: sysinit, respawn, askfirst, wait, once, restart, ctrlaltdel, and shutdown.\
sysinit: 系统初始化的时候,放在最前面
respawn,askfirst是一样的,如果process意外终止啦,系统会讲其重启
askfirst 会有提示Please press Enter to activate this console
wait: 该进程一定要执行完,才能执行下一个
once, 进程如果意外终止,那么不会重启
restart:每次重启时都要执行
ctrlaltdel:按组合键时执行
shutdown:关机时执行
10、创建 init.d/rcS 脚本,并添加可执行权限
xxx@ubuntu:~/myrootfs/rootfs/etc$ mkdir init.d
xxx@ubuntu:~/myrootfs/rootfs/etc$ cd init.d/
xxx@ubuntu:~/myrootfs/rootfs/etc/init.d$ touch rcS
xxx@ubuntu:~/myrootfs/rootfs/etc/init.d$ chmod a+x rcS
xxx@ubuntu:~/myrootfs/rootfs/etc/init.d$ vim rcS
#! /bin/sh
echo "-----myrootfs start-----"
# 挂载 etc/fstab 中指定的所有文件系统
/bin/mount -a
# insmod 加载驱动是,会在 /dev 下创建设备节点
/sbin/mdev -s
echo "-----myrootfs end -----"
11、创建 etc/fatab 文件
xxx@ubuntu:~/myrootfs/rootfs/etc/init.d$ cd ..
xxx@ubuntu:~/myrootfs/rootfs/etc$ touch fstab
xxx@ubuntu:~/myrootfs/rootfs/etc$ vim fstab
# <file system> <mount point> <type> <options> <dump> <pass>
proc /proc proc defaults 0 0
dev /dev tmpfs defaults 0 0
sys /sys sysfs defaults 0 0
tmp /tmp tmpfs defaults 0 0
12、创建 /etc/profile 文件,命令提示符前会添加用户名和主机
xxx@ubuntu:~/myrootfs/rootfs/etc$ touch profile
xxx@ubuntu:~/myrootfs/rootfs/etc$ vim profile
#!/bin/sh
export HOSTNAME=ubuntu
export USER=xxx
export HOME=root
export PS1="[$USER@$HOSTNAME \W]\# "
PATH=/bin:/sbin:/usr/bin:/usr/sbin
LD_LIBRARY_PATH=/lib:/usr/lib:$LD_LIBRARY_PATH
export PATH LD_LIBRARY_PATH
Linux 文件系统目录结构
Linux 利用busybox制作根文件系统的更多相关文章
- 利用busybox制作根文件系统
实际项目中可以使用Buildroot制作根文件系统 1.busybox源码下载及配置 https://busybox.net/downloads/ 1.1.修改Makefile (1) ARCH = ...
- 通过busybox制作根文件系统
通过busybox制作根文件系统可以自定义选项,在制作的根文件系统中添加需要的命令,指定生成的根文件系统到相应的目录下. 一. 根文件系统的获取方式--->官网: https://busybox ...
- 通过busybox制作根文件系统详细过程
我在之前的uboot通过NFS挂载ubuntu根文件系统中也有实现过根文件系统的制作,那只是在ubuntu官网已经做好的根文件基础上安装一些自己所需的软解而已.而使用busybox制作根文件系统可以自 ...
- zju(4)使用busybox制作根文件系统
1.实验目的 1.学习和掌握busybox相关知识及应用: 2.学会使用交叉编译器定制一个busybox: 3.利用该busybox制作一个文件系统: 4.熟悉根文件系统组织结构: 5.定制.编译ra ...
- 使用BusyBox制作根文件系统【转】
本文转载自:http://www.cnblogs.com/lidabo/p/5300180.html 1.BusyBox简介 BusyBox 是很多标准 Linux 工具的一个单个可执行实现.Busy ...
- 使用BusyBox制作根文件系统
1.BusyBox简介 BusyBox 是很多标准 Linux 工具的一个单个可执行实现.BusyBox 包含了一些简单的工具,例如 cat 和 echo,还包含了一些更大.更复杂的工具,例如 gre ...
- tiny4412 busybox制作根文件系统rootfs nfs 挂载 ubuntu 14.04
http://blog.csdn.net/liudijiang/article/details/50555429(转) 首先得要有制作好的uboot和linux内核镜像zImage,先烧录到sd卡里, ...
- 第4阶段——制作根文件系统之分析init进程(2)
本节目标: (1) 了解busybox(init进程和命令都放在busybox中) (2) 创建SI工程,分析busybox源码来知道init进程做了哪些事情 (3) 分析busybox中init进 ...
- Busybox构建根文件系统和制作Ramdisk
定制根文件系统的方法很多,最常用的是使用BusyBox来构建定制根文件系统.它集成压缩了Linux的许多工具和命令,可以使用户迅速方便地建立一套相对完整.功能丰富的文件系统,其中包括大量常用的应用 ...
随机推荐
- yii2手动添加图片处理插件Imagine
1.首先从官网下载yii2-imagine的拓展 下载地址:https://github.com/yiisoft/yii2-imagine 下载包名称:yii2-imagine-master 2.然后 ...
- linux下使用FreeRDP 连接 Windows 远程桌面
linux下使用FreeRDP 连接 Windows 远程桌面 简介 FreeRDP 是一款开源的远程桌面系统,支持多种平台, 在 ubuntu 中使用 FreeRDP 可以很方便的登录到 win ...
- ansible modules开发(二)
四 使用其他语言发开module cd /etc/ansible cat library/touch.sh #!/bin/sh args_file=$1 [ ! -f "$args_file ...
- NEU 1497 Kid and Ants 思路 难度:0
问题 I: Kid and Ants 时间限制: 1 Sec 内存限制: 128 MB提交: 42 解决: 33[提交][状态][讨论版] 题目描述 Kid likes interest ques ...
- 六.dbms_session(提供了使用PL/SQL实现ALTER SESSION命令)
1.概述 作用:提供了使用PL/SQL实现ALTER SESSION命令,SET ROLE命令和其他会话信息的方法 .2.包的组成 1).set_identifier说明:用于设置会话的客户ID号.语 ...
- .NET中使用Redis:http://www.cnblogs.com/yangecnu/p/Introduct-Redis-in-DotNET.html
.NET中使用Redis Redis是一个用的比较广泛的Key/Value的内存数据库,新浪微博.Github.StackOverflow 等大型应用中都用其作为缓存,Redis的官网为http: ...
- kmplayer加速播放视频(转)
转自微博:http://blog.sina.com.cn/shaguazhu1213 KMPlayer控制播放速度的快捷方式 (2011-11-12 10:51:56) 标签: 杂谈 分类: 编程之旅 ...
- Windows下安装tomcat
一.Tomcat下载与安装: 1.直接到官网下载Tomcat安装程序包:http://tomcat.apache.org/ 2.下载下来后是个压缩包,如:apache-tomcat-8.0.26,解压 ...
- JUnit出错,却没有显示任何报错信息【待解答】
JUnit测试代码如下: 原因分析: JUnit测试单元里,测试函数好像不能带参数? 解决办法: 发现测试函数testBookShopDaoUpdateBookStock(int isbn)里的参数i ...
- java入门学习(6)—封装,继承,多态,this,super,初始代码块
1.[封装]:将对象的状态信息隐藏,不允许直接访问,而是通过该类提供的的方法阿里实现内部信息的访问和操作. 使用到的修饰符:private,不用修饰符(default),protected,publi ...