openEuler 22.09 镜像【非官方构建】

openEuler 23.03 官方支持vf2了,可从下面地址获取:

https://mirror.iscas.ac.cn/openeuler-sig-riscv/openEuler-RISC-V/preview/openEuler-23.03-V1-riscv64/Visionfive2/

==== ====

通过 VisionFive2 Software v2.6.0 的sdcard.img构建的,wifi亲测可用!直接尝鲜: 百度网盘 请输入提取码 提取码: 9p4i

登录用户:root

默认密码:openEuler12#$

另外tf卡要8G以上,否则会提示GPT table corrupted且无法修复。

附构建的大致方法:

步骤

中科院软件所的镜像网 上下载最新的openEuler riscv64 rootfs包,例如:

$ wget https://mirror.iscas.ac.cn/openeuler-sig-riscv/openEuler-RISC-V/preview/openEuler-22.09-V1-riscv64/openEuler-22.09-V1-riscv64-rootfs.tar.gz

桌面版

https://mirror.iscas.ac.cn/openeuler-sig-riscv/openEuler-RISC-V/preview/openEuler-22.09-V1-riscv64/openEuler-22.09-V1-riscv64-rootfs-xfce.tar.gz

VisionFive2的github代码库抓取新版本的sdcard.img,例如:

$ wget https://github.com/starfive-tech/VisionFive2/releases/download/VF2_v2.6.0/sdcard.img

通过fdisk -l查看tf卡的挂载点,以下假设为sdc,将sdcard.img烧录到tf卡上,例如:

# dd bs=4M if=sdcard.img of=/dev/sdc

对tf卡上的系统分区进行再格式化:

这个我用了Gparted。

最后将openEuler文件系统镜像拷贝到tf卡的系统分区,假设系统分区是sdc4:

mount /dev/sdc4 /mnt
tar -xpf Downloads/openEuler-22.09-V1-riscv64-rootfs.tar.gz -C /mnt
sync
umount /mnt

然后将tf卡插入VF2就可享用了~

补充

wifi驱动

官方v2.6.0添加了ESWIN WI-FI的驱动,而openEuler的rootfs镜像里没有。可以把sdcard.img烧录后root分区下的lib/firmware (可顺便复制下lib/modules,自己编译驱动时应该有用) 拷贝一份到电脑,在解压复制openEuler后再将它们复制进去,例如:

cp -r firmware /mnt/lib/
cp -r modules /mnt/lib/

这样wifi模块就能用了,连接wifi命令:

先通过nmcli dev wifi list找ssid,再nmcli --ask device wifi connect "$SSID"就行了。

参考

[1] chapter1-Build-openeuler-on-visionfive/readme.md · Samuel Yuan/riscv-openeuler-visionfive - Gitee.com

[2] 配置网络 - openEuler Docs

[3] fdisk - Using dd to create an image up to an specific sector - Unix & Linux Stack Exchange

5 Likes

用新的方法构建了镜像,现在2GB的tf卡也能装上了~

网盘地址不变,构造方法如下:

构造一个能装入openEuler镜像大小的新镜像,通过losetup载入,再将sdcard.img通过dd拷贝到loop里:


dd bs=1M count=1536 if=/dev/zero of=openEuler-22.09-vf2-unofficial.img

losetup -P /dev/loop1 openEuler-22.09-vf2-unofficial.img

dd bs=1M if=sdcard.img of=/dev/loop1

对新镜像的系统分区(最后一个分区)进行扩容,假设为4:

fdisk -l | grep loop1

growpart /dev/loop1 4 # extend partition 4

e2fsck -f /dev/loop1p4

resize2fs /dev/loop1p4 # extend filesystem

fsck.ext4 /dev/loop1p4

最后挂载系统分区,除firmware和modules外删除所有内容,并将openEuler文件系统包拷贝到系统分区:


mount /dev/loop1p4 /mnt

mv /mnt/lib/firmware /tmp/

mv /mnt/lib/modules /tmp/

