BananaPi的linux内核移植

时间:2022-01-24 16:28:48

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内核已经可以正常启动了,不过由于没有根文件系统,最终会卡死。