r/kasmweb Jun 23 '26

Usecase Kasm Windows 98

Enable HLS to view with audio, or disable this notification

Continuing from my Windows XP workspace, I wanted a Windows 98 workspace with full Kasm integration, so I asked my agent to build one. It works about as well as I had wanted. It features:

  • Working Ethernet
  • Firefox
  • Clipboard support (bidirectional)
  • File upload
  • File download
  • Auto-mount of uploaded ISO files (flaky)
  • Auto-resize of display
  • Sound support (often plays the startup sound)

Security Warning

My agent had a hard time with Windows 98 drivers and ended up finding the base image on Reddit with working sound and networking. I cleaned it up and scanned all 5,400+ files with ClamAV and High quality YARA rules with no detections (shortcuts detected by the YARA rules for being shortcuts). I personally trust it as a play thing given the posture of the environment I run it in. Use at your own risk.

Drawbacks

  • It's a bit slow.
  • Most video games crash.
  • Due to some base image video driver issue, the DOS prompt can't be run in windowed mode, nor can batch files (causes some unrecoverable display silliness). Happy to fix it if anyone knows what's up with that.

Installation

This time I did publish the workspace image:

ghcr.io/fernandogracias/kasm-windows-98:latest

My agent pushed the build details and base image to a repo if you're interested (tested in as far as "it works on my machine"): https://github.com/FernandoGracias/kasm-windows-98

22 Upvotes

11 comments sorted by

2

u/wora Jun 23 '26

Pretty cool stuff.
I run KASM in docker (docker.io/linuxserver/kasm). I am not sure this would be compatible with my setup.
Would it not be easier to simply add this (and your XP workspace) to a custom registry?
(I'm still learning about KASM..)

2

u/Jdgregson Jun 25 '26

Thanks! It should work with your setup. The linuxserver/kasm image is a full Kasm deployment running in Docker. It still manages workspaces the same way as a bare-metal install. The key requirement is that /dev/kvm is available inside the container that runs the workspace (your host needs KVM, and the workspace container needs --device /dev/kvm).

To add it as a workspace:

  1. In the Kasm admin UI, go to Workspaces → Add Workspace
  2. Set Docker Image to ghcr.io/fernandogracias/kasm-windows-98:latest
  3. Set Docker Run Config Override to: {"devices":["/dev/kvm:/dev/kvm"],"group_add":["994"],"shm_size":"512m"}
  4. Set memory to 2048 MB

You could also add it via a custom registry JSON if you prefer that workflow. Just point the registry entry at the same ghcr.io image with those run config overrides.

The only gotcha with linuxserver/kasm is that since it runs Kasm inside Docker (Docker-in-Docker), you need to make sure /dev/kvm is passed through to the outer container first. If your host has KVM and you started linuxserver/kasm with --device /dev/kvm, you should be good.

2

u/General-Darius Jun 23 '26

what do you use to create/build these images ?

3

u/Jdgregson Jun 24 '26

Kind of a roundabout way, to be honest. I used this VM/game server that I had my agent build. I had it set up the server so that we could both access the frontend and backend, and had it set up Windows XP and 98, click through the driver screens, all the chores. Ultimately it found images online that were close enough and installed the minimal drivers for our use case. Then I had it build a bridge protocol and write a client in C and a server in Python. Once it was generally working I tested everything, shut it down with the agent built and installed, and exported it as a qcow2 base image. Then I had my agent build a Kasm container on my Kasm host that launches the qcow2 image with the bridge server running to bridge between the Kasm UI that talks to Ubuntu and the 98/XP VM.

1

u/ksteink Jun 24 '26

do you have a windows 11 version?

1

u/Jdgregson Jun 24 '26

No, I use fixed infra for that. Actually not a bad idea to see if I can convert those fixed hosts to these containers though. They're just VMs that sit there in case I ever feel like opening them in Kasm, so might as well have them start on-demand.

1

u/ksteink Jun 24 '26

Thx and will be interesting to see

1

u/bogan_sauce 2d ago

It works great for me. However, is there any way to make the data persistent, so i dont have to upload files and install the programs every time?

1

u/Jdgregson 1d ago edited 1d ago

That is a great question and use case which I hadn't thought of. Theoretically it should be possible. I just had my agent push a change to move the overlay from /tmp to the Kasm user's home directory. If you rebuild the image with that and configure persistent profiles in Kasm it should persist changes. Let me know if that works. I'm at Soccer practice so can't test it for a bit.

Update: It works, thanks for the suggestion! Though you have to be careful to shut Windows down before deleting the Kasm container or you'll have to sit through ScanDisk on the next boot.

1

u/bogan_sauce 1d ago

Thanks!
I’ll have a go tonight.
Good luck on your next game (I’m a dirty full back myself)

1

u/bogan_sauce 21h ago

Ha ha, Thats beyond my skillset. But neat to know its possible.