步骤一:创建根文件系统基本目录
1.在home目录下创建:mkdir rootfs,然后,

2.在usr/下面建立子目录

3.在dev/下面建立字符设备文件


4安装/etc,系统所有配置文件都在这里,注意在不同平台(x86 arm PowerPC等)这些配置文件基本都是差不多的,所以只需要拿别人的修改就可以。(这里直接把别人的配置目录做成一个包,拿过来直接解压cp到rootfs里面就可以了。)

步骤二:下载内核源码并编译
1.从https://www.kernel.org/下载自己想要编译的内核版本(我编译的是linux-2.6.29)
解压放到rootfs目录下,然后执行:
make menuconfig //按照自己的要求进行配置得到.config文件
然后对内核进行编译,执行:
make uImage ARCH=arm CROSS_COMPILE=arm-linux-
最后得到我们的镜像文件:

2.编译内核模块,执行:
make modules ARCH=arm CROSS_COMPILE=arm-linux-
在此过程,遇到的各种问题请参考:
https://blog.csdn.net/JustDoIt_201603/article/details/87556900

步骤三:busybox的编译和安装
busybox(称为嵌入式开发中的瑞士军刀)是一个工具集(例如我们常用ls,pwd命令,及vi或vim工具),对于这些常用的命令和工具,我们没有必要重新去开发,直接利用busybox进行移植即可。这里我用的是busybox-1.13.3,解压到rootfs目录下:

1.配置busybox,执行make menuconfig
提示如下错误:

意思是混合隐式规则和常规规则:弃用语法,起初以为是busybox包的问题,换了低版本也报同样的错误,百度上说可能是由于系统make工具太新(系统:Ubuntu16.04),make旧版   的一些规则已经无法兼容新版make
将原来的config %config: scripts_basic outputmakefile FORCE改为:

将原来的/ %/: prepare scripts FORCE,改为:

然后重新执行:make menuconfig,进入这个Busybox Settings --->

首先设置下面第一项为yes(*表示yes),然后设置最后一项Cross Compiler prefix(交叉编译器的前缀)的内容为arm-linux
然后进入第四项busybox的安装选项中

设置busybox安装路径前缀,这里我选择安装到rootfs目录下

然后退出保存设置。后面最好source /etc/profile一下。

2.编译busybox,执行:
make ARCH=arm CROSS_COMPILE=arm-linux-
编译完成:

3.busybox安装
安装之前我们/home/wangz/rootfs/bin/目录下都是空的,然后执行安装:

编译完成后,会发现/home/wangz/rootfs/bin/bin多了很多指令工具:

这些指令都是链接命令,连接到了busybox的bin下面去了。

4.内核模块的安装
前面的内核模块都只是编译了,还没有安装,现在来安装,执行:

make modules_install ARCH=arm INSTALL_MOD_PATH=/home/wangz/rootfs

5.到这里整个根文件系统都完成了。

linux根文件系统创建过程相关推荐

  1. linux文件系统启动流程,linux 内核启动过程以及挂载android 根文件系统的过程

    转载 作者:汕头大学-黄珠唐 时间:2009 年10 月29 日 主要介绍linux 内核启动过程以及挂载android 根文件系统的过程,以及介绍android 源代码中文件系统部分的浅析. 主要源 ...

  2. SigmaStar SSD202 openwrt 系统下ubi根文件系统挂载过程

    关于UBI介绍可以参考官方文档 http://www.linux-mtd.infradead.org/doc/ubifs.html 下面是一张简介图,大概的介绍就是UBIFS依赖kernel UBI子 ...

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

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

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

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

  5. 嵌入式软件开发之------浅析linux根文件系统挂载(九)

    Linux代码版本:linux4.4 导读:前些天拿到供应商的一块arm64开发板,需要对其新CPU进行测试评估.需要将公司自己的系统移植上去测试一些参数.在挂载公司的cpio包的时候,出现解压失败. ...

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

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

  7. 嵌入式开发之linux根文件系统移植

    目录 前言 一.创建根文件系统目录 二.添加命令与实用程序 2.1 编译和安装 busybox 2.2 拷贝busybox内的小程序 三.添加lib库文件 3.1 拷贝工具链内的动态库 3.2 拷贝工 ...

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

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

  9. linux根文件系统配置,Linux学习笔记__ Linux根文件系统详解

    Linux根文件系统详解 文件系统: rootfs:根文件系统 FHS:Linux boot:系统启动相关的文件,如内核.initrd.以及grub(bootloader) /dev: 设备文件 块 ...

最新文章

  1. 从Hadoop集群中移除一块磁盘的操作
  2. smokeping安装部署最佳实践
  3. JS的表单序列化,数组去重,判断数组是否重复等方法
  4. 计算机应用基础在线测试01,计算机应用基础在线测试(全部正确).pdf
  5. 查网站服务器ip 被k,网站被K的排查方法
  6. linux 错误处理命令,Linux运行脚本命令提示No such file or directory错误的解决办法
  7. C语言中的strncmp
  8. Java笔记-解决Cause: java.sql.SQLException: 试图在只读事务中修改数据(达梦数据库)
  9. SpaceX载人龙飞船Crew Dragon成功完成首飞返回地球!
  10. GDPR法律条款解读及应对指南(全面版)
  11. SI4463 空中唤醒教程
  12. 计算机音乐谱大全极乐净土,极乐净土maria曲谱
  13. Oracle:ORA-00054 资源正忙 -- 锁表的解决方法
  14. decimals数据格式化
  15. java查看微信付款记录怎么查_微信支付java版本之查询订单
  16. 软件开发2:代码检视
  17. 在iphone中添加日历库kal
  18. 相机系统综述 —— ISP
  19. Python爬虫爬取Twitter视频、文章、图片
  20. 关于麦克风波束成形的基本原理

热门文章

  1. HttpClient 讲解 (2) 项目封装
  2. 674 Longest Continuous Increasing Subsequence(每日一题)
  3. Minio的容量算法及实际存储空间计算公式
  4. Django 3.2.5博客开发教程:HelloWorld欢迎页面
  5. 【收藏】Vue+elementUI的this.$refs.对象名.方法名的理解
  6. linux cp命令强行覆盖复制
  7. postgresql数据表增删改:使用pgadmin和SQL的方式实现
  8. vshpere esxi6.7安装
  9. jvm内存溢出分析实践案例:javax.crypto.JceSecurity大量BouncyCastleProvider实例无法被回收
  10. Docker镜像分层和临时容器