Win 平板刷入 Arch Linux (64 Bit)

2020-10-07

前言

笔者有一个华硕 T100TA Windows 平板,由于性能太弱,在 Win10 2004 下的体验实在太差,于是动了刷成 Linux 的想法。

原来以为加个拓展坞后和普通的主机没什么两样,然后看到 Windows 平板电脑安装 Linux, 意识到事情不简单。

顺着关键词,在 archwiki 里找到了相关的方法,这篇文章的步骤基本上是按照 wiki 的方法来的,只能算是一个总结和翻译。

以下操作皆在 Linux 系统中完成。

失败的尝试

首先试的不是 arch ,是 Manjaro ,找到了 Manjaro 的 这个版本 支持 uefi32 启动,但是 manjaro 32 位的源又少又慢,驱动也有点奇奇怪怪的,遂放弃。
顺便记录一下 Manjaro 下解决 wifi 驱动问题的方法

sudo cp /sys/firmware/efi/efivars/nvram-XXXXXX /lib/firmware/brcm/brcmfmac43241b4-sdio.txt
sudo modprobe -r brcmfmac
sudo modprobe brcmfmac

刻盘

这里刻盘的方式有要求,建议不要用 windows 下自动刻录的工具,至少我用 balenaEtcher 是不行的。也不能直接把镜像 dd 进 u 盘。

因为之后需要修改 efi 分区文件,而 dd 刻进去的 efi 分区是满的,无法修改。

刻盘方法参考 Archwiki,以下做一个简单阐述。

# 建 vfat(fat32) 分区,刻盘
fdisk /dev/sdX 
mkfs.vfat /dev/sdXn 
mkdir /mnt/{usb,iso} 
mount -o loop archlinux-<version>.iso /mnt/iso 
mount /dev/sdXn /mnt/usb
cp -a /mnt/iso/* /mnt/usb 
sync
umount /mnt/iso

修改 u 盘启动方式

# 先给 u 盘分区打个 label,官方建议是 ARCH_YYYYMM,如 ARCH_202010,请随意。
fatlabel /dev/sdXn <Label> 

# 制作 grub uefi32 启动文件
echo 'configfile ${cmdpath}/grub.cfg' > /tmp/grub.cfg
grub-mkstandalone -d /usr/lib/grub/i386-efi -O i386-efi --modules="part_gpt part_msdos" --locales="en@quot" --themes="" -o "/mnt/usb/EFI/boot/bootia32.efi" "boot/grub/grub.cfg=/tmp/grub.cfg" -v

添加 /mnt/usb/EFI/boot/grub.cfg 文件,写入以下内容,ARCH__YYYYMM 部分改为之前写的 u 盘分区 label 。

insmod part_gpt
insmod part_msdos
insmod fat

insmod all_video

insmod font

if loadfont "${prefix}/fonts/unicode.pf2" ; then
    insmod gfxterm
    set gfxmode="1024x768x32;auto"
    terminal_input console
    terminal_output gfxterm
fi

menuentry "Arch Linux archiso x86_64 UEFI USB" {
    set gfxpayload=keep
    # 下面这行与官方的有点不一样,我的要打上双引号才能用,不然找不到这个 label ,请自行尝试。
    search --no-floppy --set=root --label "ARCH_YYYYMM" 
    linux /arch/boot/x86_64/vmlinuz-linux archisobasedir=arch archisolabel=ARCH_YYYYMM add_efi_memmap
    initrd /arch/boot/intel-ucode.img /arch/boot/x86_64/initramfs-linux.img
}

然后

umount /mnt/usb

u 盘制作好了,正常情况可以通过 grub 从 uefi32 启动了。

安装系统

与普通的 arch linux 差不多,在用 grub 做启动引导时,把

grub-install --target=x86_64-efi --efi-directory=esp --bootloader-id=GRUB

改为

grub-install --target=i386-efi --efi-directory=esp --bootloader-id=GRUB

其他启动引导方式笔者没用过,官方也没有说明,如有需要,请自行解决。

参考

后续

没遇到 Manjaro 和 Ubuntu 那样的无线网卡驱动问题,声卡显卡之类的也没问题。

蓝牙没有试,还要装 pulseaudio 之类的东西,懒。

xfce4 装上了,触屏效果意料之中的差,虽然有看到可以改得友好一点,不过我不是很在意。

如果出现了什么问题再到这里补充吧。