移植busybox构建最小根文件系统
Busybox:瑞士军刀,里面装有很多小命令。
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 -----> (选择生成的文件存放目录,也可以直接放在rootfs下就不用拷贝了)
//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目录:(主要有etc/inittab文件 、etc/init.d/rcs、etc/fstab)
1)进入根文件系统rootfs的etc目录,执行如下操作:
拷贝Busybox-1.16.1/examples/bootfloopy/etc/* 到当前目录下
#cp –r busybox-1.16.1/examples/bootfloopy/etc/* rootfs/etc
修改inittab,(根据它创建其他子进程)
原始文件为:
1 ::sysinit:/etc/init.d/rcS
2 ::respawn:-/bin/sh
3 tty2::askfirst:-/bin/sh
4 ::ctrlaltdel:/bin/umount -a -r
修改后为:
---(1):开机免登陆,直接打开shell(前面数字为行号)
1 ::sysinit:/etc/init.d/rcS
2 #::respawn:-/bin/sh
3 #::respawn:-/bin/login
4 console::askfirst:-/bin/sh
5 #tty2::askfirst:-/bin/sh
6 ::ctrlaltdel:/bin/umount -a -r
---(2):开机需要登陆(前面数字为行号)
1 ::sysinit:/etc/init.d/rcS
2 #::respawn:-/bin/sh
3 ::respawn:-/bin/login
4 #console::askfirst:-/bin/sh
5 #tty2::askfirst:-/bin/sh
6 ::ctrlaltdel:/bin/umount -a -r
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 osee
USER="`id -un`"
LOGNAME=$USER
HOSTNAME='/bin/hostname'
PS1='[\u@\h \W]# ' //显示主机名、当前路径等信息:
4)修改 etc/init.d/rc.S文件(添加自动执行命令)#!/bin/sh
/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
#######配置网络################################
/sbin/ifconfig lo 127.0.0.1 netmask 255.0.0.0
/sbin/ifconfig eth0 192.168.1.70
/sbin/ifconfig eth0 netmask 255.255.255.0
/sbin/route add default gw 192.168.1.1 eth0
/sbin/ifconfig eth1 192.168.1.71 netmask 255.255.255.0
/sbin/route add default gw 192.168.1.1 eth1
5)修改etc/fstab文件,增加以下文件 挂载proc tmpfs文件系统
#device mount-point type options dump fsck order
none /dev/pts devpts mode=0622 0 0
tmpfs /dev/shm tmpfs defaults 0 0
proc /proc proc defaults 0 0
STEP 4 构建lib目录:
(~/at91/x-tools/arm-zch-linux-gnueabi/arm-zch-linux-gnueabi/sysroot/lib我的只是把这个目录下的SO文件复制就可以了)
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
STEP 5 构建lmdev目录:
方法1:静态创建设备文件cat /proc/devices
mknod console c 5 1
mknod null c 1 3
mknod ttySAC0 c 204 64
mknod mtdblock0 b 31 0
方法2:使用mdev创建设备文件
确保内核设置CONFIG_SYSFS CONFIG_TMPFS
在内核启动时,自动运行mdev
修改etc/fstab来自动挂载根文件系统 修改etc/init.d/rcS加入自动运行的命令。
转载于:https://www.cnblogs.com/hcr1995/p/9610178.html
移植busybox构建最小根文件系统相关推荐
- 构建根文件系统之busybox(三)最小根文件系统
目录 busybox(三)最小根文件系统 引入 构建终端 构造inittab 配置应用程序 构建C库 制作映像文件yaffs busybox(三)最小根文件系统 引入 在busybox(一)浅析中,得 ...
- 构建最小根文件系统lfs
构建最小根文件系统linuxfromscratch 一.Archival Utilities 8.8. Xz-5.2.5 Contents of Xz Installed programs: lzca ...
- busybox的安装和配置/最小根文件系统的制作
1.了解uImage和zImage: linux内核经过编译后会生成一个elf格式的可执行程序,叫做vmlinux或vmlinuz,这个是原始的未经任何处理加工的原版内核elf文件,嵌入式系统部署时烧 ...
- 简单的busybox创建_用busybox构建一个最小根文件系统
P { margin-bottom: 0.21cm; } 用busybox构建一个最小根文件系统 15年4月4月23月23日23日日15:11:30 (一)一个最小根文件系统包括: (1)/dev/c ...
- 2.3【Linux系统移植之三】:使用BusyBox构建根文件系统(rootfs)
文章目录 一.搭建NFS服务器 二.使用BusyBox构建跟文件系统 2.1 修改顶层Makefile 2.2 busybox中文支持 2.3 配置busybox 2.4 编译busybox 2.5 ...
- 对于初学者,从工程应用角度去移植uboot、kernel、最小根文件系统
写一篇CSDN总结从工程的角度(非原理而通俗的)去讲解uboot kernel 最小根文件系统(包括busybox) NFS 这几个部分.各部分分别为一篇文章,使用超链接. 目录 前言 一.uboot ...
- 树莓派4b制作加载的FLASH文件系统并移植busybox
2021SC@SDUSC BusyBox 是一个集成了三百多个最常用Linux命令和工具的软件.BusyBox 包含了一些简单的工具,例如ls.cat和echo等等,还包含了一些更大.更复杂的工具,例 ...
- 为omap3530使用BusyBox构建linux文件系统及添加telnet服务
一.设备清单: 1.天漠出产的mini8100核心板,用的是omap3530芯片: 2.linux-2.6.37内核: 3. 1.21.1版本的Busybox: 4.10.04.3版本的ubuntu操 ...
- 【ARM】使用Busybox构建根文件系统
Busybox构建根文件系统 介绍 下载 配置busybox 配置交叉编译器 取消静态库编译 添加vi命令的支持 取消简化模块 支持mdev 中文支持 编译 完善根文件系统 创建必要文件夹 复制库 启 ...
最新文章
- IEDA与activiti不兼容等等安装错误问题的解决方案
- 线程和进程有什么区别
- IEEE conference 中出现的PDF字体嵌入的问题
- python标准库模块_Python标准库模块之heapq
- react安装_前端大牛进阶---gt;React必会教程
- 为 Analysis Services 数据库使用扩展字段属性(SQL Server 2005 联机丛书(2008 年 11 月))...
- 丹纳赫:全球实业型赋能投资标杆
- 硬盘分区 整G整数法(从1g到200g最精确的整数分区)
- isprime函数python_Python“函数”之我见
- Distribute Strategy--翻译学习
- 苹果 Apple Beta 版软件计划 相关软件地址
- 老域名转新网站的方法
- HTML学习13:div和表格布局
- Python C/S 网络编程(二)之 UDP 实现英汉词典查询小程序
- Win7 关闭启动修复功能
- windows环境下python使用ffmpeg rtsp推流
- Java - Java子类继承父类并调用接口
- 块存储,文件存储,对象存储的区别和理解
- 为什么很多程序员喜欢用 Kindle ?
- 计算机电缆设计规范,综合布线规范有哪些?