# openKylin VisionFive2 EDK2 Builder **Repository Path**: DSOE1024/openkylin-visionfive2-edk2 ## Basic Information - **Project Name**: openKylin VisionFive2 EDK2 Builder - **Description**: 自动化构建VisionFive2的openKylin EDK2镜像 - **Primary Language**: Shell - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 2 - **Forks**: 0 - **Created**: 2023-12-26 - **Last Updated**: 2025-05-01 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # openKylin RISC-V EDK2 这篇指南可以快速让openKylin vf2版本的镜像支持EDK2方式启动,感谢赛昉科技的johnchewyy提供的方法 # 说明 openKylin镜像:https://mirror.nju.edu.cn/openkylin-cdimage/1.0.1/openKylin-1.0.1-visionfive2-riscv64.img.xz (南京大学的镜像更快) ``` wget https://mirror.nju.edu.cn/openkylin-cdimage/1.0.1/openKylin-1.0.1-visionfive2-riscv64.img.xz ``` u-boot文件可以直接使用上游的 https://github.com/starfive-tech/edk2/releases 请按顺序执行脚本,将在目录下生成文件 # 镜像制作 ``` # 创建镜像并分区 dd if=/dev/zero of=openKylin-edk2-visionfive2-riscv64.img bs=1M count=10000 sudo sgdisk -g --clear --set-alignment=1 --new=1:4096:+2M: --change-name=1:'spl' --typecode=1:2e54b353-1271-4842-806f-e436d6af6985 --new=2:8192:+16M: --change-name=2:'opensbi-uboot' --typecode=2:5b193300-fc78-40cd-8002-e86c45580b47 --new=3:40960:+100M --change-name=3:'efi' --typecode=3:C12A7328-F81F-11D2-BA4B-00A0C93EC93B --new=4:245760:+9800M --change-name=4:'linux' --typecode=4:0FC63DAF-8483-4772-8E79-3D69D8477DE4 openKylin-edk2-visionfive2-riscv64.img # 查看loop的id(假设为1) sudo losetup --partscan --find --show openKylin-edk2-visionfive2-riscv64.img # 烧录u-boot和opensbi+edk2 sudo dd if=u-boot-spl.bin.normal.out of=/dev/loop1p1 status=progress sudo dd if=fw_payload.bin of=/dev/loop1p2 status=progress # 复制rootfs # 查看loop的id(假设为2) sudo losetup --partscan --find --show openKylin-edk2-visionfive2-riscv64.img sudo dd if=/dev/loop2p4 of=/dev/loop1p4 status=progress # 复制Linux,initial ramdisk以及startup.nsh sudo mkfs.fat -F 32 /dev/loop1p3 -n boot -i 3CA10482 sudo mount /dev/loop1p3 /mnt sudo mkdir /mnt2 sudo mount /dev/loop2p3 /mnt2 sudo mkdir /mnt/boot sudo cp /mnt2/initrd.img-5.15.0-starfive /mnt/boot/ sudo cp /mnt2/vmlinuz-5.15.0-starfive /mnt/boot/ sudo cp startup.nsh /mnt/ # 修改和复制设备树 sudo cp /mnt2/dtbs/starfive/jh7110-visionfive-v2.dtb ./ sudo dtc -I dtb -O dts -o jh7110-visionfive-v2.dts jh7110-visionfive-v2.dtb sudo chmod a+rw jh7110-visionfive-v2.dts # 将 `boot-hartid = <0x00000001>;` 添加到chosen节点,由于EDK2并不会插入boot-hartid,因此需要手动修改 sudo dtc -I dts -O dtb -o jh7110-visionfive-v2.dtb jh7110-visionfive-v2.dts sudo cp jh7110-visionfive-v2.dtb /mnt/boot # 复制GRUB2 mkdir /mnt3 sudo mount /dev/loop1p4 /mnt3 sudo mkdir /mnt3/boot/grub # grub.cfg是脚本生成的,但是允许修改 sudo cp grub.cfg /mnt3/boot/grub # grubriscv64.efi是脚本生成的 sudo cp grubriscv64.efi /mnt ``` 烧录镜像并测试,连接串口,从TF卡启动 串口启动到UEFI shell无需做任何操作,因为startup.nsh会自动引导grubriscv64.efi,在GRUB菜单按回车进入openKylin启动项 如果有任何问题欢迎提交issue