(一)目的

在进行嵌入式开发的时候,我们往往会先在电脑上安装交叉编译器,然后编译目标板上的代码,最后把代码下载到电路板中,嵌入式系统组成包括:BootLoader+kernel+filesystem+application,前面我们已经制作好了BootLoader,这一节我们制作一个kernel镜像

(二)工具

  • linux-3.5版本内核
  • Ubuntu 16.04
  • linux交叉编译环境(我已经安装过,没有安装的可以下载arm-linux-gcc-4.5.1-v6-vfp-20120301.tgz)

这里说明一点我们获取linux内核一般可以从linux官方获取,或者从开发板的厂商那获取,我比较推荐第二种,因为第一种还需要我们进行有关硬件的配置

(三)操作流程

1、将linux-3.5-20141114.tar拷贝到Linux系统中

2、解压linux-3.5-20141114.tar

tar -xvf linux-3.5-20141114.tar

3、进入解压后的目录

make menuconfig:打开配置界面,若无法打开需要安装库
apt install ncurses-dev


运行make menuconfig打开上面的窗口可以进行内核功能的删减
按下面的步骤修改一个地方:

System Type  --->
[ ] Support TrustZone-enabled Trusted Execution Environment   //按空格取消该模块

4、修改内核的顶层Makefile
因为最终内核运行到arm开发板,编译需要在PC端,所以需要使用到交叉编译器,在Makefile里指定交叉编译器为arm-linux-

5、拷贝Linux3.5目录下的tiny4412_linux_defconfig为默认配置文件

cp  tiny4412_linux_defconfig   .config

6、编译内核

make -j8

若出现一下错误:

Can't use 'defined(@array)' (Maybe you should just omit the defined()?) at kernel/timeconst.pl line 373.
/driver/linux-3.5/kernel/Makefile:133: recipe for target 'kernel/timeconst.h' failed
make[1]: *** [kernel/timeconst.h] Error 255
make[1]: *** 正在等待未完成的任务....

修改kernel/timeconst.pl的373行:

if (!defined(@val)) {@val = compute_values($hz);}
为
if (@val) {@val = compute_values($hz);}

7、烧写内核到SD卡

编译完成会提示:Kernel: arch/arm/boot/zImage is ready

将SD卡插入读卡器并连接到Ubuntu

cd arch/arm/boot
dd iflag=dsync oflag=dsync if=./zImage of=/dev/sdb  seek=1057

大概持续40秒

8、验证是否烧写成功
将SD卡拔出插到自己的开发板上验证,启动后在串口里会提示内核启动的流程即为成功

(二)linux内核镜像制作相关推荐

  1. Linux内核镜像文件格式与生成过程(转)

    <Linux内核镜像格式>   Linux内核有多种格式的镜像,包括vmlinux.Image.zImage.bzImage.uImage.xipImage.bootpImage等. ➤k ...

  2. Linux内核镜像格式

      版权声明:*本文章参考了<Linux内核官方文档>.未经作者允许,严禁用于商业出版**,否则追究法律责任.网络转载请注明出处,这是对原创者的起码的尊重!!!* 1 Linux内核镜像格 ...

  3. 嵌入式Linux系统镜像制作(基于SD卡)

    文章目录 目的 原理 环境准备 系统镜像制作 从现有SD卡备份 从空白文件开始制作 系统镜像使用 其它补充 总结 目的 嵌入式Linux在开发过程中对于软件方面通常是 bootloader.linux ...

  4. 制作Linux内存镜像+制作对应的volatility profile

    制作Linux内存镜像+制作对应的volatility profile 文章目录 制作Linux内存镜像+制作对应的volatility profile 制作Linux内存镜像 lmg安装 制作vol ...

  5. Linux内核镜像 —— vmlinux与xImage

    0 前言 编译Linux内核生成的镜像主要有Image.zImage.bzImage和uImage四种: Image为内核映像文件: zImage为内核的一种映像压缩文件: uImage是uboot专 ...

  6. 测试linux内核镜像,测试Petalinux BSP镜像参考例子

    测试预构建Petalinux镜像 现在,你可以尝试一个预构建参考例.这是通过petalinux-boot 工具来实现的.petalinux-boot可以在物理硬件或者QEMU上启动参考例子. 在硬件上 ...

  7. linux内核镜像的分层,Docker镜像分层的原理详解

    base镜像 base镜像有两层含义: 不依赖其他镜像,从scratch构建 其他镜像可以之为基础进行扩展 所以,base镜像一般都是各种Linux发行版本的Docker镜像,比如:Ubuntu,De ...

  8. linux内核镜像解压,解压内核镜像

    uboot 将 zimage 复制到内存之后,跳转到 zimage 处开始执行,首先执行的代码是 arch/arm/boot/compressed/head.s 文件,首先是一些涉及不同体系结构调试相 ...

  9. linux内核压缩制作bzImage

    接着上一篇<<linux内核启动过程>>继续分析setup.bin和vmlinux.bin执行过程. setup.bin OBJCOPYFLAGS_setup.bin := - ...

最新文章

  1. [maven] 使用问题及思考汇总
  2. parasoft Jtest 使用教程:创建并使用参数化测试用例(上)
  3. tf.reshape的-1的错误理解
  4. webpack-dev-server启动后,localhost:8080返回index.html的原理
  5. 圆周率里有每个人的银行卡密码和生日?混知乎的程序员果然都是神一般的存在...
  6. Android -- 图片画画板(canvas、paint、bitmap)
  7. php排序order,#ThinkPHP#视图下order排序
  8. 最小高度100%页脚保持在底部的布局方法
  9. 织梦错误mynews.lib.php on line 40,织梦错误Fatal error: Using $this when not in object context...
  10. IIS6.0架设网站常见问题
  11. 矩阵求逆 —— 初等变换法(高斯-约旦消元)
  12. 电脑需要装杀毒软件吗?两个理由看完你做决定
  13. 电脑可以上网但网络显示感叹号无Internet的解决办法
  14. 高级远程办公解决方案 ETX ,用于桌面虚拟化和远程访问图形要求苛刻的应用程序
  15. 国内十大优质黄金期货交易平台排名榜单(最新版一览)
  16. 软件智能:aaas系统AI众生的“世”和“界” 之21 整定问题空间和标定解决方案空间之1
  17. 转载: 10+公司SWE/DS offer经验
  18. 人大金仓数据库的使用心得
  19. 在kafka中,可以这么理解topic,partition,broker
  20. C#实现的基于RFID射频卡的学校智能刷卡考勤系统

热门文章

  1. 装linux服务器进去配置界面,在CentOS 8 Linux上安装和配置SuiteCRM的步骤
  2. (进阶篇)Redis6.2.0 集群 主从复制_故障解决_03
  3. 查询某一支接口,指定时间段的数据 按分钟排序
  4. 【基于XML方式】Spring整合Kafka
  5. flowable笔记 - 简单的通用流程
  6. docker-compose的介绍与安装(结合官方文档)
  7. php mysql 查询缓存_mysql 查询缓存使用详解
  8. 法拉克机器人自动怎么调_在使用钢网印刷SMT贴片红胶时全自动印刷机的参数怎么调?...
  9. C语言 do while 和 while 循环 - C语言零基础入门教程
  10. Python运算符 - Python零基础入门教程