小米平板5 + Linux
一款全能便携电脑的终极形态,起售价800RMB
Zapic
2025-01-17 0

很早之前就想要一个比轻薄本还便携的设备了,最好能像iPad一样优雅就好了。
然后就锚定了一块小米平板5,买了个12+512的终极扩容版本,再加一块Doqo的磁吸悬浮支架键盘,性能够用,这玩意带上键盘也足够轻薄,长得像iPad但是不装iPad OS,加一起1700RMB拿下,简直薄纱iPad。
本来计划是用Windows的,因为Windows下驱动比较完善,而且部署方便,常用软件都有,而且还符合我长期的操作习惯。但是,Windows下没法驱动这块键盘的触摸板...我反反复复找了好几块键盘,发现都做得很屎,还很丑,果然还是放不下这块键盘,思来想去直接用Linux,虽然驱动不是特别完善,但是至少能发挥这块键盘的全部实力,实现完整形态。软件的问题都不是问题,硬件才让人头大,头铁刷入Linux。
故作次踩坑笔记,方便后来之人。
Linux on Nabu

安装

使用lon-tool一键安装,非常方便,会设置好rootfs和UEFI启动,之后可以方便的把自己编译的内核替换上去。
参考教程: https://git.timoxa0.su/timoxa0/Guide-Linux-Nabu/src/branch/main/guide/English/prepare-en.md

简述

  1. 安装工具: powershell.exe -C "irm https://s.tx0.su/ltw | iex"
  2. 下载镜像: https://timoxa0.su/?dir=share/nabu/images/v3/latest
  3. 刷入: lon-tool deploy /path/to/image.lni

编译6.12内核

上一步镜像使用的是6.1的镜像,通常来说也够用,不必自行编译内核。实际上可以使用6.12的内核,记录在Ubuntu 24.04 x64上的编译步骤。
思路参考: Nabu merge request in postmarketOS

  1. 安装依赖: sudo apt install build-essential gcc-aarch64-linux-gnu bc flex bison 7zip kmod bash cpio binutils tar git wget dpkg libssl-dev (参考map220v/ubuntu-xiaomi-nabu的workflow)
  2. 拉取6.12内核的代码: git clone https://gitlab.postmarketos.org/panpanpanpan/sm8150-mainline.git --branch 6.12-wip --depth 1
  3. 修补内核: 请参考在小米平板 5 上安装 Arch Linux
    只需要参考修补的内容,编译步骤在Ubuntu上完全不同

    针对patch文件,使用git apply /path/to/patch,其他文件找到相应的文件并直接替换。
    修改后编译出来的内核会有dirty标识,可以使用git commit -am 'patch'去除。
  4. 准备编译,指定编译器: export ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu-
  5. 加载配置: make defconfig sm8150.config
  6. 按需修改配置: make -j16 nconfig

    建议启用framebuffer console的rotate功能,因为一般横着用,但是默认是竖起来显示启动日志的。
  7. 编译: make -j16
  8. 拷贝内核和dtb:

    mkdir ../linux-xiaomi-nabu-kernel
    export _kernel_version="$(make kernelrelease -s)
    cp arch/arm64/boot/Image.gz ../linux-xiaomi-nabu-kernel/vmlinuz-$_kernel_version
    cp arch/arm64/boot/dts/qcom/sm8150-xiaomi-nabu.dtb ../linux-xiaomi-nabu-kernel/dtb-$_kernel_version
  9. 拷贝内核模块 make modules_install INSTALL_MOD_PATH=../linux-xiaomi-nabu-kernel
  10. 删除不必要的文件:

    rm -rf ../linux-xiaomi-nabu-kernel/lib/modules/*/build
    rm -rf ../linux-xiaomi-nabu-kernel/lib/modules/*/source
  11. 打包文件夹推送到设备
  12. vmlinuz-xxxdtb-xxx放置在/boot/efi下.
  13. 将内核模块文件夹放在/usr/lib/modules下,文件夹在vmlinuz旁边的/lib/modules目录下,以内核版本号命名。
  14. 修改simpleinit配置:
    以root权限编辑/boot/simpleinit/simpleinit.uefi.cfg
    会看到一大串boot.configs.linux.xxx=yyy
    将这些全数复制粘贴到文件结尾,并把boot.configs.linux.改成boot.configs.linux2.,重点是configs后面跟着的id,simpleinit使用id表示不同的启动项。
    修改.desc,这会决定他在启动菜单中显示的文字说明,我建议的是修改为Linux ${KernelVersion},例如Linux 6.12.0-nabu-g2e1ac76b
    修改.extra.kernel.extra.dtb,指向编译好的内核文件。
    修改extra.cmdline: pd_ignore_unused clk_ignore_unused root=PARTLABEL=linux loglevel=6 fbcon=rotate:1,重点是添加pd_ignore_unused clk_ignore_unused,否则UFS可能无法正常驱动。
  15. 删除旧的固件并添加新的固件,6.12内核无法加载6.1使用的旧固件。
    删除/usr/lib/firmware (考虑备份)
    KawaiiZapic/ubuntu-xiaomi-nabu下载xiaomi-nabu-debs_6.7-working.zip,解压后得到firmwarealsa的deb文件,可以直接安装,如果无法安装可以尝试根据apt显示的包名称卸载旧的包。
  16. 重启设备,通过音量键选择新的内核启动

    可能会遇到跑日志后直接黑屏,尝试用simpleinit的启动菜单完全关闭设备,然后等待一会,再重试。如果重试了五六次还不行,则可能是内核的问题,检查编译步骤。
评论 0
没有评论
评论已关闭
发表评论
评论 取消回复
Copyright © 2025 Zapic's Blog