The following is the GNU All-permissive License as recommended in https://www.gnu.org/licenses/license-recommendations.en.html

Copyright (C) 2024 Free Software Foundation sysadmin@fsf.org

Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. This file is offered as-is, without any warranty.

Contributions are welcome. See https://savannah.gnu.org/maintenance/fsf/.

FSF member card builder

Trisquel ISO images

When a new _fsf.iso image is made, Ruben will ping us on IRC to download the new version.

The files are located at: http://jenkins.trisquel.info/trisquel-images/

If you need a new image and Ruben is unavailable, the images are made with the makeiso.sh script found in this repository:

https://gitlab.trisquel.org/trisquel/makeiso

git repo

git clone git@vcs.fsf.org:fsf-member-card-builder.git

previously generated member card images

Check /home/common/sysadmin/membercard/ on tarantula. Upload completed images there when you're done making them. Also upload the sources tarball and the base fsf ISO made by Ruben.

Customizing installed media

Edit the install-extras.sh script. You can also automatically generate a list of HTML tags for recent LP audio recordings: index-generator.py so you can update the index.html file in the above repo.

Generating member cards

Plug in a USB member card to your system. Wipe the entire disk with dd and /dev/zero. Follow the instructions in the readme of the git repo.

umount /dev/sdb*
sudo dd if=/dev/zero of=/dev/sdb bs=4M

...

Make sure that the newly created member card boots on LibreBoot with GRUB, SeaBIOS, and a proprietary BIOS. The easiest (but perhaps not fastest) way to check when you're trying things out is to boot to the syslinux menu with qemu:

qemu-system-x86_64 -enable-kvm -m 2G -hda /dev/sdb

Check the amount of free space on the drive, and update the HTML file that gets booted on the member card so the dd command says how much space to use for storage persistence.

Check that the media URLs are correct on the booted system.

If you make any experimentations to get things working, then for the final good version of the image, start afresh, with a fully wiped member card.

Once you're done creating the final version, fix the boot sector so the new main version is copied to the backup. (Might not be critical, but this helps users who fsck later).

sudo fsck.vfat /dev/sdb1

Then copy the disk image to your local filesystem before you mount it or make any other changes to the iso. Compute the sha256sum and zip the file:

dd if=/dev/sdb of=member-card-2023-08-29.img bs=4M status=progress
sha256sum member-card-2023-08-29.img > member-card-2023-08-29.img.sha256
pigz < member-card-2023-08-29.img > member-card-2023-08-29.img.gz

Then take the USB drive and test it on all of the main systems, to ensure that the copy you saved is a good and working version. Follow the instructions that pop up in the browser on boot in order to enable persistent storage. Test that it's working.

Upload those files to tarantula, as described above. Notify the operations assistant about the new image.

Edit squashfs

Ruben is capable of building the base image via a build script on his end. We should use that rather than try to reproduce that work with our own code.

https://sleeplessbeastie.eu/2012/05/27/how-to-modify-squashfs-image/

Remove the gimp help docs (except en and es) and libreoffice translations (except en_US, en_GB and es) from /usr/share. this might be best done as a package uninstallation step.

You'll need to install the .desktop file that launches the web browser with the local static page, with links to the videos. Get that from the old member image. You'll also need the HTML, and various media that lies outside of the squashfs image, in /fsf on the member card main partition.

You should also grab the custom syslinux boot screen splash image.