在 macOS / Linux / Windows 上使用 FUSE 的原生 Amiga 文件系统
Native Amiga Filesystems on macOS / Linux / Windows with FUSE

原始链接: https://github.com/reinauer/amifuse

## Amifuse:在现代操作系统上访问Amiga文件系统 Amifuse允许您使用通过FUSE模拟的*原生* AmigaOS文件系统处理程序,在macOS、Linux和Windows上挂载Amiga磁盘镜像(HDF、RDB、ADF)。与反向工程解决方案不同,它运行实际的驱动程序,如PFS3,提供更高的兼容性。 **安装:** 需要Python 3.9+、7-Zip以及特定平台的FUSE实现(macFUSE、Linux的FUSE、WinFSP)。安装涉及克隆GitHub仓库 ([https://github.com/reinauer/amifuse](https://github.com/reinauer/amifuse)),设置虚拟环境(推荐),并通过pip安装`amitools`和`amifuse`。 **使用:** 使用`amifuse mount `挂载镜像。Linux需要挂载点。macOS通常自动挂载到`/Volumes/`。您可以指定驱动程序(`--driver`)、分区(`--partition`)并启用实验性的读写访问(`--write`)。 **主要特点:** 使用`amifuse inspect`检查磁盘镜像,将Amiga `.info` 图标转换为原生macOS图标(`--icons`),并支持各种文件系统(PFS3、SFS、FFS/OFS、BFFS)。性能通过在macOS上禁用Finder/Spotlight索引来优化。

## Amiga 文件系统在现代操作系统上的应用 - Hacker News 摘要 最近 Hacker News 的讨论集中在一个项目上 ([github.com/reinauer](https://github.com/reinauer)),它使用 FUSE 在 macOS、Linux 和 Windows 上实现对 Amiga 文件系统的原生访问。其核心创新在于在 68K 模拟器内运行实际的 Amiga 文件系统代码,而不是重新实现。 对话强调了尽管技术(如人工智能)取得了进步,但跨操作系统实现通用的 USB 驱动器兼容性仍然存在令人惊讶的困难。 文件系统支持方面的问题(例如 macOS Sequoia 拒绝挂载 FAT32)和厂商锁定经常被提及。 用户还讨论了 Amiga 平台的更广泛吸引力,一些人表达了将其复兴为日常驱动器的愿望,但受到现代软件限制(特别是网络浏览器)的阻碍。 讨论进一步深入到模拟 Amiga 环境的复杂性,特别是其 API 的复杂性和复制其文件系统处理程序的挑战。 最后,一位用户提出了一种新颖的设备概念:一个 USB“黑匣子”,可以在两个连接的设备之间同步文件,从而提供跨平台文件共享,而无需联网。
相关文章

原文

Mount Amiga filesystem images on macOS/Linux/Windows using native AmigaOS filesystem handlers via FUSE.

amifuse runs actual Amiga filesystem drivers (like PFS3) through m68k CPU emulation, allowing you to read Amiga hard disk images without relying on reverse-engineered implementations.

amifuse

  • macOS: macFUSE
  • Linux: FUSE for Linux
  • Windows: WinFSP
  • Python 3.9+
  • 7z: Required for make unpack (install via brew install p7zip on macOS)
  • A filesystem handler: e.g. pfs3aio (or use make download)
# Clone the repository with submodules
git clone --recursive https://github.com/reinauer/amifuse.git
cd amifuse

# Or if already cloned, initialize submodules
git submodule update --init

With virtual environment (recommended)

python3 -m venv .venv
source .venv/bin/activate   # On Windows: .venv\Scripts\activate

pip install -e './amitools[vamos]'   # Install amitools from submodule (includes machine68k)
pip install -e .                     # Install amifuse

Without virtual environment

pip install --user -e './amitools[vamos]'
pip install --user -e .

Install macFUSE from https://osxfuse.github.io/ or via Homebrew:

brew install --cask macfuse

You may need to reboot and allow the kernel extension in System Preferences > Security & Privacy.

# Debian/Ubuntu
sudo apt install fuse libfuse-dev

# Fedora
sudo dnf install fuse fuse-devel

To download a test PFS3 disk image and the pfs3aio handler:

make download   # Downloads pfs.7z and pfs3aio to Downloads/
make unpack     # Extracts pfs.hdf and copies pfs3aio to current directory

Then mount with:

# macOS: auto-mounts to /Volumes/<partition_name>, uses embedded driver from RDB
amifuse mount pfs.hdf

# Linux: requires explicit mountpoint
mkdir -p ./mnt
amifuse mount pfs.hdf --mountpoint ./mnt

amifuse uses subcommands for different operations:

