From Fedora Project Wiki

mNo edit summary
(44 intermediate revisions by 12 users not shown)
Line 1: Line 1:
{{admon/note | Note | for older method (namely for Fedora 23) using livecd-tools ('''livecd-creator''') visit https://fedoraproject.org/wiki/How_to_create_and_use_a_Live_CD}}
{{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.}}
{{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.}}


{{admon/note | Note | for f25 (rawhide) livemedia-creator see https://wiki.sugarlabs.org/go/Fedora_25#livemedia-creator }}


=='''livemedia-creator'''==
=='''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.


*Older posts
==== Init Environment ====
:https://www.brianlane.com/creating-live-isos-with-livemedia-creator.html
$ mock -r fedora-27-x86_64 --init
:https://jbwillia.wordpress.com/2014/10/29/how-to-build-updated-fedora-live-iso-for-yourself/
$ mock -r fedora-27-x86_64 --install lorax-lmc-novirt vim-minimal pykickstart


*Examples in f24 root terminal:
==== Get kickstarts ====
===Install files===
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.
*'''livemedia-creator and ksflatten are part of lorax'''


# dnf install lorax virt-install libvirt-daemon-config-network pykickstart
If you wanted a different arch or release you would use the correct mock configuration file.
Last metadata expiration check: 2:48:39 ago on Sun Jun 19 14:06:08 2016.
Package lorax-23.21-1.fc23.x86_64 is already installed, skipping.
Package libvirt-daemon-config-network-1.2.18.3-1.fc23.x86_64 is already installed, skipping.
--snip--
Downloading Packages:
virt-install-1.3.2-2.fc23.noarch.rpm                                                                                                              219 kB/s |  92 kB    00:00   
--snip--
Installed:
  virt-install.noarch 1.3.2-2.fc23                                                                                                                                               


*Must be done first:
==== SELinux ====
If your system is using SELinux, it needs to be set to Permissive mode while running lorax.


:'''You must be in the same fedora version (f24) first. This is so that packages can be installed to livecd without SELinux errors and is relabeled at boot time.'''
  $ sudo setenforce 0
  setenforce 0


===Notes===
=== Running a Compose ===
*Jun 28, 2016 at 12:28:27PM -0500, Bruno Wolff III wrote:
Go into your prepared environment to do a compose.
"In --no-virt mode it's calling anaconda
directly so kickstart processing of the %include may work, depending on
the location of the files. But if you're using it in virt mode only the
top level ks gets passed into the vm so ksflatten is required in that
case."
*Link:
:https://pagure.io/fedora-kickstarts/tree/f24


::alternately: git clone the repo and not get each piece manually
$ mock -r fedora-27-x86_64 --shell --old-chroot --enable-network
<mock-chroot> sh-4.3#


:Kickstarts need to flattened before use:
==== Flatten a Kickstart ====
:: hit raw tab and '''save-page-as''' to a local directory (/home/(user)/Downloads/pagure/)
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.:


:https://pagure.io/fedora-kickstarts/blob/f24/f/fedora-live-soas.ks
<mock-chroot> sh-4.3# ksflatten --config fedora-live-soas.ks -o flat-fedora-live-soas.ks --version F27
:https://pagure.io/fedora-kickstarts/blob/f24/f/fedora-live-base.ks
:https://pagure.io/fedora-kickstarts/blob/f24/f/fedora-live-minimization.ks
:https://pagure.io/fedora-kickstarts/blob/f24/f/fedora-repo.ks
:https://pagure.io/fedora-kickstarts/blob/f24/f/fedora-repo-not-rawhide.ks
:https://pagure.io/fedora-kickstarts/blob/f24/f/fedora-repo-rawhide.ks
:https://pagure.io/fedora-kickstarts/blob/f24/f/fedora-soas-packages.ks


*switch root terminal to the local directory with the kickstart files (/home/(user)/Downloads/pagure/)
==== Create the Live Image ====
=== ksflatten ===  
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.
::updated 06/28/2016


<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


  ksflatten -v, --config fedora-live-soas.ks -o flat-fedora-live-soas.ks --version F24
===== Example Output =====
===livemedia-creator example===
  <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
  livemedia-creator --ks /home/(user)/Downloads/pagure/flat-fedora-live-soas.ks --logfile /tmp/lmc-logs/livemedia-out.log --no-virt --resultdir /tmp/lmc --project Fedora-soas-Live --make-iso --volid Fedora-SoaS-flat-live --iso-only --iso-name Fedora-SoaS-flat-live.iso --releasever 24 --title Fedora-SoaS-flat-live --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


=== Make a remix ===
==== Compose Results ====
*edit the bottom of the flat-fedora-live-soas.ks
The resulting images will be located in the mock chroot. Copy them somewhere outside of the mock-chroot.
:that you produce with ksflatten  (above)
:in this section of the flattened.ks:
%packages
:add a program  (add name)
:'''-''' delete a program ( put - in front)
:put '''#''' in front of listed program to not install it


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


:Build takes a long time wait for completion
Note: The location will be different based on your mock configuration.
:ends with:
..........clip........
..........clip........
2016-05-17 16:16:16,110: Disk Image install successful
2016-05-17 16:16:16,110: working dir is /var/tmp/lmc-work-rilyz2bm
2016-05-17 16:27:38,448: Rebuilding initrds
2016-05-17 16:27:38,448: dracut args = ['--xz', '--add', 'livenet dmsquash-live convertfs pollcdrom qemu qemu-net', '--omit', 'plymouth', '--no-hostonly', '--debug', '--no-early-microcode']
2016-05-17 16:27:38,449: rebuilding boot/initramfs-4.5.3-300.fc24.x86_64.img
2016-05-17 16:29:15,724: Building boot.iso
2016-05-17 16:29:15,784: running x86.tmpl
2016-05-17 16:29:48,959: Disk image erased
2016-05-17 16:29:49,377: SUMMARY
2016-05-17 16:29:49,377: -------
2016-05-17 16:29:49,377: Logs are in /tmp/lmc-logs
2016-05-17 16:29:49,377: Results are in /tmp/lmc


===Retrieve finished live.iso===
=== Cleanup ===
"Results are in /tmp/lmc"
We can now safely clean up the build environment and set SELinux back to enforcing.
*start files application
*click on '''Files system'''
:open  temp folder
:open lmc folder
*click on  the '''.....iso''' you just built
'''copy to''' (mouse right click) '''Home''' with files application
*Check that it is in Home
===Clean Up===
:delete the instance in /tmp
:delete the /tmp directory  (cannot run new build unless this is done?)


  [root@localhost lmc]#
  $ mock -r fedora-27-x86_64 --clean
[root@localhost lmc]# cd ..
  $ sudo setenforce 1
[root@localhost tmp]# rm -r lmc
rm: descend into directory 'lmc'? y
rm: remove regular file 'lmc/Fedora-LUCwks-20160524.iso'? y
rm: remove directory 'lmc'? y
  [root@localhost tmp]#

Revision as of 14:55, 30 September 2020

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 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