_ __ __ _
(_)__ / /_________ / /________ _______(_)
/ / _ \/ __/ ___/ _ \/ __/ ___/ / / / ___/ /
/ / __/ /_(__ ) __/ /_/ / / /_/ / / / /
__/ /\___/\__/____/\___/\__/_/ \__,_/_/ /_/
/___/
(Originally posted to Cohost on Sun, Sep 22, 2024, 10:27 PM)
New to this blog series?
This blog post will focus on more uses, like trying out newer operating systems and testing out its gaming performance.
I tried several operating systems on Omoikane, a computer with 256 MB of RAM (224 MB usable), and no SSE2 instructions. This time, I tried to put in more of an effort. NetBSD 10.0, OpenBSD 7.6, and Slackware 13.37 are the only non-Windows operating systems that worked out.
Windows 2000 and Windows XP (2001) work fine, but the latter has more software. I keep XP for playing 3D games from the 1990s to 2001.
Slackware 13.37 (2011) for studying because of its familiar environment, stability, and speed. WINE is used for some Windows XP applications.
OpenBSD 7.6 (2024) or NetBSD 10.0 (2024) for modern CLI applications, development, and internet access. OpenBSD has a better repository with less "illegal instruction" errors, while NetBSD feels like a cozier system.
Other operating systems are ruled out or are a PITA.
I probably talked about this like 200 times already, but I wanted to try something thorough this time. Less on "out-of-the-box" experience and more on how much work is needed to get it set up. Doubly so for dual-booting.
I've gave the specs before, but I'll give them again:
CPU:
mobile AMD Athlon(tm) XP-M 2600+
GPU:
S3 Inc. VT8375 [ProSavage8 KM266/KL266]
RAM: SK Hynix HYMD232M646D6-J, 256 MB PC2700 DDR-SDRAM
After installing HWiNFO, I got more information on the laptop's hardware:
BIOS Date: 1/16/2004
Memory Modules: SK Hynix HYMD232M646D6-J
On February 9th, 2012, Mesa 8.0 released, which dropped support for the "savage" DRI driver used by my laptop's S3 ProSavage8 GPU. I haven't found an OS after 2012 that can take advantage of the GPU, so they all hog the CPU, slowing down the desktop.
If picking an older distribution, the bundled GCC may be too old to compile some programs I'd want to use. Its 224 MB of RAM, which makes it, ironically, hard to compile a newer build of GCC.
If picking a newer distribution, some of the packages available won't be available (e.g. a 2011 distro may have a 32-bit build of old Blender that runs just fine, while a 2024 distro only has 64-bit builds of new, heavier Blender).
Internet support. The laptop's currently tethered to my Raspberry Pi 4 via a local-only connection, but I have a Ralink adapter around that may or may not be picked up by different OSes.
I used Windows 2000 Professional with Service Pack 4. I recall it was the first operating system I've installed on Omoikane. It felt like a lighter Windows XP, but has less programs to choose from, and earlier software compared to XP. It's also harder to find information on the web about software that supports vanilla Windows 2000, so some of them working (like Everything) was just out of pure luck.
I haven't tried any games other than ClassiCube and SNES9x, and both reported that a new enough DirectX wasn't installed, or something like that.
The laptop has a sticker that says "designed for Microsoft Windows XP", after all. My install of choice is Windows XP Professional Service Pack 3 VL.
After getting the drivers (VIA S3 ProSavage 8 DDR Video Driver and Realtek AC97 audio driver), it has GPU acceleration and audio playback. It's a little slow at times, taking about 2 minutes to start to a desktop after installing several programs (maybe I needed to defrag it?), but it has the most software available, and it's easy to pick an old or new version of a program for a task. If I didn't prefer Unix, I'd probably daily drive it. There's also support for Linux-style workspaces via Windows XP's "PowerToys" suite.
I've tested many games on it, which I documented in my notes:
Game | Status |
---|---|
Cave Story | Perfect |
ClassiCube | I can't go a blog post without mentioning ClassiCube. Did you know they made an N64 port and recently added 4-player splitscreen? Well, anyway, it runs okay, about ~15fps at a 64-block draw distance? It doesn't seem to be using hardware acceleration... |
Diner Dash | Great. A bit choppy, but that could just be the game |
Dwarf Fortress | 40d starts and runs. With default settings (fullscreen, 80x24?) it takes 2 minutes to generate a world, another minute to offload all units, and in-game performance with 7 dwarves and a river is 32-36 FPS. In windowed mode, it reaches 42 FPS. |
ePSXe | Works best with Pete's D3D Driver 1.76 (OpenGL2 crashes, OpenGL has graphical bugs). Tested with games like Slap Happy Rhythm Busters, Dead or Alive, and Tekken, the games are playable, if not full-speed if graphical settings are set to Fast and a fullscreen resolution of 320x240 or 640x480. Haven't tested many other settings. |
Grand Theft Auto III (v1.1, cracked) | After letting the game optimize textures for the video card, the game had black textures for many characters, scenery, and HUD elements (minimap) excluding Claude, pedestrians and vehicles. 8-Ball and the Old Oriental Gentleman had their eyeballs bulging out, like googly eyes. Driver issue, maybe? Gameplay runs around ~8-15fps, sometimes worse, depending on what's on screen. |
Far Cry | Does not start. GPU is blacklisted. |
Half-Life | Runs great in software mode (around ~40-55 fps at 640x480 at the opening cutscene, around ~25fps at 1024x768 in-game give or take). OpenGL mode has rendering issues. Direct3D has bad input lag |
Halo Custom Edition | Does not start. GPU is blacklisted. |
Minecraft Beta 1.7.3 | via the BetaCraft launcher. I recall downloading the important libraries on my Linux system then transferring it to the same location BetaCraft expects it on Windows XP. The game took a while to start, was able to generate a world, but seconds after spawning in the world, it ended up freezing the whole laptop. This could be related to shitty OpenGL drivers, and not lack of RAM. |
Minetest 0.2.20110922_1 | It appears to be the last "official" build capable of running. The computer froze for a few minutes and then bluescreened, similar to my experience running Minecraft Beta 1.7.3. When the game DID run, I'd say it's playable, but blocks didn't show in the inventory/hotbar, only their number. |
Minetest 0.4.12 | The builds on Calinou's site start. Software rendering runs the best but looks the worst (PSX-style wobbling). Burning's Video adds bilinear filtering to all blocks and runs like ass. Both of them have a weird dark-reddish tint to the world's blocks. OpenGL freezes the computer. I looked into llvmpipe on Windows like what ClassiCube suggests, but they fail with error code 0xc000001d (likely illegal instruction). |
OpenArena | 14.2 fps at Fastest, 640x480 |
Phantasy Star Online: Blue Burst | ~15fps at the worst, normal settings. Runs best (30fps locked) with frameskip, low settings, and 640x480. Has some z-buffer issues where some scenery objects are rendered in front of the player. |
Quake 3 Arena | 65.0 fps at min, 640x480 / 31.7 fps at min, 1024x768 / 24.9 fps at max, 640x480 / 4.8 fps at max, 1024x768 |
TES3: Morrowind | Lowest settings, 640x480. Indoors is about ~15-20 FPS depending where the player is looking. Outdoors is about ~13 FPS, give or take a few frames. |
The Sims: Complete Collection | First time, it takes about 5 minutes and 30 seconds to load the first time, and another 2 minutes and 30 seconds to load into a new lot, possibly due to the content expansions. Framerate ranges from the 20s to 60 FPS depending on what's on screen. |
Unreal Tournament | High settings at 640x480, 25-40FPS for a 16-player bot match on Morpheus, averaging around ~30 FPS most of the time. Looks better than the Dreamcast port and runs at least twice as better. |
Unreal Tournament 2004 | Estimates around ~7-15 FPS at the lowest settings. I consider it playable and impressive for the aging hardware. |
It's possible that the laptop's GPU has poor OpenGL support. Half-Life chugs with graphical bugs, ClassiCube/Minecraft/Minetest all crash if I use their OpenGL builds, and Slackware 13.37 (coming up) lacks 3D acceleration.
What's the newest version of Slackware I can run? Either Slackware 14.1 (2013), or 14.2 (2016) if I lower the shared GPU RAM from 32MB to 16MB or lower. 13.37 is the last one that works out-of-the-box: video drivers, audio, video playback, power management, and a dual-boot/triple-boot setup.
13.37's age may be a good thing since I can download and install software from SlackBuilds that'll run just fine, but many programs I've found were older than its equivalents on Windows XP, and sometimes the original source code for a SlackBuild isn't available, so I had to search the web for the file and make sure its checksum matches. I found a whole directory of 13.37 SlackBuilds here.
If the packages available from 13.37 are too old, I've found some
packages that worked through 14.1's SlackBuilds (like Anki 2.0.33), or
packages compiled from source (like Atari800, cc65
,
dasm
, vim
, etc) if needed. However, my Wi-Fi
USB isn't picked up, and both GCC and the kernel are old. I can compile
GCC 4.8.2, but it's not worth the effort, imho.
WINE also works, the latest I've tested being 1.8 from 2015 (also from a 14.1 SlackBuild), but the latest that can compile from source without updating my dependencies is 2.22 (untested). I used 1.8 for "edge case" programs that I'm too lazy to compile, usually Windows XP applications like VirtuaNES and Anki 2.0.52, just as long as they aren't compiled with SSE2.
(See also: "Win32 is the Only Stable ABI on Linux" from ivyl's blog)
GPU acceleration is piss-poor for 3D gaming (Mesa reports it's using software rendering). I assume my GPU lacks good OpenGL support.
ioquake3 runs noticeably way, way worse than Quake 3 on Windows XP.
ClassiCube, compiled from source, runs worse than Windows XP (~7 FPS on Tiny, ~2-3 FPS on far).
Minetest is only playable via WINE and software
rendering (~3-4 FPS), and fortunately lacks the reddish tint that
plagues it on Windows XP. The native release fails to boot with a
"BadDrawable" OpenGL error. Enabling
LIBGL_ALWAYS_SOFTWARE=1
does not help, but enabling
LIBGL_ALWAYS_INDIRECT=1
does, in which it gets to the menu.
Starting a world crashes the game with a "segmentation fault" error.
Dwarf Fortress is great. 40d19 (forum thread has native Linux support. It runs better than 40d through WINE (which was around ~14FPS). I'd say it even beats running 40d on Windows XP, but set the graphics to "2D" or it'll run like ass syrup.
I already know cc65 works fine so let's just talk about Raylib.
Raylib is a library for developing 2D or 3D games in C (and other languages via bindings). I feel it is lower-level than similar options like Love2D/TIC-80 that use Lua, but it's still rewarding, and what I use to practice my C programming.
Compiling with Slackware's built-in GCC gives the error "unrecognized command line option '-ffp-contract=off'". I compiled LLVM 3.3 from source via Slackware 14.1's official SlackBuild, edited Raylib's Makefile to point to "clang" as its default C compiler and OpenGL 1.1, and it compiles just fine in under a minute. But compiling and starting examples give me an "illegal instruction" error (which I also noticed when compiling ClassiCube with LLVM 3.3).
I investigated it and it's obviously a problem with LLVM, or at least its defaults. A similar bug was mentioned on Stack Overflow.
Fortunately, Bellard's Tiny C
Compiler could compile Raylib. I encounter the same OpenGL startup
error as native Minetest, with the same solution
(LIBGL_ALWAYS_INDIRECT=1
). However, while the basic window
example works just fine, the split-screen example gives me two black
screens with two "framebuffer object can not be created" errors.
On the plus side, I was able to compile a 2D prototype I wrote. While Love2D 0.8.0 was also an option on Windows XP, it ran like molasses.
Not tested, but I already have a feeling I know how it's going to go:
btrfs
support and
zram
Not tested. Another distribution from around the same time as Slackware 13.37, and an alternative option.
From what I've seen, its repository is small enough to fit on 8 DVDs (or 51 CDs) and can be installed entirely offline.
Graphical installer fails to boot, but text-only installer boots just fine. My Wi-Fi USB is also picked up if I use the CD image incl. firmware.
It picks up on my Windows XP install during the boot loader step, but
ultimately fails to install GRUB to the MBR. I can install GRUB to
/dev/sda
anyways after skipping the step, but it refuses to
boot to the OS. After attempting to install Alpine and installing
NetBSD, I figured this may've been because I had TWO active
partitions.
My original plans were that, after installing and skipping the mirror
step, I would point /etc/apt/sources.list
to the distribution archives
to download packages.
The latest version of Alpine Linux that doesn't require SSE2. Boots up fine under 256 MB of RAM.
Install: A wee bit of a pain for a
dual-boot/triple-boot setup. I have to follow its dual-boot tutorial,
mount my filesystem in /mnt
, and create a
/mnt/boot
directory (otherwise it won't be able to
boot).
Internet: It supports my Ralink Wi-Fi USB very well.
Repository: Tested in a live environment. Many
programs like micro
, amfora
, and
gomuks
(all developed in Go) give "illegal instruction"
errors.
Power management: Non-existent.
cpupower
does not work. Apparently the PowerNow! driver
isn't loaded, or fails to load (even with
modprobe powernow_k8
), giving me a "could not insert
'powernow_k8': No such device" error. Even after installing
amd-ucode
. I don't want to waste energy with the laptop
doing nothing, so Alpine is completely ruled out.
What in the toaster is this? NixOS 23.11 (I think the last version with an x86 ISO) boots up. The live environment works well, but it kernel panics during the install, even after being given 256 MB of swap. Of all the distros I expected to boot on here, NixOS was not one of them.
Pretty easy to set up, and surprisingly... works. By far my favorite modern OS to toy around with, but I'm scared it'll explode in my face. This is so long it could probably be its own blog post in itself.
Install: The installer reported that my laptop lacks strong entropy generation.
Internet: It supports my Ralink Wi-Fi USB (via
run
driver). It disconnected once.
Repository: Its repository
contains modern software, and I use pkgin
to download
precompiled binaries -- a breath of fresh air coming from Slackware
13.37 and many programs requiring up-to-date dependencies or failing to
compile. This means I can:
Browse the modern web with NetSurf
Develop games with up-to-date versions of GCC and SDCC
Some other programs are available (like cc65, dasm, and Vim) that I can also compile from source on Slackware, but it's nice to have the option to download them on here
Not every program works. Profanity (XMPP client) gives a segmentation fault error. Amfora & Bombadillo (Gemini browsers) and micro (text editor) report "illegal instruction (core dumped)". Not surprised, as this also happened when testing Alpine.
Audio: Audio works fine OOTB. I can play music
(MP3 and Opus) via mpv
. I can watch my libx264 480p
Nichijou intro with some choppiness.
Dual-booting: Dual-booting and triple-booting
works. I had to set the NetBSD partition to active, and gave each
partition (Windows XP, Slackware, and NetBSD's) names via the
bootmenu
option. Don't make the same mistake as me and make
all of them active partitions, or your computer will fail to
boot.
Hardware acceleration: There's no hardware
acceleration (neofetch
reports the GPU as "llvmpipe"), so
the desktop is noticeably delayed and choppy when moving windows (a
tiling WM may help). Changing Xorg's driver to "vesa" makes the desktop
appear smoother, but I feel like it also makes performance for video
playback worse and gives me a black screen with no cursor after closing
the desktop.
Graphical desktop (GUI): IceWM has been my
primary WM. i3wm worked at first, but after restarting it, the i3bar
didn't appear a second time. Considering how slow the desktop can be at
times, I don't recommend using it. Will be updated in a
bit.
sshfs: My shared sshfs
directory
(from the Pi 4 to the laptop) also disconnects from time to time, so it
has to be mounted again. I never had this problem on Slackware.
Interestingly, superuser privileges is also required for mounting
it.
Power management: The laptop is at 100% power
usage, expelling heat and using its fan, but power management can be
enabled manually. My choice has been installing
and enabling estd
as a service in
/etc/rc.conf
which manages power via software. The
laptop quiets down, much like with Slackware.
To summarize, I'd use NetBSD for modern tasks that can be done through the command-line, and Slackware for anything that requires 3D acceleration or for hitting the "sweet spot" of software that still runs fine on the laptop.
(See also: "If you're happy with OpenBSD, probably any computer is good enough" by Connor Oliver)
A surprising competitor to NetBSD, surprising considering it was forked from NetBSD in 1995.
Install: My previous attempt led to me wiping my entire hard drive by accident, not knowing that the (w)hole disk option would take effect immediately. If you play with fire, you're getting burned. Other than that, just create a partition, give it the OpenBSD data flag, and the install is fine, though the relinking step will take several minutes.
Internet: OpenBSD picks up on my Ralink, too. I had problems with it during the installer a couple times, but it worked after boot.
Repository: From the perspective of Omoikane, its repository is similar to that of NetBSD's. It provides many of the same packages I've praised such as dasm and SDCC, though some are new (Anki and Syncthing), and some are missing (cc65). UNLIKE NetBSD and Alpine, however, the packages are compiled without SSE2 support which means Profanity (XMPP client), Gomuks (Matrix client), and Amfora and Bombadillo (Gemini protocol browsers) all work, and other clients (like micro) are not available, most or all of which would've given "illegal instruction" errors on NetBSD and Alpine Linux.
Audio: Works out-of-the-box. Tested with
mpv --no-video
.
Dual-booting: I may be mistaken, but OpenBSD
didn't ask to set it up during the install. I could set it up through
LILO on Slackware 13.37's site by editing /etc/lilo.conf
to
give OpenBSD the same pattern that Windows and Slackware use (e.g. this
but /dev/sda3
/ /dev/sda
instead of
/dev/hda4
/ /dev/hda
) and running
lilo
to confirm my changes.
Hardware acceleration: Likely no, similar to
most modern Linuxes and NetBSD. Interestingly, htop
reports
less RAM used than NetBSD, but NetBSD could be more aggressive with
"unused memory being wasted memory",
GUI: It doesn't work out of the box (I get a
garbled terminal when xenodm
boots). What worked was
writing a simple Xorg config, telling it to use the "savage" driver, but
set the "UseBIOS" option to "false". If "vesa" is used as the driver
instead, the screen gets "flashbanged" (white screen, with a bit of a
"bleeding" or "leaking" effect) if I log out, presumably due to the
laptop failing to switch modes. The rest of the drivers I've tested
refused to boot.
sshfs: Not tested, but sshfs-fuse
is available in the repository. The Ralink is unstable on *BSD (I'll
talk about it below) so it may struggle to stay connected.
Power management: Like NetBSD, the laptop is at
100% power usage. Installing, enabling, and starting
obsdfreqd
manages it similar to default Slackware and
estd
in NetBSD, calming the laptop down when not in
use.
The caveat: Maybe I ask for too much, but I don't like my terminal getting bombarded with "ehci_sync_hc: tsleep() = 35" messages and my Wi-Fi USB (run0) giving me a "device timeout". The latter seems to be the fault of Ralink, however, and a possible occurrence on NetBSD too.
I feel NetBSD is friendlier and has cozier defaults (plus orange is my favorite color), but OpenBSD has a much better repository that's not as trial-and-error. NetBSD works just fine out of the box, while OpenBSD feels well worth the effort getting it working. It's hard to choose between them (even given OpenBSD's "caveat"), so I give them a tie.
Alpine Linux 3.20.3: Requires SSE2 since 3.17, so this is a no-go. Trying to boot it results in an "illegal instruction" error
AntiX 23.1: antiX killed a process during its install due to the lack of RAM. I felt uneasy, so I didn't continue
Debian: 10 gives a low memory warning during install. 11 gives an insufficient memory error. Let's not even talk about 12
Gentoo: The install media doesn't boot for me, so I considered using another live environment to set it up. Not a big fan of compiling every package on this computer, nor do I feel like setting up distcc, because at that point, why not just use another computer?
Haiku: As of October 2024, Haiku states in its FAQ that it requires 384 MiB of RAM or more, with 512 MiB being recommended. According to a Reddit post, it seems hard to get it running under less than 512 MiB of RAM. I didn't want to waste a disc on this, so I ruled it out
Void Linux: Requires SSE2.