What Linux apps would you like me to try to get running on PowerMac G5 (besides web browsers)? I’ll work on finishing the LibreOffice port this weekend. That’s pretty important to have. I ran into some “illegal instruction” problems with a crypto library LibreOffice depends on. https://twitter.com/jhamby/status/1324794511260676096
After I work on Firefox, Chromium, and LibreOffice, there’s Electron, which shouldn’t be too difficult to compile since it’s just Node.js + Chromium components. How hard is it to swap out the Electron runtime from an app like VS Code? Can I just modify the Linux/x86-64 version?
I’m going to try to build all of the apps from Ubuntu Studio for audio, graphics, publishing, photography, video, etc.. See the list of apps they bundle here: https://ubuntustudio.org/tour/ 

The G5 was one of the best CPUs for Adobe apps, and I want to show off the power of AltiVec.
I made a GitHub project to keep track of all of my known issues for Linux on PowerMac G5/G4/G3, but I still need to populate it with bugs. I know GNOME and KDE desktops have major issues making them unusable, but all of the “lightweight” desktops I’ve tried seem to mostly work.
I set the USE flags for GNOME + systemd, and added a few of my own, so everything is being compiled for Pulseaudio, D-Bus, and the other subsystems that are built on top of Linux to make it more desktop-friendly but still secure and multiuser.

Audio is working for me on the G5.
I did have to find the right Pulseaudio mixer applet to switch the audio routing and set the volume, but once I did that, I had no problems with DOSBox playing 8088 Domination or even Second Reality. The power of emulation!
I’ll be sure to include the latest versions of the JDK and Mono, for the .NET fanboys/girls/enbies.

There might actually be some interest in .NET these days with Microsoft open-sourcing more of it. I could try to get .NET Core running, but does it support non-x86 on Linux yet?
I know Java 8 from OpenJDK seems to work fine on the PowerMac G5, and there’s an ebuild for Java 11 that I think is masked out somewhere. I just learned Java is up to version 16 now, but the Android world is basically frozen at Java 8 (and Dalvik bytecode).
So I haven’t really concerned myself with building anything newer than Java 8 with the latest patch release.

Mono (the open-source .NET implementation) definitely supports PowerPC, which means maybe indie gamers could port their Unity games to PowerPC? https://en.wikipedia.org/wiki/Mono_(software)
I wouldn’t want to get anyone’s hopes up, though, about having any sort of decent 3D game framerate on a PowerMac with the video cards of that era, but who knows?

I just remembered a lot of Windows demos from the mid-2000s were written in .NET and Direct3D. Could Mono run them?
Do you suppose a PowerMac Quad G5 could play “Lifeforce” by ASD from 2007?

That one seems to be in native code, but maybe with Wine and JIT CPU emulation? http://www.pouet.net/prod.php?which=31571

#RetroComputing #demoscene
Anyway, I’m very enthused by the enthusiasm that other enthusiasts have about the PowerPC systems that we can all actually afford (as opposed to a nice new POWER8 or POWER9 that costs as much as a new Mac Pro).

I think a lot of people would love to just have all the emulators.
I’ve tweeted this many times before, but I have a very strong ideological motivation to encourage as many people as possible to preserve and continue using the old computers that we can still use, instead of needlessly turning them into e-waste.

PowerMacs are very beautiful.
I really need to install Void Linux, now that I know there’s a PowerPC fork that’s targeted for my system: https://docs.voidlinux-ppc.org/installation/base-requirements.html

It uses the new ELFv2 even on big-endian. But should I choose “ppc64” or “ppc64-musl”? Musl is a replacement for glibc. https://docs.voidlinux.org/installation/musl.html
I think I’ll stick with glibc for now. I really don’t want to have to make patches to handle musl not having C APIs that apps would like to have.

In fact, part of the patch I just made for Node.js was to use getauxval() in CPU detection if the glibc version is 2.16 or newer.
One of the things I plan to do, now that I have a stable Gentoo Linux installation with the latest versions of everything, is to run a suite of Phoronix benchmarks that I’ve previously run this year on my other retro machines: https://openbenchmarking.org/user/jhamby 
I even have some benchmarks from an z15 mainframe partition on the IBM LinuxONE Community Cloud. Those are pretty impressive machines, if you need that much computing power in one place. 64-bit big-endian as well. The pre-2000 era mainframes are 31-bit (1 bit for compatibility).
The original System/360 architecture in the 1960s had 24-bit addressing, much like the Motorola 68000, which lets a program address up to 16MB, which seemed like a lot back then.

