buildroot构建根文件系统
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构建根文件系统相关推荐
- Buildroot 构建根文件系统(Jz2440)
1. Buildroot 简介 Buildroot是Linux平台上一个构建嵌入式Linux系统的框架.整个Buildroot是由Makefile脚本和Kconfig配置文件构成的.你可以和 ...
- 教你用 buildroot 构建根文件系统
如果想要构建完整的根文件系统,大家一般都是使用buildroot,它不仅包含了 busybox 的功能,而且里面还集成了各种软件,需要什么软件就选择什么软件,不需要我们去移植. 嵌入式系统三大部分:b ...
- 笔记:使用buildroot构建根文件系统
文章目录 简介 构建过程 buildroot包下载 配置 Target options配置项 Build options配置项 Toolchain配置项 System configuration配置项 ...
- sdk开发包怎么使用_怎么使用 Buildroot 构建根文件系统?
1. Buildroot 简介 制作根文件系统有归多种方法: ① 使用Busybox手工制作 Busybox本身包含了很了Linux命令,但是要编译其他程序的话需要手工下载.编译,如果它需要某些依赖库 ...
- 怎么使用 Buildroot 构建根文件系统
1. Buildroot 简介 制作根文件系统有归多种方法: ① 使用Busybox手工制作 Busybox本身包含了很了Linux命令,但是要编译其他程序的话需要手工下载.编译,如果它需要某些依赖库 ...
- 使用buildroot构建根文件系统遇到问题【已解决】
错误1: error: you should not run configure as root (setFORCE_UNSAFE_CONFIGURE=1 in environment to bypa ...
- 【ARM】使用Ubuntu-base构建根文件系统
使用Buildroot构建根文件系统 介绍 资源下载 配置根文件系统 设置软件源 安装必要软件 添加新用户 设置主机名称和本机IP 设置终端串口 网络DHCP FTP服务器搭建 串口无法登录 开机启动 ...
- 嵌入式中利用ubuntu-base构建根文件系统
在嵌入式环境中,我们最常用busybox.yocto或buildroot来构建根文件系统,这种情况下,当我们需要使用一些组件的时候,往往需要我们使用源码编译,移植到开发板中.那有没有像ubuntu的文 ...
- 通过Buildroot自制根文件系统
前言 根文件系统是Linux内核启动之后读取的一个文件系统,并从这个文件系统中加载第一个init应用程序并启动,就是Linux上俗称的root进程.根进程 制作它的方式有很多,例如busybox.yo ...
最新文章
- 设计模式之单例模式实践
- sink xxx does not exist
- C#中创建圆形/按钮(使用重绘)
- 技术人员如何"正确"的浪费时间?
- Spark Master的注册机制与状态管理
- Python自动化部署环境
- WPF中的图表设计器 – 2
- 百度之星作为座位调整java_百度之星2006年初赛 座位调整
- 全攻略:大病医疗专项附加扣除,一文集全了
- 【转】Java学习---内存溢出的排查经历
- jQuery-处理元素内容、表单元素
- MDT2012+ADK8.0+WDS部署Windows客户端(一)部署概念和方法论
- 2025年全球5G室内无线市值将达5.09亿美元
- Python语言解析xml文件
- 使用Spring Session实现Spring Boot水平扩展
- mysql源码解读——事务管理
- UE4 如何导入外部插件包
- 怎么才能写好技术文档——这是我的全部经验
- 学生档案信息管理系统(Java实现)
- 汽车零部件:供应生产仍需持续恢复中
热门文章
- python3.7 如何去掉字符串\xa0/\xa0
- 牛津博士讲大数据和量化金融
- 木板切割问题(二)——动态规划
- 正电子计算机全身显像(pet ct),正电子发射型计算机断层显像CT (PET-CT)避 免漏诊眼睑恶性肿瘤伴全身转移一例...
- 计算机域名DNS设置,电脑设置和查看DNS域名服务器的技巧
- 外键字段未建索引引发的死锁
- GateWay的Filter
- Windows Server 2012 IPAM实战
- 联想台式电脑重装系统按哪个键?
- 25.(cesium篇)cesium军事标绘-攻击箭头采集(燕尾)