(59 intermediate revisions by 12 users not shown) | |||
Line 1: | Line 1: | ||
{{admon/note | Note | | {{admon/note | 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 [http://docs.fedoraproject.org/install-guide/ install guide] or [http://docs.fedoraproject.org/readme-burning-isos/ burning how-to] for further instructions.}} | ||
=='''livemedia-creator'''== | =='''livemedia-creator'''== | ||
* | === Documentation === | ||
:https:// | * 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 27 x86_64 environment use mock to setup and install tools. | |||
==== Init Environment ==== | |||
$ mock -r fedora-27-x86_64 --init | |||
$ mock -r fedora-27-x86_64 --install lorax-lmc-novirt vim-minimal pykickstart | |||
==== 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. | |||
==== 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-27-x86_64 --shell --old-chroot --enable-network | |||
<mock-chroot> sh-4.3# | |||
==== 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-4.3# ksflatten --config fedora-live-soas.ks -o flat-fedora-live-soas.ks --version F27 | |||
==== 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-4.3# livemedia-creator --ks flat-fedora-live-soas.ks --no-virt --resultdir /var/lmc --project Fedora-soas-Live --make-iso --volid Fedora-SoaS-27 --iso-only --iso-name Fedora-SoaS-27-x86_64.iso --releasever 27 --macboot | |||
livemedia-creator --ks | ===== Example Output ===== | ||
<mock-chroot> sh-4.4# livemedia-creator --ks flat-fedora-live-soas.ks --no-virt --resultdir /var/lmc --project Fedora-soas-Live --make-iso --volid Fedora-SoaS-27 --iso-only --iso-name Fedora-SoaS-27-x86_64.iso --releasever 27 --macboot | |||
2018-04-13 01:36:05,320: livemedia-creator v27.11-1 | |||
2018-04-13 01:36:05,399: disk_img = /var/lmc/lmc-disk-1t7520xh.img | |||
2018-04-13 01:36:05,400: Using disk size of 5122MiB | |||
2018-04-13 01:36:05,983: Running anaconda. | |||
2018-04-13 01:36:07,427: Starting installer, one moment... | |||
2018-04-13 01:36:07,428: terminal size detection failed, using default width | |||
2018-04-13 01:36:07,428: anaconda 27.20.4-1 for Fedora-soas-Live 27 (pre-release) started. | |||
2018-04-13 01:36:07,428: 01:36:07 Not asking for VNC because of an automated install | |||
2018-04-13 01:36:07,428: 01:36:07 Not asking for VNC because of an automated install | |||
2018-04-13 01:36:07,428: 01:36:07 Not asking for VNC because we don't have Xvnc | |||
2018-04-13 01:36:07,428: 01:36:07 Not asking for VNC because we don't have Xvnc | |||
2018-04-13 01:36:07,597: Processing logs from ('127.0.0.1', 36114) | |||
2018-04-13 01:37:03,791: Starting automated install........................................................ | |||
2018-04-13 01:37:03,792: ================================================================================ | |||
2018-04-13 01:37:03,792: ================================================================================ | |||
2018-04-13 01:37:03,793: Installation | |||
2018-04-13 01:37:03,793: | |||
2018-04-13 01:37:03,793: 1) [x] Language settings 2) [x] Time settings | |||
2018-04-13 01:37:03,793: (English (United States)) (US/Eastern timezone) | |||
2018-04-13 01:37:03,793: 3) [x] Installation source 4) [x] Software selection | |||
2018-04-13 01:37:03,793: (...) (Custom software selected) | |||
2018-04-13 01:37:03,793: 5) [x] Network configuration 6) [ ] User creation | |||
2018-04-13 01:37:03,793: (No network devices available) (No user will be created) | |||
2018-04-13 01:37:03,793: | |||
2018-04-13 01:37:03,793: ================================================================================ | |||
2018-04-13 01:37:03,793: ================================================================================ | |||
2018-04-13 01:37:03,793: Progress | |||
2018-04-13 01:37:03,793: | |||
2018-04-13 01:37:03,793: Setting up the installation environment | |||
2018-04-13 01:37:04,534: Configuring storage | |||
2018-04-13 01:37:04,535: Running pre-installation scripts | |||
2018-04-13 01:37:04,627: Running pre-installation tasks | |||
2018-04-13 01:38:30,542: Installing. | |||
2018-04-13 01:38:30,542: Starting package installation process | |||
2018-04-13 01:38:30,542: Downloading packages | |||
2018-04-13 01:41:39,991: Configuring storage | |||
2018-04-13 01:41:39,991: Performing post-installation setup tasks | |||
2018-04-13 01:41:40,670: Configuring installed system | |||
2018-04-13 01:41:40,723: Creating users | |||
2018-04-13 01:41:40,724: Configuring addons | |||
2018-04-13 01:41:58,165: Generating initramfs | |||
2018-04-13 01:42:11,649: Running post-installation scripts | |||
2018-04-13 01:42:11,649: Storing configuration files and kickstarts | |||
2018-04-13 01:42:49,377: Shutting down log processing | |||
2018-04-13 01:42:50,189: Disk Image install successful | |||
2018-04-13 01:42:50,190: working dir is /var/tmp/lmc-work-8c_bx5tx | |||
2018-04-13 01:46:57,049: Rebuilding initrds | |||
2018-04-13 01:46:57,049: dracut args = ['--xz', '--add', 'livenet dmsquash-live convertfs pollcdrom qemu qemu-net', '--omit', 'plymouth', '--no-hostonly', '--debug', '--no-early-microcode'] | |||
2018-04-13 01:46:57,050: rebuilding boot/initramfs-4.15.15-300.fc27.x86_64.img | |||
2018-04-13 01:47:45,442: Building boot.iso | |||
2018-04-13 01:47:45,528: running x86.tmpl | |||
2018-04-13 01:48:13,968: Disk image erased | |||
2018-04-13 01:48:14,709: SUMMARY | |||
2018-04-13 01:48:14,709: ------- | |||
2018-04-13 01:48:14,709: Logs are in /usr/share/spin-kickstarts | |||
2018-04-13 01:48:14,709: 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-27-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-27-x86_64 --clean | |||
$ sudo setenforce 1 | |||
Revision as of 14:55, 30 September 2020
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 27 x86_64 environment use mock to setup and install tools.
Init Environment
$ mock -r fedora-27-x86_64 --init $ mock -r fedora-27-x86_64 --install lorax-lmc-novirt vim-minimal pykickstart
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-27-x86_64 --shell --old-chroot --enable-network <mock-chroot> sh-4.3#
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-4.3# ksflatten --config fedora-live-soas.ks -o flat-fedora-live-soas.ks --version F27
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-4.3# livemedia-creator --ks flat-fedora-live-soas.ks --no-virt --resultdir /var/lmc --project Fedora-soas-Live --make-iso --volid Fedora-SoaS-27 --iso-only --iso-name Fedora-SoaS-27-x86_64.iso --releasever 27 --macboot
Example Output
<mock-chroot> sh-4.4# livemedia-creator --ks flat-fedora-live-soas.ks --no-virt --resultdir /var/lmc --project Fedora-soas-Live --make-iso --volid Fedora-SoaS-27 --iso-only --iso-name Fedora-SoaS-27-x86_64.iso --releasever 27 --macboot 2018-04-13 01:36:05,320: livemedia-creator v27.11-1 2018-04-13 01:36:05,399: disk_img = /var/lmc/lmc-disk-1t7520xh.img 2018-04-13 01:36:05,400: Using disk size of 5122MiB 2018-04-13 01:36:05,983: Running anaconda. 2018-04-13 01:36:07,427: Starting installer, one moment... 2018-04-13 01:36:07,428: terminal size detection failed, using default width 2018-04-13 01:36:07,428: anaconda 27.20.4-1 for Fedora-soas-Live 27 (pre-release) started. 2018-04-13 01:36:07,428: 01:36:07 Not asking for VNC because of an automated install 2018-04-13 01:36:07,428: 01:36:07 Not asking for VNC because of an automated install 2018-04-13 01:36:07,428: 01:36:07 Not asking for VNC because we don't have Xvnc 2018-04-13 01:36:07,428: 01:36:07 Not asking for VNC because we don't have Xvnc 2018-04-13 01:36:07,597: Processing logs from ('127.0.0.1', 36114) 2018-04-13 01:37:03,791: Starting automated install........................................................ 2018-04-13 01:37:03,792: ================================================================================ 2018-04-13 01:37:03,792: ================================================================================ 2018-04-13 01:37:03,793: Installation 2018-04-13 01:37:03,793: 2018-04-13 01:37:03,793: 1) [x] Language settings 2) [x] Time settings 2018-04-13 01:37:03,793: (English (United States)) (US/Eastern timezone) 2018-04-13 01:37:03,793: 3) [x] Installation source 4) [x] Software selection 2018-04-13 01:37:03,793: (...) (Custom software selected) 2018-04-13 01:37:03,793: 5) [x] Network configuration 6) [ ] User creation 2018-04-13 01:37:03,793: (No network devices available) (No user will be created) 2018-04-13 01:37:03,793: 2018-04-13 01:37:03,793: ================================================================================ 2018-04-13 01:37:03,793: ================================================================================ 2018-04-13 01:37:03,793: Progress 2018-04-13 01:37:03,793: 2018-04-13 01:37:03,793: Setting up the installation environment 2018-04-13 01:37:04,534: Configuring storage 2018-04-13 01:37:04,535: Running pre-installation scripts 2018-04-13 01:37:04,627: Running pre-installation tasks 2018-04-13 01:38:30,542: Installing. 2018-04-13 01:38:30,542: Starting package installation process 2018-04-13 01:38:30,542: Downloading packages 2018-04-13 01:41:39,991: Configuring storage 2018-04-13 01:41:39,991: Performing post-installation setup tasks 2018-04-13 01:41:40,670: Configuring installed system 2018-04-13 01:41:40,723: Creating users 2018-04-13 01:41:40,724: Configuring addons 2018-04-13 01:41:58,165: Generating initramfs 2018-04-13 01:42:11,649: Running post-installation scripts 2018-04-13 01:42:11,649: Storing configuration files and kickstarts 2018-04-13 01:42:49,377: Shutting down log processing 2018-04-13 01:42:50,189: Disk Image install successful 2018-04-13 01:42:50,190: working dir is /var/tmp/lmc-work-8c_bx5tx 2018-04-13 01:46:57,049: Rebuilding initrds 2018-04-13 01:46:57,049: dracut args = ['--xz', '--add', 'livenet dmsquash-live convertfs pollcdrom qemu qemu-net', '--omit', 'plymouth', '--no-hostonly', '--debug', '--no-early-microcode'] 2018-04-13 01:46:57,050: rebuilding boot/initramfs-4.15.15-300.fc27.x86_64.img 2018-04-13 01:47:45,442: Building boot.iso 2018-04-13 01:47:45,528: running x86.tmpl 2018-04-13 01:48:13,968: Disk image erased 2018-04-13 01:48:14,709: SUMMARY 2018-04-13 01:48:14,709: ------- 2018-04-13 01:48:14,709: Logs are in /usr/share/spin-kickstarts 2018-04-13 01:48:14,709: 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-27-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-27-x86_64 --clean $ sudo setenforce 1