文档章节

嵌入式Linux内核+根文件系统构建工具-Buildroot 快速入手指导

FreeBlues
 FreeBlues
发布于 2016/01/03 13:08
字数 1495
阅读 232
收藏 10

嵌入式Linux内核+根文件系统构建工具-Buildroot 快速入手指导

buildroot 是一款专门用来定制嵌入式 Linux 的内核和根文件系统(rootfs) 的开源工具, 非常强大兼方便, 不过对于新手来说, 过多的配置项明显有些难度, 本文的目标就是简要介绍这款工具, 让新手迅速入门.

目标:

  • 1 新手需要了解的2个目录和1个文件
    
  • 2 熟悉该工具的基本命令 ;
    
  • 3 构建出一个内核和一个根文件系统
    

练习:

  • 1 查看针对特定开发板的典型配置文件的选项
    
  • 2 利用工具自带的配置文件生成一个 Linux 内核和根文件系统;
    

首先是获取该工具, 在 github 上, 命令如下:

git clone https://github.com/buildroot/buildroot

进入目录, 查看:

pi@rpi /opt/github/buildroot $ ls -al
total 420
drwxr-xr-x   15 root root   4096 Dec 24 21:18 .
drwxr-xr-x   73 git  git    4096 Jan  3 08:01 ..
drwxr-xr-x    2 root root   4096 Dec 24 21:15 arch
drwxr-xr-x   25 root root   4096 Dec 24 21:15 board
drwxr-xr-x   15 root root   4096 Dec 24 21:15 boot
-rw-r--r--    1 root root 146433 Dec 24 21:15 CHANGES
-rw-r--r--    1 root root  44501 Dec 24 21:16 .config
-rw-r--r--    1 root root  19111 Dec 24 21:15 Config.in
-rw-r--r--    1 root root  42879 Dec 24 21:15 Config.in.legacy
drwxr-xr-x    2 root root   4096 Dec 24 21:15 configs
-rw-r--r--    1 root root  17987 Dec 24 21:15 COPYING
-rw-r--r--    1 root root   1246 Dec 24 21:15 .defconfig
drwxr-xr-x    5 root root   4096 Dec 24 21:15 docs
drwxr-xr-x   15 root root   4096 Dec 24 21:15 fs
drwxr-xr-x    8 root root   4096 Dec 24 21:18 .git
-rw-r--r--    1 root root    125 Dec 24 21:15 .gitignore
drwxr-xr-x    2 root root   4096 Dec 24 21:15 linux
-rw-r--r--    1 root root  34899 Dec 24 21:15 Makefile
-rw-r--r--    1 root root   2432 Dec 24 21:15 Makefile.legacy
drwxr-xr-x    3 root root   4096 Dec 24 21:18 output
drwxr-xr-x 1266 root root  36864 Dec 24 21:15 package
-rw-r--r--    1 root root    972 Dec 24 21:15 README
drwxr-xr-x   11 root root   4096 Dec 24 21:15 support
drwxr-xr-x    3 root root   4096 Dec 24 21:15 system
drwxr-xr-x    5 root root   4096 Dec 24 21:15 toolchain
pi@rpi /opt/github/buildroot $


1. 新手需要了解的2个目录和1个文件

先说目录:

  • 目录1: `configs`
    

一个是 configs 目录, 存放着工具提供的一些特定系统的构建配置, 换句话说就是一些使用比较广泛的 Linux 嵌入式系统的构建配置文件, 例如, 我们熟悉的树莓派1 raspberrypi_defconfig 和2 raspberrypi2_defconfig 的构建配置文件就在其中, 我们可以看一下内容:

