buildroot构建根文件系统

一、简介

Buildroot是Linux平台上一个构建嵌入式Linux系统的框架。整个Buildroot是由Makefile脚本和Kconfig配置文件构成的。本文使用buildroot为freescale imx287 开发板制作根文件系统。
参考 https://www.cnblogs.com/kele-dad/p/8231434.html

1.buildroot目录说明

.
├── arch: 目录存放CPU架构相关的配置脚本,如arm/mips/x86 ,这些CPU相关的配置,在制作工具链,编译boot和内核时很关键。
├── board:存放了一些默认开发板的配置补丁之类的
├── boot
├── CHANGES
├── Config.in
├── Config.in.legacy
├── configs: 放置開發板的一些配置參數.
├── COPYING
├── DEVELOPERS
├── dl: 存放下載的源代碼及應用軟件的壓縮包.
├── docs: 存放相關的參考文檔.
├── fs: 放各種文件系統的源代碼.
├── linux: 存放着Linux kernel的自動構建腳本.
├── Makefile
├── Makefile.legacy
├── output: 是編譯出來的輸出文件夾.
│   ├── build: 存放解壓後的各種軟件包編譯完成後的現場.
│   ├── host: 存放着製作好的編譯工具鏈,如gcc、arm-linux-gcc等工具.
│   ├── images: 存放着編譯好的uboot.bin, zImage, rootfs等鏡像文件,可燒寫到板子裏, 讓linux系統跑起來.
│   ├── staging
│   └── target: 用來製作rootfs文件系統,裏面放着Linux系統基本的目錄結構,以及編譯好的應用庫和bin可執行文件. (buildroot根據用戶配置把.ko .so .bin文件安裝到對應的目錄下去,根據用戶的配置安裝指定位置)
├── package:下面放着應用軟件的配置文件,每個應用軟件的配置文件有Config.in和soft_name.mk。
├── README
├── support
├── system:这里就是根目录的主要骨架和相关的启动初始化配置,当制作根目录时就是将此处的文件cp到output里去.然后再安装toolchain的动态库和你勾选的package的可执行文件之类的.
└── toolchain

2.buildroot工作原理

Buildroot本身提供构建流程的框架,开发者按照格式写脚本,提供必要的构建细节,配置整个系统,最后自动构建出你的系统。

  • buildroot的编译流程是先从dl/xxx.tar下解压出源码到output/build/xxx, 然后它利用本身的配置文件(如果有的话)覆盖output/build/xxx下的配置文件,在开始编译连接完成后安装到output/相应文件夹下.
  • Buildroot提供了函数框架和变量命令框架,采用它的框架编写的app_pkg.mk这种Makefile格式的自动构建脚本,将被package/pkg-generic.mk 这个核心脚本展开填充到buildroot主目录下的Makefile中去。
  • package/pkg-generic.mk中通过调用同目录下的pkg-download.mk、pkg-utils.mk文件,已经帮你自动实现了下载、解压、依赖包下载编译等一系列机械化的流程。你只要需要按照格式写Makefile脚app_pkg.mk,填充下载地址,链接依赖库的名字等一些特有的构建细节即可。

3.iMX287开发板硬件说明

1.主板外观及基本接口分布

2.硬件资源

image

二、构建步骤

1.下载buildroot

git clone git://git.busybox.net/buildroot

2.配置buildroot

查看buildroot包含的开发板配置

make list-defconfigs

选择imx28默认配置

cd buildroot
make freescale_imx28evk_defconfig

进入menuconfig逐项配置

make menuconfig

