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

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

安装

参考教程: https://github.com/nabu-alarm/installation-guide/blob/main/guide/English/install.md
可以使用他的UEFI Installer和nabu-alarm/images提供的rEFInd,可以dualboot到安卓和Linux。



已过时的步骤,timoxa0将托管在他服务器上的数据全部删掉了,文件失传,仅供参考。

使用lon-tool一键安装,非常方便,会设置好rootfs和UEFI启动,之后可以方便的把自己编译的内核替换上去。
参考教程: https://github.com/nabu-alarm/installation-guide/blob/main/guide/English/install.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

  • 安装依赖: 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)
  • 拉取6.12内核的代码: git clone https://gitlab.postmarketos.org/panpanpanpan/sm8150-mainline.git --branch 6.12-wip --depth 1
  • 修补内核: 请参考在小米平板 5 上安装 Arch Linux
    只需要参考修补的内容,编译步骤在Ubuntu上完全不同

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

    建议启用framebuffer console的rotate功能,因为一般横着用,但是默认是竖起来显示启动日志的。

  • 一些自用额外的配置

    # put these to arch/arm64/configs/extra.config
    # make defconfig sm8150.config extra.config
    CONFIG_LOCALVERSION="-nabu"
    
    # Xbox controller supporting
    CONFIG_INPUT_JOYSTICK=y
    CONFIG_JOYSTICK_XPAD=y
    CONFIG_JOYSTICK_XPAD_FF=y
    CONFIG_JOYSTICK_XPAD_LEDS=y
    
    # Wacom stylus supporting
    CONFIG_INPUT_TABLET=y
    CONFIG_TABLET_SERIAL_WACOM4=y
    
    # Framebuffer console
    CONFIG_FONTS=y
    CONFIG_FONT_TER16x32=y
    CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y
    
    # Network Tunneling & iPhone USB network sharing
    CONFIG_NET_IPIP=y
    CONFIG_USB_IPHETH=y
    
    # F2FS 
    CONFIG_F2FS_FS_SECURITY=y
    CONFIG_F2FS_FS_COMPRESSION=y
    
    # ZRAM
    CONFIG_ZRAM=m
    CONFIG_ZRAM_BACKEND_LZ4=y
    CONFIG_ZRAM_BACKEND_LZ4HC=y
    CONFIG_ZRAM_BACKEND_ZSTD=y
    CONFIG_ZRAM_BACKEND_DEFLATE=y
    CONFIG_ZRAM_BACKEND_842=y
    CONFIG_ZRAM_BACKEND_FORCE_LZO=n
    CONFIG_ZRAM_BACKEND_LZO=y
    CONFIG_ZRAM_DEF_COMP_LZORLE=n
    CONFIG_ZRAM_DEF_COMP_ZSTD=y
    CONFIG_ZRAM_DEF_COMP="zstd"
    
    # ZSwap
    CONFIG_ZSWAP=y
    CONFIG_ZSWAP_DEFAULT_ON=y
    CONFIG_ZSWAP_COMPRESSOR_DEFAULT_ZSTD=y
    CONFIG_ZSWAP_COMPRESSOR_DEFAULT="zstd"
    
    # EFI
    CONFIG_RTC_DRV_EFI=n
    
    CONFIG_DRM_PRIVACY_SCREEN=y
    
    # Compressed firmware support
    CONFIG_FW_LOADER_COMPRESS=y
    CONFIG_FW_LOADER_COMPRESS_XZ=y
    CONFIG_FW_LOADER_COMPRESS_ZSTD=y

    1. 编译: make -j16
    2. 使用ukify将镜像打包为efi

      export _kernel_version="$(make kernelrelease -s)"
      mkdir ../linux-xiaomi-nabu-kernel
      # 创建SecureBoot测试密钥,密钥可以重复使用,后面编译时直接复用先前创建的密钥
      openssl genrsa -out sb.key 2048
      openssl req -new -x509 -key sb.key -out sb.crt -days 365 -subj "/C=CN/ST=Test/L=Test/O=Test/CN=Test SB Certificate"
      
      export cmdline_quiet="quiet loglevel=3 systemd.show_status=auto rd.udev.log_level=3 vt.global_cursor_default=0"
      export cmdline_root="root=PARTLABEL=linux rw"
      export cmdline_console="console=tty0 fbcon=rotate:1,font:TER16x32"
      export cmdline_other="systemd.gpt_auto=no cryptomgr.notests"
      
      
      # 打包
      ukify build --linux ./arch/arm64/boot/Image --cmdline "${cmdline_console} ${cmdline_root} ${cmdline_quiet} ${cmdline_other}" --devicetree ./arch/arm64/boot/dts/qcom/sm8150-xiaomi-nabu.dtb --secureboot-private-key sb.key --secureboot-certificate sb.crt --output ../linux-xiaomi-nabu-kernel/${_kernel_version}.efi


    过时的步骤,不再使用simpleinit

    1. 拷贝内核和dtb:

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

      rm -rf ../linux-xiaomi-nabu-kernel/lib/modules/*/build
      rm -rf ../linux-xiaomi-nabu-kernel/lib/modules/*/source
    4. 打包文件夹推送到设备,仅需要打包lib*.efi
    5. 将内核模块文件夹放在/usr/lib/modules下,文件夹在vmlinuz旁边的/lib/modules目录下,以内核版本号命名。
    6. vmlinuz-xxxdtb-xxx放置在/boot/efi下.
    7. 修改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可能无法正常驱动。
  • 删除旧的固件并添加新的固件,6.12内核无法加载6.1使用的旧固件。
    删除/usr/lib/firmware (考虑备份)
    KawaiiZapic/ubuntu-xiaomi-nabu下载xiaomi-nabu-debs_6.7-working.zip,解压后得到firmwarealsa的deb文件,可以直接安装,如果无法安装可以尝试根据apt显示的包名称卸载旧的包。
  • 重启设备,通过音量键选择新的内核启动

    可能会遇到跑日志后直接黑屏,尝试用simpleinit的启动菜单完全关闭设备,然后等待一会,再重试。如果重试了五六次还不行,则可能是内核的问题,检查编译步骤。
  • 评论 5
    #705

    1700大洋为什么不看看surface pro,这个价能买gen6(8250u,lpddr3,nvme ssd,surfacepen support),原生Windows for x86 和优雅的巨硬logo~

    2025-02-05 10:31
    回复
    #707

    不想看x86了,感觉没啥意思,买这个用是一半,玩也是一半

    2025-02-05 13:13
    回复
    nvi
    #710

    续航被arm吊打,x86的平板用不了一点,传奇尿崩王

    2025-02-25 22:07
    回复
    Chr0n0s
    #712

    大佬速去b站投视频稿(?

    2025-03-13 18:24
    回复
    滑稽
    #716

    大佬有视频教程吗😭lontool那里用不明白了

    2025-07-09 02:17
    回复
    评论已关闭
    发表评论
    评论 取消回复
    Copyright © 2026 Zapic's Blog