NixOS Feel for any OS

Allows you to have reproducible builds for your own OS setup, resembling NixOS’ behaviour, but it works for major Linux distributions and even Windows 10.

This tool seems amazing.

Could some of you please test it?

2 Likes

Having just spent the last 2 weeks learning how to make a copy of an installed OS on a bootable usb drive, this is of some interest.

Looked at github, the documentation is a bit sparse. No install hints, only example is Windows.

Will give it a try. See if it can reproduce what I have just done from CLI.

If I checked correctly, you see the implementation of how the provisioner works.

Seems like, it supports shell and ansible, in general. Which means, you can apply the Windows configuration example to any other supported OS, as well.
I also saw, that more operating systems are or will be supported, than mentioned in the README.

1 Like

Well I am glad you can interpret that stuff
I did read the README
Not deterred.
There is an install.sh script for ArchLinux. Might start by modifying that.

I’m the creator of this project, so thank you!

So far, it works best with ArchLinux, but there are still a lot of rough edges. Once everything is working 100%, I’ll improve the examples and documentation.

Actually the idea is not to modify that file and instead introduce your own provisioning scripts to customize your image.

1 Like

Thank you, I have not got to trying that yet, but it is still on my list.

What we are thinking about is setting up a generic method of making a live .iso file from an installed linux distro.
I recently made a custom .iso by hand with Void linux, and it was quite a task and there were some issues which I did not fully understand.

My thinking was that I might be able to learn from the goldboot project, or even use it or parts of it. Any suggestion would be appreciated.

Regards
Neville

Yeah, creating bootable ISOs can be a pain. So goldboot uses a custom image format kind of similar to qcow2. You can’t boot it just like an ISO, but the ‘goldboot’ CLI is able to write it to something like a USB stick which can then be booted as usual.

I don’t have a Void Linux template yet, but it’s designed to be fairly easy to add templates. Basically I would just copy the ArchLinux template and replace the ISO URL and the boot command.

So, could I use goldboot or qcow2 to share custom bootable linux images with others, particularly for use in qemu or virtualbox? You said it could be written to usb drives which are then easily made bootable.
What about hard installs from a goldboot2 image? Is it compressed like an .iso?

I will give goldboot a run. I might be able to make you a Void Linux template. I can at least try it on Debian

Regards
Neville

I plan to have a HTTP registry where you can push goldboot images to be shared with others. Kind of like docker in a way.

You can run goldboot images in QEMU pretty easily by writing the image to a plain file instead of to a disk and adding it as a raw device in QEMU. The images are compressed with zstd and optionally encrypted with AES.

Fair warning, you’ll probably encounter some issues along the way. This is still experimental stuff.

It seems like it should be possible with actual Docker.

https://people.cs.vt.edu/~butta/docs/cluster2019-dockerhub.pdf (CTRL+F for ‘largest uncompressed image’)

This way, you don’t have to deal with your own solution and the associated costs!

Thank you, It sounds like I should do an install and try some experiments.
Not worried about issues at this stage.
What we are looking for is a way of sharing images of customized Linux installs among users of the itsFOSS site. I did an experiment with an .iso… it worked, but is way too difficult for general use. The one advantage of an iso is people know how to handle an iso file. With goldboot there may be an education issue at the user end, but it sounds like it could be simpler to make

Regards
Neville

Yeah, the goldboot registry would do that pretty well. I eventually plan to run a public one at something like public.goldboot.org where people can download/install images without having to build them first. It’ll be completely FOSS of course, so anyone can host their own registry.

I just have to find the time to finish it :slight_smile: . I’m hoping by the end of the year, it’ll be much more stable. But I wouldn’t consider using it in production until it’s sufficiently battle-tested.

1 Like

I thought about having goldboot optionally generate ISOs, but that’s going to be a significant amount of work. Especially if I want to do it in pure Rust. I would probably need to find someone who is an expert on ISO9660 to do it.

I dont feel that is high priority.

That sounds like a complete solution to our little problem.
We can be patient.
I dont have the skills to offer help, other than trialling things, and I will definitely be doing that. Most of my programming experience is C and R and old Fortran, not Rust.

Will try a build shortly
Regards
Neville

It’s great to see you are attacking this issue in your project.

Thank you for your work. Keep going! :slightly_smiling_face:

@Akito
I forked the goldboot repository, pulled a copy back to my computer and tried to build ( ie compile ) it.

  • started with Devuan and an install of rust and cargo from the package system. That led to cargo saying the version was too old for the current job. Probably because the author had already setup cargo from a newer version
  • wiped the package install, and used rustup. That did an install of version 1.62 in the users home directory. Tried the build with that and there are libraries in Devuan4 that are too out of date for rust 1.62.
    so I cant use rust in Devuan either way!
  • change ro Void . Did a package install of rust and cargo and got version 1.61. Did a build with that , and cargo runs, but rust finds lots of syntax errors in goldboot? I am not going to try to patch someone elses rust code. Have to wait. They have been very active lately so this should fix itself.

So I cant do a trial with goldboot today.

1 Like

I’ve seen tons of issues on Github regarding Rust, where people had to use nightly versions of Rust to make something work. It’s pretty bleeding edge, sometimes.

Weird. I have Rust running on Debian since a while. Did not have a problem back then.

Either a user error or it’s still related to the version not being bleeding edge enough. I would guess the latter is the case.

I’d optimistically betoken what you have done already being the first trial. The second trial will build upon the knowledge of what you already discovered about the Rust bleeding edgeness.

So I should try with rustup install in Void. That should give me version 1.62. I assume rustup always gives the latest version. Void libraries might be up to date enough.

Rust bleeding edgeness

English is a strange language

What about this?

Indeed. I was about to say that I like to play with the language. There are so many synonyms and ways to de- and transform words – it’s really fun and I’m a bit disappointed when people, especially US Americans, always use the same type of words, phrases, proverbs, etc… It’s an epidemic.
People should be more creative about it.

Never forget: language forms your mind, not the other way around. If one always hears the same stuff in the same way, it will be hard to change one’s way of thinking and perspective. If you can express something “the other way around” in a spoken natural language, you can at the same time look at it “the other way around”.

2 Likes