This may as well be an “aspirational” (is that word? maybe) project since I don’t know if it will work. Some of these sorts of things I do not so much because I think it will succeed or I’ll finish it but as a way of learning something specific.
I remember around 2005 or so when certain enthusiasts were getting tired of XP already (and Vista was still a ways off) some people would try and modify Server 2003 to work as a workstation. At the time the belief was that Server 2k3 had a more advanced/enhanced version of the XP windows kernel and was therefore better. I actually tried this “Workstation 2003” setup for a while but it didn’t end up working out (certain programs like anti-viruses would refuse to install as Server required a different license, among other issues).
Something similar was tried with server 2008 when large swaths of enthusiasts decided Vista was not going to be a thing. A customized Server 2008 OS ran really well lacked many of the Vista annoyances. I think Windows 7 effectively killed that kind of enthusiast experimenting. And I think Linux desktop became that much easier to setup and use it was no longer necessary.
This only leaves me: I never did adopt Windows 8.x but I did learn of the existence of Hyper-V Server 2012 that came out alongside Windows 8.x. Have already had a little experience with customizing GUI-less windows setups various WinPE setups (like Bart’s PE and the first version of WinPE based on Vista) I thought it would be possible to re-configure Hyper-V Server as my own customized windows.
Well it’s been a few years since Hyper-V server 2012 but I’m still thinking about it.
I actually made a little bit of progress. Kind of reminded my of the late 90s and me playing with different “shells” for Windows like LiteStep. If you’ve never heard of that there’s good reason as no one has. Although I did run across some biomedical equipment that was using LiteStep as a shell. I thought that was hilarious.
What’s the point of doing something like this? Well it would be a way for me to completely customize the entire system. I could make an eclectic mix of of GUI and CLI for instance, completely customizing what makes the system.
In theory I could also make a very specialized Windows installation for specific purpose. For instance I make it load straight into a front-end like LaunchBox or Steam Big Picture mode and I wouldn’t have to worry about a trial of office or a random mobile game downloading in the background. In fact a customized Hyper-V Server 2019 would effectively be windows 10 without all the stuff everyone hates about windows 10. It would also exclude some things people like about windows 10 but hopefully that can be worked around. And some basic things as well like being able to easily remove a usb storage device safely. Little things like that you kind of take for granted.
As I learned from my semi-successful use of LiteStep…20 years ago? Damn. Anyway without a GUI you have to think about each of the basic components you might not of thought of. For instance the system tray, the clock, some kind of task bar/task list, a form of start menu or just way to launch come programs, a way to change resolution of the screen, a way to configure networking and/or connect to wifi, adding and removing drivers, some kind of file manager… really basic stuff you might otherwise not think about.
In Linux the UI system is kind of made with this in mind. The whole thing can be configured and customized and BASH already has a way to “eject” usb storage devices for instance.
But Windows isn’t necessarily designed to be used without a UI. Even Hyper-V server isn’t really made for that. It’s more intended to be configured the one time then managed remotely in a “headless” state.
I actually found something of a project to do this kind of thing with hyper-v server 2019 but it seems like it’s been abandoned.
I will have to come back to this and do some more brainstorming. I still don’t know if this is even a viable idea. But free-as-in-beer Windows that I can customize does sound really great.
References and Resources
- Install Windows terminal with choco
- Microsoft’s guide to manually installing WSL+distro
- My prior post about setting up networking in Hyper-V
- An explanation of Hyper-V networking thanks to altaro.com
- Hyper-V Server 2019 post about setting up storage pool
- Hyper-V server 2019 post about first-setup, networking, RDP etc
- Day 31 of my 100 days of code has some information (day 32 has some info too)
- I also wrote a post about the R520 in particular
- General information on deploying storage spaces (MS Docs)
- PowerShell reference for disk-related tasks (MS Docs)