livemedia-creator: Add minimal disk example kickstart (#1019728)
Also adds a check for a bad url repo, and fix ram calculation for appliance mode. Updates the README.livemedia-creator documentation. Resolves: rhbz#1019728
This commit is contained in:
parent
149d2229ea
commit
fca6a13875
@ -16,6 +16,14 @@ minimum you need:
|
||||
--iso to specify the Anaconda install media to use with virt-install
|
||||
--ks is the kickstart to use to install the system
|
||||
|
||||
To use livemedia-creator with virt-install you will need to install the
|
||||
following packages, as well as have libvirtd setup correctly.
|
||||
virt-install
|
||||
libvirt-python
|
||||
|
||||
If you are going to be using Anaconda directly, with --no-virt mode, make sure
|
||||
you have the anaconda package installed.
|
||||
|
||||
|
||||
QUICKSTART
|
||||
----------
|
||||
@ -74,13 +82,18 @@ written using the Mako template system which is very flexible.
|
||||
|
||||
KICKSTARTS
|
||||
----------
|
||||
Existing spin kickstarts can be used to create live media with a few changes.
|
||||
Here are the steps I used to convert the XFCE spin.
|
||||
The docs/ directory includes two example kickstarts, one to create a live desktop
|
||||
iso using GNOME, and the other to create a minimal disk image. When creating your
|
||||
own kickstarts you should start with the minimal example, it includes several
|
||||
needed packages that are not always included by dependencies.
|
||||
|
||||
Or you can use existing spin kickstarts to create live media with a few
|
||||
changes. Here are the steps I used to convert the Fedora XFCE spin.
|
||||
|
||||
1. Flatten the xfce kickstart using ksflatten
|
||||
2. Add zerombr so you don't get the disk init dialog
|
||||
3. Add clearpart --all
|
||||
4. Add swap and biosboot partitions
|
||||
4. Add swap partition
|
||||
5. bootloader target
|
||||
6. Add shutdown to the kickstart
|
||||
7. Add network --bootproto=dhcp --activate to activate the network
|
||||
@ -96,7 +109,6 @@ network --bootproto=dhcp --activate
|
||||
zerombr
|
||||
clearpart --all
|
||||
bootloader --location=mbr
|
||||
part biosboot --size=1
|
||||
part swap --size=512
|
||||
shutdown
|
||||
|
||||
@ -110,6 +122,9 @@ passwd -d root > /dev/null
|
||||
|
||||
cat /dev/null > /dev/fstab
|
||||
|
||||
Do this only for live iso's, the filesystem will be mounted read only if
|
||||
there is no /etc/fstab
|
||||
|
||||
11. Don't delete initramfs files from /boot in %post
|
||||
12. Have dracut-config-generic, grub-efi, memtest86+ and syslinux in the package
|
||||
list.
|
||||
@ -180,7 +195,7 @@ switch. This will create the partitioned disk image and an XML file that can be
|
||||
used with virt-image to setup a virtual system.
|
||||
|
||||
The XML is generated using the Mako template from
|
||||
/usr/share/lorax/appliance/virt-image.xml You can use a different template by
|
||||
/usr/share/lorax/appliance/libvirt.xml You can use a different template by
|
||||
passing --app-template <template path>
|
||||
|
||||
Documentation on the Mako template system can be found here:
|
||||
@ -205,6 +220,10 @@ title from --title
|
||||
project from --project
|
||||
releasever from --releasever
|
||||
|
||||
The created image can be imported into libvirt using:
|
||||
|
||||
virt-image appliance.xml
|
||||
|
||||
|
||||
DEBUGGING PROBLEMS
|
||||
------------------
|
||||
|
51
docs/fedora-minimal.ks
Normal file
51
docs/fedora-minimal.ks
Normal file
@ -0,0 +1,51 @@
|
||||
# Minimal Disk Image
|
||||
#
|
||||
sshpw --username=root --plaintext randOmStrinGhERE
|
||||
# Firewall configuration
|
||||
firewall --enabled
|
||||
# Use network installation
|
||||
url --url="http://dl.fedoraproject.org/pub/fedora/linux/development/20/x86_64/os/"
|
||||
|
||||
# Root password
|
||||
rootpw --plaintext removethispw
|
||||
# Network information
|
||||
network --bootproto=dhcp --onboot=on --activate
|
||||
# System authorization information
|
||||
auth --useshadow --enablemd5
|
||||
# System keyboard
|
||||
keyboard --xlayouts=us --vckeymap=us
|
||||
# System language
|
||||
lang en_US.UTF-8
|
||||
# SELinux configuration
|
||||
selinux --enforcing
|
||||
# Installation logging level
|
||||
logging --level=info
|
||||
# Shutdown after installation
|
||||
shutdown
|
||||
# System timezone
|
||||
timezone US/Eastern
|
||||
# System bootloader configuration
|
||||
bootloader --location=mbr
|
||||
# Clear the Master Boot Record
|
||||
zerombr
|
||||
# Partition clearing information
|
||||
clearpart --all
|
||||
# Disk partitioning information
|
||||
part / --fstype="ext4" --size=4000
|
||||
part swap --size=1000
|
||||
|
||||
%post
|
||||
# Remove root password
|
||||
passwd -d root > /dev/null
|
||||
%end
|
||||
|
||||
%packages
|
||||
@core
|
||||
kernel
|
||||
memtest86+
|
||||
grub2-efi
|
||||
grub2
|
||||
shim
|
||||
syslinux
|
||||
-dracut-config-rescue
|
||||
%end
|
@ -36,6 +36,7 @@ from time import sleep
|
||||
import shutil
|
||||
import argparse
|
||||
import hashlib
|
||||
import re
|
||||
|
||||
# Use pykickstart to calculate disk image size
|
||||
from pykickstart.parser import KickstartParser
|
||||
@ -123,12 +124,17 @@ class LogRequestHandler(SocketServer.BaseRequestHandler):
|
||||
"""
|
||||
Check a line to see if it contains an error indicating install failure
|
||||
"""
|
||||
simple_tests = [ "Traceback (",
|
||||
"Out of memory:",
|
||||
"Call Trace:",
|
||||
"insufficient disk space:" ]
|
||||
simple_tests = ["Traceback (",
|
||||
"Out of memory:",
|
||||
"Call Trace:",
|
||||
"insufficient disk space:"]
|
||||
re_tests = [r"WARNING packaging: base repo .* not valid"]
|
||||
for t in simple_tests:
|
||||
if line.find( t ) > -1:
|
||||
if t in line:
|
||||
self.server.log_error = True
|
||||
return
|
||||
for t in re_tests:
|
||||
if re.search(t, line):
|
||||
self.server.log_error = True
|
||||
return
|
||||
|
||||
@ -406,7 +412,7 @@ def make_appliance(disk_img, name, template, outfile, networks=None, ram=1024,
|
||||
if not (disk_img and template and outfile):
|
||||
return None
|
||||
|
||||
log.info("Creating appliance definition using ${0}".format(template))
|
||||
log.info("Creating appliance definition using {0}".format(template))
|
||||
|
||||
if not arch:
|
||||
arch = "x86_64"
|
||||
@ -791,7 +797,7 @@ if __name__ == '__main__':
|
||||
virt_group = parser.add_argument_group("virt-install arguments (DISABLED -- no libvirt)")
|
||||
else:
|
||||
virt_group = parser.add_argument_group("virt-install arguments")
|
||||
virt_group.add_argument("--ram", metavar="MEMORY", default=1024,
|
||||
virt_group.add_argument("--ram", metavar="MEMORY", type=int, default=1024,
|
||||
help="Memory to allocate for installer in megabytes." )
|
||||
virt_group.add_argument("--vcpus", default=1,
|
||||
help="Passed to --vcpus command" )
|
||||
|
Loading…
Reference in New Issue
Block a user