{"id":19054904,"url":"https://github.com/solus-project/uspin","last_synced_at":"2025-04-24T03:28:36.541Z","repository":{"id":145851707,"uuid":"74389994","full_name":"solus-project/USpin","owner":"solus-project","description":"Universal spinner for Linux medium","archived":false,"fork":false,"pushed_at":"2019-04-12T20:08:40.000Z","size":430,"stargazers_count":8,"open_issues_count":3,"forks_count":4,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-04-18T12:18:04.868Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://solus-project.com/","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/solus-project.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2016-11-21T17:49:25.000Z","updated_at":"2025-02-27T07:38:35.000Z","dependencies_parsed_at":"2023-05-18T11:31:13.115Z","dependency_job_id":null,"html_url":"https://github.com/solus-project/USpin","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solus-project%2FUSpin","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solus-project%2FUSpin/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solus-project%2FUSpin/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solus-project%2FUSpin/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/solus-project","download_url":"https://codeload.github.com/solus-project/USpin/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250554761,"owners_count":21449684,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-08T23:40:12.512Z","updated_at":"2025-04-24T03:28:36.531Z","avatar_url":"https://github.com/solus-project.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"USpin\n------\n\n[![Report](https://goreportcard.com/badge/github.com/solus-project/USpin)](https://goreportcard.com/report/github.com/solus-project/USpin) [![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0)\n\nUniversal image creation utilities. Used to produce bootable Linux medium in an agnostic fashion. This is still a **Work In Progress**.\n\nUSpin is a [Solus project](https://solus-project.com/).\n\n![logo](https://build.solus-project.com/logo.png)\n\n\n[![You Spin Me Right Round](https://img.youtube.com/vi/PGNiXGX2nLU/0.jpg)](https://www.youtube.com/watch?v=PGNiXGX2nLU)\n\n**Note**\nSolus, USpin, and the Solus Project Team, are not endorsed by any projects listed here in terms of planned support. We are simply creating a tool to simplify\nmanagement and creation of various images all from one place. As developers may experiment with, be involved in, or test other projects and distros for\nmany reasons (including validation of projects we develop such as Budgie) - it is useful even to us to be able to produce medium for other distros using\na single standardized tool.\n\nObviously the core benefit to us is in producing our own medium, however others are welcome to join in and contribute too, because there are a great many\ntools for creating distro images, each one more specialised than the last. It also serves somewhat as a research project, in seeing \"how others do\" to find\nways in which Solus can improve itself too. The more specialised the support for Solus in the tool in contrast to other distros will highlight to us exactly\nwhat we can and should improve.\n\n\nRationale\n-------\nIntended to succeed the existing `solus-image-creator.py` script with something a bit more robust that can construct multiple image types.\n\nCurrently the existing image creator can only construct a simple `ISO9660` image, however Solus also makes use of chrootable base images for the `overlayfs` system employed in `evobuild`.\n\nPlanned support\n---------------\n\nThose with a fire symbol (🔥) are currently considered important to Solus projects and are the active priority. After stabilisation we can work on the support for other medium, and at that point will happily take contributions (post v1)\n\n**Medium**\n\n - `LiveOS` (dracut distros) 🔥\n - `raw` filesystem type (partitions in disk image) 🔥\n - `flat` image support (no partitions, i.e. an `ext4` loopback image) 🔥\n - `casper` (Ubuntu)\n - `debian-live` (Vanilla Debian images)\n\n**Boot**:\n - `isolinux`/`syslinux` 🔥\n - `systemd`-class bootloaders 🔥\n - `grub` \"2\"\n\n**Package Management**:\n\n- `eopkg` (done) 🔥\n- `sol` (for validation in Solus)\n- `yum`\n- `dnf`\n- `swupd`\n- `.deb` (`dpkg`/`apt-get`/`apt`) (via `debootstrap` maybe?)\n\nTODO\n----\n\n - [x] Add parser for the Solus image specification format\n - [x] Port the `Stack` implementation from old image creator\n - [x] Add config format for the main image configuration\n - [x] Add utilities for image format \u0026 creation (`dd`/`fallocate`, etc)\n - [x] Implement full `eopkg` support in generic `pkg.Manager` interface\n - [x] Add basic ISO9660 support once again\n - [x] Add complete Legacy Boot bootloader support for `isolinux`\n - [ ] Remove repo definition from `.packages` and place in `.spin`, similar to `solbuild`.\n - [ ] Enhance bootloader support for UEFI\n - [ ] Build (successfully!) an existing Solus image specification\n - [ ] Construct specifications for our chroot builder images\n - [ ] Add support for VM/Container images\n\nSupported Medium Types (WIP)\n----------------------------\n\n**LiveOS**\n\nA LiveOS image is an `ISO9660` image containing a live operating system. This is the `dracut` LiveOS image type, currently used by `Solus`, `Fedora`, available in `Gentoo` and potentially others.\n\nBy default a *hybrid* ISO is created, that is an El Torito bootable image that may be booted in either an optical drive or on removal media such as a USB thumb drive. This image will use (currently) `isolinux` for the bootloader. As the project is further implemented, support will be added for `UEFI` booting too.\n\nLicense\n-------\n\nCopyright © 2016 Solus Project\n\n`USpin` is available under the terms of the Apache-2.0 license\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsolus-project%2Fuspin","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsolus-project%2Fuspin","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsolus-project%2Fuspin/lists"}