Booting AmigaOS 4.1 on QEMU with BBoot

This page is about running AmigaOne or PegasosII versions of AmigaOS 4.1. For other operating systems see the main page.

Prerequisites

  1. AmigaOS 4.1 AmigaOne or PegasosII version. Preferably 4.1 Final Edition (AmigaOneInstallCD-53.54.iso or Pegasos2InstallCD-53.54.iso) but older 4.1 versions should also work (tested with 4.1 Update 1 Peg2InstallCD-Upd1.iso). This is commercially available from Hyperion Entertainment or retailers,
  2. A QEMU version that emulates the right machine: at least v8.2.0 for amigaone or for pegasos2 machine at least v8.1.0 but the latest version is recommended. See main page for details..
  3. The siliconmotion502.chip driver for AmigaOS Kickstart, at least version 53.9 or newer. This can be found in the Sam460ex version or in AmigaOS4.1Update3.lha update 3 for original AmigaOS 4.1 (not FE). This driver also needs PCIGraphics.card version 53.9 or newer which is already on the 4.1FE install CD. (Only AmigaOS 4.1 versions before Final Edition may need this to be updated. A new enough PCIGraphics.card version can be found in AmigaOS4.1FinalEditionUpdate1.lha update.) The latest SM502 driver is available on OS4Depot but version 53.12 does not work with 4.1FE without updates 1 and 2 so it cannot be used with the 4.1FE install CD. You can use it after installing 4.1FE Updates 1 and 2 after first using older 53.9 or 53.10 driver for installation.
  4. My BBoot boot loader at least version 0.6 but latest version should work for all..

Step 1: Preparing boot files for BBoot

  1. Copy the whole System/Kickstart directory which contains the kernel and all modules from the install CD to a temporary place where it can be modified. You should end up with a Kickstart directory containing the contents of System/Kickstart on the CD. Beware, there's also a Kickstart directory with just a Kicklayout file in it at the root of the CD but that file has wrong paths so ignore it and only use files and the Kicklayout from System/Kickstart directory on the CD.
  2. Copy siliconmotion502.chip to the Kickstart directory. (If PCIGraphics.card is older than version 53.9 then update that to a newer version as well. This is only needed for AmigaOS version less than 4.1FE.)
  3. Modify Kickstart/Kicklayout to add the SM502 driver. Add a MODULE line for siliconmotion502.chip right after where other chip drivers are loaded after PCIGraphics.card. (The PCIGraphics.card is already there so no change is needed for that even if it had to be updated to newer version.) The result should look like this:
    MODULE Kickstart/PCIGraphics.card
    MODULE Kickstart/ATIRadeon.chip
    MODULE Kickstart/3dfxVoodoo.chip
    MODULE Kickstart/siliconmotion502.chip
    
    If you see files listed as System/Kickstart/PCIGraphics.card instead of Kickstart/PCIGraphics.card then you are editing the wrong file, go back to step 1. above. Some other chip drivers may also be present depending on your AmigaOS version. No need to change or remove those, just make sure there is a line for the added SM502 driver. Make sure file names match upper/lower case in Kicklayout as they are named on disk. In particular SFSFileSystem is sometimes written as SFSFilesystem which may be a problem as BBoot is case sensitive.
  4. Create a zip file of the whole Kickstart directory. E.g.
    zip -r Kickstart.zip Kickstart
    
    The zip file should also contain the Kickstart directory with files under it not only the files from it.

Step 2: Booting AmigaOS

  1. Create a hard disk image for the virtual machine: For example:
    qemu-img create -f raw amigahd.img 1G
    
    that creates a 1 gigabyte image file.
  2. Start QEMU with the hard disk image and the installation CD-ROM. The command line for this for pegasos2 is:
    qemu-system-ppc -machine pegasos2 -rtc base=localtime \
      -serial stdio -vga none -device sm501 \
      -drive media=disk,format=raw,file=amigahd.img \
      -cdrom Peg2InstallCD.iso \
      -kernel bboot -initrd Kickstart.zip
    
    for amigaone machine:
    qemu-system-ppc -machine amigaone -rtc base=localtime \
      -serial stdio -vga none -device sm501 \
      -drive media=disk,format=raw,file=amigahd.img \
      -cdrom AmigaOneInstallCD.iso \
      -device loader,cpu-num=0,file=bboot \
      -device loader,addr=0x600000,file=Kickstart.zip
    
    From here installation should be the same as on real machine.

Running the installed system

After instalation the system should boot with same command as above with -cdrom option removed. After installing updates which changes SYS:Kickstart the same steps are needed as in Step 1 to update the Kickstart.zip so don't forget to add the siliconmotion502.chip driver, make zip file of Kickstart dir and copy the modified zip from the updated machine before rebooting as the updated system may not boot with the old Kickstart.zip.

On amigaone UDMA mode for IDE devices is not enabled by default and U-Boot environment variables are not emulated yet so this can be enabled by adding a command to startup-sequence:

idetool >NIL: -x a1ide.device 0 69
This enables UDMA for IDE device 0 (first hard disk) for more devices similiar line is needed, e.g. a1ide.device 2 refers to secondary master (usually CDROM drive). One can check current xfer mode with idetool -u a1ide.device 0 and so on for up to device 3.

See Pegasos2 install page for alternative method using original firmware ROM and known problems at the end of that page or main page for more information.