buildroot管理uboot+kernel+rootfs
鉴于自己制作根文件系统太麻烦了,所以想用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,有一个宏不匹配,暂时不记得了,这篇帖子是写的第二次了,第一次弄丢了,博客园的草稿箱里也找不到了,真是奇怪。
buildroot管理uboot+kernel+rootfs的更多相关文章
- 在Linux运行期间升级Linux系统(Uboot+kernel+Rootfs)
版本:v1.2 Crifan Li 摘要 本文主要介绍了如何在嵌入式Linux系统运行的时候,进行升级整个Linux系统,包括uboot,kernel和rootfs.以及简介Linux中的已有的通 ...
- I.MX6 U-boot Kernel backlight setting
/********************************************************************* * I.MX6 U-boot Kernel backlig ...
- buildroot--uboot&kernel&rootfs全编译工具
参考: http://www.crifan.com/files/doc/docbook/buildroot_intro/release/html/buildroot_intro.html https: ...
- Android系统启动过程-uBoot+Kernel+Android
摘要:本文是参考大量网上资源在结合自己查看源代码总结出来的,让自己同时也让大家加深对Android系统启动过程有一个更加深入的了解!再次强调,本文的大多数功劳应归功于那些原创者们,同时一些必要的参考链 ...
- Linux学习 :Uboot, Kernel, 根文件系统初步分析
1.U-Boot启动内核的过程可以分为两个阶段: 1)第一阶段的功能 硬件设备初始化 加载U-Boot第二阶段代码到RAM空间 设置好栈 跳转到第二阶段代码入口 2)第二阶段的功能 初始化本阶段使用的 ...
- tiny210V2 Uboot kernel filesystem 烧写和启动
1.sd启动 将u-boot镜像写入SD卡 将SD卡通过读卡器接上电脑(或直接插入笔记本卡槽),通过"cat /proc/partitions"找出SD卡对应的设备,我的设备节点是 ...
- am335x uboot, kernel 编译
一.设置环境变量 // 写在家目录下面的 .bashrc 里面 export KERNEL_PATH=~/aplex/kernel3.2.0 // kernel 路径 export UBOOT_PAT ...
- linux下uboot kernel操作cpu寄存器
大多数的内核里面都有会对GPIO的操作,而且内核里面对GPIO进行配置也很方便,要什么功能就配置成什么就可以了. 还有一些寄存器是内核没有配置到的,但是我们要操作怎么办,内核里面也定义了相关的接口函数 ...
- uboot kernel 博客
https://blog.csdn.net/zqixiao_09/ https://home.cnblogs.com/u/lifexy/ https://blog.csdn.net/chenliang ...
随机推荐
- mysql 关于数据库和数据表的基本操作
-- 备注: -- .每一条mysql语句后面都需要加上半角分号 -- .可以用``符号(1键旁边的那个键)将字段名称引用起来,如`Name` -- .mysql在windows下不区分大小写,在li ...
- Python filter() 函数
Python filter() 函数 描述 filter() 函数用于过滤序列,过滤掉不符合条件的元素,返回由符合条件元素组成的新列表. 该接收两个参数,第一个为函数,第二个为序列,序列的每个元素作为 ...
- if -----if else语句
if语句是用来进行判断的,其使用格式如下: 单分支 if 判断的条件: 满足条件后要执行的代码 双分支 if 条件: 满足条件执行代码 else: if条件不满足就走这段 这里必须要插入这个缩进的知识 ...
- DevExpress v18.2新版亮点——DevExtreme篇(一)
行业领先的.NET界面控件2018年第二次重大更新——DevExpress v18.2日前正式发布,本站将以连载的形式为大家介绍新版本新功能.本文将介绍了DevExtreme Complete Sub ...
- adaboost 参数选择
先看下ababoost和决策树效果对比 import numpy as np import matplotlib.pyplot as plt from sklearn.model_selection ...
- SpringCloud系列------Config-Server
关于Config-Server的那些事&踩过的坑! 一.概述 在一个相对成熟,高可用的Spring cloud项目中,都会配置一个配置中心去管理各个服务的配置文件,而往往配置文件不会放到本地配 ...
- js中级
闭包:函数在调用的时候,会形成一个私有作用域,内部的变量不会被访问, 这种保护机制叫闭包.这就意味着函数调用完毕,这个函数形成的栈内存会被销毁. 重点 函数归属谁跟他在哪调用没有关系,跟在哪定义有关. ...
- win10安装java
java安装还比较顺利,贴两篇亲测可行的教程 1.开发环境安装:https://www.cnblogs.com/shirley-0021/p/8510051.html 2.开发工具安装(Eclipse ...
- styled-components的基本使用
一.官网地址 https://www.styled-components.com/ 二.styled-components 1.styled-components 样式化组件,主要作用是它可以编写实际 ...
- web传输过程中的gzip压缩
最近在做项目的时候用到了gzip,发现它的压缩能力还是很强大的,基本能够压缩50%的文本文件大小.以前有所了解,但不够深入,现在详细了解下. 什么是gzip 在哪里使用gzip gzip对于不同类型文 ...