用 Sony Walkman 安装 Arch Linux

"Because we can"

搞这个干嘛?

"因为我们办得到。"

好吧,真实原因是我的笔记本上面的系统挂了,而我手边找不到U盘。但是,我有一台 Walkman,另一台电脑和网络连接。1

一些背景知识

我使用的是一台 ZX300a. 如果你也想试试的话,你需要一台支持 USB 大容量存储 模式的 Walkman.

大多数使用索尼的私有系统的 Walkman (其实是基于 Linux 1 的) 都使用这一模式, 但使用 Android 的型号就不行.

感谢 UEFI 标准, 制作一个启动U盘非常简单, 只需要把光盘镜像中的所有文件拷贝到 U 盘根目录即可.

然而, 由于 Walkman 从来不是被设计成当作U盘使用的, 这么做有不少问题:

  • 盘符无法更改为 ARCH_YYYYMM
  • Walkman 的系统"智能地"在它认为电脑断开的时候退出 大容量存储 模式.

    • 所以, 在关机状态下是不能启用大容量存储模式的. 只能在开机过后 迅速的 启用大容量模式.
    • 也是因为这个原因, 在 Linux 内核载入内存并初始化硬件的时候, 存储模式也会自动关闭, 所以我们需要手动挂在 archiso 分区.

幸运的是, 这些问题都不难解决.

实际操作

如果你还是想试试的话, 好吧.

准备 Walkman

首先, 找一台电脑并下载最新的 archiso. 编写本文时最新的版本是 201910, 所以我将用这个版本作为例子.

然后, 将 Walkman 连接到电脑上并启用 USB大容量存储 模式. 将内部存储分区挂载到一个目录下(下文使用 $WM_DIR 作为例子), 然后把光盘镜像内的所有内容拷贝到内部存储的根目录下.

如果你不知道如何将一个光盘镜像挂载到一个目录上的话, here you go.

1
sudo mount -t iso9660 -o loop archlinux-2019.10.01-x86_64.iso /mnt/iso

然后, 修改 $WM_DIR/loader/entries/archiso-x86_64.conf. 将 options 一行改成类似下面的格式2 (不要照抄! 使用 ls -al /dev/disk/by-id 找到你的 disk id):

1
options archisobasedir=arch archisodevice=/dev/disk/by-id/usb-SONY_WALKMAN_1234567890ABCD-0:0

开机!

umount 掉 Walkman 分区, 关闭大容量存储模式, 然后等数据库刷新完成后插到要安装或维护的电脑上.

启动电脑, 同时 启用大容量存储模式和在电脑上按启动选单按键.

如果一切正常, 启动菜单上应该会多出两个选项. 一个是 USB FDD: SONY WALKMAN, 另一个是 USB HDD: SONY WALKMAN. 似乎 FDD 对应的是内部存储而 HDD 对应的是SD卡. 所以在这里选择 FDD.

启动菜单中的两个 Walkman USB 设备
启动菜单中的两个 Walkman USB 设备

然后就像往常一样选择从 Archiso 启动. 在内核加载后, Walkman 会自动关闭大容量存储模式, 因此系统无法挂载它所需的 /run/archiso/bootmnt 分区.

困惑的 Arch Linux 和顽皮的 Walkman
困惑的 Arch Linux 和顽皮的 Walkman

还好, 在挂载失败时会进入一个 fallback shell 环境. 我们只需手动挂载即可. 在 shell 中输入:

1
2
mount /dev/disk/by-id/usb-SONY_WALKMAN_1234567890ABCD-0:0 /run/archiso/bootmnt
exit

现在 archiso 已经有了一个正常的启动环境. 静待它启动完成即可.

正常启动中.
正常启动中.

We are in!
We are in!

然后呢?

该干嘛干嘛. 现在和普通的 archiso 启动U盘没区别了.


1

如果你也很不幸地遇到了类似的情况但是你有一台 root 过的 Android 设备,可以试试 DriveDroid. 这一次没有用它的原因是最近把手机升级到了 Andorid 10 而它似乎还没有做兼容。

发表于 2019-10-18
JS
Arrow Up