Install and Configure mock
# dnf install mock # usermod -a -G mock <user>
Here’s how you setup a Fedora 27 x86_64 environment.
$ mock -r fedora-27-x86_64 --init $ mock -r fedora-27-x86_64 --install lorax-lmc-novirt git vim-minimal pykickstart
For a different arch or release modify the mock configuration file.
Enable network access in mock. Modify config_opts[‘rpmbuild_networking’] to True.
$ sudo vi /etc/mock/site-defaults.cfg
Kickstart files
Inside the mock chroot or container, clone the kickstarts git repository. If your system is using SELinux it needs to be set to Permissive mode while running lorax. The –old-chroot might not be needed for you. I had to use it because I had problem with loop device inside mock.
$ sudo setenforce 0 $ mock -r fedora-27-x86_64 --shell --old-chroot <mock-chroot> sh-4.4# git clone https://pagure.io/fedora-kickstarts.git
Modify the fedora-repo.ks. You’ll have to comment the rawhide repo and uncomment this line:
%include fedora-repo-not-rawhide.ks
ksflatten
change directory into fedora-kickstarts and flatten a kickstart
<mock-chroot> sh-4.4# cd fedora-kickstarts <mock-chroot> sh-4.4# ksflatten --config fedora-live-workstation.ks -oFedora-MyLiveCrypto.ks --version F27
You should see a warning about redundant “part /”, go edit the flat-fedora-live-workstation.ks and remove one of them. If you want to remove packages or group of packages, add stuff etc.. That’s where you’ll do it. For the first time I suggest you just go with the original kickstart file just to verify everything is working.
livemedia-creator
<mock-chroot> sh-4.4# livemedia-creator --ks Fedora-MyLiveCrypto.ks --no-virt --resultdir /var/lmc --project Fedora-work-mylivecrypto --make-iso --volid Fedora-mylivecrypto-27 --iso-only --iso-name Fedora-mylivecrypto-27-x86_64-1.iso --releasever 27 --title Fedora-MyLiveCrypto-live --macboot <mock-chroot> sh-4.4# livemedia-creator --ks Fedora-MyLiveCrypto.ks --no-virt --resultdir /var/lmc --project Fedora-work-mylivecrypto --make-iso --volid Fedora-mylivecrypto-27 --iso-only --iso-name Fedora-mylivecrypto-27-x86_64-1.iso --releasever 27 --title Fedora-MyLiveCrypto-live --macboot 2018-03-05 21:02:02,319: livemedia-creator v27.11-1 2018-03-05 21:02:02,554: disk_img = /var/lmc/lmc-disk-_zch_o2a.img 2018-03-05 21:02:02,555: Using disk size of 6658MiB X2018-03-05 21:02:06,314: Running anaconda. 2018-03-05 21:02:07,567: 2018-03-05 21:02:07,568: ** (process:1703): WARNING **: Kernel module 'btrfs' not available 2018-03-05 21:02:07,570: 2018-03-05 21:02:07,571: ** (process:1703): WARNING **: Cannot load the BTRFS plugin 2018-03-05 21:02:10,302: Starting installer, one moment... 2018-03-05 21:02:10,304: terminal size detection failed, using default width 2018-03-05 21:02:10,304: anaconda 27.20.4-1 for Fedora-work-mylivecrypto 27 (pre-release) started. 2018-03-05 21:02:10,324: Traceback (most recent call last): 2018-03-05 21:02:10,325: File "/usr/sbin/anaconda", line 603, in <module> 2018-03-05 21:02:10,325: display.setup_display(anaconda, opts, addon_paths=addon_paths) 2018-03-05 21:02:10,326: File "/usr/lib64/python3.6/site-packages/pyanaconda/display.py", line 258, in setup_display 2018-03-05 21:02:10,327: vnc_can_be_started, vnc_error_messages = check_vnc_can_be_started(anaconda) 2018-03-05 21:02:10,328: File "/usr/lib64/python3.6/site-packages/pyanaconda/display.py", line 120, in check_vnc_can_be_started 2018-03-05 21:02:10,328: if not nm_is_connecting() and not nm_is_connected(): 2018-03-05 21:02:10,329: File "/usr/lib64/python3.6/site-packages/pyanaconda/nm.py", line 173, in nm_is_connecting 2018-03-05 21:02:10,330: return nm_state() == NM.State.CONNECTING 2018-03-05 21:02:10,330: File "/usr/lib64/python3.6/site-packages/pyanaconda/nm.py", line 149, in nm_state 2018-03-05 21:02:10,331: return NM.State.CONNECTED_GLOBAL 2018-03-05 21:02:10,331: AttributeError: type object 'State' has no attribute 'CONNECTED_GLOBAL' 2018-03-05 21:02:10,468: Running anaconda failed: process '['anaconda', '--kickstart', '/fedora-kickstarts/Fedora-MyLiveCrypto.ks', '--cmdline', '--dirinstall', '--remotelog', '127.0.0.1:54649']' exited with status 1 2018-03-05 21:03:08,338: Install failed: novirt_install failed 2018-03-05 21:03:08,346: Removing bad disk image 2018-03-05 21:03:08,360: ERROR: Image creation failed: novirt_install failed <mock-chroot> sh-4.4# livemedia-creator --ks Fedora-MyLiveCrypto.ks --no-virt --resultdir /var/lmc --project Fedora-work-mylivecrypto --make-iso --volid Fedora-mylivecrypto-27 --iso-only --iso-name Fedora-mylivecrypto-27-x86_64-1.iso --releasever 27 --title Fedora-MyLiveCrypto-live --macboot 2018-03-05 22:16:30,299: livemedia-creator v27.11-1 2018-03-05 22:16:30,300: The results_dir (/var/lmc) should not exist, please delete or move its contents <mock-chroot> sh-4.4# rm -rf /var/lmc/ <mock-chroot> sh-4.4# livemedia-creator --ks Fedora-MyLiveCrypto.ks --no-virt --resultdir /var/lmc --project Fedora-work-mylivecrypto --make-iso --volid Fedora-mylivecrypto-27 --iso-only --iso-name Fedora-mylivecrypto-27-x86_64-1.iso --releasever 27 --title Fedora-MyLiveCrypto-live --macboot 2018-03-05 22:16:34,188: livemedia-creator v27.11-1 2018-03-05 22:16:34,250: disk_img = /var/lmc/lmc-disk-d6h69eot.img 2018-03-05 22:16:34,251: Using disk size of 6658MiB 2018-03-05 22:16:37,432: Running anaconda. 2018-03-05 22:16:37,754: 2018-03-05 22:16:37,754: ** (process:1825): WARNING **: Kernel module 'btrfs' not available 2018-03-05 22:16:37,755: 2018-03-05 22:16:37,755: ** (process:1825): WARNING **: Cannot load the BTRFS plugin 2018-03-05 22:16:38,869: Starting installer, one moment... 2018-03-05 22:16:38,870: terminal size detection failed, using default width 2018-03-05 22:16:38,870: anaconda 27.20.4-1 for Fedora-work-mylivecrypto 27 (pre-release) started. 2018-03-05 22:16:38,870: 22:16:38 Not asking for VNC because of an automated install 2018-03-05 22:16:38,871: 22:16:38 Not asking for VNC because of an automated install 2018-03-05 22:16:38,871: 22:16:38 Not asking for VNC because we don't have Xvnc 2018-03-05 22:16:38,874: 22:16:38 Not asking for VNC because we don't have Xvnc 2018-03-05 22:16:39,630: Processing logs from ('127.0.0.1', 39458) 2018-03-05 22:18:08,849: Starting automated install....................................................................................... 2018-03-05 22:18:08,850: ================================================================================ 2018-03-05 22:18:08,851: ================================================================================ 2018-03-05 22:18:08,851: Installation 2018-03-05 22:18:08,852: 2018-03-05 22:18:08,853: 1) [x] Language settings 2) [x] Time settings 2018-03-05 22:18:08,854: (English (United States)) (US/Eastern timezone) 2018-03-05 22:18:08,854: 3) [x] Installation source 4) [x] Software selection 2018-03-05 22:18:08,855: (https://mirrors.fedoraproject.o (Custom software selected) 2018-03-05 22:18:08,856: rg/mirrorlist?repo=fedora-$relea 2018-03-05 22:18:08,856: sever&arch=$basearch) 2018-03-05 22:18:08,857: 5) [x] Network configuration 6) [ ] User creation 2018-03-05 22:18:08,857: (No network devices available) (No user will be created) 2018-03-05 22:18:08,858: 2018-03-05 22:18:08,858: ================================================================================ 2018-03-05 22:18:08,859: ================================================================================ 2018-03-05 22:18:08,860: Progress 2018-03-05 22:18:08,861: 2018-03-05 22:18:08,864: Setting up the installation environment 2018-03-05 22:18:09,545: . 2018-03-05 22:18:09,545: Configuring storage 2018-03-05 22:18:09,547: . 2018-03-05 22:18:09,547: Running pre-installation scripts 2018-03-05 22:18:09,772: . 2018-03-05 22:18:09,773: Running pre-installation tasks 2018-03-05 22:23:03,040: . 2018-03-05 22:23:03,040: Installing. 2018-03-05 22:23:03,041: Starting package installation process 2018-03-05 22:23:03,041: Downloading packages 2018-03-05 22:23:03,042: Downloading 1686 RPMs, 0 B / 1.48 GiB (0%) done. 2018-03-05 22:23:03,042: Downloading 1686 RPMs, 5.52 MiB / 1.48 GiB (0%) done. 2018-03-05 22:23:03,043: Downloading 1686 RPMs, 11.56 MiB / 1.48 GiB (0%) done. 2018-03-05 22:23:03,043: Downloading 1686 RPMs, 17.84 MiB / 1.48 GiB (1%) done. 2018-03-05 22:23:03,044: Downloading 1686 RPMs, 23.42 MiB / 1.48 GiB (1%) done. 2018-03-05 22:23:03,044: Downloading 1686 RPMs, 29.77 MiB / 1.48 GiB (1%) done. [...] 2018-03-05 15:51:31,853: Verifying hunspell-en-GB.noarch (1558/1559) 2018-03-05 15:51:31,853: Verifying perl-libnet.noarch (1559/1559) 2018-03-05 15:51:31,854: . 2018-03-05 15:51:31,854: Configuring storage 2018-03-05 15:51:31,855: . 2018-03-05 15:51:31,855: Performing post-installation setup tasks 2018-03-05 15:51:36,506: . 2018-03-05 15:51:36,507: 2018-03-05 15:51:36,507: Configuring installed system 2018-03-05 15:51:38,665: . 2018-03-05 15:51:38,667: Creating users 2018-03-05 15:51:38,669: . 2018-03-05 15:51:38,670: Configuring addons 2018-03-05 15:52:04,568: . 2018-03-05 15:52:04,569: Generating initramfs 2018-03-05 15:53:15,788: . 2018-03-05 15:53:15,789: Running post-installation scripts 2018-03-05 15:53:15,792: . 2018-03-05 15:53:15,793: Storing configuration files and kickstarts 2018-03-05 15:53:15,801: . 2018-03-05 15:55:49,196: Shutting down log processing 2018-03-05 15:55:52,559: Disk Image install successful 2018-03-05 15:55:52,561: working dir is /var/tmp/lmc-work-_4z0sq47 2018-03-05 16:29:59,226: Rebuilding initrds 2018-03-05 16:29:59,227: dracut args = ['--xz', '--add', 'livenet dmsquash-live convertfs pollcdrom qemu qemu-net', '--omit', 'plymouth', '--no-hostonly', '--debug', '--no-early-microcode'] 2018-03-05 16:29:59,229: rebuilding boot/initramfs-4.15.6-300.fc27.x86_64.img 2018-03-05 16:31:12,965: Building boot.iso 2018-03-05 16:31:13,084: running x86.tmpl 2018-03-05 16:31:53,990: Creating image file /var/tmp/lmc-work-_4z0sq47/images/product.img from contents of /var/tmp/lorax.imgutils.nzcr8i5_/usr/share/lorax//product/ 2018-03-05 16:32:34,309: Disk image erased 2018-03-05 16:32:42,993: SUMMARY 2018-03-05 16:32:42,998: ------- 2018-03-05 16:32:42,999: Logs are in /fedora-kickstarts 2018-03-05 16:32:42,999: Results are in /var/lmc <mock-chroot> sh-4.4#
Get the iso and test it
You’ll find the iso in “/var/lib/mock/fedora-27-x86_64/root/var/lmc” just copy it somewhere else and test it using Virtualbox, kvm or qemu.
If you want to build a new iso you’ll have to delete the “/var/lmc” inside your mock, otherwise livemedia-creator won’t start.
Special thanks to Southern_Gentlem, dowdle and sfix for their help on Freenode #fedora and #fedora-respins
Sources:
https://fedoraproject.org/wiki/Livemedia-creator-_How_to_create_and_use_a_Live_CD
https://github.com/rhinstaller/pykickstart/blob/master/docs/kickstart-docs.rst