(Update with better instructions) |
(More update to 39) |
||
(8 intermediate revisions by 4 users not shown) | |||
Line 21: | Line 21: | ||
=== Setup Build Environment === | === Setup Build Environment === | ||
To setup a Fedora | To setup a Fedora 39 x86_64 environment use mock to setup and install tools. | ||
==== Init Environment ==== | ==== Init Environment ==== | ||
$ mock -r fedora- | $ mock -r fedora-39-x86_64 --init | ||
$ mock -r fedora- | $ mock -r fedora-39-x86_64 --install lorax-lmc-novirt vim-minimal pykickstart livecd-tools | ||
==== Get kickstarts ==== | |||
The official Fedora kickstarts are stored in [https://pagure.io/fedora-kickstarts 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 [http://koji.fedoraproject.org/koji/tasks?state=closed&view=flat&method=createLiveMedia&order=-id 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. | If you wanted a different arch or release you would use the correct mock configuration file. | ||
==== SELinux ==== | ==== SELinux ==== | ||
Line 42: | Line 40: | ||
Go into your prepared environment to do a compose. | Go into your prepared environment to do a compose. | ||
$ mock -r fedora- | $ mock -r fedora-39-x86_64 --shell --enable-network --isolation=simple | ||
<mock-chroot> sh- | <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 ==== | ==== 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. | 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- | <mock-chroot> sh-5.2# ksflatten --config fedora-live-soas.ks -o flat-fedora-live-soas.ks | ||
==== Create the Live Image ==== | ==== 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. | 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- | <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 ===== | ===== Example Output ===== | ||
<mock-chroot> sh- | <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 ==== | ==== Compose Results ==== | ||
The resulting images will be located in the mock chroot. Copy them somewhere outside of the mock-chroot. | The resulting images will be located in the mock chroot. Copy them somewhere outside of the mock-chroot. | ||
$ cp /var/lib/mock/fedora- | $ cp /var/lib/mock/fedora-39-x86_64/root/var/lmc/*.iso $HOME | ||
Note: The location will be different based on your mock configuration. | Note: The location will be different based on your mock configuration. | ||
Line 125: | Line 114: | ||
We can now safely clean up the build environment and set SELinux back to enforcing. | We can now safely clean up the build environment and set SELinux back to enforcing. | ||
$ mock -r fedora- | $ mock -r fedora-39-x86_64 --clean | ||
$ sudo setenforce 1 | $ sudo setenforce 1 |
Latest revision as of 17:30, 20 December 2023
livemedia-creator
Documentation
- Livemedia Creator: http://weldr.io/lorax/livemedia-creator.html
- Kickstart: https://github.com/rhinstaller/pykickstart/blob/master/docs/kickstart-docs.rst
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