rm -rf /mnt/*

tar -xpf Downloads/openEuler-22.09-riscv64-rootfs.tar.gz -C /mnt

sync

mv /tmp/firmware /mnt/lib/

mv /tmp/modules /mnt/lib/

umount /mnt

losetup -d /dev/loop1

然后将新镜像烧录到tf卡并插入VF2就可享用了~

另外openEuler的官方镜像地址是:https://repo.openeuler.org/openEuler-preview/RISC-V

还有多谢 GUIDE: How to mount the .img file and change the kernel 关于加载镜像的方法,扩容方法则 ctrl-C 自SDK快速参考手册

1 Like

镜像更新至 VisionFive2 Software v2.8.0,网盘地址不变。

【已解决】另外有个问题想请教大家:

在更新原有系统时,如果只用新版本的image.fit替换第三分区的starfiveu.fit,系统启动时会卡住,具体的log还没看,但我猜测是系统记录了原版本.fit文件的某种特征值,直接替换会导致加载失败。

这是不是和grub一样有类似grub-install和grub-mkconfig的命令来更新配置?

反正我看 debian 的分区。
大概率第一个分区是 SPL UBOOT ,第二分区是 UBOOT 的配置文件外加内核,第三分区就是普通的 rootfs 。

那么理论上,你只替换了第三分区,不能启动大概率是 kernel 的参数设置有问题。
这东西就是类似 x86 上 /boot 分区单独分区后启动出现问题一样的排错过程吧。

不过看分区是看不出来硬件是怎么解决第一分区和第二分区寻址的,这需要看源代码。如果是直接读取固定位置,那么也不排除你的第三分区数据影响了前两个分区的位置。

建议先用能启动的系统,把第三分区解压缩到某个目录里面,用 systemd-nspawn 的 -b 参数去 chroot 看一下系统启动有没有问题。

哦对了,既然第二分区是 UBOOT 配置文件和内核。其实你可以让第三分区在 SSD/U 盘等等设备上。修改内核命令行就行。

包括网络上的 NFS 共享也可以实现。我觉得你可以先用切换启动位置的方法来测试第三分区是否正常。

我通过官方release里的sdcard.img构建的,那个版本有四个分区,第一个2M大,第二个4M大,第三个放置了UBOOT的配置文件和内核,第四个才是rootfs

另外我比对了启动成功和卡住的日志,出现问题的部分是:

[   19.764524] vdec: loading out-of-tree module taints kernel.
[   19.768575] jpu: loading out-of-tree module taints kernel.
[   19.778797] cnm_jpu 13090000.jpu: init device.
[   19.786331] SUCCESS alloc_chrdev_region
[   19.786537] vdec 130a0000.vpu_dec: device init.
[   19.790639] Unable to handle kernel access to user memory without uaccess routines at virtual address 00000001000000cf
[   19.794736] SUCCESS alloc_chrdev_region
[   19.809323] Oops [#1]
[   19.809330] Modules linked in: vdec(O+) venc(O+) jpu(O) starfive_mailbox
[   19.809353] CPU: 3 PID: 235 Comm: systemd-udevd Tainted: G           O      5.15.0 #1
[   19.809360] Hardware name: StarFive VisionFive V2 (DT)
[e[0;32m  OK  e[[   19.809363] epc : really_probe.part.0+0x1ac/0x234
0m] Started e[0;[   19.809382]  ra : really_probe.part.0+0x1a6/0x234
1;39mDaily Clean[   19.809392] epc : ffffffff8051fff6 ra : ffffffff8051fff0 sp : ffffffd02982ba60
up of Temporary [   19.809402]  gp : ffffffff81504b40 tp : ffffffe0c1e60000 t0 : ffffffe0d579dd00
Directoriese[0m.[   19.809412]  t1 : 0000000000000400 t2 : ffffffff814d6e50 s0 : ffffffd02982ba90

[   19.809421]  s1 : ffffffe0bfed4c10 a0 : 0000000000000000 a1 : 0000000000000000
[   19.809430]  a2 : ffffffe0d579da98 a3 : 0000000000000001 a4 : 0000000000082001
[   19.809440]  a5 : 00000000ffffffff a6 : 00000000000001c0 a7 : 0000000000000038
[   19.809449]  s2 : 0000000000000000 s3 : ffffffff0158c1e0 s4 : 0000000000000033
[   19.809458]  s5 : ffffffff0158c2c0 s6 : 0000000000000002 s7 : 0000000000000020
[   19.809467]  s8 : 0000000000000cc0 s9 : 000000000000fff1 s10: 0000000000000100
[   19.809476]  s11: 0000000000000013 t3 : ffffffffffffffff t4 : 0000000000000000
[   19.809485]  t5 : ffffffff8148c228 t6 : ffffffe0d579dcca
[   19.809492] status: 0000000200000120 badaddr: 00000001000000cf cause: 000000000000000d
[   19.809503] [<ffffffff8051fff6>] really_probe.part.0+0x1ac/0x234
[   19.809511] [<ffffffff805200ee>] __driver_probe_device+0x70/0xde
[   19.809519] [<ffffffff80520188>] driver_probe_device+0x2c/0xb0
[   19.809526] [<ffffffff805206fa>] __driver_attach+0x60/0x102
[   19.809533] [<ffffffff8051de9c>] bus_for_each_dev+0x5a/0x98
[   19.809540] [<ffffffff8051f7ac>] driver_attach+0x1a/0x22
[   19.809548] [<ffffffff8051f25a>] bus_add_driver+0xe6/0x198
[   19.809554] [<ffffffff80520f36>] driver_register+0x50/0xe4
[   19.809559] [<ffffffff80521dee>] __platform_driver_register+0x1c/0x24
[   19.809567] [<ffffffff01591050>] vpu_init+0x50/0x1000 [venc]
[   19.809590] [<ffffffff800020ea>] do_one_initcall+0x3e/0x168
[   19.809597] [<ffffffff80089290>] do_init_module+0x46/0x206
[   19.809604] [<ffffffff8008af32>] load_module+0x1a3a/0x1fa2
[   19.809610] [<ffffffff8008b636>] __do_sys_finit_module+0x8a/0xb6
[   19.809615] [<ffffffff8008b686>] sys_finit_module+0x10/0x18
[   19.809621] [<ffffffff800030ea>] ret_from_syscall+0x0/0x2
[   19.809628] ---[ end trace 7644a0ebf29ac4cc ]---
[   19.811201] Unable to handle kernel access to user memory without uaccess routines at virtual address 00000001000000cf
[   20.039983] Oops [#2]
[   20.039992] Modules linked in: vdec(O+) venc(O+) jpu(O) starfive_mailbox
[   20.048976] CPU: 2 PID: 241 Comm: systemd-udevd Tainted: G      D    O      5.15.0 #1
[   20.056806] Hardware name: StarFive VisionFive V2 (DT)
[   20.056898] mailbox_test soc:mailbox_client@0: invalid resource
[   20.061948] epc : really_probe.part.0+0x1ac/0x234
[   20.067880] mailbox_test soc:mailbox_client@0: invalid resource
[   20.072564]  ra : really_probe.part.0+0x1a6/0x234
[   20.078592] mailbox_test soc:mailbox_client@0: Successfully registered
[   20.083176] epc : ffffffff8051fff6 ra : ffffffff8051fff0 sp : ffffffd02985ba40
[   20.083187] [e[0;32m  OK  e gp :0m] Reached tar ffet e[0;1;39mSysffffffem Time Sete[0m8
1504b40 tp : ffffffe0c1e63f00 t0 : ffffffe0d523e800
[   20.109516]  t1 : 0000000000000400 t2 : ffffffff814d6e50 s0 : ffffffd02985ba70
[   20.116745]  s1 : ffffffe0bfed4010 a0 : 0000000000000000 a1 : 0000000000000000
[   20.123972]  a2 : 0000000000000010 a3 : 0000000000000001 a4 : 0000000000082001
[   20.131201]  a5 : 00000000ffffffff a6 : 00000000000001c0 a7 : 0000000000000038
[   20.138432]  s2 : 0000000000000000 s3 : ffffffff015771f8 s4 : 0000000000000033
[   20.145662]  s5 : ffffffff015772c0 s6 : 0000000000000002 s7 : 0000000000000021
[   20.152891]  s8 : 0000000000000cc0 s9 : 000000000000fff1 s10: 0000000000000100
[   20.160127]  s11: 0000000000000013 t3 : ffffffffffffffff t4 : 0000000000000000
[   20.167356]  t5 : ffffffff8148c228 t6 : ffffffe0d523e7cd
[e[0;32m  OK  e[[   20.172669] status: 0000000200000120 badaddr: 00000001000000cf cause: 000000000000000d
0m] Reached targ[   20.181961] [<ffffffff8051fff6>] really_probe.part.0+0x1ac/0x234
et e[0;1;39mTime[   20.189342] [<ffffffff805200ee>] __driver_probe_device+0x70/0xde
r Unitse[0m.
[   20.196721] [<ffffffff80520188>] driver_probe_device+0x2c/0xb0
[   20.203755] [<ffffffff805206fa>] __driver_attach+0x60/0x102
[   20.209335] [<ffffffff8051de9c>] bus_for_each_dev+0x5a/0x98
[   20.214917] [<ffffffff8051f7ac>] driver_attach+0x1a/0x22
[   20.220238] [<ffffffff8051f25a>] bus_add_driver+0xe6/0x198
[   20.225732] [<ffffffff80520f36>] driver_register+0x50/0xe4
[e[0;32m  OK  e[[   20.231222] [<ffffffff80521dee>] __platform_driver_register+0x1c/0x24
0m] Listening on[   20.239045] [<ffffffff0159709c>] vpu_init+0x9c/0x1000 [vdec]
 e[0;1;39mD-Bus [   20.246077] [<ffffffff800020ea>] do_one_initcall+0x3e/0x168
System Message B[   20.253023] [<ffffffff80089290>] do_init_module+0x46/0x206
us Sockete[0m.
[   20.259882] [<ffffffff8008af32>] load_module+0x1a3a/0x1fa2
[   20.266741] [<ffffffff8008b636>] __do_sys_finit_module+0x8a/0xb6
[   20.272749] [<ffffffff8008b686>] sys_finit_module+0x10/0x18
[   20.277746] systemd[1]: sockets.target changed dead -> active
[   20.278326] [<ffffffff800030ea>] ret_from_syscall+0x0/0x2
[   20.289496] ---[ end trace 7644a0ebf29ac4cd ]---
[e[0;32m  OK  e[0m] Reached target e[0;1;39mSocket Unitse[0m.
[e[0;32m  OK  e[0m] Reached target e[0;1;39mBasic Systeme[0m.
[   20.366181] systemd-journald[201]: Successfully sent stream file descriptor to service manager.
         Starting e[0;1;39mD-Bus System Message Buse[0m...
         Starting e[0;1;39mUpdate RTC With System Clocke[0m...
[   20.425730] systemd-journald[201]: Successfully sent stream file descriptor to service manager.
[   20.537073] wlan_ecr6600u_usb-ECR6600U_V1.1.0B04P05-build:2023-01-08 10:06:20 CST
[   20.544573] [ecrnx] eswin_usb_init entry !!
[   20.548847] [ecrnx] eswin_usb_probe entry, func: 0, g_usb: (____ptrval____) !!
[   22.261667] systemd-journald[201]: Data hash table of /run/log/journal/f382801a7c854d7f8369fdb23519ee8c/system.journal has a fill level at 75.0 (33233 of 44309 items, 25165824 file size, 757 bytes per hash table item), suggesting rotation.
[   22.290130] systemd-journald[201]: /run/log/journal/f382801a7c854d7f8369fdb23519ee8c/system.journal: Journal header limits reached or header out-of-date, rotating.
[   22.304747] systemd-journald[201]: Rotating...
[   22.309304] systemd-journald[201]: Journal effective settings seal=no keyed_hash=yes compress=yes compress_threshold_bytes=512B
[   22.320950] systemd-journald[201]: Reserving 333 entries in field hash table.
[   22.331965] systemd-journald[201]: Reserving 44309 entries in data hash table.
[   22.340739] systemd-journald[201]: Vacuuming...
[   22.345439] systemd-journald[201]: Vacuuming done, freed 0B of archived journals from /run/log/journal/f382801a7c854d7f8369fdb23519ee8c.
[   22.446825] random: crng init done
[   22.450239] random: 6 urandom warning(s) missed due to ratelimiting
[   40.897238] mipi_0p9: disabling
[   41.556769] rcu: INFO: rcu_sched detected stalls on CPUs/tasks:
[   41.562695] rcu: 	3-...0: (0 ticks this GP) idle=003/1/0x4000000000000000 softirq=2762/2762 fqs=1051 
[   41.571920] 	(detected by 1, t=2103 jiffies, g=501, q=29001)
[   41.577582] Task dump for CPU 3:
[   41.580808] task:systemd-udevd   state:R  running task     stack:    0 pid:  257 ppid:   225 flags:0x00000008
[   41.590729] Call Trace:
[   41.593172] [<ffffffff809e4a6a>] __schedule+0x21c/0x518

@jiangtao9999

看起来比较可疑就这三个了

内核驱动问题?
用了 initrd 了没?试试不用 initrd 什么提示信息。

某个驱动越权读取内存?

[   20.039992] Modules linked in: vdec(O+) venc(O+) jpu(O) starfive_mailbox
[   20.048976] CPU: 2 PID: 241 Comm: systemd-udevd Tainted: G      D    O      5.15.0 #1
[   20.056806] Hardware name: StarFive VisionFive V2 (DT)
[   20.056898] mailbox_test soc:mailbox_client@0: invalid resource
[   20.061948] epc : really_probe.part.0+0x1ac/0x234
[   20.067880] mailbox_test soc:mailbox_client@0: invalid resource
[   20.072564]  ra : really_probe.part.0+0x1a6/0x234
[   20.078592] mailbox_test soc:mailbox_client@0: Successfully registered

上面已经给出 trace 信息了,但是貌似被多线程运行弄的格式乱了。后面这 2 个应该没关系。

starfive_mailbox 这个驱动按说不应该存在问题才对啊。这是 CPU 相关的核心驱动了。

@jiangtao9999

解决了,确实只是驱动问题,还需重新拷贝新版本rootfs里的/lib/firmware。多谢了