So IBM had to upgrade the address space, first to 31 bits (with 1 bit for compatibility to 24-bits).
I don’t know the details offhand as to why they thought that would be a useful way to do it. Apple went through some serious compatibility pains when they decided to use the top 8 bits of the 32-bit pointers to store flags, thinking no-one would need more than 16MB RAM. Whoops.
The original MacOS distinguished itself by using handles everywhere, instead of direct pointers, so that the OS could defragment the RAM while apps weren’t looking and move the pointers around. When later CPUs used all 32 bits for addresses, Mac devs had to patch lots of code.
That was the source of the “32-bit clean” vs. “dirty ROMs” issue that m68k owners with 68020 or newer CPUs had to deal with circa 1990. https://en.wikipedia.org/wiki/Classic_Mac_OS_memory_management#32-bit_clean

AmigaOS was smarter, but quite a lot of Amiga apps written in m68k assembly had the same crashing bugs on newer Amigas.
The Linux name for the current IBM mainframe architecture is “s390x”. https://en.wikipedia.org/wiki/Linux_on_IBM_Z

There’s a QEMU full-system emulator for it, in case you feel like installing a mainframe Linux distro at home and running it faster than Hercules likely will. https://wiki.qemu.org/Documentation/Platforms/S390X
Still, I’m curious to see how well a 2.5 GHz 2 x PPC 970MP system from 2006 can perform on emulating big-endian systems. I’ll definitely try out FS-UAE with the Amiga images I made earlier in the year, since it compiled for me without issue, but I don’t want to set it up again.
You really want to use the fs-uae-launcher Python GUI with FS-UAE. I have no idea how to configure it from the command line.
The more I read about @VoidLinux, the better-suited it seems to be for my PowerMac G5 running purposes. Since I have plenty of disk space on the 2TB drive (as well as a 500GB drive), and APM partition tables support lots of partitions, I can put it alongside my existing Gentoo.
I know the PowerPC/Power ISA fork is unofficial, but they’re solving exactly the problem I’m trying to solve: supporting G3, G4, and G5 era PowerMacs with a stable OS foundation. It’s very fortuitous because I’ve always known I need to focus on making a good GUI/text installer.
I didn’t want to have to spend many hours of my time figuring out how to transition from ELFv1 to ELFv2. I also knew that Gentoo’s python build scripts are less than ideal, but I didn’t have a good idea for something better.

Void Linux Wikipedia page: https://en.wikipedia.org/wiki/Void_Linux 
I don’t know anything about the XBPS package manager, but since it’s inspired by NetBSD’s pkgsrc, which I already like, and it was created by a former NetBSD developer, I except that it will do exactly what I’m hoping for it to do: make it easy to build packages from source.
Expect, not except. Also, Void Linux supports six different desktop environments, all of which people like, and all of which I expect to work well on PowerMac, unlike GNOME 3 or KDE, which I know don’t run well on PowerMac.

Cinnamon, Enlightenment, LXDE, LXQt, MATE, and Xfce.
Oh, and Void Linux already has a live image and an ncurses-based text installer, so it’s 95% of the way to what I wanted to build. The last 5% will be getting the video drivers working, fixing PowerPC-specific issues, adding packages for missing apps, and partitioning/booting.
While I’ve been tweeting, my port of Node.js v15.1.0 has been building, and miraculously, it runs! Now I can try to build Firefox.
jhamby@gentoog5 ~ $ node
Welcome to Node.js v15.1.0.
Type ".help" for more information.
> .help
.break Sometimes you get stuck, this gets you out
.clear Alias for .break
.editor Enter editor mode
.exit Exit the REPL
.help Print this help message
.load Load JS
…from a file into the REPL session
.save Save all evaluated commands in this REPL session to a file

Press Ctrl+C to abort current expression, Ctrl+D to exit the REPL
> .exit

No crashes! Amazing.
While Firefox 82.0.2 is building on the Quad G5, I’m going to work on installing Void Linux for PowerPC to the 450 MHz PowerMac G4. It’s the slowest PowerMac I own and I want to see how well it can perform with a modern Linux distro. https://voidlinux-ppc.org/ 
I see now why Void Linux for PowerPC decided to go with ELFv2 on big-endian 64-bit PowerPC (besides performance): the musl C library only supports ELFv2 on ppc64, not ELFv1 (with its function descriptors and other weirdness).

I’d prefer to ultimately use ELFv2 for my G5 images.
You can follow @jhamby.
Tip: mention @twtextapp on a Twitter thread with the keyword “unroll” to get a link to it.

Latest Threads Unrolled:

By continuing to use the site, you are consenting to the use of cookies as explained in our Cookie Policy to improve your experience.