{"id":13648348,"url":"https://github.com/livecd-tools/livecd-tools","last_synced_at":"2025-04-11T23:17:54.578Z","repository":{"id":26584468,"uuid":"30039000","full_name":"livecd-tools/livecd-tools","owner":"livecd-tools","description":"Tools for building live CDs using DNF","archived":false,"fork":false,"pushed_at":"2025-02-26T12:05:10.000Z","size":1669,"stargazers_count":244,"open_issues_count":65,"forks_count":115,"subscribers_count":25,"default_branch":"main","last_synced_at":"2025-04-11T23:17:49.634Z","etag":null,"topics":["dnf","fedora","image-creation","livecd","python3"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/livecd-tools.png","metadata":{"files":{"readme":"README","changelog":null,"contributing":null,"funding":null,"license":"COPYING","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":"AUTHORS","dei":null,"publiccode":null,"codemeta":null}},"created_at":"2015-01-29T20:11:47.000Z","updated_at":"2025-04-09T17:58:03.000Z","dependencies_parsed_at":"2025-03-21T08:00:29.856Z","dependency_job_id":"91f52f5a-9ad6-47fa-ab22-1c7e66ab76d9","html_url":"https://github.com/livecd-tools/livecd-tools","commit_stats":null,"previous_names":[],"tags_count":172,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/livecd-tools%2Flivecd-tools","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/livecd-tools%2Flivecd-tools/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/livecd-tools%2Flivecd-tools/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/livecd-tools%2Flivecd-tools/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/livecd-tools","download_url":"https://codeload.github.com/livecd-tools/livecd-tools/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248492885,"owners_count":21113163,"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":["dnf","fedora","image-creation","livecd","python3"],"created_at":"2024-08-02T01:04:10.031Z","updated_at":"2025-04-11T23:17:54.559Z","avatar_url":"https://github.com/livecd-tools.png","language":"Python","funding_links":[],"categories":["Python","Minimal rootfs"],"sub_categories":[],"readme":"\n                       The Fedora Live CD Tools\n                    David Zeuthen \u003cdavidz@redhat.com\u003e\n                    Jeremy Katz \u003ckatzj@redhat.com\u003e\n\n                    Last Updated: October 2018\n\nThis project concerns tools to generate live CDs on Fedora based\nsystems including derived distributions such as RHEL, CentOS, and\nothers. See the project Wiki at \n\n https://fedoraproject.org/wiki/FedoraLiveCD\n\nfor more details. Discussion of this project takes place at the\nlivecd@lists.fedoraproject.org mailing list\n\n https://lists.fedoraproject.org/admin/lists/livecd.lists.fedoraproject.org/\n\nThis project and its source files are licensed under the GPLv2\nlicense. See the file COPYING for details.\n\n1. LIVE CD DESIGN GOALS\n\nThe live CD is designed in such a way that when running from a\nlive CD, the system should appear as much as possible as a standard\nsystem with all that entails; e.g., read-write rootfs (achieved using\ndm-snapshot or OverlayFS with the --flat-squashfs option), standard ext4 file\nsystem (for extended attributes) or a direct SquashFS, and so on. \n\nAnother design goal is that the live CD should be ''installable'',\ni.e., a user should be able to install the bits from the live CD onto\na hard disk without this process requiring network access or additional\nmedia.\n\nFinally, another design goal is that the tool set itself should be\nseparate from configuration; the same unmodified tool should be usable\nfor building various live CD flavors with vastly different\nconfigurations, e.g., a GNOME live CD, a KDE live CD, a live CD with\nmusic programs, and so on.\n\n2. CREATING A LIVE CD\n\nTo create a live CD, the livecd-creator tool is used. Super user\nprivileges are needed. The tool is more or less self-documenting, use\nthe --help option to see options.\n\n2.1 HOW THE LIVE CD CREATOR WORKS\n\nIn a nutshell, the livecd-creator program\n\n o Sets up a file for the ext4 file system that will contain all the\n   data comprising the live CD\n\n o Loop mounts that file into the file system so there is an\n   installation root\n\n o Bind mounts certain kernel file systems (/dev, /dev/pts, /proc,\n   /sys, /selinux) inside the installation root\n\n o Uses a configuration file to define the requested packages and\n   default configuration options.  The format of this file is the same\n   as is used for installing a system via kickstart.\n\n o Installs, using DNF, the requested packages into the installation\n   using the given repositories\n\n o Optionally runs scripts as specified by the live CD configuration file. \n\n o Relabels the entire installation root (for SELinux)\n\n o Creates a live CD specific initramfs that matches the installed kernel\n\n o Unmounts the kernel file systems mounted inside the installation root\n\n o Unmounts the installation root\n\n o Runs resize2fs to minimize and unminimize the ext4 file to remove data\n   from deleted files\n\n o Runs resize2fs to minimize on a device-mapper snapshot, to generate a\n   small minimized delta image file which was historically used by anaconda to\n   reduce installation time by not copying unused data to disk\n\n o Creates a SquashFS file system containing only the ext4 file (compression)\n   or directly from the installation root (for OverlayFS overlays)\n\n o Configures the boot loader\n\n o Creates an iso9660 bootable CD\n\n\n2.2 EXAMPLE: A BAREBONES LIVE CD\n\nThe command\n\n# livecd-creator \\\n  --config=/usr/share/doc/livecd-tools/livecd-fedora-minimal.ks\n\nwill create a live CD that will boot to a login prompt. Note that in this\nminimal example, since no configuration is done, the user will not be able to\nlogin to the system as the root password is not set or cleared.\n\n2.3 LIVE CD CONFIGURATION FILES\n\nThe configuration of the live CD is defined by a file that uses the\nsame format as installing a system via kickstart.  They can include\nsome basic system configuration items, the package manifest and a\nscript to be run at the end of the build process.\n\nFor the Fedora project, there are currently a variety of different live CD\nconfiguration files.  The spin-kickstarts package includes all of the\nkickstarts used to create the various spins. These include a minimal live image\n(fedora-minimal-common.ks), a complete workstation image\n(fedora-live-workstation.ks) and others.\n\n2.4 EXAMPLE: SPINNING THE FEDORA WORKSTATION LIVE CD\n\nAssuming that you use the fedora-live-workstation.ks configuration file,\nthen the following command\n\n# livecd-creator \\\n  --config=/usr/share/spin-kickstarts/fedora-live-workstation.ks \\\n  --fslabel=Fedora-29-WS-Live-foo\n\nwill create a live CD called \"Fedora-29-WS-Live-foo\". The name\ngiven by --fslabel is used.\n\n o as a file system label on the ext4 and iso9660 file systems\n   (as such it's visible on the desktop as the CD name)\n\n o in the isolinux boot loader\n\nIf you have the repositories available locally and don't want to wait\nfor the download of packages, just substitute the URLs listed in the\nconfiguration file to point to your local repositories.\n\n3. LIVE CD INSTALLS\n\nAs of Fedora 7, Anaconda has support for doing an installation\nfrom a live CD.  To use this, double click on the \"Install to Hard\nDrive\" item on the desktop or run /usr/bin/liveinst if you don't have\nsuch an icon.\n\n4. LIVE CD MEDIA VERIFICATION\n\nThe live CD can incorporate functionality to verify itself.  To do so,\nyou need to have isomd5sum installed both on the system used for creating\nthe image and installed into the image.  This is so that the implantisomd5\nand checkisomd5 utilities can be used. These utilities take advantage of\nembedding an md5sum into the application area of the iso9660 image.\nThis then gets verified before mounting the real root filesystem.\n\nThese utilities used to be part of the anaconda-runtime package.\n\n5. LOADING LIVE IMAGES ONTO USB MEDIA \n\nUSB sticks are becoming increasingly prevalent and are a nice way to\nuse live images.  You can take a live CD iso image and transform it so\nthat it can be used on a USB stick.  To do so, use the\nlivecd-iso-to-disk script, like the following:\n\n   livecd-iso-to-disk /path/to/live.iso /dev/sdb1\n\nReplace the '/dev/sdb1' argument above with the (unmounted) partition where you\nwish to load the live image.  This is not a destructive process; any data you\ncurrently have on your USB stick will be preserved.\n\nMultiple images may be loaded onto a single USB stick.\n\nSee livecd-iso-to-disk --help for more options and instructions.\n\n6. SECURE IMAGE GENERATION\n\nDue to limitations in kickstart, the default invocation of livecd-creator\ncannot verify RPM package signatures. Package signatures are an essential\nsecurity function which protects RPMs against tampering during storage or\ntransfer.\n\nIf possible, you should enable signature checks with the --repo option:\n\n  livecd-creator \\\n    --config=/usr/share/doc/livecd-tools/livecd-fedora-minimal.ks \\\n    --repo=/etc/yum.repos.d\n\n--repo configures RPM sources using DNF \".repo\" configuration files instead of\nkickstart. If you are building a different distro than your host system, be sure\nto use configuration files for that distro.\n\nYour --repo file or directory can use any configuration options available to\nDNF. The following options must be set in order to verify signatures:\n\n  gpgcheck=1\n\n  gpgkey=path/to/key.asc\n         file:///url/to/another/key.asc\n\nIn this mode, the %repo directive(s) in the kickstart file, if any,\nare ignored.\n\nAdditionally, use --pkgverify-level=all to enforce valid, trusted\nsignatures on all packages installed.\n\n7. MOUNTING LIVE IMAGES\n\nA live CD .iso file or an installed live USB device may be mounted with the\nliveimage-mount script to peer into the live OS filesystem, or even edit it on\na device loaded with a persistent storage overlay.\n\n   liveimage-mount /path/to/live[.iso|device|directory] \u003cmountpoint\u003e\n\nSee liveimage-mount --help for more options.\n\n7. EDITING LIVE IMAGES\n\nLive OS images may be edited using the editliveos script:\n\n   editliveos [options] \u003cLiveOS_source\u003e\n\nThis script may be used to merge a persistent overlay, run software updates\nincluding kernel and initial RAM filesystem updates, insert files, clone a\ncustomized instance, adjust the root or home filesystem or overlay sizes and\nfilesystem or overlay types, seclude private or user-specific files, rebuild\nthe image into a new .iso image distribution file, and refresh the source's\npersistent filesystem overlay.\n\nSee editliveos --help for more options and instructions.\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flivecd-tools%2Flivecd-tools","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flivecd-tools%2Flivecd-tools","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flivecd-tools%2Flivecd-tools/lists"}