ryo_iso.tasks package

Submodules

ryo_iso.tasks.init module

ryo_iso.tasks.init.task_init()[source]

Initialize a new project

Create iso.yml config file in the current directory and install $XDG_CONFIG_HOME/ryo-iso/config.yml and $XDG_CONFIG_HOME/ryo-iso/iso_base.yml

Actions:
Params:
  • -f, --force Force installation
Targets:
Uptodate:
  • False

ryo_iso.tasks.main module

ryo_iso.tasks.main.task__base_efi_extract()[source]

Extract EFI partition from base ISO image

Extract EFI partition on Ubuntu Jammy or later…

Actions:
File_dep:
  • base_image.iso
Targets:
  • base_image.efi
Uptodate:
  • True
ryo_iso.tasks.main.task__base_image_check()[source]

Check base ISO image hash

Validate the base ISO image SHA256 checksum

Actions:
Task_dep:
Targets:
  • base_image.iso
Uptodate:
  • True
ryo_iso.tasks.main.task__base_image_download()[source]

Download base ISO images

The download directory for the base ISO image is configured in $XDG_CONFIG_HOME/ryo-iso/config.yml; it defaults to distro_image_dir: ~/Downloads and is symlinked to base_image.iso in the project directory.

Enable/disable progress indicator via the progress parameter in ~/.config/ryo-iso/config.yml

Actions:
  • task__base_image_download.download_iso()
Uptodate:
ryo_iso.tasks.main.task__base_image_extract()[source]

Extract files from base ISO image

Extract ISO image to ./image in the project directory

Actions:
File_dep:
  • base_image.iso
Targets:
  • image/.disk/base_installable
Uptodate:
  • True
ryo_iso.tasks.main.task__base_mbr_extract()[source]

Extract MBR partition from base ISO image

Extract MBR partition on Ubuntu Jammy or later…

Actions:
File_dep:
  • base_image.iso
Targets:
  • base_image.mbr
Uptodate:
  • True
ryo_iso.tasks.main.task__build_init()[source]

Setup build directories

Creates ./build/log and ./build/backup

Actions:
  • _doit.tools.create_folder, [‘build/log’]
  • _doit.tools.create_folder, [‘build/backup’]
Targets:
  • build/log
  • build/backup
ryo_iso.tasks.main.task__chroot()[source]

Chrooted meta-task

Calls all of the sub-tasks applied inside the squashfs-root chroot

ryo_iso.tasks.main.task__chroot_apt_install()[source]

Chroot and install APT packages

Installs debian packages into squashfs-root chroot

ryo_iso.tasks.main.task__chroot_apt_purge()[source]

Chroot and purge APT packages

Purges debian packages from squashfs-root chroot

Actions:
  • _logger.debug, [“apt purge: “+pkg]
  • sudo chroot squashfs-root apt-get purge -y %s
Task_dep:
ryo_iso.tasks.main.task__chroot_apt_up()[source]

Chroot APT update & upgrade

Chroot into squashfs-root and run apt update and apt-upgrade

Actions:
Task_dep:
Uptodate:
  • _doit.tools.check_timestamp_unchanged(‘squashfs-root/etc/apt’)
  • _doit.tools.check_timestamp_unchanged(‘squashfs-root/etc/apt/sources.list.d’)
ryo_iso.tasks.main.task__chroot_dpkg_install()[source]

Chroot and install Debian packages

Installs local debian packages into squashfs-root chroot

Actions:
  • _logger.debug, [“dpkg Install: “+pkg]
  • sudo cp dpkg/%s squashfs-root%s
  • sudo chroot squashfs-root dpkg -i %s/%s
Targets:
  • squashfs-root/var/cache/apt/archives/%s
Task_dep:
ryo_iso.tasks.main.task__chroot_patch()[source]

Apply patch script

If all else fails insert kludges here .. note:: The patch script is run outside of the chroot

if (‘patch’ in _ctx[‘config’].iso_cfg.keys()):
actions:
  • _logger.debug, [“Applying patch script”]
  • patch.bash # as defined in iso.yml
else:
actions:
  • None
Task_dep:
ryo_iso.tasks.main.task__chroot_pip_cache()[source]

Chroot and update pip cache

Pre-load Python packages into squashfs-root chroot pip cache

ryo_iso.tasks.main.task__chroot_pip_install()[source]

Chroot and install pip packages

Installs debian packages into squashfs-root chroot

ryo_iso.tasks.main.task__chroot_pip_local()[source]

Chroot and install local pip packages from wheels

Installs Python packages into squashfs-root chroot

ryo_iso.tasks.main.task__debug_config()[source]

Debug configuration information

Dump composited config

Actions:
  • task__debug_config.print_debug()
ryo_iso.tasks.main.task__hash_cache()[source]

Cache latest upstream ISO hashes

Download SHA256SUMS* to $XDG_CACHE_HOME/ryo-iso/

Actions:
Task_dep:
Targets:
  • ~/.cache/ryo-iso/SHA256SUMS
  • ~/.cache/ryo-iso/SHA256SUMS.gpg
ryo_iso.tasks.main.task__hash_check()[source]

Check cached upstream ISO hashes

Validate GPG signature for checksums in $XDG_CACHE_HOME/ryo-iso/

Actions:
File_dep:
  • ‘~/.cache/ryo-iso/SHA256SUMS’
  • ‘~/.cache/ryo-iso/SHA256SUMS.gpg’
Uptodate:
ryo_iso.tasks.main.task__hash_version()[source]

Extract latest version information from the hash

Locates the implicit full release version with fallback for archived releases

Actions:
Uptodate:
ryo_iso.tasks.main.task__image()[source]

Setup image meta-task

Calls all of the sub-tasks for final setup of image