image

  • Target options(目标配置)

    • Target Architecture:目标架构,这里选择 ARM(little endian),ARM小端模式
    • Target Binary Format:二进制格式,为 ELF
    • Target Architecture Variant:架构变体为 arm920t,内核类型
    • Target ABI:应用程序二进制接口,为EABI
    • Floating point strategy:浮点数的策略,选择为 Soft float
    • ARM instruction set:arm 汇编指令集,选择 ARM
  • Build options(编译选项)

    对编译过程进行一些设置,通常用默认设置即可。

  • Toolchain(工具链)

    使用内部工具链。

    也可以手动选择Kernel Header版本和外部工具链。

    注意:实际测试发现,根文件系统与内核使用不同版本的交叉工具链编译,得到的根文件系统镜像文件也可以与内核镜像搭配运行。

  • System configuration(系统配置)

    对目标系统进行配置,包括主机名称(System hostname)、欢迎旗标(System banner)、初始化系统(Init system)、设备管理方式(/dev management)、登录方式和 Shell 等。“Run a gretty after root”需要根据硬件进行设置,必须与系统调试串口对应。 EasyARM28x 使用默认的 console 即可。

  • kernel和bootloaders配置

    内核定制裁剪以及 Bootloader 的定制,建议独立管理, Kernel 和 Bootloaders 这两项留空即可。

  • Target Packages(软件包)

    Buildroot 提供了海量软件包可选,只需在配置界面选中所需要的软件包,交叉编译后即可使用。

    Busybox是必选。

  • Filesystems images(文件系统镜像选择)

    可以设置生成的文件系统镜像类型 ,如.tar、cpio、ext2/3/4、 jffs2、 yaffs2 和 ubifs 等多种方式 。

    如果要生成ubifs,需要知道芯片逻辑擦除块大小、最小IO单元(页大小)、可用物理擦除块数量(PEB)。可以在uboot环境下,执行如下命令得知:

    > mtpart default
    > ubi part rootfs
    

3.编译buildroot

make

编译完成,在 output 目录下可以得到生成的文件系统和镜像文件

$ ls output/
build host images staging target

在images目录下有烧录镜像文件

4.完善文件系统

1)增加/dev/null 文件

Buildroot 编译后,生成的文件系统中通常没有/dev/null 文件,而系统启动通常是需要的,可以自行创建:

cd output/target/dev/
sudo mknod null c 1 3

2)增加/dev/console文件

对应于System configuration-“Run a gretty after root”选择的调试端口

cd output/target/dev/
sudo mknod console c 5 1

3)再次编译builtroot

make

三、使用根文件系统

将生成的rootfs.tar.bz2文件或rootfs.ubifs文件烧录到处理器,进入系统后即可以通过shell命令操作,已有的shell命令参考output/bin/目录下的链接文件。

开机成功进入根文件系统

1.登录

因为在System configuration中把root passwd设置为root,所以用户名和密码都是root。

2.系统信息查看

  • 查看内核版本:cat /proc/version
  • 查看内存使用:free
  • 查看磁盘使用:df -m
  • 查看CPU信息:cat /proc/cpuinfo

3.网络设置

  • 修改IP地址:ifconfig eth0 192.168.181.251

  • 设置默认网关:route add default gw 192.168.181.1

  • 设置子网掩码:ifconfig eth0 netmask 255.255.255.0

  • 设置广播地址:ifconfig eth0 broadcast 192.168.181.225

  • 修改mac地址:ifconfig eth0 hw ether 00:11:22:33:44:55

  • 设置DNS:vi /etc/resolv.conf 修改后保存 #设置好DNS才能解析域名

    nameserver 8.8.8.8 #修改成你的主DNS
    nameserver 8.8.4.4 #修改成你的备用DNS
    search localhost #你的域名
    
  • 开机自动设置网络参数:vi /etc/rc.d/init.d/start_userapp 将上述命令加入文件中

  • 关闭/开启网关:

    • fconfig eth0 down
    • ifconfig eth0 up
  • 设置动态获取ip地址:udhcpc #重启后无效

  • 外网ping测试:ping www.baidu.com

