Orange pi PC(H3)移植 linux 总结
一、 编译前的准备
By BobLiang/QQ:106030169 on 2017-5-11
1) 安装 VMware Workstation
2) 安装 32 位 Ubuntu1604
3) 安装 VMTools
4) 安装特定版本的两种交叉编译器 arm-linux-gnueabi 和 arm-linux-gnueabihf,记住不
能 使 用 版 本 : arm-linux-gnueabihf-gcc-5
(Ubuntu/Linaro
5.4.0-6ubuntu1~16.04.4) 5.4.0 20160609
参考小撸的博客:https://0w0.pw/Mainline_U-Boot.html
新手都喜欢用最新版本的软件,如果已经了这个 5.4.0 版本改怎么办?
那就先看 apt-cache 有哪些版本,然后在指定安装非 5.4.0 版本
命令: apt-cache showpkg gcc-arm-linux-gnueabihf
安装指定版本的编译器(以下指定安装 4.8.2 版本,根据本地 apt-cache 选择不同
版本来安装)
命令:apt-get install gcc-arm-linux-gnueabihf=4:4.8.2-1
另外,这个交叉编译器 gcc-arm-linux-gnueabi 也不能用 5.4.0
命令:apt-get install gcc-arm-linux-gnueabi=4:4.7.2-1
不知道什么原因,交叉编译有时候会自动升级到最新版本。
5) 安装 jdk,安装过程网上很多,下面是使用的版本
二、 获取内核源码
git clone https://github.com/orangepi-xunlong/orangepi_h3_linux.git
这个是最新的内核源码,包含两个内核在里面,当然 u-boot 也在里面了。
里面有 u-boot 编译脚本,主线内核编译脚本和非主线内核编译脚本
三、 编译 u-boot
./build_mainline_uboot.sh pc
其他板子参考 README.md 文件,不过是英文的,幸亏我在蓝翔的时候学过一点英语。
u-boot 编译后界面:
提示没有文件:u-boot-sunxi-with-spl.bin,真是要命,u-boot-sunxi-with-spl.bin 文件才是我们
要 写 入 SD 卡 的 文 件 。 粗 略 看 了 下 u-boot 目 录 下 的 Makefile 文 件 , 发 现 在 转 换 为
u-boot-sunxi-with-spl.bin 的时候出错了。
Makefile 摘取:
……
ifneq ($(CONFIG_ARCH_SUNXI),)
u-boot-sunxi-with-spl.bin: spl/sunxi-spl.bin u-boot.img u-boot.dtb FORCE
endif
……
其 中 u-boot-sunxi-with-spl.bin 是 另 外 一 个 文 件 .u-boot-sunxi-with-spl.bin.cmd , 主 要 是 用
binman 工具转换 xx_spl.bin 文件,其中的错误也不想深究了,于是不用脚本编译了,直接下
发命令编译。
1) 配置单板类型
$(call if_changed,binman)
命令: make CROSS_COMPILE=arm-linux-gnueabihf- orangepi_pc_defconfig
主要是目的是将默认配置文件 orangepi_pc_defconfig 去覆盖.config
2) 编译 u-boot
命令:make CROSS_COMPILE=arm-linux-gnueabihf-
用 arm-linux-gnueabi 也可以,两者只是浮点方案不一样。不用纠结这个了
3) 编译结果
于是得到了我们想要的文件 u-boot-sunxi-with-spl.bin
四、 烧写 u-boot-sunxi-with-spl.bin 到 SD 启动分区
1) 烧写之前,先将 SD 卡分区(其实烧写不一定要分区,只是我认为这个是一个好习惯)
a) 查看设备: dmesg|tail -20
b) 看挂载点:df –l
c) 卸载挂载
注意一定要卸载挂载,因为在 ubuntu1604 一旦连接 U 盘它就自动给你挂载了,如
果没有卸载挂载点,那么后面的分区无法保存成功,最后导致分区失败。我刚刚开
始的时候就踩到这个坑了。
d) 分区:sudo fdisk /dev/sdb
e) 修改分区格式:启动分区 100MB 为 FAT32,另外一个分区默认 ext,记得 w 保存退出
f) 格式化分区:sudo mkfs.vfat /dev/sdb1 和 sudo mkfs.ext3 /dev/sdb2
需要稍等,有点慢。。。
2) 用 dd 命令烧写 u-boot-sunxi-with-spl.bin
3) 测试 u-boot-sunxi-with-spl.bin
把 SD 卡安装在 H3 的板子上并上电,看看串口(波特率 115200)终端打印的信息:
五、 编译内核(主线内核)