ryo_iso.tasks.main.task__image_checksum()[source]

Generate checksums for image

Generate md5sums for image contents

Uptodate:
  • _doit.tools.check_timestamp_unchanged(‘image/md5sum.txt’)
ryo_iso.tasks.main.task__image_preseed()[source]

Install preseed into image

Installs preseed configuration into the extracted image

Uptodate:
  • _doit.tools.check_timestamp_unchanged(‘image/preseed/ubuntu.seed’)
ryo_iso.tasks.main.task__image_squashfs_make()[source]

Make squashfs

Make image squashfs from squashfs-root

ryo_iso.tasks.main.task__image_squashfs_manifest()[source]

Store the squashfs manifest

Compute and store squashfs manifest

Uptodate:
  • _doit.tools.check_timestamp_unchanged(‘image/casper/filesystem.manifest’)
ryo_iso.tasks.main.task__image_squashfs_size()[source]

Store the uncompressed squash filesystem size

Compute and store squashfs size

Uptodate:
  • _doit.tools.check_timestamp_unchanged(‘image/casper/filesystem.size’)
ryo_iso.tasks.main.task__mount_dev()[source]

Mount pseudo-filesystems in squashfs-root

Mount /proc, /dev, /sys mountpoints inside squashfs-root

Actions:
  • sudo mount %s %s %s
ryo_iso.tasks.main.task__qemu_setup()[source]

Setup QEMU

Create disk image for VM install

ryo_iso.tasks.main.task__reset_sudo_timestamp()[source]

Reset sudo timestamp

Invalidate credential cache

Actions:
  • sudo -k
  • sudo true
ryo_iso.tasks.main.task__squashfs()[source]

Setup squashfs-root meta-task

Calls all of the sub-tasks for setup of squashfs-root

Task_dep:
ryo_iso.tasks.main.task__squashfs_apt_key()[source]

Install APT keys into squashfs

Installs APT keys from ./keys into squashfs-root Migrate to keys in /usr/share/keyrings deb [arch=amd64 signed-by=/usr/share/keyrings/repo-keyring.gpg] http://repo.example.org/ ubuntu jammy main

Actions:
  • sudo cp keys/*.gpg squashfs-root/...
Targets:
  • squashfs-root/.../*.gpg
Uptodate:
  • True
ryo_iso.tasks.main.task__squashfs_apt_proxy()[source]

Enable APT proxy

Enable APT proxy while chrooted into squashfs-root

Actions:
  • echo 'Acquire::http { Proxy "http://localhost:3142"; };' | sudo tee squashfs-root/etc/apt/apt.conf.d/01proxy
Targets:
  • squashfs-root/etc/apt/apt.conf.d/01proxy
Task_dep:
Uptodate:
  • True
ryo_iso.tasks.main.task__squashfs_apt_repo()[source]

Install custom APT repositories

Add repositories to /etc/apt in squashfs-root

ryo_iso.tasks.main.task__squashfs_backup()[source]

Backup files from image/squashfs

Backup files to be restored after updating image/squashfs

Actions:
  • sudo cp image/preseed/ubuntu.seed build/backup/ubuntu.seed
  • sudo cp squashfs-root/etc/apt/sources.list build/backup/sources.list
  • sudo mv squashfs-root/etc/resolv.conf squashfs-root/etc/resolv.conf.orig
Targets:
  • build/backup/ubuntu.seed
  • build/backup/sources.list
  • squashfs-root/etc/resolv.conf.orig
Task_dep:
Uptodate:
  • True
ryo_iso.tasks.main.task__squashfs_extract()[source]

Extract files from squashfs

Extract squashfs to ./squashfs-root in project directory

Actions:
File_dep:
  • base_image.iso
  • image/.disk/base_installable
Targets:
  • squashfs-root/etc/os-release
ryo_iso.tasks.main.task__squashfs_modinfo()[source]

Patch modinfo in squashfs-root

Patches modinfo inside the chroot to report chrooted kernel version

Actions:
  • sudo mv squashfs-root/sbin/modinfo squashfs-root/bin/modinfo
  • task__squashfs_modinfo.patch()
  • sudo mv squashfs-root/tmp/modinfo squashfs-root/sbin/modinfo
Targets:
  • squashfs-root/bin/modinfo
Task_dep:
ryo_iso.tasks.main.task__squashfs_resolv()[source]

Install resolv.conf into squashfs-root

Installs the local resolv.conf into squashfs-root to enable chrooted networking.

Actions:
  • sudo cp /etc/resolv.conf squashfs-root/etc/resolv.conf
Targets:
  • squashfs-root/etc/resolv.conf
Task_dep:
Uptodate:
  • _doit.tools.check_timestamp_unchanged(‘squashfs-root/etc/resolv.conf’)
ryo_iso.tasks.main.task__squashfs_uname()[source]

Patch uname in squashfs-root

Monkey patches uname inside the chroot to report chrooted kernel version

Actions:
  • sudo cp squashfs-root/bin/uname squashfs-root/bin/uname.orig
  • task__squashfs_uname.patch()
  • sudo mv squashfs-root/tmp/uname squashfs-root/bin/uname
Targets:
  • squashfs-root/bin/uname.orig
Task_dep:
ryo_iso.tasks.main.task__umount_dev()[source]

Unmount pseudo-filesystems from squashfs-root

Unmount /proc, /dev, /sys mountpoints inside squashfs-root

Actions:
Uptodate:
  • False
ryo_iso.tasks.main.task_build()[source]

Roll Your Own ISO

This is the primary build task

ryo_iso.tasks.main.task_install()[source]

Install ISO into QEMU VM

Install ISO into VM

ryo_iso.tasks.main.task_start()[source]

Start QEMU VM from installed image

Start VM from image

Module contents