Skip to content

Instantly share code, notes, and snippets.

@Xyphis12
Last active November 29, 2025 06:52
Show Gist options
  • Select an option

  • Save Xyphis12/1934bb91384b2a48b3583e5192d3abb6 to your computer and use it in GitHub Desktop.

Select an option

Save Xyphis12/1934bb91384b2a48b3583e5192d3abb6 to your computer and use it in GitHub Desktop.
PowerPutt Notes

Notes for My PowerPutt (Nighthawk) Hack

Here’s what I’ve done so far to try to get PowerPutt working outside of a real “Nighthawk” arcade machine — I only have the CID 21 and I/O board. I know a lot of people say PowerPutt is super picky about hardware, but since it looks like it's running something very close to Linux From Scratch, I figured maybe we can run it on more common hardware.


What I Have & What I Did

  1. I purchased a hard drive from a “Power Putt 3 course” that had a label: PP1.00.06 08-25-08 When I examined it, I saw: Nighthawk V9.11, Boot Agent V1.30, and Software 21‑V1.00.08.

  2. I pulled an image (.img) from the drive.

  3. I converted the image to a VirtualBox disk (VDI) using:
    "C:\Program Files\Oracle\VirtualBox\VBoxManage.exe" convertfromraw --format=VDI E:\pp3cdump.img E:\pp3cdump.vdi

  4. I attached the VDI to a VirtualBox VM — but it would not boot.

    LILO got stuck at:

LILO Loading ITLINUX  
…  
Decompressing Linux... Ok, booting the kernel.
  1. So, after some trial-and-error, I discovered:

    It doesn’t accept AHCI → had to switch the VM to IDE (so VirtualBox presents the disk as IDE).

    Because of that, the kernel needs to use /dev/hda instead of /dev/sda.

  2. My GRUB command line (in the VM) that does boot:

set root=(hd0,msdos2)  
linux /boot/bzImage root=/dev/hda2 rw nolapic noapic init=/bin/sh  
boot  

Interesting discovery: The init scripts look almost exactly like LFS-style init.

  1. I modified /etc/rc.d/init.d/HardDriveBuild so I can choose between SATA and IDE, because it kept forcing sda when I needed hda:
echo "Select drive type for build:"
echo "  1) SATA (/dev/sda)"
echo "  2) IDE (/dev/hda)"
read -t 10 choice  # 10‑second timeout
case "$choice" in
  1) MYDEV=/dev/sda; MYDEV_NAME=SATA ;;
  2) MYDEV=/dev/hda; MYDEV_NAME=IDE ;;
  *) echo "No selection, defaulting to SATA"; MYDEV=/dev/sda; MYDEV_NAME=SATA ;;
esac
export MYDEV MYDEV_NAME
  1. To make this bootable more “cleanly,” I used a Live CD (GParted Live) and ran:
sudo mount /dev/sda2 /mnt  
sudo grub-install --boot-directory=/mnt/boot /dev/sda  
  1. Because grub-probe wasn’t working nicely (probably due to overlays / weird mount), I manually created a GRUB config:

nano /mnt/boot/grub/grub.cfg

My grub.cfg:

set timeout=10  
set default=0

menuentry "PowerPutt" {  
    insmod part_msdos  
    insmod ext2  

    set root=(hd0,msdos2)  
    linux /boot/bzImage root=/dev/hda2 rw nolapic noapic  
    # initrd /boot/initramfs.img  # if using an initrd  
}
  1. When I boot under VirtualBox, I sometimes have to select the IDE drive a few times (because of how VirtualBox’s IDE controller is exposed), but eventually it boots.

My next step: try booting this on real hardware (bare‑metal) and see what new challenges pop up.

Update: I was unable to get it to boot on a Dell optiplex 9020. I tried ahci/ide with the root set as sda2 and hda2, no luck. I have been toying with using a more modern kernel but I suspect I'll have issues with the usb CID chip or IO board.

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