pi@rpi /opt/github/buildroot $ ls ./configs
altera_sockit_defconfig        calao_usb_a9g20_lpw_defconfig        minnowboard_defconfig              qemu_ppc_virtex_ml507_defconfig
armadeus_apf27_defconfig       ci20_defconfig                       minnowboard_max_defconfig          qemu_sh4_r2d_defconfig
armadeus_apf28_defconfig       cubieboard2_defconfig                mx53loco_defconfig                 qemu_sparc_ss10_defconfig
armadeus_apf51_defconfig       cubieboard_defconfig                 nitrogen6x_defconfig               qemu_x86_64_defconfig
armadeus_apf9328_defconfig     freescale_imx28evk_defconfig         olimex_imx233_olinuxino_defconfig  qemu_x86_defconfig
arm_foundationv8_defconfig     freescale_imx31_3stack_defconfig     openblocks_a6_defconfig            qemu_xtensa_lx60_defconfig
at91rm9200df_defconfig         freescale_imx6dlsabreauto_defconfig  pandaboard_defconfig               qmx6_defconfig
at91sam9260dfc_defconfig       freescale_imx6dlsabresd_defconfig    qemu_aarch64_virt_defconfig        raspberrypi2_defconfig
at91sam9260eknf_defconfig      freescale_imx6qsabreauto_defconfig   qemu_arm_nuri_defconfig            raspberrypi_defconfig
at91sam9261ek_defconfig        freescale_imx6qsabresd_defconfig     qemu_arm_versatile_defconfig       raspberrypi_dt_defconfig
at91sam9263ek_defconfig        freescale_imx6sololiteevk_defconfig  qemu_arm_vexpress_defconfig        riotboard_defconfig
at91sam9g20dfc_defconfig       freescale_mpc8315erdb_defconfig      qemu_microblazebe_mmu_defconfig    s6lx9_microboard_defconfig
at91sam9g45m10ek_defconfig     freescale_p1010rdb_pa_defconfig      qemu_microblazeel_mmu_defconfig    sheevaplug_defconfig
atmel_xplained_defconfig       freescale_p2020ds_defconfig          qemu_mips64el_malta_defconfig      telit_evk_pro3_defconfig
beaglebone_defconfig           gnublin_defconfig                    qemu_mips64_malta_defconfig        ts5x00_defconfig
calao_qil_a9260_defconfig      integrator926_defconfig              qemu_mipsel_malta_defconfig        udoo_quad_defconfig
calao_snowball_defconfig       kb9202_defconfig                     qemu_mips_malta_defconfig          wandboard_defconfig
calao_tny_a9g20_lpw_defconfig  lego_ev3_defconfig                   qemu_ppc64_pseries_defconfig       zedboard_defconfig
calao_usb_a9260_defconfig      loongson1c_smartloong_defconfig      qemu_ppc_g3beige_defconfig
calao_usb_a9263_defconfig      mini2440_defconfig                   qemu_ppc_mpc8544ds_defconfig
pi@rpi /opt/github/buildroot $


  • 目录2: `output`
    

另一个是 output 目录, 存放着你构建好之后的输出, 在 output/images/ 目录下放着构建好的内核和根文件系统, 我们可以在开始构建之前看看该目录的结构:

pi@rpi /opt/github/buildroot $ tree ./output
./output
└── build
    └── buildroot-config
        ├── conf.o
        ├── lxdialog
        │   ├── checklist.o
        │   ├── inputbox.o
        │   ├── menubox.o
        │   ├── textbox.o
        │   ├── util.o
        │   └── yesno.o
        ├── mconf
        ├── mconf.o
        ├── zconf.hash.c
        ├── zconf.lex.c
        └── zconf.tab.o

3 directories, 12 files
pi@rpi /opt/github/buildroot $


  • 文件: `.config`
    

一个文件就是 .config, 它就是构建时使用的配置文件, 举个例子, 如果我们打算使用工具自带的配置文件来构建树莓派2的内核和根文件系统, 那么首先把它从 configs 目录拷出来, 覆盖掉当前目录下的 .config 文件, 命令如下:

cp ./configs/ raspberrypi2_defconfig ./.config

讲解了简单的2个目录和1个文件, 接下来说一下基本命令

2. 熟悉该工具的基本命令

buildroot 基本的命令就是 make, 对于新手来说只需要执行2次:

  • 第1次带参数执行用来定制系统:
    

定制系统的命令为:

make menuconfig

执行后会启动一个配置菜单, 进去之后可以根据你自己的需要增加或裁剪系统功能, 然后选择保存, 所有的配置会被保存为当前目录下的 .config 文件.

执行界面就是这个样子: 执行界面

也可以通过 load 选项加载工具自带的配置文件, 看看典型配置是什么样的.

  • 第2次不带参数执行用来构建系统:
    

构建命令为:

make

会构建比较长的时间, 构建完成后可以查看刚才说过的 ./output/images/ 目录, 恰好我刚刚完成一次对龙芯智龙开源开发板的根文件系统构建, 我们可以看看:

git@debian:/opt/github/pengphai-buildroot$ ls -al ./output
总用量 28
drwxr-xr-x  6 git git 4096 8月   6 06:51 .
drwxr-xr-x 16 git git 4096 8月   6 06:51 ..
drwxr-xr-x 54 git git 4096 8月   6 07:36 build
drwxr-xr-x  5 git git 4096 8月   6 07:12 host
drwxr-xr-x  2 git git 4096 8月   6 07:36 images
lrwxrwxrwx  1 git git   81 8月   6 06:51 staging -> /opt/github/pengphai-buildroot/output/host/usr/mipsel-buildroot-linux-gnu/sysroot
drwxr-xr-x 19 git git 4096 8月   6 07:36 target
git@debian:/opt/github/pengphai-buildroot$ ls -al ./output/images
总用量 22956
drwxr-xr-x 2 git git     4096 8月   6 07:36 .
drwxr-xr-x 6 git git     4096 8月   6 06:51 ..
-rw------- 1 git git 23498112 8月   6 07:36 rootfs.yaffs2img
git@debian:/opt/github/pengphai-buildroot$

