XAmiga: How To -- A minimal Linux for E-UAE (2023)

X-Amiga 'Anleitung'
A minimal Linux for E-UAE


This is a step-by-step guide to setting up a minimal version of Linux that can run E-UAE.

What makes it better than other emulation options? Well this one is light, fast and streamlined, more streamlined than any other. The Linux portion of the installation takes up just 16MB of disk space. Boot times can be as short as 15 seconds, almost as fast as a real Amiga. The underlying Linux is very easy to understand and work with; In fact, the directory structure turns out to be more Amiga-like than one might expect. E-UAE also gets the broad hardware support of Linux.

Unfortunately, the process is not as simple as installing from an installation CD or file. This method involves some effort because the packages must be built specifically for your computer. While this guide may seem detailed and cumbersome, I'm just trying to cover all the details; it's reallyNOvery heavy!

This guide corresponds to the typical installation procedure for an embedded Linux system; the following references may be helpful:

Gentoo Embedded x86-Leitfaden

By the way, why "X-Amiga"? Well, Apple added X to their Unix-based operating system, and this is a Linux-based Amiga emulation, so...

Technical details at a glance

* Based on Gentoo Linux
* Uses framebuffer for graphics display: up to 1600x1200x32 with DirectFB and SDL
* Complete system with graphics, network and sound consists of only 15 packages (depending on hardware support)


Only one problem at the moment: the keyboard doesn't work 100% (only lowercase letters and numbers work). This is an E-UAE issue that can be fixed at any time.

Other things to note:

DirectFB (used by SDL to display in the framebuffer) may have limited support for some graphics cards. More information at:www.directfb.org

If there is no driver for your card, you can use the generic VESA driver, but you will not get hardware acceleration.

I haven't tested everything yet (eg sound). But I can verify that my laptop boots in the workbench using the wireless network (RTG, 1024x768x16bit) and so far all applications have worked without any problems! (Note: DirectFB supports up to 32-bit color resolution.)

general description

Linux really refers to thisKern. In order for a computer to be usable, additional packages must be installed that work alongside the kernel. A Linux distribution like Ubuntu or Knoppix consists of many software packages that work together to provide a complete desktop environment. In this case, however, we just need a very simple and sufficient system to make the Amiga emulation work.

First you need to configure Gentoo Linux on your computer. Gentoo is the most suitable distro for this task, as the packages are easy to install and customize.

Part of the Gentoo installation process is configuring the kernel specifically for your computer. You should find out all the details of your computer's hardware ahead of time, either in the specifications, on the manufacturer's website, or through physical inspection. Configuring the kernel can take a while, but it's relatively easy.

Once your computer is working properly, use it as ahostSetting up a minimal Linux/Amiga system on aMetaDirectory that will eventually be copied to another partition or drive.

The process is very similar to setting up Embedded Linux on a small system. We're using BusyBox, a package that combines essential Linux commands into a single executable (imagine having the contents of the Amiga-c directory in a single file). However, while most embedded systems use uclibc (a very small C library), we keep the default glibc for maximum compatibility.

There are two ways to get a graphical display on Linux. One is using X windows, which is quite complicated and is avoided here. The easiest way is to use the framebuffer used by the kernel to access the graphics hardware directly. It's like having graphics on AmigaDOS without having to start the workbench.

This is a list of Gentoo packages that will be installed:

basic system:

Code: [Select]


[color=404040]sys-apps/baselayout-liteBasic design for embedded systems
sys-applications/busyboxLinux utilities for small systems
sys-applications/hotplugMonitor device attachments or removals and configure them for immediate use
sys-apps/hotplug-baseBasic hot-plug structure
sys-fs/udevWorks with hotplug to ensure that /dev matches the devices present on your system
sys-libs/glibcGNU C library


Code: [Select]


[color=404040]dev-libs/DirectFBIn addition to the Linux frame buffer, it also provides handling of graphics and input devices.
media-libs/audio fileProvides access to a variety of audio file formats
media-libs/libsdlDirectMedia Layer simple multimedia library
media-libs/alsa-libExtended Linux sound architecture library for sound cards
media-sound/alsa-utilsALSA utilities (alsamixer, etc.)
sys-libs/zlibdata compression library
Application/e-uae emulationfriends emulator


Code: [Select]


[color=404040]Wireless Networking/Wireless ToolsTools for configuring WLAN cards
net-misc/dhcpcdDHCP client

(Video) x-amiga boot unsuccessful on asus g53jw


