remote-android / redroid-doc

redroid (Remote-Android) is a multi-arch, GPU enabled, Android in Cloud solution. Track issues / docs here
4.03k stars 290 forks source link

Openharmony4.1系统启动Redroid时,无法启动VoldNativeService #712

Open sinall opened 1 month ago

sinall commented 1 month ago

Describe the bug 请详细描述问题(ZH_CN) RK3568开发板,使用的openharmony4.1系统,内核使用的5.10, 无论使用官网的镜像 redroid/redroid:4.0.0-latest还是自己编译出来的redroid镜像,在使用如下的命令启动镜像后,迅速重启并退出: docker run -itd --privileged -v /data/data:/data --name redroid redroid/redroid:14.0.0-latest

docker ps -a

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 855c50550f01 redroid/redroid:14.0.0-latest "/init qemu=1 androi鈥? 14 minutes ago Exited (255) 10 minutes ago redroid

make sure the required kernel modules present 确保必须的内核功能已开启(ZH_CN)

grep binder /proc/filesystems

nodev binder

grep ashmem /proc/misc

59 ashmem

Collect debug logs 收集调试日志(ZH_CN) curl -fsSL https://raw.githubusercontent.com/remote-android/redroid-doc/master/debug.sh | sudo bash -s -- [CONTAINER] omit CONTAINER if not exist any more. 如容器已退出,可忽略CONTAINER参数(ZH_CN) redroid-debug.XXigcIoc.zip dmesg.txt

Screenshots 截图(ZH_CN) If applicable, add screenshots to help explain your problem. 665afcd2-b3e6-4589-8f0f-53d2862641d6

zhouziyang commented 1 month ago

Something wrong with your binder devices. How did you run redroid (running command line etc.)?

383 [86890.554352] binder: BINDER_SET_CONTEXT_MGR already set
384 [86890.554363] binder: 14350:14350 ioctl 40046207 7fe387dde4 returned -16 
385 [86890.554384] ProcessState: Binder ioctl to become context manager failed: Device or resource busy 

...
429 [86890.730325] vold: Unable to start VoldNativeService
430 [86890.734544] init: Service 'vold' (pid 29) exited with status 1
431 [86890.734606] init: Sending signal 9 to service 'vold' (pid 29) process group...
432 [86890.735172] init: Service vold has 'reboot_on_failure' option and failed, shutting down system.
433 [86890.736234] init: Got shutdown_command 'reboot,vold-failed' Calling HandlePowerctlMessage()
sinall commented 1 month ago

@zhouziyang Command line: docker run -itd --privileged -v /data/data:/data --name redroid redroid/redroid:14.0.0-latest

另外,补充一点,我们在编译openharmony时,发现如果开启 CONFIG_ANDROID_BINDERFS=y,会导致Openharmony系统启动不起来,所以在内核的函数binder_init(kernel/linux/linux-5.10/drivers/android/binder.c)中,将分支 if (!IS_ENABLED(CONFIG_ANDROID_BINDERFS) && (strcmp(binder_devices_param, "") != 0) {} 修改为 if (strcmp(binder_devices_param, "") != 0) 这样Openharmony才能正常启动,不知道这个修改是否影响redroid的启动。