使用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
使用BusyBox制作Linux根文件系统的更多相关文章
- 使用BusyBox制作linux根文件系统(CramFS+mdev)
转:http://www.360doc.com/content/10/0428/11/496343_25245348.shtml 操作系统:Ubuntu9.04 内核版本:linux-2.6.24.7 ...
- 制作linux根文件系统
转载地址:http://wenku.baidu.com/view/2cb1b4707fd5360cba1adb14.html 2011十一月 24 转 嵌入式根文件系统制作 (3985) (0) 转自 ...
- linux根文件系统制作
在嵌入式中移植的内核下载到开发板上,是没有办法真正的启动Linux操作系统的,会出现无法加载文件系统的错误. 那么根文件系统在系统启动中到底是什么时候挂载的呢?先将/dev/ram0挂载,而后执行/l ...
- linux根文件系统 /etc/resolv.conf 文件详解
Linux根文件系统/etc/resolv.conf文件,它是DNS客户机配置文件,用于设置DNS服务器的IP地址及DNS域名,还包含了主机的域名搜索顺序.该文件是由域名解析器(resolver,以恶 ...
- linux根文件系统制作之busybox编译和系统构建【转】
转自:http://blog.chinaunix.net/uid-29401328-id-5019660.html 介绍完相关文件后我们开始构建文件系统,涉及到的文件等到具体用到的时候再讲. 一.编译 ...
- 使用BusyBox制作嵌入式Linux根文件系统
STEP 1:构建目录结构 创建根文件系统目录,主要包括以下目录/dev /etc /lib /usr /var /proc /tmp /home /root /mnt /bin /sbin ...
- linux根文件系统制作,busybox启动流程分析
分析 busybox-1.1.6 启动流程,并 制作一个小的根文件系统 源码百度云链接:https://pan.baidu.com/s/1tJhwctqj4VB4IpuKCA9m1g 提取码 :l10 ...
- Linux根文件系统的制作
转载:http://www.cnblogs.com/hnrainll/archive/2011/06/09/2076655.html 1. 根文件系统 文件系统是包括在一个磁盘(包括光盘.软盘.闪盘及 ...
- Linux 根文件系统制作
1.创建根文件目录 mkdir rootfs(名字是随便取的) 2.创建子目录 cd rootfs mkdir bin dev etc lib proc sbin sys usr mnt tmp va ...
随机推荐
- MDI-多文档窗体
1.IsMdicontainer属性设置是否为多文档窗体 this.IsMdiContainer = true; 2.MdiParent属性设置为父窗体 Frm_Child frm = new Frm ...
- IOS平台汉字转拼音方案
iOS/Mac OS X 汉字转拼音 网络流行的汉字转拼音方案是带一个拼音码表,速度快.其实Core Foundation也提供了一种方案,而且还带声调! NSMutableString *ms = ...
- EXTJS 4.2 资料 Grid嵌套
如图: var ParentContCateId = 0; var start = 0; var limit = 20; DistributionPointForm = function () { E ...
- 【BZOJ 1013】 [JSOI2008]球形空间产生器sphere
Description 有一个球形空间产生器能够在n维空间中产生一个坚硬的球体.现在,你被困在了这个n维球体中,你只知道球面上n+1个点的坐标,你需要以最快的速度确定这个n维球体的球心坐标,以便于摧毁 ...
- 微软职位内部推荐-This Job is no longer available.
微软近期Open的职位: 如果你想试试这个职位,请跟我联系,我是微软的员工,可以做内部推荐.发你的中英文简历到我的邮箱:Nicholas.lu.mail(at)gmail.com
- 5.3:从bean的实例中获取对象
5.3 从bean的实例中获取对象 在getBean方法中,getObjectForBeanInstance是个高频率使用的方法,无论是从缓存中获得bean还是根据不同的scope策略加载bean. ...
- c#保留小数点后两位
double d = 23423.24234234d; Response.Write(d.ToString("0.00"));
- [转载]EasyUI Pagination 分页的两种做法
EasyUI 的 datagrid 支持服务器端分页,但是官方的资料比较少,以下总结了两种 datagrid 的服务器端分页机制,可根据情况具体使用. 一:使用 datagrid 默认机制 后台: p ...
- sublime 配置g++
资料来源: http://blog.csdn.net/leonsc/article/details/5853614 http://www.cnblogs.com/zhenglichina/archiv ...
- Jenkins任务启动的后台进程被自动kill
在Jenkins的使用中,遇到过的一个场景是:在web代码更改之后,能自动的部署到测试服务器,我们写了run.sh脚本来重启服务,在使用Jenkins的任务自动跑这个脚本后发现,服务没有起来.开始以为 ...