Ich muß nun doch einmal bei euch fragen - vielleicht kann mir ja jemand helfen.
Kurz zu mir:
AmiBerry: https://github.com/BlitterStudio/amiberry
Amithlon: https://de.wikipedia.org/wiki/Amiga-Emulator
Mein vorhaben:
- probiert habe ich nun Buildroot und mir ein Script gebastelt welches alles in einem Rutsch erledigen soll - booten tut es schonmal aber es kann anscheinend kein Grafikausgabe geöffnet werden und genau an dieser Stelle komme ich nicht weiter, evtl funktioniert das auch gar nicht mit Buildroot? Vielleicht gibt es hier jemanden der mir weiterhelfen kann
Script hänge ich mal an (läuft auf Ubuntu in QEmu)

Kurz zu mir:
- ich habe nur Grundkenntnisse (wenn überhaupt) von Linux
- ich probiere mehr als das ich wüßte was ich tue

- viel hilft derzeit auch ChatGPT
- wenn mein Wunsch nicht erfüllt werden kann dann ist dies nicht schlimm, hab ja noch den originalen Amiga1200 mit PiStorm32 hier stehen oder den alten nforce/AthlonXP/Geforce4ti4200 Rechner mit Amithlon
AmiBerry: https://github.com/BlitterStudio/amiberry
Amithlon: https://de.wikipedia.org/wiki/Amiga-Emulator
Mein vorhaben:
- ein minimales Linux für x86_64 welches Amiberry (Amiga Emulator)
- ähnlich wie Amithlon bootet (sprich einfach auf ne Fat32 Partition kopieren)
LABEL Amithlon_VGA
MENU LABEL Amithlon - Standart VGA
KERNEL /Boot/kern310
APPEND console_level=0 init=/linuxrc root=/dev/ram0 mem=512M vga=769 ramdisk_size=2310 leavepages=5200 cachesize=65536 initrd=/Boot/smallird.gz
MENU LABEL Amithlon - Standart VGA
KERNEL /Boot/kern310
APPEND console_level=0 init=/linuxrc root=/dev/ram0 mem=512M vga=769 ramdisk_size=2310 leavepages=5200 cachesize=65536 initrd=/Boot/smallird.gz
- probiert habe ich nun Buildroot und mir ein Script gebastelt welches alles in einem Rutsch erledigen soll - booten tut es schonmal aber es kann anscheinend kein Grafikausgabe geöffnet werden und genau an dieser Stelle komme ich nicht weiter, evtl funktioniert das auch gar nicht mit Buildroot? Vielleicht gibt es hier jemanden der mir weiterhelfen kann
Script hänge ich mal an (läuft auf Ubuntu in QEmu)
Code:
#!/usr/bin/env bash
set -e
EXT=xz
BUILDROOT_VERSION=2025.08.1
BR_DIR="buildroot-${BUILDROOT_VERSION}"
BOARD="board/x86_64"
JOBS=$(( $(nproc)+1 ))
# -------------------------------
# 1) Buildroot holen (Tarball)
# -------------------------------
step1_buildroot_clone() {
if [ -d "$BR_DIR" ]; then
echo "[OK] $BR_DIR bereits vorhanden"
return
fi
if [ ! -f "${BR_DIR}.tar.${EXT}" ]; then
echo "[*] Lade Buildroot $BUILDROOT_VERSION..."
wget "https://buildroot.org/downloads/${BR_DIR}.tar.${EXT}"
fi
echo "[*] Entpacke Buildroot..."
tar xvJf "${BR_DIR}.tar.${EXT}"
}
# -------------------------------
# 2) Amiberry Package (libenet, PortMidi, CMake)
# -------------------------------
step2_amiberry_package() {
echo "[*] Erzeuge libenet + PortMidi + Amiberry Buildroot-Packages"
# In Buildroot wechseln
pushd "$BR_DIR" > /dev/null
mkdir -p package/libenet
mkdir -p package/portmidi
mkdir -p package/amiberry
# ===============================
# libenet
# ===============================
cat > package/libenet/Config.in <<'EOF'
config BR2_PACKAGE_LIBENET
bool "libenet"
help
Reliable UDP networking library used by Amiberry (UAENET)
EOF
cat > package/libenet/libenet.mk <<'EOF'
LIBENET_VERSION = 1.3.18
LIBENET_SITE = https://github.com/lsalzman/enet/archive/refs/tags
LIBENET_SOURCE = v$(LIBENET_VERSION).tar.gz
LIBENET_SITE_METHOD = tar
LIBENET_LICENSE = MIT
LIBENET_LICENSE_FILES = LICENSE
LIBENET_INSTALL_STAGING = YES
LIBENET_INSTALL_TARGET = YES
$(eval $(cmake-package))
EOF
# ===============================
# PortMidi
# ===============================
cat > package/portmidi/Config.in <<'EOF'
config BR2_PACKAGE_PORTMIDI
bool "PortMidi"
help
Cross-platform MIDI I/O library (used by Amiberry)
EOF
cat > package/portmidi/portmidi.mk <<'EOF'
PORTMIDI_VERSION = 2.0.6
PORTMIDI_SITE = https://github.com/PortMidi/portmidi/archive/refs/tags
PORTMIDI_SOURCE = v$(PORTMIDI_VERSION).tar.gz
PORTMIDI_SITE_METHOD = tar
PORTMIDI_LICENSE = MIT
PORTMIDI_LICENSE_FILES = license.txt
PORTMIDI_DEPENDENCIES = alsa-lib
PORTMIDI_INSTALL_STAGING = YES
PORTMIDI_INSTALL_TARGET = YES
$(eval $(cmake-package))
EOF
# ===============================
# Amiberry
# ===============================
cat > package/amiberry/Config.in <<'EOF'
config BR2_PACKAGE_AMIBERRY
bool "Amiberry"
depends on BR2_TOOLCHAIN_HAS_THREADS
depends on BR2_INSTALL_LIBSTDCPP
depends on BR2_PACKAGE_SDL2
select BR2_PACKAGE_SDL2_IMAGE
select BR2_PACKAGE_SDL2_TTF
select BR2_PACKAGE_MPG123
select BR2_PACKAGE_FLAC
select BR2_PACKAGE_LIBMPEG2
select BR2_PACKAGE_LIBSERIALPORT
select BR2_PACKAGE_LIBENET
select BR2_PACKAGE_PORTMIDI
select BR2_PACKAGE_ZSTD
help
Amiberry Amiga Emulator (SDL2, x86_64)
https://github.com/BlitterStudio/amiberry
EOF
cat > package/amiberry/amiberry.mk <<'EOF'
AMIBERRY_VERSION = c516867
AMIBERRY_SITE = https://github.com/BlitterStudio/amiberry.git
AMIBERRY_SITE_METHOD = git
AMIBERRY_GIT_SUBMODULES = YES
AMIBERRY_COMMIT = c516867
AMIBERRY_LICENSE = GPL-3.0
AMIBERRY_LICENSE_FILES = COPYING
AMIBERRY_DEPENDENCIES = \
sdl2 sdl2_image sdl2_ttf \
mpg123 flac libmpeg2 \
libserialport portmidi libenet zstd
AMIBERRY_INSTALL_STAGING = NO
AMIBERRY_INSTALL_TARGET = YES
AMIBERRY_SUPPORTS_IN_SOURCE_BUILD = NO
AMIBERRY_CONF_OPTS = \
-DUSE_SDL2=ON \
-DUSE_LIBENET=OFF \
-DUSE_PORTMIDI=ON \
-DUSE_LIBSERIALPORT=ON \
-DUSE_LIBMPEG2=ON \
-DUSE_UAENET_PCAP=OFF \
-DCMAKE_BUILD_TYPE=Release \
-DLIBENET_LIBRARIES=$(STAGING_DIR)/usr/lib/libenet.a \
-DCMAKE_INSTALL_PREFIX=/usr
define AMIBERRY_INSTALL_TARGET_CMDS
# Binary
$(INSTALL) -D -m 0755 \
$(@D)/buildroot-build/amiberry \
$(TARGET_DIR)/usr/bin/amiberry
# Runtime shared libs
$(INSTALL) -D -m 0755 \
$(@D)/buildroot-build/external/capsimage/libcapsimage.so \
$(TARGET_DIR)/usr/lib/libcapsimage.so
$(INSTALL) -D -m 0755 \
$(@D)/buildroot-build/external/floppybridge/libfloppybridge.so \
$(TARGET_DIR)/usr/lib/libfloppybridge.so
# Data files
mkdir -p $(TARGET_DIR)/usr/share/amiberry
cp -a $(@D)/data \
$(TARGET_DIR)/usr/share/amiberry/
cp -a $(@D)/roms \
$(TARGET_DIR)/usr/share/amiberry/
endef
$(eval $(cmake-package))
EOF
# ===============================
# Einbindung in Buildroot
# ===============================
for pkg in libenet portmidi amiberry; do
grep -q "package/$pkg/Config.in" package/Config.in || \
echo "source \"package/$pkg/Config.in\"" >> package/Config.in
done
popd > /dev/null
echo "[OK] Amiberry + libenet + PortMidi eingebunden"
}
# -------------------------------
# 3) Kernel + Buildroot Config + Overlay
# -------------------------------
step3_config_apply() {
echo "[*] Erzeuge Kernel- und Buildroot-Konfiguration..."
pushd "$BR_DIR" > /dev/null
# -----------------------------------------
# 2a) Kernel-Config (board/pc/linux.config)
# -----------------------------------------
mkdir -p board/pc
cat > board/pc/linux.config <<'EOF'
CONFIG_64BIT=y
CONFIG_X86_64=y
CONFIG_X86_GENERIC=y
CONFIG_IKCONFIG=y
CONFIG_IKCONFIG_PROC=y
CONFIG_DEVTMPFS=y
CONFIG_DEVTMPFS_MOUNT=y
CONFIG_PROC_FS=y
CONFIG_SYSFS=y
CONFIG_TMPFS=y
CONFIG_EXT4_FS=y
CONFIG_VFAT_FS=y
CONFIG_MSDOS_FS=y
CONFIG_FB=y
CONFIG_FB_VESA=y
CONFIG_FB_SIMPLE=y
CONFIG_FB_SYS_FOPS=y
CONFIG_FRAMEBUFFER_CONSOLE=y
CONFIG_VGA_CONSOLE=y
CONFIG_DRM=y
CONFIG_DRM_KMS_HELPER=y
CONFIG_DRM_BOCHS=y
CONFIG_DRM_VIRTIO_GPU=y
CONFIG_DRM_FBDEV_EMULATION=y
CONFIG_DRM_I915=y
CONFIG_DRM_AMDGPU=y
CONFIG_DRM_NOUVEAU=y
CONFIG_DRM_LOAD_EDID_FIRMWARE=y
CONFIG_SYSFB=y
CONFIG_SYSFB_SIMPLEFB=y
CONFIG_INPUT=y
CONFIG_INPUT_EVDEV=y
CONFIG_KEYBOARD_ATKBD=y
CONFIG_MOUSE_PS2=y
CONFIG_SOUND=y
CONFIG_SND=y
CONFIG_SND_PCM=y
CONFIG_SND_HDA_INTEL=y
CONFIG_SND_TIMER=y
CONFIG_SND_PCM=y
CONFIG_NET=y
CONFIG_INET=y
CONFIG_PACKET=y
CONFIG_UNIX=y
CONFIG_VIRTIO=y
CONFIG_VIRTIO_PCI=y
CONFIG_VIRTIO_BLK=y
CONFIG_VIRTIO_NET=y
CONFIG_VIRTIO_CONSOLE=y
CONFIG_SERIAL_8250=y
CONFIG_SERIAL_8250_CONSOLE=y
CONFIG_INITRAMFS_SOURCE=""
CONFIG_BLK_DEV_INITRD=y
EOF
# -----------------------------------------
# 2b) Buildroot Defconfig
# -----------------------------------------
cat > configs/x86_64_amiberry_defconfig <<'EOF'
BR2_x86_64=y
BR2_x86_64_GENERIC=y
# Toolchain
BR2_TOOLCHAIN_BUILDROOT=y
BR2_TOOLCHAIN_BUILDROOT_CXX=y
BR2_TOOLCHAIN_HAS_THREADS=y
# Kernel
BR2_LINUX_KERNEL=y
BR2_LINUX_KERNEL_CUSTOM_VERSION=n
BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.12.47"
BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/pc/linux.config"
BR2_LINUX_KERNEL_IMAGE=y
BR2_LINUX_KERNEL_IMAGE_NAME="bzImage"
BR2_LINUX_KERNEL_INSTALL_TARGET=y
BR2_LINUX_KERNEL_HEADERS_CHECK=n
# Rootfs
BR2_TARGET_ROOTFS_EXT2=y
BR2_TARGET_ROOTFS_EXT2_4=y
BR2_TARGET_ROOTFS_EXT2_SIZE="256M"
BR2_TARGET_ROOTFS_CPIO=y
BR2_TARGET_ROOTFS_CPIO_GZIP=y
BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV=y
BR2_TARGET_GENERIC_GETTY_PORT="tty1"
# Rootfs / Overlay
BR2_ROOTFS_OVERLAY="board/x86_64/overlay"
# SDL / Grafik / Audio
BR2_PACKAGE_MESA3D=y
BR2_PACKAGE_MESA3D_EGL=y
BR2_PACKAGE_MESA3D_GBM=y
BR2_PACKAGE_MESA3D_GALLIUM=y
BR2_PACKAGE_MESA3D_OPENGL_ES=y
BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_I915=y
BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_RADEONSI=y
BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_NOUVEAU=y
BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_SVGA=y
BR2_PACKAGE_LIBDRM=y
BR2_PACKAGE_LIBDRM_INTEL=y
BR2_PACKAGE_LIBDRM_AMDGPU=y
BR2_PACKAGE_LIBDRM_NOUVEAU=y
BR2_PACKAGE_LIBDRM_VIRTIO=y
BR2_PACKAGE_LLVM=y
BR2_PACKAGE_LLVM_RTTI=y
# SDL2
BR2_PACKAGE_SDL2=y
BR2_PACKAGE_SDL2_IMAGE=y
BR2_PACKAGE_SDL2_TTF=y
BR2_PACKAGE_SDL2_MIXER=y
BR2_PACKAGE_SDL2_KMSDRM=y
BR2_PACKAGE_SDL2_FBDEV=y
BR2_PACKAGE_SDL2_RENDER_DRIVER_OPENGL=y
BR2_PACKAGE_SDL2_RENDER_DRIVER_OPENGLES2=y
BR2_PACKAGE_SDL2_RENDER_DRIVER_SOFTWARE=y
BR2_PACKAGE_SDL2_ALSA=y
BR2_PACKAGE_SDL2_EVDEV=y
BR2_PACKAGE_ALSA_LIB=y
# Emulator
BR2_PACKAGE_AMIBERRY=y
BR2_PACKAGE_PORTMIDI=y
BR2_PACKAGE_LIBSERIALPORT=y
BR2_PACKAGE_LIBMPEG2=y
BR2_PACKAGE_FLAC=y
BR2_PACKAGE_LIBZSTD=y
BR2_PACKAGE_LIBPNG=y
BR2_PACKAGE_LIBENET=n
# Netzwerk
BR2_PACKAGE_CONNMAN=y
BR2_PACKAGE_CONNMAN_CLIENT=y
BR2_PACKAGE_CONNMAN_WIFI=y
BR2_PACKAGE_WIRELESS_REGDB=y
# Tools
BR2_PACKAGE_ACPID=y
BR2_PACKAGE_WGET=y
# Bootloader
BR2_TARGET_GRUB2=y
BR2_TARGET_GRUB2_INSTALL_TOOLS=y
# Image tools
BR2_PACKAGE_HOST_GENIMAGE=y
EOF
# -----------------------------------------
# 2c) Overlay / Autostart Amiberry
# -----------------------------------------
OVERLAY="board/x86_64/overlay"
mkdir -p \
"$OVERLAY/etc/init.d" \
"$OVERLAY/etc/profile.d" \
"$OVERLAY/etc" \
"$OVERLAY/data/amiberry/conf"
# Autostart Script
cat > "$OVERLAY/etc/init.d/S99amiberry" <<'EOF'
#!/bin/sh
DAEMON=/usr/bin/amiberry
DATA=/data/amiberry
CONF=$DATA/conf/default.uae
PIDFILE=/var/run/amiberry.pid
case "$1" in
start)
echo "[amiberry] starting..."
mkdir -p "$DATA/conf"
[ -e /amiberry ] || ln -s "$DATA" /amiberry
start-stop-daemon -S -b -m -p "$PIDFILE" -x "$DAEMON" -- -f "$CONF"
;;
stop)
echo "[amiberry] stopping..."
start-stop-daemon -K -p "$PIDFILE"
;;
restart)
$0 stop
sleep 1
$0 start
;;
esac
EOF
chmod +x "$OVERLAY/etc/init.d/S99amiberry"
# SDL / Audio Environment
cat > "$OVERLAY/etc/profile.d/sdl.sh" <<'EOF'
#!/bin/sh
unset SDL_VIDEODRIVER
unset SDL_RENDER_DRIVER
unset SDL_KMSDRM_DEVICE
export SDL_VIDEODRIVER=kmsdrm,fbdev
export SDL_RENDER_DRIVER=opengles2,opengl,software
export SDL_AUDIODRIVER=alsa
export SDL_NOMOUSE=0
EOF
chmod +x "$OVERLAY/etc/profile.d/sdl.sh"
# fstab f\FCr /data Partition
cat > "$OVERLAY/etc/fstab" <<'EOF'
proc /proc proc defaults 0 0
sysfs /sys sysfs defaults 0 0
devtmpfs /dev devtmpfs defaults 0 0
LABEL=DATA /data ext4 rw,noatime 0 0
EOF
# Default Amiberry config
cat > "$OVERLAY/data/amiberry/conf/default.uae" <<'EOF'
use_gui=no
gfx_fullscreen_amiga=true
gfx_fullscreen_picasso=true
gfx_width_fullscreen=1280
gfx_height_fullscreen=720
gfx_vsync=true
sound_output=normal
EOF
# -----------------------------------------
# 2d) Anwenden
# -----------------------------------------
cp configs/x86_64_amiberry_defconfig .config
make olddefconfig
popd > /dev/null
echo "[OK] Kernel- und Buildroot-Config + Overlay angewendet"
}
# -------------------------------
# 3.5) Manuelles menuconfig (SDL2 Renderer Fix)
# -------------------------------
step35_menuconfig() {
echo "[*] \D6ffne make menuconfig (bitte SDL2 Renderer aktivieren!)"
echo
echo "WICHTIG:"
echo "Target packages ? Graphics ? sdl2"
echo " [*] Software rendering (PFLICHT)"
echo " [*] KMS/DRM video driver"
echo " [*] Framebuffer video driver"
echo
echo "Zus\E4tzlich:"
echo "Target packages ? Libraries ? Graphics"
echo " [*] libdrm"
echo " [*] mesa3d ? EGL + GBM"
echo
read -p "ENTER zum \D6ffnen von menuconfig..."
pushd "$BR_DIR" > /dev/null
make menuconfig
popd > /dev/null
echo "[OK] menuconfig abgeschlossen \96 Konfiguration gespeichert"
}
# -------------------------------
# 4) Pr\FCfe benoetigte Host-Pakete
# -------------------------------
step4_check_host_dependencies() {
echo "[*] Pruefe benoetigte Host-Pakete..."
deps=(build-essential git cmake \
libsdl2-dev libsdl2-ttf-dev libsdl2-image-dev \
libflac-dev libmpg123-dev libpng-dev libmpeg2-4-dev \
libserialport-dev libportmidi-dev libenet-dev \
libpcap-dev libzstd-dev libglew-dev libelf-dev binutils-dev)
missing=()
for pkg in "${deps[@]}"; do
if ! dpkg -s "$pkg" &>/dev/null; then
missing+=("$pkg")
fi
done
if [ ${#missing[@]} -eq 0 ]; then
echo "[OK] Alle Host-Abhaengigkeiten sind installiert."
return
fi
echo "[!] Folgende Pakete fehlen: ${missing[*]}"
read -p "Moechtest du sie jetzt installieren? [Y/n]: " choice
if [[ "$choice" =~ ^[Yy]$ || -z "$choice" ]]; then
sudo apt update
sudo apt install -y "${missing[@]}"
else
echo "[!] Build kann fehlschlagen, da Pakete fehlen."
fi
popd > /dev/null
}
# -------------------------------
# 5) Buildroot bauen (optimiert, pfadfrei)
# -------------------------------
step5_buildroot_build() {
# In Buildroot wechseln
pushd "$BR_DIR" > /dev/null
# 2) Optional: komplettes Clean
read -p "[?] Vor dem Build alles sauber machen? (y/N): " clean_choice
if [[ "$clean_choice" =~ ^[Yy]$ ]]; then
echo "[*] Clean starten..."
make clean
echo "[OK] Clean abgeschlossen"
fi
# 3) Build starten
echo "[*] Buildroot bauen mit $JOBS Jobs..."
make -j"$JOBS" BR2_JOBS="$JOBS"
popd > /dev/null
echo "[OK] Buildroot gebaut"
}
# -------------------------------
# Menue
# -------------------------------
menu() {
clear
echo "=== Buildroot + Amiberry x86_64 ==="
echo "1) Buildroot herunterladen"
echo "2) Amiberry Package erstellen"
echo "3) Fertige Config anwenden"
echo "3.5) menuconfig (SDL2 Renderer setzen)"
echo "4) Check Host Dependencies"
echo "5) Buildroot bauen"
echo "0) Beenden"
read -p "Auswahl: " c
case $c in
1) step1_buildroot_clone ;;
2) step2_amiberry_package ;;
3) step3_config_apply ;;
35) step35_menuconfig ;;
4) step4_check_host_dependencies ;;
5) step5_buildroot_build ;;
6)
step1_buildroot_clone
step2_amiberry_package
step3_config_apply
step35_menuconfig
step4_check_host_dependencies
step5_buildroot_build
;;
0) exit 0 ;;
esac
read -p "ENTER..."
}
while true; do menu; done
