鉴于自己制作根文件系统太麻烦了,所以想用buildroot管理uboot,kernel,另外还可以自动生产rootfs,于是花了两天研究了下buildroot的框架和使用,在自己的2440开发板上也跑起来了,故整理成文档,以便自己将来忘记的时候能参考下:

源码下载,我下载的是2018.02.3版本,官方下载地址:http://buildroot.org/downloads/

由于我是玩的JZ2440的板子,故我就以这个板子作为蓝本说明:

1.cd到buildroot根目录下。

2.首先查看当前buildroot支持哪些单板:

   a.去configs/目录下直接查看。

   b.在根目录下执行make list-defconfigs。

3. 由于我的板子是比较老的s3c2440的板子,于是只好我自己创建了,执行make menuconfig,一项一项的去设置:

    a.Target options:

     

    b.Build options:

    暂时保持默认即可。

    Toolchain:   

           Toolchain type                                         -------->  External toolchain                  #因为我使用自己安装的toolchain

           Toolchain                                                 -------->  Custom toolchain                  #客户定制的工具链

           Toolchain origin                                       -------->  Pre-installed toolchain           #事先安装的工具链   

           Toolchain path                                         -------->  ****/toolschain/4.4.3/              #填上自己工具链的绝对路径即可,注意这里只是到bin的上一级目录即可,比如我举例的,知道4.4.3目录   

           Toolchain prefix                                        --------> $(ARCH)-linux                        #工具链的前缀,一般就是arm-linux

           External toolchain gcc version                 --------> 4.4.x                                        #gcc版本,跟实际保持一致即可

           External toolchain kernel headers series --------> 4.15.x                                      #不清楚这个是干嘛的,但我选择跟将使用的kernel版本一致,我的kernel版本是4.15.1,这里后面编译的时候会报错,后面再说明。

           External toolchain C library                      --------> glibc/eglibc                              #似乎一般都是用这个库

   c.System configuration:

           System hostname                                    --------> smdk2440                               #随便设置一个名称,不重要

           System banner                                         --------> welcome to smdk2440            #设置一个欢迎词,当挂在上根文件系统之后就会打印这个字符串

           [*]Enable root login with password           -------->                                                 #开启密码,这样在登录linux的时候就会出现询问密码的界面

           Root password                                         -------->                                                 #设置一个密码

   d.Kernel:

           Kernel version                                          --------> Custom Git repository              #我的代码是在github上,所以我选择了这个

           URL of custom repository                        -------->                                                  #填上github上的地址,这里有点说明,如果是开发阶段,肯定不希望每次修改都往girhub上推,那么这里就可以填上自己本地git仓库的绝对地址。

           Custom repository version                       -------->                                                  #填上需要克隆的版本,就是用git log|less看到的那个哈希值,这样buildroot就会去克隆相应的linux版本,我猜测可以直接写成master也可以,这样不需要每次都是人为的修改                                                                                                                                              版本号,保证每次拉下来的都是最新的,这个还有待确认。

           Kernel configuration                                 --------> Using a custom (def)config file  #kernel需要一个config文件,这里就是选择使用defconfig,这样下一个选择路径的选项就会出现

           Configuration file path                              --------> $(TOPDIR)/board/arm/smdk2440/smdk2440_linux_defconfig)   #填上自己将使用的config文件,这个路径是自己创建的,保持buildroot规范

                                                                                                                                                                                               在linux下使用s3c2410_defconfig直接拷贝过来修改名字,如果后期linux的config还需要改动,那么就要将新的拷贝到这个目录下。

   e.Filesystem images:

           [*] jffs2 root filesystem                              -------->                                                  #我先使用jffs2吧,使用yaffs2编译的时候报错了,我不知道怎么修改。

   f.Bootloaders:

     跟kernel类似,不再重复介绍。

4. 经过上述操作就会在根目录下生产一个.config文件,然后make,这样buildroot就会根据相应的设置去编译uboot,kernel,以及自动制作rootfs。

   经过漫长的下载,编译,最后生成的文件位于:output/images/下。

5.遇到的问题就是那个linux header跟linux不相符,因为Toolchain-> kernel headers series选的是4.15.x,而我的工具链是4.4.3,有一个宏不匹配,暂时不记得了,这篇帖子是写的第二次了,第一次弄丢了,博客园的草稿箱里也找不到了,真是奇怪。   

 

©著作权归作者所有:来自51CTO博客作者wx607823dfcf6a9的原创作品,如需转载,请注明出处,否则将追究法律责任

更多相关文章

  1. [jaeger] 二、客户端使用 (Java版本)
  2. 【Oracle健康检查脚本加量不加价】对Oracle 10g、11g和12c版本分
  3. 【DB笔试面试851】在Oracle中,造成“ORA-28040: No matching ...
  4. 【高可用】Oracle高可用培训(RAC+DG+OGG)--包括11g、12c、18c、19c
  5. Oracle 18c - 配置只读 OracleHome / DBCA / Patching / Upgrade
  6. Python2.x与3.x版本有哪些主要的区别?
  7. 关于Java的那些事
  8. Linux环境安装Python3.6.x
  9. 互联网架构设计之Redis篇-【Redis Windows版本安装过程】

随机推荐

  1. 无法从Android中的Asset文件夹复制数据库
  2. Android中复杂Json数据的解析
  3. Android BroadcastReceiver之开机监听
  4. 自定义Button形状(圆形、椭圆)
  5. [RxJava学习]observeOn源码分析
  6. Android欢迎页面自动跳转和触摸进入首页
  7. 比achartengine更加强大的Android图表控
  8. Android查看应用的最大可用内存及其使用
  9. 安卓漫漫路之碎片Fragment不同包下的区别
  10. android使用存储在assets文件夹中的Linux