在Z3735F平板电脑上安装Linuxmint

(原标题为:Chuwi(驰为)Vi8Super刷Linuxmint 19)

(2022-04-03更新版,本文旧版附后)

安装盘准备

因为用了一段时间发现2G内存跑cinnamon压力有点大,vivaldi多开几个页面就OOM退出了,而且当年刷的Linuxmint19也旧了,所以打算换Linuxmint 20.3 xfce了。

如后面的旧文所说,这个驰为Vi8超级版平板电脑用的Z3735F是64位CPU,但是BIOS是32位的,UEFI也跟一般的64位系统不一样,所以用官方的LINUX安装盘是无法引导的,需要用一个叫Linuxium的工具做一下转换。

先下载mint安装盘和最新版的Linuxium isorespin.sh(v8.7.1),然后直接放在墙外的VPS上进行转换,省得因为科学上网问题导致失败。

新版脚本依赖一些工具,所以需要先安装:

sudo apt -y install p7zip-full bc klibc-utils iproute2 genisoimage dosfstools liblz4-tool squashfs-tools rsync unzip wget findutils xorriso bsdutils

然后运行:

./isorespin.sh -i linuxmint-20.3-xfce-64bit.iso --atom

成功运行完成即可得到linuxium-atom-linuxmint-20.3-xfce-64bit.iso安装盘。

另外需要注意的一点是,烧入U盘的时请使用专门的工具,比如Windows下的Rufus,不可以使用dd,因为dd生成的文件系统不能被这个BIOS所识别,导致启动后进入grub命令行状态,无法引导。

安装系统

具体方法不变,参考后面的本文旧版内容。

与上次安装的不同之处在于,这次直接使用整个硬盘,因为已经不准备再恢复原系统了。

安装后配置

基本上用Linuxium安装盘装好以后,大部分驱动都有了,比如声音和无线网卡,但是触摸屏还是不行,需要按本文旧版内容所说安装一下。

但触摸定位问题还是存在,所以需要在“首选项-显示-方向”里把显示方向改为“右”或“顺时针”,让屏幕始终向右横屏显示,这样触摸定位就正确了。当然,不同的机器可能不一样,根据实际设置。

不过这个设置只在登录以后才生效,所以登录界面还是竖屏,并且无法正确触摸,还要进行下面的配置。

登录界面横屏配置

这里找到一个解决方案,试了以后可行。

/etc/lightdm/lightdm.conf.d下面找到70-linuxmint.conf,在其中的[SeatDefaults]段里加上一行:

greeter-setup-script=/etc/lightdm/greeter_setup.sh

然后创建这个文件/etc/lightdm/greeter_setup.sh,内容为:

#!/bin/bash
xrandr -o right  # 注意:我用的方向与原贴不一样,实际配置按你需要的方向来设置
exit 0

最后把这个文件加上可执行权限chmod +x greeter_setup.sh

如果是cinnamon版,可以重启之前运行一下这个脚本试一下,如果显示方向跟你的相反,就把那个right改成left,确定无误再重启试试效果。xfce中运行这个脚本会报错,但对于登录界面横屏仍然是有效的。

(本文旧版)

准备工作

手里的Chuwi Vi8Super平板是五年前买的,当时就已经是白菜价了。

据说这主要是托Intel的福——当年Intel为了推广Atom移动平台真是大出血本,给各厂商巨额补贴,造就了市面上一大批Z3735F平台的大小平板,Windows系统和Android系统都有,甚至还有这款双系统的神机。

当年的微软为了对抗Android也是大出血,宣布为某些条件(屏幕小于多少,分辨率低于多少,CPU低于多少等)下的硬件平台提供免费windows license。比如这种8寸的Z3735F平板就是,这真是我们这种垃圾佬最爱的货了。

然而时过境迁,这些垃圾货的本性开始暴露了:Windows 8.x已经被抛弃了(我曾经试图在免费期内升级到Windows10,而且因为空间不足还手动把Android删除,但还是失败了,包括但不限于各种驱动缺失等问题),Android 4.x也是过时得不行,很多新版APP已经安装不了。于是闲置了一两年。

最近因为疫情放长假,随手翻出来想试试看能不能折腾一下,结果居然还真找到解决方案了。

这个机器的硬件配置是这样的:

  • CPU Intel Atom Z3735F
  • RAM 2G
  • NAND 32G
  • WIFI+BT

算是一个挺普通的低配X86 64方案,理论上应该可以装别系统,然而我早年也尝试过安装Linux,但是失败了,引导不了。后来才知道这货有一点很奇葩:它是一个64位的平台,但是用了32位的BIOS……

所以问题的关键就是需要做一个能被32位BIOS引导的安装盘。

制作安装盘

搜了一番,找到一个达人做的解决方案:Linuxium(链接已更新),用一个脚本把标准的Linux安装盘转换一下,就成了可以在这种平板平台上引导的安装盘了。

作者做了几个ISO可以直接下载安装,不过因为他用的免空在科学网外,下载不便,而且他只做了Ubuntu,我最近喜欢用LinuxMint,所以还是自己做了一个,然而过程并不顺利,最大的问题还是在科学上网上。

本来我是应该用这样的命令在转ISO的:

isorespin.sh -i linuxmint-19.3-cinnamon-64bit.iso --atom

但不幸的是这样运行就会直接卡住不动。看文档看得头昏眼花之后,终于看到原来--atom相当于:

