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/sbinexportLDL​IBRARYP​ATH=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)相关推荐

  1. Linux根文件系统的制作

    1. 根文件系统 文件系统是包括在一个磁盘(包括光盘.软盘.闪盘及其它存储设备)或分区的目录结构:一个可应用的磁盘设备可以包含一个或多个文件系统:如果您想进入一个文件系统,首先您要做的是挂载(moun ...

  2. Linux——根文件系统的制作(jffs2 and ubifs)

    一.根文件系统简介 根文件系统首先是一种文件系统,该文件系统不仅具有普通文件系统的存储数据文件的功能,但是相对于普通的文件系统而言它还是内核启动时所挂载(mount)的第一个文件系统,系统引导启动程序 ...

  3. 采用busybox的嵌入式Linux根文件系统的的制作方法

    在嵌入式Linux操作系统越中文件系统作为操作系统的重要组成部分,用于控制对数据文件及设备的存取,提供对文件和目录的分层组织形式,数据缓冲以及对文件存取权限的控制.根文件系统一直是Linux系统不可或 ...

  4. 如何使用busybox编译和生成最简linux根文件系统(rootfs)

    继前几天对uboot和内核编译进行了初步了解之后,昨天开始研究如何制作rootfs根文件系统.昨晚对busybox这个工具有了初步的了解,今天继续深入研究,终于成功的制作出了一套完整可用的最简linu ...

  5. linux 内核移植和根文件系统的制作【转载】

    原文地址:http://www.cnblogs.com/hnrainll/archive/2011/06/09/2076214.html 1.1 Linux内核基础知识 在动手进行Linux内核移植之 ...

  6. 制作嵌入式Linux根文件系统

    文章目录 1. 根文件系统布局 2. 使用BusyBox生成二进制工具 2-1. 获取BusyBox源码 2-2. 配置BusyBox 2-2-1. 选择编译静态库 2-2-2. 选择交叉编译工具链 ...

  7. 嵌入式Linux根文件系统制作

    嵌入式Linux根文件系统制作 一.根文件系统简介 根文件系统首先是一种文件系统,该文件系统不仅具有普通文件系统的存储数据文件的功能,但是相对于普通的文件系统而言它还是内核启动时所挂载(mount)的 ...

  8. Porting:linux内核的模块化、根文件系统的制作和自动挂载

    1.关于内核模块($: linux   #: 开发板)      模块化设计. $:' vi drivers/char/Makefile             obj-m    += led_drv ...

  9. 构建基本的嵌入式Linux根文件系统

    构建基本的嵌入式Linux根文件系统 其实在去年8月份我做系统移植时就构建好了一个可以用的根文件系统,但是那时是跟着别人的<Linux全线移植文档>做的.有些东西我也不清楚,只是跟着做,做 ...

  10. linux根文件系统编译和移植过程

    一.概念 根文件系统:系统运行所必须依赖的一些文件 (比如脚本.库.配置文件.命令-),本质就是目录和文件. 根文件系统镜像:将根文件系统按照某种格式进行 打包压缩后生成的单个文件 rootfs--- ...

最新文章

  1. Go 语言:The Laws of Reflection 中文版
  2. python3精要(10)-while,for
  3. Git 搭建私有仓库
  4. J2EE五层架构概念[转+整理]
  5. 我心中的核心组件(可插拔的AOP)~大话开篇及目录
  6. 别说普通的创业者,就是那些小有名气的创业者
  7. MongoDB 之聚合函数查询统计
  8. ThinkPad特有设计和特色软件
  9. 比赛打分展示系统_《评委计分系统-双屏标准版》典型赛事案例图片展示-省直机关歌咏比赛
  10. 《数据挖掘概念与技术》第三版 范明 孟小峰译 课后习题答案(一)
  11. Docker搭建Nginx集群
  12. 真心实用!Python 办公自动化之 PDF 的详细操作(全)
  13. 写给后端程序员的前端开发流程与正确姿势.
  14. JDK1.8 下载及安装步骤
  15. Python入门的学习心得
  16. Azure微软云(部署一台虚拟机云服务器)
  17. ueditor插入视频无法播放解决方法
  18. Java日志体系---JUL源码解析
  19. 电视不正常Android镜像投屏,爱奇艺乐播投屏
  20. 软考非计算机专业考难吗,非计算机专业考软考初级哪个更容易过

热门文章

  1. java在退出前释放资源_【java】手动释放资源问题
  2. Android studio 简易流式布局
  3. 和的区别(与) 和 ||和|的区别(或)
  4. OLTP和OLAP有何区别?
  5. 作为一名31岁的软件测试员,工作3年,月薪不到2W,担心被应届生取代
  6. stm32+DS18B20编程教学
  7. Wifi热点java_Wifi热点实现文件传输
  8. 为知笔记导入html,为知笔记导入印象笔记
  9. mac更新后Git无法使用的问题
  10. 基于ZYNQ wifi方案实现与测试