From Fedora Project Wiki

The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.
Note.png
Note
If you simply want to burn a pre-made ISO to a disc, visit http://fedoraproject.org/en/get-fedora to download a LiveCD or LiveDVD, then see the install guide or burning how-to for further instructions.


livemedia-creator

Documentation

Setup Environment

Cloud Base/Vagrant

If using the cloud base or vagrant images, install the needed kernel modules:

# dnf install kernel-modules-$(uname -r)

Install Mock

You should always do all work in mock, this will allow you to ensure that the compose environment matches the target environment.

# dnf install mock
# usermod -a -G mock <user>

Setup Build Environment

To setup a Fedora 39 x86_64 environment use mock to setup and install tools.

Init Environment

$ mock -r fedora-39-x86_64 --init
$ mock -r fedora-39-x86_64 --install lorax-lmc-novirt vim-minimal pykickstart livecd-tools

Get kickstarts

The official Fedora kickstarts are stored in a git repository. The 'master' branch is for Rawhide; there are branches for each release as well. You can use a kickstart from this repository (on the correct branch for whatever release you want your live image to be) as a base. You could also take a fully flattened kickstart from a recent official live image compose task as a base.

If you wanted a different arch or release you would use the correct mock configuration file.

SELinux

If your system is using SELinux, it needs to be set to Permissive mode while running lorax.

$ sudo setenforce 0

Running a Compose

Go into your prepared environment to do a compose.

$ mock -r fedora-39-x86_64 --shell --enable-network --isolation=simple
<mock-chroot> sh-5.2#

If you need to copy files into mock then you can do that with

$ mock -r fedora-39-x86_64 --copyin filename /builddir

Copying to builddir puts the file in the working dir of the mock environment.

Flatten a Kickstart

The official Fedora spins are composed from templates. Flattening fully resolves the templates to a valid kickstart which can be fed to livemedia-creator. After copying a base kickstart into the mock environment, you can flatten it with e.g.:

<mock-chroot> sh-5.2# ksflatten --config fedora-live-soas.ks -o flat-fedora-live-soas.ks

Create the Live Image

Run livemedia-creator with the flattened kickstart and relevant options. This creates a Sugar on a Stick live iso that also has EFI/Mac booting support.

<mock-chroot> sh-5.2# livemedia-creator --ks flat-fedora-live-soas.ks --no-virt --resultdir /var/lmc --project Fedora-soas-Live --make-iso --volid Fedora-SoaS-39 --iso-only --iso-name Fedora-SoaS-39-x86_64.iso --releasever 39 --macboot
Example Output
<mock-chroot> sh-5.2# livemedia-creator --ks /flat-fedora-live-soas.ks --no-virt --resultdir /var/lmc --project Fedora-soas-Live --make-iso --volid Fedora-Soas-39 --iso-only --iso-name Fedora-Soas-39-x86_64.iso --releasever 39 --macboot
2023-11-22 16:41:11,591: Starting installer, one moment...
2023-11-22 16:41:11,591: terminal size detection failed, using default width
2023-11-22 16:41:11,591: anaconda 39.32.6-2.fc39 for Fedora-soas-Live 39 (pre-release) started.
2023-11-22 16:41:11,591: 16:41:11 Not asking for VNC because of an automated install
2023-11-22 16:41:11,591: 16:41:11 Not asking for VNC because we don't have Xvnc
2023-11-22 16:41:13,369: Processing logs from ('127.0.0.1', 38824)
2023-11-22 16:42:20,119: Starting automated install..................................................................
2023-11-22 16:42:20,119: 
2023-11-22 16:42:20,119: ================================================================================
2023-11-22 16:42:20,119: ================================================================================
2023-11-22 16:42:20,119: Installation
2023-11-22 16:42:20,119: 
2023-11-22 16:42:20,119: 1) [x] Language settings                 2) [x] Time settings
2023-11-22 16:42:20,119:        (English (United States))                (US/Eastern timezone)
2023-11-22 16:42:20,119: 3) [x] Installation source               4) [x] Software selection
2023-11-22 16:42:20,119:        (https://mirrors.fedoraproject.o         (Sugar Desktop Environment)
2023-11-22 16:42:20,119:        rg/mirrorlist?repo=rawhide&arch=
2023-11-22 16:42:20,119:        $basearch)
2023-11-22 16:42:20,119: 5) [ ] User creation
2023-11-22 16:42:20,119:        (No user will be created)
2023-11-22 16:42:20,119: 
2023-11-22 16:42:20,119: ================================================================================
2023-11-22 16:42:20,119: ================================================================================
2023-11-22 16:42:20,120: Progress
2023-11-22 16:42:20,120: 
2023-11-22 16:42:20,120: Setting up the installation environment
2023-11-22 16:42:20,120: .
2023-11-22 16:42:20,120: Configuring storage
2023-11-22 16:44:24,665: .
2023-11-22 16:44:24,666: Running pre-installation scripts
2023-11-22 16:44:24,666: .
2023-11-22 16:44:24,666: Running pre-installation tasks
2023-11-22 17:15:31,230: Rebuilding initrds
2023-11-22 17:15:31,230: dracut args = ['--xz', '--add', 'livenet dmsquash-live dmsquash-live-ntfs convertfs pollcdrom qemu  qemu-net', '--no-hostonly', '--debug', '--no-early-microcode'] 
2023-11-22 17:15:31,251: rebuilding boot/initramfs-6.7.0-0.rc2.22.fc40.x86_64.img
2023-11-22 17:16:44,012: Building boot.iso
2023-11-22 17:16:44,052: running x86.tmpl
2023-11-22 17:17:15,011: Disk image erased
2023-11-22 17:17:27,071: SUMMARY
2023-11-22 17:17:27,071: -------
2023-11-22 17:17:27,071: Logs are in /builddir
2023-11-22 17:17:27,071: Results are in /var/lmc

Compose Results

The resulting images will be located in the mock chroot. Copy them somewhere outside of the mock-chroot.

$ cp /var/lib/mock/fedora-39-x86_64/root/var/lmc/*.iso $HOME

Note: The location will be different based on your mock configuration.

Cleanup

We can now safely clean up the build environment and set SELinux back to enforcing.

$ mock -r fedora-39-x86_64 --clean
$ sudo setenforce 1