* A computer running Gentoo Linux. Visitwww.gentoo.organd follow the detailed installation instructions! If you encounter any problems thatGentoo-ForenThey are an invaluable source of information and help.
* A fast internet connection!
* A spare partition or a second hard drive as the intention is to boot into the new version of Linux/Amiga. (Keep this in mind before installing Gentoo.)


1. Create a directory for the installation

This is the destination directory for the Linux/Amiga installation.

[cor=800000]Listing 1: Create destination directory[/Cor]

Code: [Select]

> mkdir /goal[/Cor]

2. Modify /etc/make.conf

This specifies hardware for DirectFB and ALSA and removes unnecessary items when installing packages (such as manuals, documentation, etc.). It might be a good idea to backup the old make.conf first...

Note: It is not necessary to change the previous CFLAGS and CHOST values. Note the new USE flags: everything is disabled by '-*' except the essentials: alsa, directfb, sdl, fbcon (for sound and framebuffer); nptl, nptonly, userlocales (for glibc).

Also note that I replaced several entries with "..." indicating that something should already be written there or that you need to type something of your own. Don't just write down these points!

Make sure you select the correct INPUT_DEVICES and VIDEO_CARDS from the list and remove the rest. You probably just need a graphics card ;-) Sensitive input devices are "ps2mouse linuxinput keyboard"...

For the ALSA_CARDS flag, select your card driver from the list of ALSA cards on the Alsa website:www.alsa-project.org/alsa-doc/

[cor=800000]Listing 2 Modify /etc/make.conf[/Cor]

Code: [Select]

> nano /etc/make.conf

USE="-* make-symlinks alsa directfb fbcon sdl nptl nptlonly userlocales"
USO = "mmx sse"
INPUT_DEVICES="dbox2remote elo-input gunze h3600_ts joystick teclado dreamboxremote linuxinput
lirc muttouch none permount ps2mouse serialmouse sonypijogdial wm97xx"
VIDEO_CARDS="ati128 cle266 cyber5k i810 i830 mach64 matrox neomagic nsc nvidia radeon salvaje
sis315 tdfx monochrome"
FEATURES="ccache nodoc noinfo noman"


3. Popup-Pakete em /target

In this step we will install ('emerge', in Gentoo terminology) all the main packages. First the basic system, all in one step. Of course you can open each package individually. Wait a few hours while everything compiles... ;-)

(Note the first line: baselayout-lite is not yet finalized as a Gentoo package, so it needs to be enabled in package.keywords.)

[cor=800000]Listing 3a: Emerge das Basissystem[/Cor]

Code: [Select]

> echo "sys-apps/baselayout-lite -*" >> /etc/portage/paquete.palabras clave
> ROOT=/objetivo emerge -O baselayout-lite busybox hotplug hotplug-base udev glibc

Now install the E-UAE packages...

[cor=800000]Listagem 3b: Emerge E-UAE-Pakete[/Cor]

Code: [Select]

> ROOT=/target emerge -O audio file directfb libsdl alsa-lib alsa-utils zlib e-uae[/Cor]

4. Chroot to /target and set passwords

Now that it's configured, we need to sign in to the target system to configure it. Since Linux is a multi-user operating system, each user must have a password. The "root" user is the top-level user (i.e. the administrator), so it is important to set at least the root password.

Note: 'chroot' = 'alterar raiz'.

[cor=800000]Listing 4a: Set root password[/Cor]

Code: [Select]

(Video) AMIGA Emulation On Linux Part 4 Set up hard & floppy drives & download workbench for FS-UAE, Win-UAE

> chroot /objetivo /bin/ash
> password

We also need to add a regular user. Without this step, you could only login as root. Substitute your preferred username for "username" below.

[cor=800000]Listing 4b: Add users[/Cor]

Code: [Select]

> addgroup -g username of 100 users
> adduser -h /home/username -s /bin/ash -G username

Finally, exit the target environment.

[cor=800000]Listing 4c: Exit the chroot[/Cor]

Code: [Select]

> leave[/Cor]

5. Order the base system

some filesit couldmust be added manually. Make sure the following directories exist in /target/dev (if not, copy them from your host):

/dev/fb (required for DirectFB)
/dev/input (needed for mouse)
/dev/snd (both required for ALSA)

Create /proc and /sys directories under /target (needed for udev and for shutdown and restart):

[cor=800000]Listing 5a Create /proc and /sys[/Cor]

Code: [Select]

> mkdir /goal/proc
> mkdir /goal/sys

