Skip to content

Implement makeWin2kImage - #11

Open
io12 wants to merge 10 commits into
MatthewCroughan:masterfrom
io12:win2k
Open

Implement makeWin2kImage#11
io12 wants to merge 10 commits into
MatthewCroughan:masterfrom
io12:win2k

Conversation

@io12

@io12 io12 commented Dec 31, 2023

Copy link
Copy Markdown
Contributor

I think this can be done without vncdotool, tesseract, or expect with Windows 2000's unattended installation feature, and this also makes it easier to configure the install from Nix. I just need to figure out how many times to restart dosbox for the install to finish. And also maybe there's a better way to specify answerFile than a path that is usually created with writeText "answers.ini" (lib.generators.toINI { } { ... })? Having answerFile be the set directly might be easier for the user to specify but less flexible.

@MatthewCroughan

Copy link
Copy Markdown
Owner

I see you're removing some comments like the link to some blog post you found in the process of making this, but I'd prefer to keep them since they're valuable, please do! 😸

@io12

io12 commented Dec 31, 2023

Copy link
Copy Markdown
Contributor Author

I see you're removing some comments like the link to some blog post you found in the process of making this, but I'd prefer to keep them since they're valuable, please do! 😸

I deleted that link because I'm using a different approach now, but I guess I can add it back and say that in the comment.

@io12 io12 changed the title [Draft] Implement makeWin2kImage Implement makeWin2kImage Dec 31, 2023
@io12
io12 marked this pull request as ready for review December 31, 2023 23:27
@MatthewCroughan

Copy link
Copy Markdown
Owner

Very impressive, this just works completely due to the unattended installation. I think we should probably still do tesseract OCR just to provide a log, since the installation takes so long.

@io12 io12 mentioned this pull request Jan 6, 2024
@Luflosi

Luflosi commented Jul 27, 2024

Copy link
Copy Markdown
Contributor

What's the status of this PR?

@io12

io12 commented Jul 27, 2024

Copy link
Copy Markdown
Contributor Author

What's the status of this PR?

It worked on the latest commit when I last tested it. I don't know if there is anything blocking merging.

@MatthewCroughan

Copy link
Copy Markdown
Owner

Nothing really, I was just bike shedding on making docs and making the drvs more reliable, since there is an error rate for all of the Windows derivations that increases as you increase in Windows version.

So dos is pretty reliable, then win 3.1 is also reliable, but it gets bad after that. Some of that is related to dosbox instability in my testing.

Did you see https://github.com/ptitSeb/box86 is being maintained a lot lately? Maybe we could write a "NixThePlanet driver" for that, and get rid of dosbox as the builder.

@io12

io12 commented Jul 28, 2024

Copy link
Copy Markdown
Contributor Author

I've used box86 in the past. I think it doesn't do full-system emulation and is closer to qemu-user for emulating x86 linux executeables directly. It also can translate library calls so that the emulated program can call native ARM libraries, which is really cool.

@MatthewCroughan

Copy link
Copy Markdown
Owner

@io12 https://x.com/oerg866/status/1853402804297118197 found this very interesting, maybe we can apply some of it. Also, will you be at FOSDEM?

@io12

io12 commented Nov 5, 2024

Copy link
Copy Markdown
Contributor Author

https://x.com/oerg866/status/1853402804297118197 found this very interesting, maybe we can apply some of it.

Interesting. It looks like it needs an existing installation to build the installer ISO though, which might not be as pure.

Also, will you be at FOSDEM?

Probably not

@MatthewCroughan

Copy link
Copy Markdown
Owner

I was thinking, to make things more reliable we could probably use qemu/86box as the builder, rather than dosbox. And we can swap qemu/86box at will when running or building the image. In theory our OCR/vnc scripts can be made to work given the same framebuffer size, and would work on real hardware, qemu, 86box, it wouldn't matter.

@io12

io12 commented Dec 20, 2024

Copy link
Copy Markdown
Contributor Author

I was thinking, to make things more reliable we could probably use qemu/86box as the builder, rather than dosbox. And we can swap qemu/86box at will when running or building the image. In theory our OCR/vnc scripts can be made to work given the same framebuffer size, and would work on real hardware, qemu, 86box, it wouldn't matter.

Yeah, I think it might be a good idea to still have dosbox as an option though, especially since it's not as easy to install win2k and XP in dosbox so it's good to have a reproducible way to do that.

@MatthewCroughan

Copy link
Copy Markdown
Owner

@io12 Another thought.. we could train a neural net/model to perform this installation, where the loss function is governed by NixThePlanet exit codes.

@Titaniumtown

Copy link
Copy Markdown

Hello! I'm looking into a windows 11 vm on nixos, replacing my janky qemu-on-docker setup. Came across this project (and PR) and https://git.m-labs.hk/M-Labs/wfvm. Would be really cool if this could be worked on further. Very awesome project. Hope to see more progress in the area!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants