关于一加平板2(天玑9400+)和一加13T(骁龙8E)的AVF踩坑 #1
Replies: 4 comments 7 replies
|
仓库里设置网络的脚本是从AOSP的一个beta分支拿来的(后面谷歌也删掉了这个脚本),好像有些过时了。现在可以试试酷安的一篇教程,也不太稳定:https://www.coolapk.com/feed/66660385 而且OPPO系在Android 16砍掉了Linux终端App,即使Root了也不补全:https://www.coolapk.com/feed/69209897 之前看了看AVF的源代码,有很多关键的原生库用命令都调用不了,所以配置文件的network目前在Shell环境下基本就是摆设。 |
|
我又调整了一下参数,把共享文件夹搞定了: crosvm run \
--disable-sandbox \
--no-balloon \
--protected-vm-without-firmware \
--swiotlb 64 \
--params 'root=/dev/vda' \
--mem 8192 \
--cpus 4 \
--gpu backend=virglrenderer \
--shared-dir /storage/emulated:emulated:type=fs \
--net tap-name=crosvm_tap \
--initrd /data/local/tmp/initrd.img \
--rwdisk /data/local/tmp/root_part \
--disk /data/local/tmp/kernel_extras_part \
/data/local/tmp/vmlinuzvm里每次开机需要执行(第一次执行要建目录) mount -t virtiofs emulated /mnt/shared然后宿主机侧创建网卡的这个脚本,宿主机重启完要重新执行一次才行。 我还在折腾GPU加速和桌面环境,要是真的能全部搞定可以弄个开机脚本,甚至写个APP管理VM,这样就不用依赖Google那个Linux终端了 |
|
只能说这玩意离能用都差得很远,动不动就死机,只能重启,甚至还有开机到一半dmesg都卡住,只能杀crosvm进程的。。 然后每次宿主机开机还要跑这个脚本,关键是偶尔还会在切wifi之类的时候断网,在VM里ping外网, ip route add 192.168.1.0/24 dev crosvm_tap table wlan0才能让VM上网,GPT老师的说法是Android作为宿主机,在IP规则这块不稳定,这个脚本不太合适,但是我压力了它几轮,最后也没给出真正能用的脚本来。 准备把平板卖了,想想也是,这玩意要是没有坑,国内厂商早就当卖点拿出来卖了,不至于藏着掖着,甚至直接把GUI入口砍掉,还要我一点点啃manual去找用法。 然后我又用一加13T+ColorOS 16.0.301试了一下(8e的soc)。 8e这边,可以用系统自带的crosvm程序,但是必须用https://github.com/polygraphene/gunyah-on-sd-guide 这个release的内核才能启动,如果直接用压缩包里解压出来的内核启动,会直接让手机死机重启; 死前跑码大概在这: 手机上 用他的内核的话,initrd和kernel_extra_part都不需要了,然后不能用 --rwdisk 来挂载可读写文件系统,最后用的命令是: crosvm run \
--disable-sandbox \
--no-balloon \
--protected-vm-without-firmware \
--swiotlb 64 \
--params "root=/dev/vda init=/lib/systemd/systemd" \
--mem 8192 \
--cpus 4 \
--gpu backend=2d\
--shared-dir /storage/emulated:emulated:type=fs \
--net tap-name=crosvm_tap \
--block path=/data/local/tmp/root_part,root=true \
/data/local/tmp/kernel但是高通的虚拟机又会经常崩掉 盲猜是因为内存不够了,毕竟是手机,日常跑了一堆APP的。。 |
|
那这么看来还是我的项目支持度更高啊🥺。目前lxc有jni的api,APP管理器 |


Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
2025-12-25结论和一些误区的澄清
AVF基本处于不可用的状态,看到这儿的赶紧跑!
设备必须Root,否则你连创建网卡的权限都没有,跑起来也是残废,更不好说GPU加速之类的了;
Pixel和AOSP自带的【Linux终端】应用,如果被OEM砍了(目前看到的情报是O系砍了,红米留着),没必要尝试去补;这个应用会尝试启动一个非保护虚拟机(non-protected vm),然后高通不支持这个模式的虚拟机,很多人就以为高通的CPU没法运行虚拟机;实际上crosvm支持高通和联发科的虚拟机管理器,这点可以翻crosvm的文档查阅得知;而且VM是否受保护对VM的运行其实不重要,只影响宿主机能否直接读取虚拟机内存+镜像是不是经过签名,在 8e、9400+的设备上你完全可以手动用crosvm来启动 不带固件的受保护的虚拟机 ,在8gen2和gen3则必须启动 带固件的受保护的虚拟机 ,但可以过掉pvmfw的检验,总之就是可以绕过【Linux终端】应用;
但是,AVF在你手上的设备,有哪些CLI程序、App能用,怎么用,这个领域几乎无文档(可以认为只有crosvm命令的manual有价值),而且也没什么人研究;OEM给你提供的crosvm的版本也不一定一样;就连AI都知道的不多,Claude和DeepSeek(免费版能用的模型)只会给出幻觉,目前ChatGPT可以辅助我做一些有用的分析,Gemini还没试过;
然后,就算用crosvm成功启动了虚拟机系统,配网,共享目录,GPU加速,桌面环境也需要慢慢摸索可以用的命令,我是因为已经习惯用libvert和qemu在服务器上手动运维KVM虚拟机所以才敢冲一冲;
然后的然后,就算虚拟机的共享目录配好了,网也通了,Android作为一个移动端的宿主机系统,网络情况复杂,不是Google官方给的那个示例脚本(也就是本仓库的)能完全覆盖住的,(我估计这也是Google后面把这个脚本删掉的原因); 目前这个脚本假设设备连着WIFI,如果要用流量、其他上网方式,还要折腾,例如我的平板支持手机共享网络,如果再装个clash之类的,一大堆网络设备,你会在
iptable/ip route/ip rule里面一头栽进去;最恶心的是,就算你真的配好了网,也可能因为WIFI重连啥的VM突然断网,要重写ip rule才可能会恢复;就算你搞定了一切,也愿意经常重启宿主设备然后重新创建正确的转发规则,虚拟机本身也会经常突然死机、开机失败,dmesg跑一半卡住是常态,一天要重启十几次虚拟机,几次宿主机,主力设备根本没法这么玩;
←我在这儿
XFCE桌面环境安装完之后,实际上也没几个软件能用,很多软件Linux端只有x86架构,最要命的问题是,Chromium装上之后,打开bing搜索东西过几秒必然死机;
这个我是真排查不动了,花2200买个能root的平板,不玩调度,不搞工作室护航打单赚钱,在这里折腾这个破B虚拟机, 妄想着这玩意能成为我随身的(vibe) coding生产力工具,我买个掌机,或者干脆用termux,或者直接远程连回家的电脑不好吗????
连Google在亲儿子设备上都只是作为开发者的特性提供了个终端(好像最新版有窗口了?),无论是软件生态,还是基础设施的稳定性,现在完全都达不到能用的级别,更算不上好用,Windows的WSL打磨了10年现在才算好用,M1的MacOS用了两三年才不怎么出现紫屏崩溃死机的问题,有些时候个人的生产力就算被Agent和LLM大幅度加强,很多东西没有厂商支持就是碰都别碰,Windows Phone就是前车之鉴;
手持一加平板2,处理器是9400+,ColorOS 16.0.401, 用KernelSU Root了,下载了debian镜像扔到/data/local/tmp,用命令
vm run --cpu-topology cpu_count=4 -m 8192 --network-supported ./vm_config.json启动,但是虚拟机里好像不会有网卡我看vm_config.json里有
"network": true,这一项配置,启动选项里也加了 --network-supportedAll reactions