基于芯来科技nuclei-linux-sdk和qemu启动debian 12 bookworm

基于芯来科技nuclei-linux-sdk和qemu启动debian 12 bookworm
目前由于demosoc的硬件只有imac指令集,因此先计划在nuclei qemu上测试debian启动流程。
1、创建文件系统镜像,大小为2G,很奇怪超过2G,nuclei qemu运行会报错

dd if=/dev/zero of=debian.img bs=1M count=2048

2、将debian.img镜像挂载到循环设备,此次为/dev/loop26,具体可通过losetup -a查看

losetup -f debian.img

3、将/dev/loop26划分为两个磁盘分区,一个用于启动,存放linux镜像,dtb设备树以及启动命令,一个存放根文件系统

sfdisk --no-tell-kernel /dev/loop26 <<-__EOF__
1M,64M,0xE,*
,,,-
__EOF__

4、检查分区和执行分区格式化

partprobe /dev/loop26
mkfs.vfat -F 16 -n BOOT /dev/loop26p1
mkfs.ext4 -E nodiscard -L rootfs -U 68d82fa1-1bb5-435f-a5e3-862176586eec /dev/loop26p2

5、挂载分区

mount /dev/loop26p1 tmp-boot/
mount /dev/loop26p2 tmp-rootfs/

6、将nuclei-linux-sdk编译生成的所有boot文件拷贝到boot分区

cp nuclei-linux-sdk/work/demosoc/boot/* tmp-boot/

7、将前期构造的debian根文件系统解压缩到rootfs分区

tar xf /home/protocol/Desktop/nuclei/nuclei-linux-sdk/work/demosoc/tmp-rootfs.tar -C tmp-rootfs/

8、修改conf/boot.cmd,设定新的根文件系统,特别注意ttyNUC0和rootwait rw参数

echo 'Loading kernel'
fatload mmc 0 0xa1000000 uImage.lz4
#echo 'Loading ramdisk'    #关闭原有的ramdisk启动文件系统
#fatload mmc 0 0xa8300000 uInitrd.lz4
if test -e mmc 0 kernel.dtb ; then
    echo 'Loading dtb'
    fatload mmc 0 0xa8000000 kernel.dtb
else
    echo 'kernel.dtb not found, ignore it'
fi
echo 'Starts booting from SD'
setenv bootargs console=ttyNUC0,115200 root=/dev/mmcblk0p2 rootfstype=ext4 rootwait rw  #设定从第二个ext4分区启动根文件系统
#bootm 0xa1000000 0xa8300000 0xa8000000
bootm 0xa1000000 - 0xa8000000

10、生成新的boot.src,并进行替换

nuclei-linux-sdk/work/demosoc/u-boot/tools/mkimage -A riscv -T script -O linux -C none -a 0 -e 0 -n "bootscript" -d uboot.cmd boot.scr
cp boot.scr tmp-boot/

11、参考vivado-risc-v的mk-sd-image,修改相应权限,刷新数据

chown root:root tmp-rootfs/
chmod 755 tmp-rootfs/
sync

12、解除目录挂载

umount /dev/loop26p1
umount /dev/loop26p2
fsck -f -p -T /dev/loop26p1
fsck -f -p -T /dev/loop26p2
losetup -d /dev/loop26

13、如果此时又想操作文件系统,可采用以下命令重新挂载分区

losetup -f debian.img 
mdadm --build --level=0 --force --raid-devices=1 /dev/md1 /dev/loop26
mount /dev/md1p1 tmp-boot/

14、启动nuclei qemu

qemu-system-riscv64 -M nuclei_u,download=flashxip -smp 8 -m 4G -cpu nuclei-ux900fd,ext= -bios nuclei-linux-sdk/work/demosoc/freeloader/freeloader.elf -nographic -drive file=nuclei-linux-sdk/work/demosoc/debian.img,if=sd,format=raw

启动结果就是这样:
启动结果如上图所示

其他:
qemu的版本用的是很久以前芯来科技官网下载的可执行文件:

# qemu-system-riscv64 --version
QEMU emulator version 6.0.50 (v6.0.0-1741-g98b5099-dirty)
Copyright (c) 2003-2021 Fabrice Bellard and the QEMU Project developers
nuclei-v1.0.6
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值