{"id":39823272,"url":"https://github.com/yureutaejin/yob","last_synced_at":"2026-01-18T13:01:20.877Z","repository":{"id":311879488,"uuid":"1045373901","full_name":"yureutaejin/yob","owner":"yureutaejin","description":"YOB: Your own OS using bootc","archived":false,"fork":false,"pushed_at":"2025-11-27T05:08:58.000Z","size":199,"stargazers_count":12,"open_issues_count":0,"forks_count":2,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-01-18T05:29:39.643Z","etag":null,"topics":["bootc","immutable"],"latest_commit_sha":null,"homepage":"https://quay.io/repository/yuntae/yob","language":"Makefile","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/yureutaejin.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,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-08-27T04:14:49.000Z","updated_at":"2026-01-15T01:45:28.000Z","dependencies_parsed_at":"2025-09-11T01:23:20.162Z","dependency_job_id":"6cc4e729-91fd-48bc-9fed-d9f1807dc3d8","html_url":"https://github.com/yureutaejin/yob","commit_stats":null,"previous_names":["yureutaejin/immutable-os","teamthepioneers/immutable-os-bootc","yureutaejin/yob"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/yureutaejin/yob","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yureutaejin%2Fyob","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yureutaejin%2Fyob/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yureutaejin%2Fyob/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yureutaejin%2Fyob/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/yureutaejin","download_url":"https://codeload.github.com/yureutaejin/yob/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yureutaejin%2Fyob/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28536686,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-18T10:13:46.436Z","status":"ssl_error","status_checked_at":"2026-01-18T10:13:11.045Z","response_time":98,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["bootc","immutable"],"created_at":"2026-01-18T13:01:10.581Z","updated_at":"2026-01-18T13:01:20.857Z","avatar_url":"https://github.com/yureutaejin.png","language":"Makefile","funding_links":[],"categories":[],"sub_categories":[],"readme":"# YOB : Your own OS using bootc\n\n## Index\n\n\u003c!-- no toc --\u003e\n- [Contributors](#contributors)\n- [Introduction](#introduction)\n- [Overall pipeline workflows](#overall-pipeline-workflows)\n- [Quick Start](#quick-start)\n\n## Translation\n\n- [한국어](./docs/README-KO.md)\n\n## Contributors\n\n\u003ctable\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/yureutaejin\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/85734054?v=4\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003e\nYuntae\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/charlie3965\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/19777578?v=4\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003e\nChunsoo\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003c/td\u003e\n\u003c/table\u003e\n\n## Introduction\n\nBase project YOB referenced\n\n- [bootc](https://bootc-dev.github.io/)\n\n\u003cimg src=\"https://developers.redhat.com/sites/default/files/styles/article_floated/public/image1_62.png.webp?itok=c0vYglLs\" width=\"500\" alt=\"bootc container\"\u003e\n\nAs everybody knows, The Linux container usually shares kernel with host OS,  \nso that we can easily create a \"Container\" which is more lightweight and faster than Virtual Machine.\n\nThe bootc project uses the method in reverse to create OS using the Linux container techniques.  \nUnlike usual OCI containers, the base OCI container (so called, bootable container) that bootc uses have below things already.\n\n- Linux kernel\n- Bootloader\n- systemd\n- System utilities \u0026 drivers\n\nSo we can create OS image using OCI container techniques which is familiar to modern developers/engineers.\n\n## Overall pipeline workflows\n\nCurrently, this project referred RHEL image mode pipeline diagram.\n\n- [what-image-mode-means-users-rhel-edge](https://www.redhat.com/en/blog/what-image-mode-means-users-rhel-edge)\n\n![Image mode pipeline for RHEL](https://www.redhat.com/rhdc/managed-files/image2_132.png)\n\n## Quick Start\n\nQuick start without editing few configurations.\n\n### Prerequisites\n\n- Docker\n- Make\n- OCI Registry\n  - Get your account of OCI Registry (e.g. Docker Hub, Quay.io, etc.)\n- Just define local variables in host shell without fixing Makefile (Refer to default value in [Makefile](./Makefile))\n\n### 1. Build bootc\n\nIt will build OCI container based on bootc project and push it to your OCI Registry.\n\n1. `make build-bootc`\n2. `make push-bootc`\n\n### 2. (Just for first boot) Convert bootc to disk format\n\n- `make pull-bootc-image`\n  - Pull bootc image from OCI Registry (if you haven't yet)\n- `make save-image-as-tgz`\n- `make convert-to-{iso,ami,qcow2}`\n  - Currently, only iso and ami format is tested.\n\n### 3. Flash bootable disk\n\nThere are too many ways to make bootable disk.\nJust leave Bare Metal case for now.\n\n- (Bare Metal) Recommend to flash USB drive (3.0, color blue) with at least 8GB\n  - [Ventoy](https://www.ventoy.net/en/index.html)\n  - [BalenaEtcher](https://etcher.balena.io/)\n\n### 4. Boot OS\n\nBoot with created bootable disk\nSince we've set host's config with [config.toml](./config.toml) already, Just wait until first booting is done.\n\n### 5. (On target machine) Rollback/Upgrade/Switch OS\n\n\u003e [!NOTE]\n\u003e No need to make bootable disk again after first boot.\n\nSimply push the new image to the OCI Registry, and the OS switching will be complete after downloading and rebooting.\n\n- `sudo bootc upgrade`\n  - Upgrade to latest pushed image with same tag you booted\n- `sudo bootc switch OCI_REGISTRY/OCI_IMAGE_REPO:OCI_IMAGE_TAG`\n  - Switch to specified bootc image\n  - You can switch any bootc image if it is accessible\n  - e.g. `sudo bootc switch quay.io/fedora/fedora-bootc:latest`\n- `sudo bootc rollback`\n  - Rollback to previous image\n  - (Important) OS will keep just 1 previous version of image for rollback\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyureutaejin%2Fyob","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fyureutaejin%2Fyob","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyureutaejin%2Fyob/lists"}