OK. So... I'm trying to build Sculpt OS from source to create a USB image I can boot from with a few changes to the wifi driver, per Colin's suggestion.
I've read the Getting Started and Sculpt Documents:
https://genode.org/documentation/genode-foundations/22.05/getting_started/in...
and
https://genode.org/documentation/articles/sculpt-22-10
just the sections pertaining to building.
I've also watched this video - https://www.youtube.com/watch?v=7g8hDQQt-VI
It's all a little confusing for newbs, so I'm gonna ask y'all in the hopes that you can help clear things up...
1. 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)
2. 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?
Thanks,
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 personally use Mint but Ubuntu LTS should work fine. I haven’t found the Genode build system to be very picky about the host, at least with Debian variants.
- 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?
Unfortunately I think you need to build from source. The firmware whitelist is hardcoded and I don’t see a way around that, unless someone has a better idea.
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
Hi Norman,
Merry Christmas :). I'm chilling and learning about Sculpt on this holiday, hope you're also enjoying the day. No rush on getting back to me!
These are great helps.
Two things: 1. I think you meant 11.5 "bullseye"? 10.5 is "buster". I downloaded 11.6 as a base and will use that in a VM and once I get it working there, I'll move back to my T430, running Mint 21.1 Vera. Also, it took me a while to figure out the "cnuke's download_debian" note :). I'll start with running it in Virtualbox 6.1 on my Mac. I have enough learning to do without doing the VM stuff in Sculpt. I'll get there soon enough, but not today.
2. When attempting to run ./tool/depot/download genodelabs/pkg/x86_64/sculpt/2022-10-13, I get the following error. I just redo the command and it looks like it picks up where it left off, but I'm not sure it's actually ok. There are files in depot/genodelabs/src/vim-minimal... What say you?
------------ download genodelabs/src/vim-minimal/2022-08-30.tar.xz download genodelabs/src/vim-minimal/2022-08-30.tar.xz.sig xz: (stdin): Unexpected end of input tar: Unexpected EOF in archive tar: Unexpected EOF in archive tar: Error is not recoverable: exiting now make[1]: *** [/home/wsenn/genode/tool/depot/mk/downloader:45: /home/wsenn/genode/depot/genodelabs/src/vim-minimal/2022-08-30] Error 2 ------------
I'm continuing on, but thought I'd shoot this off in the meantime.
Thanks,
Will
On 12/25/22 4:50 AM, Norman Feske wrote:
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:
- 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.
- 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
- 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.
- 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