Linux 根文件系统的制作(busybox)
1、STEP 1:构建目录结构
创建根文件系统目录,主要包括以下目录
/dev /etc /lib /usr /var /proc /tmp /home /root /mnt /bin
/sbin /opt /sys /media
执行:
#mkdir $HOME/rootfs
#cd $HOME/rootfs
#mkdir dev etc lib usr var proc tmp home root mnt bin sbin opt sys media
2、 使用 busybox 构建/bin /sbin linuxrc:
(1)进入 busybox 目录,执行
# make defconfig //使用默认配置 busybox,大部分的命令都会被选中
# make menuconfig
Busybox Setting ----->
Build Options ----->
//选择将 busybox 进行静态编译,这样编译出来的 busybox 可以不依赖动态
库
//也可以不选,拷贝文件夹的同时也必须拷贝动态库到嵌入式系统
[*]Build BusyBox as a static binary (no shared libs)
//指定交叉编译器为,否则默认编译为 X86架构
(arm-none-linux-gnueabi-)Cross Compiler prefix
注:交叉编译器输入错误 ctrl+Backspace 删除,在 xshell 下支持复制粘贴
/编译出的 busybox 的 shell 命令解释器支持显示当前路径及主机信息
(2)/编译出的 busybox 的 shell 命令解释器支持显示当前路径及主机信息Busybox Library Tuning- >[*]Username completion[*]Fancy shell prompts[*]Query cursor position from terminal
保存退出
# make
# make install
3 构建 lib 目录:
进入 /usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/armv4t/lib 目录
将以下动态库拷贝到$HOME/rootfs/lib 下
#cp so $HOME/rootfs/lib -a
sudo cp * /home/stu/rootfs/ -arf
/usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/armv4t/usr/lib
将以下动态库拷贝到$HOME/rootfs/lib 下
#cp ./libstdc++.so.* $HOME/rootfs/lib -a
4 构建 etc 目录:
1)etc 目录下最重要的四个文件
inittab:用来作为 linuxrc 的配置脚本
init.d/rcS: inittab 启动的第一个脚本
一般用来挂载系统必需的文件系统、必要的设备连接、设置 IP 地址、启动其他脚本等
默认仅有 mount –a
fstab: 执行 mount –a 时,按照此文件挂载文件系统
profile:登陆完 shell 后自动执行此脚本,一般用来配置用户的登录环境
2)进入根文件系统 rootfs 的 etc 目录,执行如下操作:
拷贝 Busybox 目录下 examples/bootfloopy/etc/* 到当前目录下
以此为模板构建我们的根文件系统
# cp examples/bootfloppy/etc/* $HOME/rootfs/etc -r
3)修改 inittab
inittab 的作用及格式请参考其他说明
删除第三行代码:tty2::askfirst:-/bin/sh
4)修改 etc/init.d/rcS 文件
1 #! /bin/sh2 3 /bin/mount -a4 5 /bin/mkdir -p /dev/pts6 /bin/mkdir -P /dev/shm7 8 /bin/mount -t devpts devpts /dev/pts9 /bin/mount -t tmpfs tmpfs /ev/shm10 11 /bin/mkdir /var/tmp12 /bin/mkdir /var/modules13 /bin/mkdir /var/run14 /bin/mkdir /var/log15 16 17 if ! [ -d /lib/modules ] ; then18 mkdir /lib/modules19 fi20 21 if ! [ -d /lip/modules/`nuame -r` ] ; then22 23 mkdir /lib/modules/`nuame -r`24 fi25 26 /sbin/mdev -s
#5.自动在/dev 下创建设备节点
proc /proc proc defaults 0 02 ramfs /var ramfs defaults 0 03 ramfs /tmp ramfs defaults 0 04 none /sys sysfs defaults 0 05 none /dev ramfs defaults6
6)修改 profile
#1.初始化 PATH 环境变量及动态链接库路径
export PATH=PATH:/bin:/sbin:/usr/bin:/usr/sbinexportLDLIBRARYPATH=PATH:/bin:/sbin:/usr/bin:/usr/sbin export LD_LIBRARY_PATH=PATH:/bin:/sbin:/usr/bin:/usr/sbinexportLDLIBRARYPATH=LD_LIBRARY_PATH:/lib:/usr/lib
#2.初始化主机名以及当前工作路径
/bin/hostname qfedu
USER="id -un
" LOGNAME=$USER
HOSTNAME=’/bin/hostname’ PS1=’[\u@\h \W]# ’
7)用户名、密码文件构建
拷贝虚拟机上的/etc/passwd, /etc/group, /etc/shadow 到 rootfs/etc 下。
#cp /etc/passwd $HOME/rootfs/etc
#cp /etc/group $HOME/rootfs/etc
#cp /etc/shadow $HOME/ rootfs/etc
对以下三个文件修改,只保存与 root 相关的项(每个文件的第一行)
只保留 passwd 第一行,为:
root❌0:0:root:/root:/bin/sh
(而且最后改成/bin/ash,PC 使用 bash 作为默认 shell,嵌入式系统不支持 bash,
这里改为 sh 或 ash)
只保留 group 第一行,为:
root❌0:root
只保留 shadow 第一行,为:
root:111x9yv1WlB$abJ2v9jOlOc9xW/y0QwPs.:14034:0:99999:7:::
(注意这个值不一定一样,各人密码不一样,这个值也不一样,这个的密码是六个1:
111111)这个文件在本地登录或者 ftp、telnet 登录时起作用
打开/etc/inittab
把第二行:::respawn:-/bin/sh
改为::respawn:-/bin/login //登录时需要用户名、密码验证
这样,以后登陆开发板时需输入用户名密码,同虚拟机相同
登陆后可以通过 passwd 命令修改密码或通过 adduser 增加新用户
Linux 根文件系统的制作(busybox)相关推荐
- Linux根文件系统的制作
1. 根文件系统 文件系统是包括在一个磁盘(包括光盘.软盘.闪盘及其它存储设备)或分区的目录结构:一个可应用的磁盘设备可以包含一个或多个文件系统:如果您想进入一个文件系统,首先您要做的是挂载(moun ...
- Linux——根文件系统的制作(jffs2 and ubifs)
一.根文件系统简介 根文件系统首先是一种文件系统,该文件系统不仅具有普通文件系统的存储数据文件的功能,但是相对于普通的文件系统而言它还是内核启动时所挂载(mount)的第一个文件系统,系统引导启动程序 ...
- 采用busybox的嵌入式Linux根文件系统的的制作方法
在嵌入式Linux操作系统越中文件系统作为操作系统的重要组成部分,用于控制对数据文件及设备的存取,提供对文件和目录的分层组织形式,数据缓冲以及对文件存取权限的控制.根文件系统一直是Linux系统不可或 ...
- 如何使用busybox编译和生成最简linux根文件系统(rootfs)
继前几天对uboot和内核编译进行了初步了解之后,昨天开始研究如何制作rootfs根文件系统.昨晚对busybox这个工具有了初步的了解,今天继续深入研究,终于成功的制作出了一套完整可用的最简linu ...
- linux 内核移植和根文件系统的制作【转载】
原文地址:http://www.cnblogs.com/hnrainll/archive/2011/06/09/2076214.html 1.1 Linux内核基础知识 在动手进行Linux内核移植之 ...
- 制作嵌入式Linux根文件系统
文章目录 1. 根文件系统布局 2. 使用BusyBox生成二进制工具 2-1. 获取BusyBox源码 2-2. 配置BusyBox 2-2-1. 选择编译静态库 2-2-2. 选择交叉编译工具链 ...
- 嵌入式Linux根文件系统制作
嵌入式Linux根文件系统制作 一.根文件系统简介 根文件系统首先是一种文件系统,该文件系统不仅具有普通文件系统的存储数据文件的功能,但是相对于普通的文件系统而言它还是内核启动时所挂载(mount)的 ...
- Porting:linux内核的模块化、根文件系统的制作和自动挂载
1.关于内核模块($: linux #: 开发板) 模块化设计. $:' vi drivers/char/Makefile obj-m += led_drv ...
- 构建基本的嵌入式Linux根文件系统
构建基本的嵌入式Linux根文件系统 其实在去年8月份我做系统移植时就构建好了一个可以用的根文件系统,但是那时是跟着别人的<Linux全线移植文档>做的.有些东西我也不清楚,只是跟着做,做 ...
- linux根文件系统编译和移植过程
一.概念 根文件系统:系统运行所必须依赖的一些文件 (比如脚本.库.配置文件.命令-),本质就是目录和文件. 根文件系统镜像:将根文件系统按照某种格式进行 打包压缩后生成的单个文件 rootfs--- ...
最新文章
- Go 语言:The Laws of Reflection 中文版
- python3精要(10)-while,for
- Git 搭建私有仓库
- J2EE五层架构概念[转+整理]
- 我心中的核心组件(可插拔的AOP)~大话开篇及目录
- 别说普通的创业者,就是那些小有名气的创业者
- MongoDB 之聚合函数查询统计
- ThinkPad特有设计和特色软件
- 比赛打分展示系统_《评委计分系统-双屏标准版》典型赛事案例图片展示-省直机关歌咏比赛
- 《数据挖掘概念与技术》第三版 范明 孟小峰译 课后习题答案(一)
- Docker搭建Nginx集群
- 真心实用!Python 办公自动化之 PDF 的详细操作(全)
- 写给后端程序员的前端开发流程与正确姿势.
- JDK1.8 下载及安装步骤
- Python入门的学习心得
- Azure微软云(部署一台虚拟机云服务器)
- ueditor插入视频无法播放解决方法
- Java日志体系---JUL源码解析
- 电视不正常Android镜像投屏,爱奇艺乐播投屏
- 软考非计算机专业考难吗,非计算机专业考软考初级哪个更容易过