amifuse inspect <image>                    # Inspect RDB partitions
amifuse mount <image>                      # Mount a filesystem

View partition information and embedded filesystem drivers:

# Show partition summary
amifuse inspect /path/to/disk.hdf

# Show full partition details
amifuse inspect --full /path/to/disk.hdf
Argument Description
image Path to the RDB image file
--block-size Block size in bytes (default: auto-detect or 512)
--full Show full partition details
amifuse mount /path/to/disk.hdf
Argument Required Description
image Yes Path to the Amiga hard disk image file
--driver No Path to filesystem handler binary (default: extract from RDB if available)
--mountpoint macOS/Windows: No, Linux: Yes Mount location (macOS: /Volumes/<partition>, Windows: first free drive letter)
--partition No Partition name (e.g., DH0) or index (default: first partition)
--block-size No Override block size (default: auto-detect or 512)
--volname No Override the volume name shown in Finder
--debug No Enable debug logging of FUSE operations
--profile No Enable cProfile profiling and write stats to profile.txt on exit
--write No Enable read-write mode (experimental, use with caution)
--icons No Convert Amiga .info icons to native icons (experimental, macOS only)
# macOS: Mount using embedded filesystem driver from RDB (simplest)
amifuse mount disk.hdf

# macOS: Mount with explicit driver
amifuse mount pfs.hdf --driver pfs3aio

# Mount a specific partition by name
amifuse mount multi-partition.hdf --partition DH0

# Mount a specific partition by index
amifuse mount multi-partition.hdf --partition 2

# Linux: Explicit mountpoint required
mkdir -p ./mnt
amifuse mount disk.hdf --mountpoint ./mnt

# Mount an ADF floppy image (requires explicit driver)
amifuse mount workbench.adf --driver L/FastFileSystem

# Enable native icons (macOS only, converts Amiga .info files)
amifuse mount disk.hdf --icons

# Browse the filesystem
ls /Volumes/PDH0   # macOS
ls ./mnt           # Linux

# Unmount when done (Ctrl+C in the terminal, or:)
umount /Volumes/PDH0   # macOS
umount ./mnt           # Linux

Inspect RDB (Rigid Disk Block) images to view partition information and embedded filesystem drivers.

# Show partition summary
rdb-inspect /path/to/disk.hdf

# Show full partition details
rdb-inspect --full /path/to/disk.hdf

# Output as JSON
rdb-inspect --json /path/to/disk.hdf

# Extract embedded filesystem driver #0 to a file
rdb-inspect --extract-fs 0 --out pfs3.bin /path/to/disk.hdf
Argument Description
image Path to the RDB image file
--block-size Block size in bytes (default: auto-detect or 512)
--full Show full partition details
--json Output parsed RDB as JSON
--extract-fs N Extract filesystem entry N (0-based) to a file
--out Output path for extracted filesystem (default: auto-derived)

Inspect Amiga filesystem handler binaries to verify they can be relocated and display segment information.

# Inspect a filesystem handler
driver-info pfs3aio

# Use a custom base address
driver-info --base 0x200000 pfs3aio
Argument Description
binary Path to the filesystem handler binary
--base Base address for relocation (default: 0x100000)
--padding Padding between segments when relocating
  • HDF/RDB - Hard disk images with Rigid Disk Block. Filesystem drivers can be embedded in the RDB or specified via --driver.
  • Emu68-style MBR images - Disk images with MBR partition table containing an RDB partition, as used by Emu68 on Raspberry Pi.
  • ADF - Amiga Disk File floppy images (DD and HD). Requires --driver since ADFs don't contain embedded drivers.

Currently tested with:

  • PFS3 (Professional File System 3) via pfs3aio handler
  • SFS (Smart File System 1.279) via SmartFileSystem handler
  • FFS/OFS (Fast/Old File System) via L:FastFileSystem from Workbench
  • BFFS (Berkeley Fast File System) via Chris Hooper's BFFSFilesystem handler

Other Amiga filesystem handlers may work but have not been tested. Reports are welcome.

The --icons flag enables conversion of Amiga .info icon files to native Finder icons:

  • Folder and file icons from .info files are displayed in Finder
  • Supports Traditional, NewIcons, and GlowIcons formats
  • The .info files are hidden in directory listings
  • Volume icons are displayed on the Desktop

*** This feature is experimental and macOS-only. ***

  • The filesystem is mounted read-only by default; use --write for experimental read-write support
  • The mount runs in the foreground; press Ctrl+C to unmount
  • macOS Finder/Spotlight indexing is automatically disabled to improve performance
  • First directory traversal may be slow as the handler processes each path; subsequent accesses are cached
联系我们 contact @ memedata.com