building on linux

Norman Feske norman.feske at genode-labs.com
Sun Dec 25 11:50:34 CET 2022


Hi Will,

> 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)

I'm currently using Debian 10.5 (bullseye), downloaded via cnuke's 
download_debian package.

> 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?

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_image
[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-purpose_Sculpt-based_operating_systems

Happy hacking!

Norman

-- 
Dr.-Ing. Norman Feske
Genode Labs

https://www.genode-labs.com · https://genode.org

Genode Labs GmbH · Amtsgericht Dresden · HRB 28424 · Sitz Dresden
Geschäftsführer: Dr.-Ing. Norman Feske, Christian Helmuth




More information about the users mailing list