3. 构建出一个内核和一个根文件系统

命令很简单, 我们以树莓派2为例, 直接使用工具自带的配置文件, 命令如下:

pi@rpi /opt/github/buildroot $ sudo cp ./configs/raspberrypi2_defconfig ./config
pi@rpi /opt/github/buildroot $ sudo make

我是在树莓派2上执行的构建, 所以应该会有一个漫长的构建过程

===补充说明, 刚发现树莓派2的配置文件还有很多项没配置, 需要用户选择, 后续我写一个完全配置好的, 这个例子只会让新手疑惑

--结束

© 著作权归作者所有

共有 人打赏支持
FreeBlues
粉丝 98
博文 280
码字总数 493678
作品 0
其它
程序员
私信 提问
4 种用于构建嵌入式 Linux 系统的工具

了解 Yocto、Buildroot、 OpenWRT,和改造过的桌面发行版以确定哪种方式最适合你的项目。 Linux 被部署到比 Linus Torvalds 在他的宿舍里开发时所预期的更广泛的设备。令人震惊的支持了各种芯...

06%
07/06
0
0
构建嵌入式 Linux 系统的4种有效工具

导读 了解 Yocto、Buildroot、 OpenWRT,和改造过的桌面发行版以确定哪种方式最适合你的项目。 Linux 被部署到比 Linus Torvalds 在他的宿舍里开发时所预期的更广泛的设备。令人震惊的支持了...

问题终结者
07/14
0
0
BuildRoot FOR BeagleBone

BeagleBone 刚买没两天,里面配的是AngStorm 系统,也是基于Linux 内核的一种嵌入式发行版本,这里就不展开了,另有文章介绍。这里要说的是BuildRoot ,Why BuildRoot? 吸引我的首先是其对B...

Cedric_Sun
2013/01/26
0
2
从零开始构建嵌入式系统实践指南

近期花费了一段时间从零搭建一个嵌入式系统,从Uboot,Kernel,文件系统的编译到配置一步一步的实践,采坑到现在的顺理成章,经历了一个痛苦的过程,因此把搭建过程中的经验整理成了一篇详细...

程序手艺人
08/29
0
0
嵌入式linux:通过qemu模拟mini2440开发环境

1 编译安装QEMU 首先下载qemu for mini2440,直接打包下载 http://repo.or.cz/w/qemu/mini2440.git/snapshot/HEAD.tar.gz 解压后,进入源代码目录中: sudo apt-get install zlib1g-devsudo ......

zwxwill
08/06
0
0

没有更多内容

加载失败,请刷新页面

加载更多

deepin中配置robot framework环境

本文永久更新地址:https://my.oschina.net/bysu/blog/2989005 【若要到岸,请摇船:开源中国 不最醉不龟归】 1.在终端中输入pip,回车,如果提示没有该命令,则先安转pip sudo apt-get inst...

不最醉不龟归
16分钟前
1
0
OSChina 周日乱弹 —— 钱不还,我就当你人不在了

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @莱布妮子 :分享Bigleaf的单曲《小鹿》 《小鹿》- Bigleaf 手机党少年们想听歌,请使劲儿戳(这里) 周日在家做什么? 做手工呀, @poorfis...

小小编辑
今天
74
3
EOS docker开发环境

使用eos docker镜像是部署本地EOS开发环境的最轻松愉快的方法。使用官方提供的eos docker镜像,你可以快速建立一个eos开发环境,可以迅速启动开发节点和钱包服务器、创建账户、编写智能合约....

汇智网教程
今天
20
0
《唐史原来超有趣》的读后感优秀范文3700字

《唐史原来超有趣》的读后感优秀范文3700字: 作者:花若离。我今天分享的内容《唐史原来超有趣》这本书的读后感,我将这本书看了一遍之后就束之高阁了,不过里面的内容一直在在脑海中回放,...

原创小博客
今天
29
0
IC-CAD Methodology知识图谱

CAD (Computer Aided Design),计算机辅助设计,指利用计算机及其图形设备帮助设计人员进行设计工作,这个定义同样可以用来近似描述IC公司CAD工程师这个岗位的工作。 早期IC公司的CAD岗位最初...

李艳青1987
今天
33
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部