飞腾D2000/E2000/D3000如何从头制作UBOOT引导系统镜像
1、背景介绍
目前针对飞腾D2000,E2000,D3000均采用uboot方式进行引导操作系统,采用该方法的原因是开发简单,而且启动时间比uefi快。但采用该方式后无法像uefi那种方式通过插入系统镜像u盘按常规步骤安装系统,只能采用预先把系统安装到某个载体上的方式进行处理,然后在uboot中配置启动参数直接启动,uboot启动参数配置见这里:飞腾D3000PBF和UBOOT配置说明-CSDN博客
2、系统镜像制作
首先如果板子上面是可取下的sata或者nvme,可以通过USB转接器连接一台Linux服务器,在服务器上执行操作,如果板子上面的sata或nvme无法取下来,那可以先把系统装在一个u盘里,然后通过u盘启动板子,待系统启动后再进行板上sata或nvme的系统安装。
下文以第二种复杂情况为例,描述具体过程
把u盘插到服务器中看到如下KYL开头的镜像
然后把ios挂载在对应mnt目录下,会发现这几个文件
直接执行
bash /mnt/images/harddisk_copy-hwsys.sh /dev/sdb
等待完成后,就能看到系统装到了U盘,并以及分好区了。
注:该脚本作用就是读取u盘大小,并依据大小按比例进行分区并将对应文件拷到分区内
把对应的part1分区挂载,其中part1放入对应的设备树XXXX.dtb
注:这里D2000,E2000,D3000设备树都不一样,需要飞腾提供参考设备树。
将飞腾启动uboot烧进flash
进入uboot成功进入输入pri显示如下的界面
输入 usb start 开始扫描对应的usb 设备,看到设备后就可以看到是设备0还是1,一般一个设备默认为0。
找到其中对应的load_fdt、load_initrd、load_kernel、后面的参数找对应文件所在储存的类型,如果是从u盘起的,就把0:1前面的储存设备改成usb 0:1 ,如果是nvme起的就改成对应的nvme 0:1 ,如果是sata起的就改成 scsi 后面还有诸如 0x900000000 和0x950000000 还有0x90100000,是从对应储存设备读对应的文件到内存的地址,一般不要变。
改完以后,输入以下三个命令
ext4load scsi 0:1 0x90000000 ft2004.dtbext4load scsi 0:1 0x95000000 initramfs.imgext4load scsi 0:1 0x90100000 Image
然后用booti指令进操作系统
具体指令为
booti 0x90100000 0x950000000:0x2000000 0x900000000
就可以进入对应的系统,
进入系统后,找到usb装iso的分区挂载在对应的mount目录下,具体指令是
mount /dev/sda4 /mnt
可以发现如下图所示
然后把kylinsec开头的文件拷贝到root目录media下,然后把ios挂载在对应mnt目录下
会发现这几个文件
然后直接执行 bash /mnt/images/harddisk_copy-hwsys.sh /dev/sdb,后面的设备就是把U盘的系统放入的其他盘,比如板贴的SATA,这里板贴SATA盘在linux下面对应识别的设备为sdb。
等于在板子上面继续针对SATA按照前面对U盘操作那样重新安装一遍系统。
关机重启,重新回到uboot阶段,把对应的load_fdt、load_initrd、load_kernel后面的参数改成scsi 0:1其余保持不变,然后saveenv保存对应的参数关机重启,后续就可以从sata盘引导系统了。