To keep the system as small as possible, several /target directories can be safely removed.

[cor=800000]Listing 5b: Remove redundant directories[/Cor]

Code: [Select]

> rm -rf /goal/var/cache /goal/var/db /goal/var/lib
> rm -rf /target/usr/include /target/usr/lib/pkgconfig /target/usr/share/aclocal

6. Udev and hotplug

You need to download the udev init script "init-udev" for BusyBox and make sure it is present in /target/etc/init.d

Note: wget currently works, but the file name or location may change. If you need to use a browser, you can find the link to 'init-udev' atbusybox.net/cgi-bin/viewcvs.cgi/trunk/buildroot/package/udev/?rev=10953

[cor=800000]Listing 6a: Dump init-udev[/Cor]

Code: [Select]

> cd /objetivo/etc/init.d
> wget http://busybox.net/cgi-bin/viewcvs.cgi/*checkout*/trunk/buildroot/package/udev/init-udev?rev=10487

/dev is populated with device nodes at boot time, but udevstart is needed to detect new devices. Edit init-udev and comment out the line "echo $UDEV_BIN > /proc/sys/kernel/hotplug":

[cor=800000]Listagem 6b Edit init-udev[/Cor]

Code: [Select]

> nano /objetivo/etc/init.d/init-udev

#Heck do it all: Just use hotplug style again
echo $UDEV_BIN > /proc/sys/kernel/hotplug


7. tons

First, make sure sound is working properly on your Gentoo host computer! Use alsamixer to unmute the channels and adjust the levels to your liking. The next step ensures that sound is present on the Linux/Amiga system.

(Video) Besser als The A500 Mini: Amiga-Emulation in 15min mit Batocera - auch für Einsteiger [Tutorial]

[cor=800000]Listing 7 Copy the alsa configuration to /target[/Cor]

Code: [Select]

> alsactl-Shop
> cp /etc/asound.state /target/etc

8. Edit the startup script

The Amiga uses an init script, just like Linux! Here it is in /target/etc/init.d and we'll add a few lines at the end to make sure everything starts correctly. (Remember not to write these dots! They just indicate that some configuration stuff is happening.)

[cor=800000]Listing 8 Edit /etc/init.d/rcS[/Cor]

Code: [Select]

> nano /objetivo/etc/init.d/rcS

# udev start
/etc/init.d/init-udev the start

# Reset sound level
alsactl -f /etc/asound.state restore


9. Copy /start para /blank

You configured the kernel when you first installed Gentoo, so you don't need to redo it. This step simply copies /boot into the /target directory to make it bootable. /target ends up in its own partition.

[cor=800000]Listing 9 Copy /boot to /target[/Cor]

Code: [Select]

> cp -a /boot /alvo[/Cor]

10. Girlfriend stuff

Now let's create a directory for the Amiga installation and ensure that .uaerc points to it correctly.

Notice the capital 'A' in 'Amiga': Linux is case sensitive, so if you use 'Amiga' here, stick with it.

[cor=800000]Listing 10a: Create Amiga directory[/Cor]

Code: [Select]

> mkdir /goal/Amiga[/Cor]

Note that the following piece of text is extracted from the .uaerc file; It's just here to illustrate how to point to the correct directories. (As usual, ignore the '...' entries.)

[cor=800000]Listing 10b Edit .uaerc[/Cor]

Code: [Select]

> nano /objetivo/raíz/.uaerc




11. Create a separate partition for the installation

To boot it, the custom Linux/Amiga needs to be set up on a separate partition or even another drive. My primary partition (/dev/hda1) contained the main Gentoo installation, so I prepared my second partition (/dev/hda2) for the Linux/Amiga installation.

I used ext2 as the filesystem because it is unregistered and I wanted to avoid excessive disk activity. However, you are not limited to using ext2 - Linux gives you many options.

[cor=800000]Listing 11: Format and mount /dev/hda2[/Cor]

Code: [Select]

> mke2fs /dev/hda2
> mkdir /mnt/hda2
montar /dev/hda2 /mnt/hda2

(Video) euae over gluae

12. Change fstab

/target/etc/fstab must be changed... In this tutorial, we start at /dev/hda2, so fstab must reflect that.

[cor=800000]Listing 12: Change fstab[/Cor]

Code: [Select]

> nano /goal/etc/fstab

# (fs) (mount point) (type) (options)