buildroot构建根文件系统相关推荐

  1. Buildroot 构建根文件系统(Jz2440)

    1. Buildroot 简介      Buildroot是Linux平台上一个构建嵌入式Linux系统的框架.整个Buildroot是由Makefile脚本和Kconfig配置文件构成的.你可以和 ...

  2. 教你用 buildroot 构建根文件系统

    如果想要构建完整的根文件系统,大家一般都是使用buildroot,它不仅包含了 busybox 的功能,而且里面还集成了各种软件,需要什么软件就选择什么软件,不需要我们去移植. 嵌入式系统三大部分:b ...

  3. 笔记:使用buildroot构建根文件系统

    文章目录 简介 构建过程 buildroot包下载 配置 Target options配置项 Build options配置项 Toolchain配置项 System configuration配置项 ...

  4. sdk开发包怎么使用_怎么使用 Buildroot 构建根文件系统?

    1. Buildroot 简介 制作根文件系统有归多种方法: ① 使用Busybox手工制作 Busybox本身包含了很了Linux命令,但是要编译其他程序的话需要手工下载.编译,如果它需要某些依赖库 ...

  5. 怎么使用 Buildroot 构建根文件系统

    1. Buildroot 简介 制作根文件系统有归多种方法: ① 使用Busybox手工制作 Busybox本身包含了很了Linux命令,但是要编译其他程序的话需要手工下载.编译,如果它需要某些依赖库 ...

  6. 使用buildroot构建根文件系统遇到问题【已解决】

    错误1: error: you should not run configure as root (setFORCE_UNSAFE_CONFIGURE=1 in environment to bypa ...

  7. 【ARM】使用Ubuntu-base构建根文件系统

    使用Buildroot构建根文件系统 介绍 资源下载 配置根文件系统 设置软件源 安装必要软件 添加新用户 设置主机名称和本机IP 设置终端串口 网络DHCP FTP服务器搭建 串口无法登录 开机启动 ...

  8. 嵌入式中利用ubuntu-base构建根文件系统

    在嵌入式环境中,我们最常用busybox.yocto或buildroot来构建根文件系统,这种情况下,当我们需要使用一些组件的时候,往往需要我们使用源码编译,移植到开发板中.那有没有像ubuntu的文 ...

  9. 通过Buildroot自制根文件系统

    前言 根文件系统是Linux内核启动之后读取的一个文件系统,并从这个文件系统中加载第一个init应用程序并启动,就是Linux上俗称的root进程.根进程 制作它的方式有很多,例如busybox.yo ...

最新文章

  1. 设计模式之单例模式实践
  2. sink xxx does not exist
  3. C#中创建圆形/按钮(使用重绘)
  4. 技术人员如何"正确"的浪费时间?
  5. Spark Master的注册机制与状态管理
  6. Python自动化部署环境
  7. WPF中的图表设计器 – 2
  8. 百度之星作为座位调整java_百度之星2006年初赛 座位调整
  9. 全攻略:大病医疗专项附加扣除,一文集全了
  10. 【转】Java学习---内存溢出的排查经历
  11. jQuery-处理元素内容、表单元素
  12. MDT2012+ADK8.0+WDS部署Windows客户端(一)部署概念和方法论
  13. 2025年全球5G室内无线市值将达5.09亿美元
  14. Python语言解析xml文件
  15. 使用Spring Session实现Spring Boot水平扩展
  16. mysql源码解读——事务管理
  17. UE4 如何导入外部插件包
  18. 怎么才能写好技术文档——这是我的全部经验
  19. 学生档案信息管理系统(Java实现)
  20. 汽车零部件:供应生产仍需持续恢复中

热门文章

  1. python3.7 如何去掉字符串\xa0/\xa0
  2. 牛津博士讲大数据和量化金融
  3. 木板切割问题(二)——动态规划
  4. 正电子计算机全身显像(pet ct),正电子发射型计算机断层显像CT (PET-CT)避 免漏诊眼睑恶性肿瘤伴全身转移一例...
  5. 计算机域名DNS设置,电脑设置和查看DNS域名服务器的技巧
  6. 外键字段未建索引引发的死锁
  7. GateWay的Filter
  8. Windows Server 2012 IPAM实战
  9. 联想台式电脑重装系统按哪个键?
  10. 25.(cesium篇)cesium军事标绘-攻击箭头采集(燕尾)