BananaPi的linux内核移植
一、前言
本章记录在BananaPi上移植linux内核的过程,跟u-boot一样,官方源码同样完美支持BananaPi,这样移植起来就非常方便了,不需要更改一行代码,一个文件。linux内核对BananaPi板级资源通过设备树的形式进行加载,无需修改底层平台代码。只需编译设备树文件即可。
二、移植linux内核
1、下载官方linux内核源码。
wget https://mirrors.edge.kernel.org/pub/linux/kernel/v5.x/linux-5.1.8.tar.gz
2、解压linux内核源码。
tar xzvf linux-5.1.8.tar.gz
3、配置linux内核,使用官方提供的全志系列处理器默认配置。
cd linux-5.1.8/ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- sunxi_defconfig
4、编译内核镜像zImage。
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- -j4 zImage
5、编译BananaPi设备树。
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- -j4 sun7i-a20-bananapi.dtb
6、编辑boot.cmd。
cd arch/arm/boot/
vim boot.cmd setenv bootargs console=ttyS0,115200 console=tty0 disp.screen0_output_mode=EDID:1280x720p50 hdmi.audio=EDID:0 console=tty1 root=/dev/mmcblk0p2 rw rootfstype=ext4 elevator=deadline rootwait load mmc 0 0x43000000 sun7i-a20-bananapi.dtb load mmc 0 0x48000000 zImage bootz 0x48000000 - 0x43000000
7、安装u-boot工具mkimage。
sudo cp ~/bananapi/u-boot/u-boot-2018.09/tools/mkimage /usr/local/bin/
8、生成boot.scr。
mkimage -A arm -O linux -T script -C none -a 0 -e 0 -n 'Execute Boot Script' -d boot.cmd boot.scr
9、拷贝boot.scr、sun7i-a20-bananapi.dtb、zImage三个文件到SD卡中。
sudo mount /dev/sdb1 /mnt sudo cp boot.scr dts/sun7i-a20-bananapi.dtb zImage /mnt/
sudo umount /mnt
三、结束
至此linux内核已经可以正常启动了,不过由于没有根文件系统,最终会卡死。