/dev/hda2 / ext2 noatime
proc /proc Standardproz
shm /dev/shm tmpfs nodev,nosuid,noexec
tmp /tmp tmpfs noatime,predeterminado


13. Copy /destination to the new partition (or drive)

With everything set up, it's time to copy the contents of /target to the new partition or disk.

[cor=800000]Listing 13 Copy /target to a new partition[/Cor]

Code: [Select]

> cp -a /objetivo/* /mnt/hda2[/Cor]

14. Modify grub.conf

If the installation is on a different partition, there is no need to reinstall grub. You just need to change grub.conf. However, if you use a second hard drive, grubwillpowermust be installed (not covered here).

[cor=800000]Listing 14 Modify grub.conf[/Cor]

Code: [Select]

> nano /boot/grub/grub.conf

Default 0
waiting time 5

root (hd0,0)
núcleo /boot/kernel-2.6 root=/dev/hda1

title = friend
root (hd0,1)
núcleo /boot/kernel-2.6 root=/dev/hda2


15. Done!

Restart your computer, select the new 'Amiga' option in Grub and hopefully after a few seconds you will see the login prompt...

(Remember that the /Amiga directory is empty - you need to fill it with a kickstart ROM and a proper Amiga OS installation!)

To start E-UAE, write "e-uae" on the system icon.

Note that BusyBox does not have a 'stop' command; When ending your session, you must use 'disconnect'.


If E-UAE in the framebuffer doesn't work for you, you can always install xorg-x11, the complete X Windows environment. This takes about 60MB (and a few more hours of compiling). Then you have to configure... ;-)

Build the kernel without modules (for simplicity, it's usually best to compile everything into the kernel)

An alternative to opening all packages in a /target directory is to view each package in its own individual directory. First create each directory and then use 'ROOT=

surge -O'. Finally, manually copy the files to the correct locations. Why? You can see exactly which files are installed where. Some of them may not be essential. For example, it appears that not the entire glibc package is needed, just the elements in /lib. If that's the case, space can be saved. My final installation of E-UAE Linux is approximately 16 MB!

In case it's helpful, here's the directory structure of my own installation:

Code: [Select]

paper basket
to throw away
|--hot plug
from the user
|||--graphic driver
|||--Input controller
|`--Test speakers

By the way, I became root user. This is NOT highly recommended for many reasons, but it's my computer and I don't care. I edited /etc/passwd, changed my userid to 0 (root) and removed root, then removed /root. More information at:www-128.ibm.com/developerworks/library/l-roadmap4/

I also mentioned in step 11 that I prefer to avoid excessive disk activity. Consequently, I disabled system logging by commenting out a few lines in /etc/inittab

Still to do (if interested): a nice Amiga-style boot logo to match the login prompt, using /etc/issue,Logo_Linux(Registration based on 'ASCII art' text) orQingi(framebuffer-based graphical login); maybe a guide on how to start E-UAE automatically on login and disable it on logout...

I think it's possible to automate the whole end-to-end process and make it a standard installation process: pick a few options and shut down while the computer does all the boring stuff...

(Video) Emulating the Amiga inside a DOS Emulator

Comments? Error? Reserved character? My friend.org ID is "Fraccy".

(c) 2007 Amir Ansari (Fractallyte)


1. CANNON FODDER FS-UAE Amiga Emulator on MAC
(Arnau Jess)
2. Turn an Old PC Into a High-End Amiga with AmiKit X
(Dan Wood)
3. Amiga Emulator easy to use highly recommended
(Multi Retro Man)
4. Retroarch: Amiga Emulator Tutorial
5. AMIGA w/ WHDLOAD - Guide: Installing RetroArch with P-UAE on Pandora Games 3D / SAGA
(Team Pandory)
6. Revision 2019 - Seminar - PT-1210 Workshop
(Revision Demoparty)
Top Articles
Latest Posts
Article information

Author: Otha Schamberger

Last Updated: 02/04/2023

Views: 6236

Rating: 4.4 / 5 (55 voted)

Reviews: 94% of readers found this page helpful

Author information

Name: Otha Schamberger

Birthday: 1999-08-15

Address: Suite 490 606 Hammes Ferry, Carterhaven, IL 62290

Phone: +8557035444877

Job: Forward IT Agent

Hobby: Fishing, Flying, Jewelry making, Digital arts, Sand art, Parkour, tabletop games

Introduction: My name is Otha Schamberger, I am a vast, good, healthy, cheerful, energetic, gorgeous, magnificent person who loves writing and wants to share my knowledge and understanding with you.