02 H5 linux内核编译及启动

2019-07-12 23:26发布

 
解压缩linux内核源码包后,在内核源码目录下打开终端: //配置内核, 也就是指定使用什么架构,什么Soc, 什么板等信息. 配置文件在arch/arm64/configs目录下. make sunxi_arm64_defconfig ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- //编译内核,生成Image镜像. make Image ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- //编译内核里所用的设备树文件. make dtbs ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- 编译完成后, arch/arm64/boot/Image 和 arch/arm64/boot/dts/allwinner/sun50i-h5-nanopi-neo2.dtb就是内核编译,最终生成的文件。
用fdsik把sd卡分区,分成一个50M大小的fat分区(用于存放Image,dtb等文件), 再分出一个300M大小的ext4分区(用于作文件系统的分区).
注意: sd卡上的uboot不会受分区操作影响的. 分区完成后, 把内核编译得到的Image文件和dtb文件放入sd卡的fat分区里.
还需要把下载得到的rootfs.cpio.gz内存文件系统镜像也放入fat分区里.
以上操作完成后,把卡接入板上启动。 在uboot上设置自动读出内核, rootfs,dtb等镜像并启动: //设置uboot启动时,把Image读到内存地址0x46000000, 内存文件系统镜像读到0x47000000, dtb文件读到内存地址0x48000000上。 并用booti命令引导内核并指定内存文件系统为5M大小。 setenv bootcmd "fatload mmc 0:1 0x46000000 Image; fatload mmc 0:1 0x47000000 rootfs.cpio.gz; fatload mmc 0:1 0x48000000 sun50i-h5-nanopi-neo2.dtb; booti 0x46000000 0x47000000:0x500000 0x48000000" //保存环境变量 saveenv 设置完成后,重启uboot后就会自动读出内核等镜像并启动内核,最后会进入内存文件系统里:
BusyBox v1.22.1 (Ubuntu 1:1.22.0-15ubuntu1) built-in shell (ash)
Enter ‘help’ for a list of built-in commands. (initramfs)
//进文件系统后,就可以使用linux命令(如ls, ifconfig)进行操作