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)终端打印的信息: 
 
 
五、  编译内核(主线内核)