对ARM 2合1平板或翻转触屏笔记本的一些想法

最近几个月,在触屏笔记本上尝试安装了GNU/Linux上的安卓容器waydroid。现在来记录一下体验。

什么是容器
容器是一种沙盒技术,主要目的是为了将应用运行在其中,与外界隔离;及方便这个沙盒可以被转移到其它宿主机器。本质上,它是一个特殊的进程。通过名称空间(Namespace)、控制组(Control groups)、切根(chroot)技术把资源、文件、设备、状态和配置划分到一个独立的空间。
容器与虚拟机的区别
虚拟机通常包括整个操作系统和应用程序,里面运行的是一个真实的操作系统。本质上虚拟机是Hypervisor虚拟化出来的硬件上安装不同的操作系统,而容器是宿主机上运行的不同进程。从用户体验上来看,虚拟机是重量级的,占用物理资源多,启动时间长。容器则占用物理资源少,启动迅速。相对地,虚拟机隔离的更彻底,容器则要差一些。
csz795:容器技术简述 https://zhuanlan.zhihu.com/p/268695696

既然Android/Linux和GNU/Linux都是基于Linux这一内核构建的操作系统,那自然也可以在GNU/Linux上跑Android的容器,或者在Android/Linux上跑GNU的容器。前者的代表就是之前的anbox和现在的waydroid,后者的代表就是termux。

但是,Android的权限等等控制得很严格,termux一不小心就会被杀后台,可玩性显然是比不过GNU/Linux上跑Android的。

waydroid支持wayland不支持x11,所以我将操作系统升级到了Debian GNU/Linux trixie,同时抛弃了自己使用多年的Xfce转投了KDE。注意waydroid需要使用Mesa驱动,所以waydroid中是用不了Nvidia显卡的硬件加速的(Linus Torvalds的著名中指表情包.gif)。不过大部分微型笔记本(UMPC)和掌机本来就跟N卡没关系,所以这总的来说不是个大问题www

按照教程装好waydroid之后,只能运行纯java字节码或者是带有x86机器码的apk。如果要运行带有arm机器码的apk,需要转译。

目前常用的转译库有两个,libndk和libhoudini。libhoudini体积更大,对Intel CPU更友好,支持的apk似乎更多些。但还是有一些ARM应用无法正常启动,事关libndk和libhoudini本身的兼容性,无解,只能等待google和intel更新。

「waydroid里的LineageOS X86_64安卓系统并没有被预先root……

但是waydroid容器不用那么复杂,只需要在宿主机上执行

sudo waydroid shell

