While Linux has been ported to numerous devices over the past decades, the oldest 8-bit home computers were left out of this trend. However, a developer recently reported a successful attempt at running the open-source operating system on the legendary Commodore 64.
The developer achieved this by taking the Linux version compiled for RISC-V architecture and using a “semu” emulator designed to run codes for the said architecture. With the help of LLVM-MOS, the emulator was translated to the MOS 6502/6510 instruction set used by the Commodore 64. Though through emulation, it became possible to operate the open-source system on the classic hobbyist computer.
The challenge was the C64’s built-in 64 KB memory, which was insufficient for loading the Linux kernel. The developer addressed this by connecting a RAM expansion unit to the computer. While such expansions were available for the Commodore 64 in the past, they were rarely utilized due to the limited demand from applications four decades ago.
Ultimately, the Linux-loaded C64 became operational with the expanded memory. The main drawback, however, is the slow performance since the Commodore 64’s processor runs at less than 1 MHz (approximately 4-5000 times slower than a modern CPU). Consequently, the open-source kernel operates remarkably slowly, taking about a week to boot on a real C64 without using an emulator or drastically increasing the CPU’s virtual clock speed.
In practice, the usability of Linux on the Commodore 64 is quite limited due to its sluggish performance. Yet, the significance lies in the accomplishment itself rather than the practicality. Interestingly, a similar solution could potentially enable kernel execution on other vintage computers with comparable processors, such as the Apple II, BBC Micro, or Atari 800.