-l rtl8723bX_4.12.0_amd64.deb -f linuxium-install-UCM-files.sh -f wrapper-linuxium-install-UCM-files.sh -f linuxium-install-broadcom-drivers.sh -f wrapper-linuxium-install-broadcom-drivers.sh -c wrapper-linuxium-install-UCM-files.sh -c wrapper-linuxium-install-broadcom-drivers.sh

当我把那两个8723的驱动和四个脚本下载下来才发现,脚本里多处从google的免费空间里下载文件的语句——就是这里卡住了。

最后只能不带--atom参数制作ISO,然后写到U盘里先刷上看看。转换完成的文件名叫做linuxium-linuxmint-19.3-cinnamon-64bit.iso。刷U盘可以用dd命令,不过我习惯用Mint系统自带的Disks工具。

刷机

准备以下硬件:

  • 一根MicroUSB OTG线
  • 一个USB HUB
  • 一个USB键盘和一个USB鼠标
  • 一个前面做好的启动U盘

平板关机,把键盘鼠标U盘都插到HUB上,再把HUB插到OTG线上,再把OTG线插到平板上。

按住ESC键,平板开机,等待进入Boot mode界面——注意,不同的平板可能操作不同。在此界面上选择Boot Manager,在菜单中选择你的启动U盘,如果没发现,请检查U盘并重启再试。

成功启动后即可进入LinuxMint Live环境,然后就可以开始正常安装了。

过程中需要注意的一点是硬盘分区,我没有使用默认的全盘自动重分区,而是手工把不用的分区一个个删除,保留了最前面的几个小分区,以防万一……虽然可能也没什么必要。

比较方便的一点就是这个时候WIFI已经被成功驱动起来了,可见LinuxMint 19已经默认带了那个8723驱动。

安装完成后的配置

虽然系统成功安装,但还有一些后续的配置工作:

  • 虽然--atom参数需要的8723驱动已经有了,但broadcom驱动和UCM配置还是需要补装的
  • 屏幕方向始终是竖屏
  • 触摸屏不能用

broadcom驱动和UCM配置用linuxium提供的两个脚本即可:linuxium-install-UCM-files.shlinuxium-install-broadcom-drivers.sh,注意,是两个不带wrapper的。

但是直接运行是不行的,如前面所说,需要从google下载一些文件,所以需要修改一下脚本里的wget语句,加上必要的科学上网方式,或者直接用全局科学上网来运行。

这两个装上,声音应该就有了。

竖屏的问题研究了半天,改了一堆的配置文件,最后发现其实在“首选项”-“显示”里面就可以配置。先在“设置”里把“禁止自动旋转屏幕”打开(反正重力传感器也用不了),然后在“布局”里改变“旋转”的设置,我用了“逆时针”,结果导致触摸方向相反,后来改成“顺时针”就顺了。

需要说明的是,这个设置需要登录后才生效,所以登录界面还是竖屏的……

触摸屏就麻烦多了。

首先是需要驱动,但是我连这个触摸屏是什么型号都不知道。搜了半天,总算找到有人试出来是Silead GLSx680,虽然他的型号是Vi8,但据我所知,Vi8Super与Vi8的唯一区别就是:Super是双系统,硬件应该是完全一样的。

sudo apt install git
git clone https://github.com/onitake/gslx680-acpi.git
# 下面这个固件实测需要用浏览器下载,用wget会被github阻止,不知道为什么
# wget -O silead_ts.fw https://github.com/Manouchehri/vi8/blob/master/Ubuntu_support_files/silead_ts.fw?raw=true
sudo mv silead_ts.fw /lib/firmware/
cd gslx680-acpi
make
sudo make install
sudo insmod gslx680_ts_acpi.ko

装上这个驱动,触摸总算有反应了,虽然位置跑偏的厉害,而且方向还相反(后来才知道是因为旋转方向用了逆时针)……

又找了很久找到这个ubuntu的触摸屏解决文档,提到了校正和配置的方案。

sudo apt install xinput-calibrator
xinput_calibrator

然后按提示把生成的配置保存为99-calibration.conf,然后放到/etc/X11/xorg.conf.d/下(如果没有则创建)。更新配置需要重启X:

sudo service lightdm restart

然后需要重新登录生效。

然而不幸的是,校正参数是生效了,但是反向的问题还是没有解决,加上了InvertXInvertY也没有用,加了evdev的设置也没用,最后是在xorg的日志里看到错误才知道需要另外安装:

sudo apt install xserver-xorg-input-evdev-hwe-18.04

当然,最后把反向问题解决完,发现其实只要改一下旋转方向就不用反向了……

最后,因为触摸屏设置也要登录以后才有效,所以登录时的竖屏状态,触摸还是乱的,导致屏幕键盘不能用(也不是完全不能用,只是点击位置和虚拟键盘对不上,而且因为竖屏,XY轴还是相反的,基本不可能点准)……所以在没有连接蓝牙键盘的情况下是无法登录的……

当然这些已经不重要了,至少基本上都能用了。

然后就是正常的LinuxMint环境配置了,比如安装语言包、输入法这些。当然实际使用的性能还是比较感人的,毕竟Z3735F这个CPU还是太弱了点,可能后来的Apollo平台会好一些吧。

BTW:我刷这个机器也只是为了以后出门万一有需要可以应急一下,不可能用来正经干活的,毕竟性能一般,屏幕太小,这个小蓝牙键盘也不好用。目前是放在家里做个小服务器跑测试用,毕竟可以docker……

推送到[go4pro.org]