即可以最高root权限进入waydroid系统内执行命令。」(出自《在Archlinux上使用waydroid运行安卓app》https://zhuanlan.zhihu.com/p/631327119

这下「从世界之外,我们取得否定世界的力量」了www

玩了一段时间的后,感觉GNU/Linux+安卓容器的方案是非常适配2合1平板、触屏笔记本的。接上键盘鼠标的时候,使用FreeDesktop/GNU/Linux上的应用,不接键盘鼠标或将键盘收起来、将机器作为平板使用时则使用waydroid内的安卓应用。如果是GNU/Linux on ARM,那么连libndk和libhoudini这样的转译都不需要,且最近随着信创电脑的推行,不少国产专有软件也有了GNU/Linux on ARM的版本,例如QQ(GNU/Linux版QQ有AMD64、ARM64、mips64el、龙架构64四个版本)。

相比之下,Windows on ARM除了能靠转译运行许多Galgame之外,缺乏杀手锏应用。安卓子系统需要用虚拟机实现,消耗的资源远远多于GNU/Linux+安卓容器。Windows11本身系统就需要约4GB内存,再启动一个(已被微软砍刀部砍死的)WSA安卓子系统,又用了6GB内存,一下子就10GB了。而我在KDE上打开一个Firefox,再在waydroid里面再打开一个Firefox,两个加一块,不过使用了5GB多内存而已。另外,Windows上的许多专有软件都不倾向于提供ARM64的二进制版本,比如Windows版QQ似乎只有x86版。

stage1论坛上的ylns1314在评测华为MateBook E Go时则说:

1. 半年多了,绝大多数华为生态圈和自带软件都还是x64转译,根本没有重新编译arm64版本的意思。
(中略)
3. WOA 16G内存不够用。WSA不开常驻的话每次冷启动要十多秒,常驻会至少占用30%以上内存,开启一个Android app内存再占用些,基本常年90%了;WSL2跑个 node的服务器开两个vscode的WSL session也能做到90%内存占用。总之就是不行。
华为MateBook E Go开个箱(半年后repo) – PC数码 – Stage1st – stage1/s1 游戏动漫论坛 https://www.saraba1st.com/2b/thread-2100755-1-1.html

所以,要做ARM2合1平板、触屏笔记本,就应该考虑GNU/Linux+安卓容器而不是Windows on ARM+(已被微软砍刀部砍死的)WSA安卓子系统。事实上已经没了开发者的UWP就更不用说了。

但是,GNU/Linux on ARM也有很多挑战:

许多ARM设备没UEFI/ACPI。

许多ARM设备没有官方主线Linux驱动,只有被谷歌魔改过的安卓版Linux的驱动。

龙芯的设计师胡伟武就踩过这个坑:「龙芯2H集成了商用的GPU核,该GPU核有 Android操作系统的驱动程序,但我们需要Linux的Xserver驱动,厂家自己开发不了,我们希望厂家把内部配置寄存器如何使用的手册给我们,我们自己开发,可是厂家说这是商业机密,不愿意给,至今龙芯2H只有在Android上有3D驱动。」

而鲸鲮科技则尝试在有HAL的谷歌魔改版Linux内核上开发他们的JingOS,之后成功地寄了。维基百科英文版评价道:

Reviews said that the device is physically well made but its drivers are unfinished and as being built on top of the Android compatibility layer and not truly open hardware. It is unknown what it’s target group is.
评论称,该设备硬件上制作精良,但其驱动程序尚未完成,并且建立在Android兼容层之上,不是真正的开放硬件。目前尚不清楚它面向的目标群体是谁。
https://en.wikipedia.org/wiki/JingPad_A1

是啊。它面向的目标群体是谁?对于「生产力=办公三件套+剪视频」,「8GB+256GB够用」的群体,他们为什么不去买点iPad或者别的什么大厂的pad呢?

目前看来高通骁龙860、870是有官方主线Linux驱动的,因为小米平板5和小米平板5 pro已经先后有ubuntu或debian可装了(https://www.cnblogs.com/maverick-jia/articles/17491110.html  https://www.armbian.com/xiaomi-pad-5-pro/)。飞腾的一些处理器也是主线Linux可以点亮的,但是还有些驱动没进主线( https://blog.estela.moe/zh-Hans/2022/10/first-experience-on-phytium-arm-linux/)。如果有厂家能基于高通或飞腾的合适处理器开发一款有多个USB-A、USB-C、HDMI、SD卡等等的2合1平板或触屏笔记本,那它用起来应该会比只有1个USB-C、一个键盘接口的小米平板5/5 pro更方便。

补充:高通芯片的驱动是基于设备树的,无法在ACPI中使用。或许还是得看飞腾未来能拿出什么了?菊厂一向封闭,不太可能把它的CPU拿出来卖给别人吧。蜂窝网络版本完全可以靠外挂4G Modem实现。

最后修改:2024-03-31 16:27:43
最新回复:2024-03-28 01:42:39

分享到微信朋友圈

×
打开微信,点击底部的“发现”,
使用“扫一扫”即可将网页分享至朋友圈。
全部回复
friddle
酷粉

其实这个时间点是非常何时的.

第一市场需要一款轻量级别的ARM笔记本.但是windows arm+本来要出的鸿蒙版本arm笔记本还在腹中.所以市面上明确缺少一款能用的arm笔记本

建议合作deepinos或者自己魔改arch后.默认自带waydroid.

这方案简单可行

2024-03-25 17:13:31
IP属地:未知

对了小米平板5有一点也很劝退——他的USB C还是雷军家祖传的2.0 呲牙/cy

03-26 2:08
IP属地:未知

韩朴宇

我关注的人
「高通的Linux驱动只能用设备树进行设备发现,UEFI/ACPI是无法识别设备的,导致8cx的设备必须手写设备树才能运行GNU/Linux」

03-28 1:42
IP属地:未知
你需要登录后才能回复  | 立刻注册

综合讨论区

各类帖子集合讨论版块,综合讨论大杂烩

前往版块
未登录
快登录分享你的想法吧

热门帖子