在2026年搭建AmigaOS开发环境
摘要
在Linux上设置AmigaOS开发环境的实用指南,涵盖工具链安装、仿真和远程调试。
<p><a href="https://lobste.rs/s/bz0spb/building_amigaos_development">评论</a></p>
查看缓存全文
缓存时间: 2026/07/20 11:25
# TurtleWare 来源:https://turtleware.eu/posts/Building-an-AmigaOS-Development-Environment-in-2026.html 标签:复古计算 (https://turtleware.eu/tag/retrocomputing.html)、amiga (https://turtleware.eu/tag/amiga.html)、gcc (https://turtleware.eu/tag/gcc.html)、linux (https://turtleware.eu/tag/linux.html) 作者:Daniel Kochmański,写于 2026 年 7 月 20 日 ## 目录 1. [前提条件](#org4d40ca0) 2. [工具链](#orgbe77eee) 3. [模拟器](#org674c2e8) 4. [安装](#orgaacfdf4) 5. [运行可执行文件](#org957938e) 6. [远程调试](#org20f8186) 7. [总结](#org5a1bfc1) 8. [参考资料](#org8759daa) 无缘无故地,我决定搭建一个 Amiga 开发环境。由于理清一切并不简单,我写了这份针对 Linux 的指南,讲述如何编译第一个程序并在模拟器中运行。祝您愉快!
## 前提条件
在本文中,我假设读者是一位熟练的 Linux 用户,能够从源代码构建软件并解决缺失的依赖问题。标准构建工具应该足够入门。同时,也期望读者具备基本的 shell 命令知识。关于如何构建工具链的更详细说明,请参见此处:https://franke.ms/amiga/amiga-gcc.wiki。
另一个比较麻烦的需求是,要运行 AmigaOS,您需要 ROM 映像(固件)和 Workbench 磁盘(安装介质)。您可以从合法来源购买,或从您拥有的硬件中提取。或者,也可以使用模拟器附带的 AROS ROM,但已知其与标准 Amiga 软件的兼容性较差。
## 工具链
要为 AmigaOS 构建程序,我们需要编译器。一个流行的工具是 amiga-gcc。起初我尝试使用默认的(经过最多实战检验的)GCC 分支,但生成的可执行文件虽然能工作,在 `m68k-amigaos-gdb` 中加载该二进制文件却会导致段错误。经过一些尝试和错误后,我报告了该[问题](https://codeberg.org/bebbo/amiga-gcc/issues/10),工具链维护者 Stefan 'bebbo' Franke 友好地解释了现在工具链会生成 DWARF2 调试信息,然后修复了在最终可执行文件中嵌入调试段的一个 bug。我最终选择了 GCC 的 `amiga16.1` 分支和 binutils 的 `amiga-2.46` 分支(该分支包含上述修复)。注意,`make update` 可能因连接错误而失败。这种情况下请重新运行,直到所有内容下载完成。`make update` 和 `make all` 都可能需要一些时间——在我的机器上总共大约需要 1 小时。
```
export WORKSPACE=${HOME}/Workshop/AmigaOS
export TOOLCHAIN=${WORKSPACE}/amiga-gcc-toolchain
export PREFIX=${TOOLCHAIN}
mkdir -p ${WORKSPACE}
cd ${WORKSPACE}
git clone https://franke.ms/git/bebbo/amiga-gcc.git
pushd amiga-gcc
make branch branch=amiga16.1 mod=gcc
make branch branch=amiga-2.46 mod=binutils
make update
make all
# 检查编译器是否正常工作。SDL1.2 在我的主机上构建失败,但并非必需。
${TOOLCHAIN}/bin/m68k-amigaos-gcc -v
popd
```
现在我们有了一套可用的 AmigaOS 工具链。它支持几种不同的运行时/libc 版本。如果未指定,则默认为 `newlib`。
```
export WORKSPACE=${HOME}/Workshop/AmigaOS
export TOOLCHAIN=${WORKSPACE}/amiga-gcc-toolchain
export PATH=${TOOLCHAIN}/bin:${PATH}
mkdir Shared
pushd Shared
cat > woosh.c <<EOF
#include <stdio.h>
void hi(void) {
printf("jd was here \\o/\n");
}
int main() {
hi();
return 0;
}
EOF
m68k-amigaos-gcc -g woosh.c -o woosh.out
file woosh.out
# woosh.out: AmigaOS loadseg()ble executable/binary
popd
```
恭喜!我们已经构建了第一个 AmigaOS 程序。`file` 命令在解析 AmigaOS 可执行文件时似乎有点问题,但该二进制文件可以正常工作。
## 模拟器
现在如何运行这个文件?我们需要两样东西:
- 模拟器
- AmigaOS ROM
获取模拟器很简单。我选择了 Amiberry,因为它提供了良好的开发者体验——内置 `bsdsocket.library`、虚拟硬盘和共享目录,并且在 Linux 上运行良好。另一个不错的选择是 FS-UAE。两者都应该工作良好。它们有二进制发行版,或者我们可以从源代码构建。我们将从 Flathub 安装 Amiberry:
```
flatpak install flathub com.blitterstudio.amiberry
```
获取 ROM 则稍微困难一些。如果您拥有原版硬件,可能已经有了合法的映像。否则,您可以从 https://www.amigaforever.com/ 或 https://www.hyperion-entertainment.com/ 购买。假设您有 ROM,我们可以启动模拟器并配置目标系统。我们需要以下文件:
- **ROM 文件:** kick.a1200.46.143
- **磁盘映像:** Install314.adf、Workbench314.adf 等
```
mkdir -p Amiberry/{ROMs,Floppies}
# Amiberry 期望 .a1200 文件扩展名(它不认识 .46.143)
cp Nero/ROMs/kick.a1200.46.143 Amiberry/ROMs/kick.a1200
cp Nero/Floppies/*.adf Amiberry/Floppies
flatpak run com.blitterstudio.amiberry
```
现在导航到“Paths”标签页,将它们配置为指向我们刚刚创建的“Amiberry”目录。在提示创建子目录时确认。然后点击“Rescan Paths”按钮,再回到“Quickstart”标签页。
![img] Amiga 硬件有几种不同的型号,具有不同的硬件配置和运行不同版本的 M68K CPU。RAM 分为“芯片内存”(可由定制芯片直接访问,如图形、音频和 DMA)和“快速内存”(通用 RAM)。前者通常为 1-2 MB,而后者通常可以扩展到 4 MB 的快速 RAM。这已经足够了!我们将选择 Amiga 1200,因为它具有 AGA(Amiga Advanced Graphics Architecture)芯片组和 4 MB 快速 RAM 扩展配置。
- **型号:** Amiga 1200
- **配置:** 4 MB 快速 RAM 扩展配置
- **模拟驱动器 (DF0):** Install314.adf
在安装过程中,当安装程序要求时,需要替换软盘映像为请求的文件。模拟驱动器 DF0 代表软盘驱动器。要在虚拟机运行时返回配置菜单,请按 F12。
![img] 然后导航到“ROM”标签页,选择 kick.a1200 ROM 作为“Main ROM File”。接着转到“Expansions”标签页,启用 `bsdsocket.library`。稍后我们需要 TCP/IP 连接来运行 `bgdbserver`。最后添加一个虚拟硬盘和一个共享目录:
1. 导航到“Hard drives/CD”标签页
2. 选择“Create Hardfile”:1024MB,启用 RDB 模式
3. 选择“Add Hardfile”并选择刚刚创建的文件
4. 选择“Add Directory”
这些驱动器在 Amiga 中将分别显示为 DH0 和 DH1。RDB 是 Amiga 原生的分区表格式(类似于 PC 上的 MBR,但功能更丰富)。设置此模式是让 Amiga 识别磁盘所必需的。
![img] 值得保存配置。转到“Configurations”标签页并保存文件。从现在起,我们可以这样启动 AmigaOS:
```
flatpak run com.blitterstudio.amiberry -f amigaos.uae
```
## 安装
我在格式化硬盘时遇到了一些问题。通常,当安装程序打开时,新磁盘应该在初始目录中显示为“DH0: ...”。用左指针按钮点击该图标,然后按住右指针按钮以显示顶部菜单栏。导航到“Icons > FormatDisk”并格式化磁盘。
![img] 现在按照安装程序中的步骤操作。有时我们需要“插入新软盘”。要返回 Amiberry 菜单,按 F12,将 DF0 中的软盘映像替换为安装程序建议的那个。然后点击“Resume”继续。
![img] 干得漂亮,我们已经成功安装了 AmigaOS!现在可以取出软盘,从安装的系统启动。
## 运行可执行文件
现在系统已重启,转到我们安装系统的驱动器,选择“System”和“Shell”。二进制文件 `woosh.out` 已经在共享目录中,该目录显示为“DH1”,因为我们将其添加为第二个驱动器(在“Hardfile”之后)。
```
3.Main:> dh1:
3.DH1:> dir woosh.out
3.DH1:> woosh.out
jd was here \o/
3.DH1:>
```
太棒了,我们的交叉编译二进制文件运行完美!
![img]
## 远程调试
但这还不是全部。软件会出错,出错时我们需要调试器。我们已经使用 `m68k-amigaos-gdb` 构建了一个,但系统上没有 GDB 服务器。`m68k-amigaos` 工具链的维护者 Stefan Franke 还维护着 `bgdbserver`,一个专为 Amiga 移植的版本。在使用之前,我们需要安装一个解压 lha 存档的工具。它可以在 https://aminet.net/package/util/arc/lha 找到。下载 `lha.run` 文件并将其复制到 `Shared/` 目录,然后在 Amiga 中运行它。`lha.run` 是一个自解压存档,会创建几个文件。我们感兴趣的是 `lha_68020` 文件。将其复制到 `c:lha`。请注意,`c:` 不是“C 盘”,而是“命令目录”。
```
3.DH1:> lha.run
...
3.DH1:> copy lha_68020 c:lha
```
![img] 现在我们可以删除解压出的文件,并从 https://aminet.net/dev/debug/bgdbserver.lha 下载 `bgdbserver.lha`。将存档放在 `Shared/` 目录中并解压。
```
3.DH1:> lha x bgdbserver.lha
3.DH1:> copy bgdbserver/bgdbserver c:
```
现在,终于可以以调试模式启动应用程序了:
```
3.DH1:> bgdbserver :4444 woosh.out
```
![img] 太棒了!现在我们可以调试我们雄心勃勃的程序了。在 Linux 主机上,使用相同的二进制文件运行 GDB:
```
export WORKSPACE=${HOME}/Workshop/AmigaOS
export TOOLCHAIN=${WORKSPACE}/amiga-gcc-toolchain
export PATH=${TOOLCHAIN}/bin:${PATH}
m68k-amigaos-gdb
(gdb) file woosh.out
(gdb) target remote localhost:4444
(gdb) continue
```
如果遇到“Connection refused”错误,请确保在 Amiberry 配置中启用了 `bsdsocket.library`(如前所述)。
![img] 下一步合乎逻辑的做法是美化 AmigaOS,但这超出了本教程的范围。我按照这份详细指南进行了操作:https://lyonsden.net/installing-amiga-os-3-1-4-part-5-finishing-touches/
![img]
## 总结
我们已经成功构建并安装了 AmigaOS 的开发环境。我想知道一个充满激情的 Lisp 黑客能用它做些什么呢?
## 参考资料
在配置此环境时,我主要参考了以下资料:
- **https://franke.ms/amiga/amiga-gcc.wiki:** 工具链主页
- **https://github.com/BlitterStudio/amiberry/wiki:** 模拟器维基
- **https://guide.abime.net/wb3.1/chap2.htm:** 分区指南
- **https://guide.abime.net/wb3.1/chap4.htm:** 安装 lha.run 指南
- **https://aminet.net/:** 软件包仓库
- **https://lyonsden.net/installing-amiga-os-3-1-4-part-5-finishing-touches/:** 一份详细介绍如何美化 AmigaOS 的指南
相似文章
Amiga Unix,再次
Amiga Unix 正在一个非官方社区项目中复兴,添加了现代工具链、包管理器以及用于传统Amiga硬件的驱动程序,并提供用于真实系统和仿真系统的安装介质。
我的2025年高端Linux PC 🐧
一篇关于在2025年组装高端Linux PC的详细博客文章,包括组件选择、设置以及故障排除有问题的Intel CPU。
CP/M-86 & MS-DOS 交叉开发环境
本项目为CP/M-86和MS-DOS提供了一个交叉开发环境,包括用于复古计算的编译器、汇编器和模拟器。
我是如何开发Am29000的C编译器和网络浏览器的
Oscar Toledo G分享了他于1998年至1999年间为Am29000自制电脑开发C编译器和网络浏览器的经历,讨论了技术挑战和当时的技术背景。
在 Linux 和 Unix 系统上编译 Emacs 以提升性能的技术指南
本技术指南提供了在各类 Linux 发行版上从源码编译 Emacs 的详细步骤,旨在通过 CPU 特定指令集和 Wayland 等现代显示协议来优化性能。文中还涵盖了依赖项配置以及微调原生 Lisp 编译器以提升执行速度的相关内容。