Skip to content

Instantly share code, notes, and snippets.

@GOROman
Last active August 31, 2026 12:36
Show Gist options
  • Select an option

  • Save GOROman/a3187e7f70dd1e1f6d094a4384f38305 to your computer and use it in GitHub Desktop.

Select an option

Save GOROman/a3187e7f70dd1e1f6d094a4384f38305 to your computer and use it in GitHub Desktop.

Blackroo Linux NTSC build and boot

SCPH-3500 / 2 MB RAM 向けに、Blackroo Linux を NTSC 60 Hz でビルドし、DuckStation で確認して CD-R に焼く手順。

前提

  • macOS 側に Homebrew、Docker CLI、gh がある
  • MacStudio 側に Docker/Colima 環境と luksamuk/psxtoolchain:latest がある
  • リポジトリ: arkwise/blackroolinux
  • ローカル DuckStation: ~/Applications/DuckStation.app

元リポジトリ: https://github.com/arkwise/blackroolinux

1. MacStudio の確認

ping mac-studio.local
ssh Mac-Studio.local '/opt/homebrew/bin/docker images'

PSn00bSDK の場所を確認する。

ssh Mac-Studio.local \
  '/opt/homebrew/bin/docker run --rm --platform linux/amd64 \
   --entrypoint /bin/sh luksamuk/psxtoolchain:latest -c \
   "ls -l /opt/psn00bsdk/bin/mipsel-none-elf-gcc"'

2. カーネルを NTSC 化

blackroo/drivers/video/psxcon.c の、カーネル引数 psxvideo= が無い場合の既定値を変更する。

h = 240;
rate = 60;

blackroo/arch/mipsnommu/Makefile では little-endian を明示する。

GCCFLAGS := ... -EL
LINKFLAGS += ... -EL
EXTRA_LDFLAGS += -EL

3. Mac 側のローカル EGCS ツールチェーン

古い MIPS Linux 用 EGCS を sdk/toolchain-local/bin に配置し、Mac 上で実行できるようにする。カーネルの形式を確認する。

file output/linux.elf
sdk/toolchain-local/bin/mipsel-linux-objdump -f output/linux.elf

期待値は ELF 32-bitMIPS-Ielf32-littlemips

4. カーネルとユーザーランドをビルド

./build.sh kernel

brsh は MacStudio の PSn00bSDK Docker イメージ内でビルドする。

PSN00BSDK_ROOT=/opt/psn00bsdk \
  DEFCONFIG=blackroo_2mb_defconfig \
  ./userland/build.sh brsh.c

Mac 側で initrd を生成する場合は、e2fsprogs のパスを通す。

brew install genext2fs e2fsprogs
PATH="/opt/homebrew/opt/e2fsprogs/sbin:/opt/homebrew/opt/e2fsprogs/bin:$PATH" \
  SKIP_USERLAND_BUILD=1 ./scripts/make-userspace-initrd.sh
./build.sh convert

生成物:

  • output/blackroo_noinitrd.exe
  • output/blackroo.exe
  • output/initrd.img

5. kloader を MacStudio Docker でビルド

現行イメージでは SDK の CMake ファイルは次の場所にある。

/opt/psn00bsdk/lib/libpsn00b/cmake/sdk.cmake

Ninja が無い場合は Unix Makefiles を使う。

cmake -S . -B build -G 'Unix Makefiles' \
  -DCMAKE_TOOLCHAIN_FILE=/opt/psn00bsdk/lib/libpsn00b/cmake/sdk.cmake \
  -DCMAKE_BUILD_TYPE=Debug
cmake --build build

output/bootloader.exe を配置し、PS-EXE ヘッダーを確認する。

6. CD イメージ生成

iso/license-area.bin を用意した状態で、MacStudio Docker の mkpsxiso を使う。

PATH=/opt/psn00bsdk/bin:$PATH ./iso/build-iso.sh

生成物:

  • output/blackroo-kloader.bin/.cue — kloader メニュー起動
  • output/blackroo.bin/.cue — 直接カーネル起動

7. ローカル DuckStation で起動

--help は使わない。GUI プロセスが待機するため、CD イメージを直接渡す。

DUCK="$HOME/Applications/DuckStation.app/Contents/MacOS/DuckStation"
"$DUCK" "$PWD/output/blackroo-kloader.cue" >/tmp/duckstation-blackroo.log 2>&1 &

または別インスタンスで起動する。

open -na "$HOME/Applications/DuckStation.app" \
  --args "$PWD/output/blackroo-kloader.cue"

8. CD-R に焼く

空の CD-R を SuperDrive に挿入し、メディアを確認する。

drutil status

確認できたら kloader 版を verify 付きで焼く。

drutil burn -verify -eject -speed 10 output/blackroo-kloader.cue

完了後、SCPH-3500 では FreePSXBoot、tonyhax、または MODCHIP など、CD-R を起動するための手段が別途必要。

検証ポイント

  • カーネル: MIPS-I little-endian
  • ビデオ既定値: 320/640 x 240 @ 60 Hz
  • kloader とカーネルのロードアドレスが衝突しない
  • PS-EXE ヘッダーが有効
  • DuckStation で kloader が起動
  • CD-R 書き込みが verify 成功

実機での映像・音声・ディスク起動は、エミュレータ成功や書き込み verify だけでは保証されない。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment