Metadata-Version: 2.1
Name: ryo-iso
Version: 0.1.7
Home-page: https://git.sr.ht/~lucidone/ryo-iso
Author: HXR
Author-email: code@hxr.io
Maintainer: HXR
Maintainer-email: code@hxr.io
License: MIT/Apache-2.0
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: License :: OSI Approved :: Apache Software License
Classifier: Natural Language :: English
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: Implementation :: CPython
Classifier: Programming Language :: Python :: Implementation :: PyPy
Description-Content-Type: text/markdown
License-File: LICENSE-APACHE
License-File: LICENSE-MIT
Requires-Dist: appdirs
Requires-Dist: loguru
Requires-Dist: pyyaml
Requires-Dist: requests
Requires-Dist: delegator.py
Requires-Dist: doit
Requires-Dist: importlib-resources
Requires-Dist: tqdm

# ryo-iso
[![](https://img.shields.io/pypi/v/ryo_iso.svg?style=flat)](https://pypi.org/project/ryo-iso/)
[![](https://builds.sr.ht/~lucidone/ryo-iso.svg)](https://builds.sr.ht/~lucidone/ryo-iso)
[![](https://readthedocs.org/projects/ryo-iso/badge/?version=latest)](https://ryo-iso.readthedocs.io/en/latest/?badge=latest)

-----

**Table of Contents**

* [Installation](#installation)
* [Usage](#usage)
* [License](#license)

## Overview

ryo-iso is distributed on [PyPI](https://pypi.org/project/ryo-iso/) and is available for
Python 3.8+ on Linux.

```bash
$ python3 -m pip install -U --user git+https://git.sr.ht/~lucidone/ryo-iso
```

### Documentation
Documentation is available at https://ryo-iso.readthedocs.io/

### Deprecated
  - Ubuntu 16.04 (Xenial)
  - Python 3.6

### Currently supported targets
  - Ubuntu 18.04 (Bionic)
  - Ubuntu 20.04 (Focal)
  - Ubuntu 22.04 (Focal)

## Usage

### TL;DR
```bash
$ sudo apt install curl gpgv2 squashfs-tools xorriso apt-utils apt-cacher-ng qemu-system-x86 isolinux
$ if [ $(lsb_release -cs) = "jammy" ]; then sudo apt install jq fdisk; fi
$ python3 -m pip install -U --user git+https://git.sr.ht/~lucidone/ryo-iso
$ mkdir ~/iso_test
$ cd ~/iso_test
$ ryo-iso init
$ ryo-iso build
$ ryo-iso start
```

## Requirements
`$ sudo apt install curl gpgv2 squashfs-tools xorriso apt-utils apt-cacher-ng qemu-system-x86 isolinux`
Working with `jammy` also requires
`$ sudo apt install jq fdisk`

## Other commands
### Create a new project
`$ ryo-iso init`

This command will initialize a project with a default `iso.yml` configuration
file in the current directory.

If this is the first time being run it will create the `ryo-iso` application
config file in `~/.config/ryo-iso/config.yml` and provides a set of
reasonable defaults in `~/.config/ryo-iso/iso_base.yml` that can be overridden
on a per-project basis.

### Build an ISO
`$ ryo-iso build`

Builds an iso in `build/image.iso`

### VM Install
`$ ryo-iso install`

Generated images can be tested by installing them into a QEMU VM

### VM Start
`$ ryo-iso start`

This command can provide a means of booting the image as a LiveCD or restarting
a previously installed disk image.

### Cleanup
`$ ryo-iso clean`

This command will remove all build artifacts to prepare the project to be
checked into version control.

NOTE: Using this command is preferable to running `rm -rf` as builds that are
aborted with <key>Ctrl-C</key> may leave chrooted filesystems mounted.

### Additional
`$ ryo-iso list -p`

This will list all intermediate processes that may be useful for debugging.

### GPG Keys
All of the keys found in `./keys` will be install into the squashfs-root
On `jammy` and later they should be referenced via
`deb [arch=amd64 signed-by=/usr/share/keyrings/repo-keyring.gpg] http://repo.example.org/ ubuntu jammy main`

## License

ryo-iso is distributed under the terms of both

- [MIT License](https://choosealicense.com/licenses/mit)
- [Apache License, Version 2.0](https://choosealicense.com/licenses/apache-2.0)

at your option.
