Hi Will,
- What distro (exactly) do y'all use - it says Ubuntu LTS in the docs -
so Ubuntu 22.04.1 LTS is the current version - is that it? I have the luxury of picking whatever I like (thankfully, I'm a debian user, so Ubuntu/Mint/Debian are fine with me)
I'm currently using Debian 10.5 (bullseye), downloaded via cnuke's download_debian package.
- If I want to change out the wifi firmware and edit the config files,
do I need to just tweak the files and build the bootable image or do I need to do the build Sculpt from source thing?
Building the Sculpt image means building from source. However, you don't need to compile everything from scratch. To fastest way would be to first follow the steps "Building the boot image" based on the binary packages published by Genode Labs [1], then only tweak the wifi driver, and re-build the image (step 7). The following hints may hopefully help you along the way:
1. Ensure that you have checked out Genode's 'sculpt-22.10' tag [2] or a branch based on this tag. Personally, I keep my personal tweaks of Sculpt on a dedicated branch [3]. This is important in order to ensure that the source code you are using is consistent with the official 'genodelabs' binary packages.
2. While working on the wifi driver, you can tell the build system to build only this single component, not all of Sculpt. So you can quickly catch compile-time errors.
build/x86_64$ make drivers/wifi
3. When finally rebuild Sculpt (step 7), tell the build system to update the depot content (the binary packages Sculpt is made of) as needed. You can do that by uncommenting the following line in your build/x86_64/etc/build.conf
RUN_OPT += --depot-auto-update
Now, when issuing the 'make run/sculpt ...' command, you should see the build system checking all the depot archives, and creating a new version for the wifi-related things that you just touched. After the build, check the git status and commit the changed version hashes. So you can reproduce the exact same version later.
4. If you want to experiment with customizing Sculpt's components at source-code level, you may find the additional documentation at [4] useful. Personally, I love the 'build:' feature. When adding a line like the following to repos/gems/sculpt/default-pc.sculpt, one can prompt the build system to build this specific component and integrate the result into the sculpt image. E.g.,:
build: server/nitpicker
In this example, the nitpicker GUI server gets built from source and all other components are taken from the binary packages.
With the '--depot-auto-update' disabled, this creates the customized image really quick (just a few seconds) and you don't need to deal with updating depot archives at each iteration.
Maybe, this would work for your wifi tweaks as well, but I'm not 100% sure because the change may affect the list of firmware files. Well, it's worth trying.
[1] https://genode.org/documentation/articles/sculpt-22-10#Building_the_boot_ima... [2] https://github.com/genodelabs/genode/releases/tag/sculpt-22.10 [3] https://github.com/nfeske/genode/commits/sculpt_22_10 [4] https://genode.org/documentation/release-notes/22.02#Framework_for_special-p...
Happy hacking!
Norman