From Fedora Project Wiki

 
(59 intermediate revisions by 12 users not shown)
Line 1: Line 1:
{{admon/note | Note | for older method 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.}}
 
 
=='''livemedia-creator'''==
=='''livemedia-creator'''==
*Newer method to create live cd.isos in f24
=== Documentation ===
:https://jbwillia.wordpress.com/2014/10/29/how-to-build-updated-fedora-live-iso-for-yourself/
* Livemedia Creator: http://weldr.io/lorax/livemedia-creator.html
*Older post
* Kickstart: https://github.com/rhinstaller/pykickstart/blob/master/docs/kickstart-docs.rst
:https://www.brianlane.com/creating-live-isos-with-livemedia-creator.html
 
*Examples in f24 root terminal:
=== Setup Environment ===
===Install files===
 
*'''livemedia-creator and ksflatten are part of lorax'''
==== 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.


# dnf install lorax virt-install libvirt-daemon-config-network
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 ====
:'''You must be in the same fedora version (f24) first.'''
If your system is using SELinux, it needs to be set to Permissive mode while running lorax.
setenforce 0
=== ksflatten ===  
::updated 06/28/2016


  ksflatten
  $ sudo setenforce 0
bash: ksflatten: command not found...
Install package 'pykickstart' to provide command 'ksflatten'? [N/y] y


*Link:
=== Running a Compose ===
:https://pagure.io/fedora-kickstarts/tree/f24
Go into your prepared environment to do a compose.


::<dgilmore> satellit: I suggest that you tell people to 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 ====
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.


  ksflatten -v, --config fedora-live-soas.ks -o flat-fedora-live-soas.ks --version F24
  <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 /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
===== 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


=== 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
*See this page for more details on remixes
https://wiki.sugarlabs.org/go/Build_Your_Own_Remix_with_Fedora:


$ 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]#

Latest 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