悟空派WuKongPi/香橙派orangepi zero全志H3折腾记录(②kernel移植)

发布时间 2023-06-22 14:35:06作者: 大神与小汪

接上一节,这节开始移植内核。

 

首先获取一下内核源码,这里仍然使用香橙派的源码

git clone https://github.com/orangepi-xunlong/linux-orangepi.git

 

进入kernel根目录并切换到orangepi zero使用的分支

git checkout remotes/origin/orange-pi-5.4

 

然后安装编译内核可能所需要的一些库

sudo apt install build-essential lzop libncurses5-dev libssl-dev flex bison

 

指定运行平台和编译器

ARCH        ?= arm
CROSS_COMPILE    ?= arm-linux-gnueabihf-

 

直接配置内核

make sunxi_defconfig

 

编译内核和设备树,核多可以-j8或-j16,编译速度更快

make zImage -j4
make sun8i-h2-plus-orangepi-zero.dtb -j4

 

将提前格式化过的TF卡插到Ubuntu电脑上,然后安装个gparted软件,用于给TF卡分区

sudo apt install gparted

 

第一个分区为512MB的FAT32格式,用于放内核镜像和设备树镜像

 

第二个为TF卡剩余空间大小ext4格式的分区,用于放置根文件系统

 

然后点击提交并应用

 

然后将编译出来的内核和设备树复制到TF卡第一个分区

sudo mount /dev/sdb1 /mnt
sudo cp ./arch/arm/boot/zImage /mnt
sudo cp ./arch/arm/boot/dts/sun8i-h2-plus-orangepi-zero.dtb /mnt

 

这里我上节编译的uboot的bootcmd参数,读取设备树的名字不是sun8i-h2-plus-orangepi-zero.dtb,需要修改一下

cd /mnt
sudo mv sun8i-h2-plus-orangepi-zero.dtb wukongpi-h3.dtb

 

然后卸载文件系统,拔下卡即可测试

cd /
sudo umount /mnt

 

连接好串口后给板子上电,发现内核能够启动

 

但内核最终停下了,原因是没有挂载成功根文件系统,最后陷入反复重启的循环

 

根文件系统的制作与硬件关系不是特别大,对于全志H3这种A7芯片,在其他A7芯片上能跑的文件系统理论上在H3上也能跑,这里直接拿一个之前制作的32位ubuntu_base,解压到TF卡第二个分区

sudo mount /dev/sdb2 /mnt
sudo cp rootfs.tar.bz2 /mnt
sync
cd /mnt
sudo tar xvf rootfs.tar.bz2
sync
cd /
sudo umount /mnt

 

将TF卡插到板子上后再上电就可以看到文件系统也挂载成功了