Tagged as retrocomputing, amiga, gcc, linux

Written on 2026-07-20 by Daniel Kochmański

Table of Contents

  1. 前提条件
  2. ツールチェーン
  3. エミュレーター
  4. インストール
  5. 実行ファイルの実行
  6. リモートデバッグ
  7. まとめ
  8. リソース

何のきっかけもなく、Amiga開発環境をセットアップすることにしました。物事を理解するのが簡単ではなかったので、Linuxで最初のプログラムをコンパイルしてエミュレーターで実行する方法についての手順を書き留めました。どうぞお楽しみください!

前提条件

この投稿では、読者がLinuxの熟練ユーザーであり、ソースコードからソフトウェアをビルドでき、不足している依存関係を解決できることを前提としています。標準的なビルドツールがあれば始められます。シェルコマンドの基本的な理解も期待されます。ツールチェーンのビルド方法に関する詳細な手順はこちらで入手できます:https://franke.ms/amiga/amiga-gcc.wiki

もう一つのやや問題のある要件は、AmigaOSを実行するにはROMイメージ(ファームウェア)とワークベンチディスク(インストールメディア)が必要だということです。これらは合法的なソースから購入するか、所有しているハードウェアからダンプすることができます。あるいは、エミュレーターに同梱されているAROS ROMを使用することもできますが、標準的なAmigaソフトウェアとの互換性は劣るとされています。

ツールチェーン

AmigaOS向けのプログラムをビルドするにはコンパイラが必要です。人気のツールはamiga-gccです。最初はデフォルト(最も実績のある)のGCCブランチを使おうとしましたが、生成された実行ファイルは動作するものの、m68k-amigaos-gdbにバイナリをロードするとセグメンテーションフォルトが発生しました。何度か試行錯誤した後、問題を報告したところ、ツールチェーンのメンテナであるStefan 'bebbo' Frankeさんが親切に、ツールチェーンが現在DWARF2デバッグ情報を生成していることを説明し、最終的な実行ファイルへのデバッグセクションの埋め込みに関するバグを修正してくれました。最終的にGCCにはamiga16.1ブランチ、binutilsにはamiga-2.46ブランチ(前述の修正を含む)を選択しました。

make updateは接続エラーにより失敗する可能性があります。その場合は、すべてダウンロードされるまで繰り返し実行してください。make updatemake 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
# Check whether the compiler works. SDL1.2 build failed on my host, but it is
# not needed.
${TOOLCHAIN}/bin/m68k-amigaos-gcc -v
popd

これで動作するAmigaOSツールチェーンができました。いくつかの異なるruntime/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実行ファイルの解析に少し問題があるようですが、バイナリは動作します。

エミュレーター

このファイルを実行するにはどうすればよいでしょうか?2つの要素が必要です:

  • エミュレーター
  • AmigaOS ROM

エミュレーターの入手は簡単です。Amiberryを選びました。組み込みのbsdsocket.library、仮想ハードディスク、共有ディレクトリなどの優れた開発者体験を提供し、Linuxでうまく動作するためです。もう一つの有力な候補はFS-UAEです。どちらも問題なく動作するはずです。バイナリリリースがあるか、ソースからビルドできます。AmiberryはFlathubからインストールします:

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, etc
mkdir -p Amiberry/{ROMs,Floppies}
# Amiberry expects .a1200 file extension (it doesn't recognize .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-2MBで、後者は通常4MB程度のファストRAMに拡張できます。それで十分です!Amiga 1200を選びます。AGA(Amiga Advanced Graphics Architecture)チップセットと4MBファストRAM拡張構成があるためです。

  • モデル: Amiga 1200
  • 構成: 4 MB Fast RAM expanded configuration
  • エミュレートドライブ(DF0): Install314.adf

インストール中、フロッピーはインストーラーが要求するファイルに置き換える必要があります。エミュレートされたドライブDF0はフロッピードライブを表します。仮想マシンの実行中に構成メニューに戻るには、F12キーを押します。

img

次に「ROM」タブに移動し、「Main ROM File」としてkick.a1200 ROMを選択します。次に「Expansions」タブに移動し、bsdsocket.libraryを有効にします。後でbgdbserverを実行するためにTCP/IP接続が必要です。

最後に、仮想ハードドライブと共有ディレクトリを追加します:

  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はすでに共有ディレクトリにあり、2番目のドライブとして追加したため「DH1」として利用できます。

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さんは、Amiga専用ポートのbgdbserverもメンテナンスしています。

使用する前に、lhaアーカイブを展開するツールをインストールする必要があります。これはこちらで入手できます:https://aminet.net/package/util/arc/lhalha.runファイルをShared/ディレクトリにダウンロードしてコピーし、Amiga内で実行します。lha.runは自己展開アーカイブで、いくつかのファイルを作成します。lha_68020というファイルに興味があります。これをc:lhaにコピーします。なお、c:は「ドライブC」ではなく、「コマンドディレクトリ」です。

3.DH1:> lha.run
...
3.DH1:> copy lha_68020 c:lha

img

展開したファイルを削除し、bgdbserver.lhahttps://aminet.net/dev/debug/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ハッカーはこれで何ができるでしょうか?

リソース

このセットアップを構成する際、主に以下のリソースから学びました: