Dmitiry Grinberg är en hackare som bland annat drog uppmärksamhet till sig på årets upplaga av Defcon-konferensen. Han blev utslängd mitt under ett pågående föredrag om den mjukvara han hade designat till konferenens deltagarbrickor, som drevs av RP 2350 och bland annat hade en inbyggd Game Boy Advance-emulator.
Nu är han hur som helst tillbaka med ett nytt projekt: Att köra Linux på världens första mikroprocessor.
Intel 4004 lanserades 1971 och var världens första kommersiella CPU. Själva kretsen består av ynka 2 300 transistorer som kör med en klockfrekvens på 740 kHz. Den brukar klassas som en 4-bitarsprocessor, men använde 8-bitars instruktioner och 12-bitars minnesadresser.
Emulerar nyare processor
Eftersom Linux-kärnan kräver en 32- eller 64-bitarsprocessor som det måste gå att kompilera C-kod till blev Dmitry Grinberg tvungen att emulera en annan, mer avancerad processor på Intel-kretsen. Valet föll på MIPS R3000. Andra arkitekturer hade antingen olika problem eller så fick de inte plats på 4 KB kod. Det visade sig vara mer komplicerat än väntat, bland annat eftersom 4004 saknar logiska operationer. För att utföra vanliga operationer som AND, OR och XOR krävs tiotals aritmetiska operationer.
Med hjälp av ett hembyggt moderkort med ytterligare nödvändiga kretsar och en hel del kod lyckades han få igång en barskrapad version av Debian med en rudimentär ”skärm” som visar utmatning i en terminal. Med processorn överklockad till 790 KHz tog det först nio dagar att starta systemet, men med lite optimering fick han ned det till ”bara” 4,76 dagar.
Dmitry Grinberg skriver detaljerat om hur han gick tillväga på sin blogg.