飞腾D2000(uboot+kernel+ubuntu)
背景介绍
目前常见的有UEFI+kylin或者UEFI+Ubuntu,在这里记录下UBOOT+Kernel5.10+Ubuntu20.04。因此这里不记录不介绍X100的打包流程及配置细节包括X100用做电源管理等,如有需要后续整理。
D2000固件打包环境搭建
我这里编译系统选择的Ubuntu16.04,其它版本自行安装即可。
-
源码准备
需要的源码及打包工具版本如下(源码可咨询FAE获取最新版本):
U-Boot源码 | 打包工具 |
---|---|
d2000_u-boot_open-v1.41_202409261633.tar.gz | image_fix_d2000_v1.73.tar |
- 安装交叉编译工具链
交叉编译工具链下载地址:点击进入下载
下载好后,拷贝到自定义目录,比如"~/workspace/phytium/toolchain
",解压:tar -xvJf gcc-linaro-6.1.1-2016.08-x86_64_aarch64-linux-gnu.tar.xz
U-Boot编译
进入到U-Boot源码目录下执行:
make ARCH=arm CROSS_COMPILE=/home/lithos/workspace/phytium/toolchain/gcc-linaro-6.1.1-2016.08-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu- D2000_defconfig
make ARCH=arm CROSS_COMPILE=/home/lithos/workspace/phytium/toolchain/gcc-linaro-6.1.1-2016.08-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu- -j4
如下图所示,是我们需要的文件
配置打包
- 更新打包文件中的软连接
下面开始打包,进入到飞腾提供的打包文件根目录下。首先删除掉原先的"bl33_new.bin"文件,然后再次创建它,将其软连接到刚刚生成的u-boot.bin。
-
参数配置
执行以下命令进入配置界面:./my_scripts/fix_parameter.sh
具体的参数和配置项大家应该都很熟悉了,这里就不再进行说明。
配置好后,保存并退出。 -
生成最终BIOS
执行如下命令:./my_scripts/image-fix.sh
如图所示,这就是我们想要得到的文件。将其烧录到你的QSPI Flash中即可。看下效果:
以上工作完美结束。
内核编译
这里使用的内核版本为5.10.209
- 源码获取
安装Git工具,确保联网没问题。执行以下命令:git clone https://gitee.com/zlt_audi/phytium-kernel-5.10.git
- 编译
make ARCH=arm64 CROSS_COMPILE=/home/lithos/workspace/phytium/toolchain/gcc-linaro-6.1.1-2016.08-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu- phytium_defconfig
make ARCH=arm64 CROSS_COMPILE=/home/lithos/workspace/phytium/toolchain/gcc-linaro-6.1.1-2016.08-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu- -j4
Ubuntu文件系统制作
这里不再进行说明,请翻看我以前的文章
制作系统启动U盘
-
U盘分区
将U盘接入我们配置好的开发环境,执行以下命令:
sudo fdisk /dev/sdb
创建2个分区,第一个存放kernel Image和设备树,第二个分区存放文件系统。分区大小根据自己U盘大小来自行规划,前提是要放的下这些文件。
格式化分区:
sudo mkfs.vfat /dev/sdb1
sudo mkfs.ext4 /dev/sdb2
-
文件拷贝
内核与设备树拷贝到第一个分区
sudo mount /dev/sdb1 /mnt/mount/
sudo cp arch/arm64/boot/Image /mnt/mount/
sudo cp arch/arm64/boot/dts/phytium/d2000-lithos.dtb /mnt/mount/
sudo umount /mnt/mount
文件系统拷贝到第二个分区
sudo mount /dev/sdb2 /mnt/mount/
// ~/workspace/ubuntu/rootfs/ 是我们制作的文件系统ubuntu20
sudo cp -r ~/workspace/ubuntu/rootfs/* /mnt/
sudo umount /mnt/mount
系统启动
u盘插入设备,执行:usb start
配置环境变量:
setenv bootargs "console=ttyAMA0,115200n1 earlycon=pl011,0x28001000 loglevel=8 root=/dev/sda2 rw rootdelay=5"
setenv bootcmd "fatload usb 0:1 0x90100000 Image;fatload usb 0:1 0x90000000 d2000-lithos.dtb;booti 0x90100000 - 0x90000000"
启动:
执行:run bootcmd
以上就是在D2000+X100平台上运行uboot+kernel+ubuntu的流程,做个记录也做个分享。