BananaPi的u-boot移植
一、前言
本篇介绍如何移植u-boot给BananaPi,u-boot是用于启动linux内核的bootloader。负责搬运linux内核代码到内存,并传递参数启动内核。u-boot工作原理不做过多描述,自行百度。由于官方u-boot对BananaPi硬件支持相当不错,故本次移植是在不修改官方u-boot任何文件的条件下进行的,以免我粗鄙的手玷污了这神圣的代码。
二、编译u-boot源码
1、下载官方u-boot源码。
wget ftp://ftp.denx.de/pub/u-boot/u-boot-2018.09.tar.bz2
2、解压u-boot源码。
tar xjvf u-boot-2018.09.tar.bz2
3、安装make。
sudo apt install make
4、安装gcc。
sudo apt install gcc
5、安装bison。
sudo apt install bison
6、安装flex。
sudo apt install flex
7、安装swig。
sudo apt install swig
8、安装python-dev。
sudo apt install python-dev
9、配置u-boot,使用官方默认配置。
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- bananapi_m1_plus_defconfig
10、编译u-boot。
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- -j4 all
三、烧写u-boot到SD卡。
1、给SD卡分区,尽量使用8GB以上的大容量卡,后面安装ubuntu根文件系统需要。给内核文件分8M空间,其余空间留给根文件系统。
sudo fdisk /dev/sdb d n p 1 2048 +8M n p 回车 回车 t 1 b t 2 83 w
2、格式化分区。
sudo mkfs.fat /dev/sdb1
sudo mkfs.ext4 /dev/sdb2
3、烧写u-boot到SD卡中。
sudo dd if=u-boot-sunxi-with-spl.bin of=/dev/sdb bs=1024 seek=8
四、结束
取出SD卡,插在BananaPi板子的SD卡位置,接上串口或HDMI显示屏,重新上电即可看到u-boot启动信息,由于没有内核镜像,最终会卡死,属于正常现象。至此u-boot移植已经完成了,下一步移植linux内核。