Modifying ISO image to include kickstart file and other useful files
NOTE: Please read Creating a boot ISO
that is using a remote kickstart file to install Red Hat
First of all, please understand that kickstart installation is a tricky business. If you are a novice do not expect a quick
success. You need to be persistent as at the initial state you do not fully understand the mechanic of the process and typically
make one or more mistakes. As the result your installation fails.
RHEL documentation is weak and internet posts are often
incomplete and contradictory, so it takes some time to distill the necessary information and make the necessary number of
experiments to succeed.
NOTE:
It is better not to include kickstart into your image directly but to provide a reference to a remote file on NFS. See Creating a boot ISO that is using a remote
kickstart file to install Red Hat
In RHEL7 you can forget about using kickstart from the boot disk over VPN link. It times out. Systemd is probably the
culprit. You need a local source line DRAC vFlash card, SD card or USB drive to be able to install system over VPN.
So far Red Hat did not manage to
completely screw kickstart to the extent it screwed the whole RHEL7 distribution with systemd; but they did weaken kickstart and now it is more
capricious, more brittle and less reliable. Often attempt to use it ends with "Pane frozen" message.
Including kickstart files in the ISO presents some problems: the ISO9660 file structure is not designed for modification, everything has a
strictly defined place with no room to extend files or directories.
The way to include ks.cfg file is to extract the whole ISO file structure to working directory, modify that, and re-create a new image
(in bootable format) from this working directory.
There are three steps you need to accomplish
- Extract the source ISO image to work
directory
- Add your ks.cfg file to the tree
- Created a new ISO Image which includes
your modifications
There are too major approaches here:
- Modify the boot (RHEL) or minimal (CentOS) image to create a minimal boot ISO which points to the kickstart file on
NFS or HTTP. Which means that it picks
up both the actual kickstart file and the full ISO from the network. This is the most popular approach.
and it is works reasonably well for VPN-based installation, if you are forced to work from home due to Covid-19 epidemic.
But you need to pus boot disk on a local media. With RHEL7 you can't load the boot image from VPN -- it times out.
In this
case the use of even minimal ISO (which actually is not that minimal and for RHEL 7 approaches 1 GB) present bandwidth problems,
if you need to retrieve it from you PC (situation with HP servers if you not have advanced ILO license and stuck to using virtual
drive mapped to ISO on your PC). In this case you can delete /Packages directory creating a smaller image.
Customarization work is simply providing proper options for grub to access the kickstart file on NFS or via HTTP. The main advantage is
that now you can modify kickstart file for each installation and improve it as you gain experience.
- This also solves the problem of ridiculously long boot time for HP servers with large memory and memory check on boot. For
such servers the boot time can be 20 min or more. You have essentially unattended installation mode and after launching the
process does not require any intervention if you kickstart file is debugged and worked on previous server.
- You need to create only one boot ISO for all servers that you plan to install.
- If you can use NFS, you do not need even to create HTTP server to retrieve kickstart and (mounted) ISO image. You can put
both your kickstart file and ISO on NFS
- Modify the standard RHEL ISO and include kickstart in it. This approach should be tried if previous failed as here
there are less complexity and everything is in one place. In this case launching of ISO image
completely installs the system. If you install multiple system this "imbedded" kickstart should point to the last system in the
range and each time after installation you need to modify IP and hostname of the resulting system to proper values. You can do it
iether via post install scripts or via ssh. The latter is much simpler.
NOTES:
- Syntax of kickstart file changed in RHEL7 in comparison with RHEL6. It does not matter much as you typically use the
prototype from installed RHEL7 system which you modify to suit your needs, but if you created complex kickstart files for RHEL6
and need to adapt them to RHEL7, beware -- it will take a lot of time and pain...
Changes in Kickstart Syntax
While the general principles of Kickstart installations tend to stay the same, the commands and options can
change between major releases of CentOS. You can use the ksverdiff
command to
display the differences between two versions of the Kickstart syntax. This is useful when updating an
existing Kickstart file to be used with a new release. To display a list of changes in syntax between CentOS
6 and 7, use the following command:$
ksverdiff -f RHEL6 -t RHEL7
The
-f
option specifies the release to start the comparison with, and the
-t
option to specify the release to end with. For additional information, see
the ksverdiff(1)
man page.
The best way to create you own ks.cfg file is to use the one that Anaconda created
for this type of servers and slightly adapt it. That means that the fist time you need to perform manual installation and
that use the generated kickstart file as a starting point. This way you can create pretty
usable initial Kickstart file that you can refine as you get experience with both the type of servers
you are trying to create in bulk and kickstart ecosystem.
Suggested steps:
- Manually install two or three systems out of, say, 16 or a couple of dozen similar system that needs to be installed
(creating the image with kickstart file make sense starting from, say, 8 systems to be installed. Otherwise it is simpler to point
to ks file from grub/grub2 on each installation.
- Compare all created kickstart files using diff. It is given that they are not identical and you made slight mistakes in one or two installation.
Those errors or omissions need to be
eliminated in final ks.cfg.
- Pay attention o the root password you are using. Forgetting it lead to some troubles, when you try to login to the fleshly
installed system.
- Pay attention to partitioning of the system (typically you need to wipe out all old partitions if they existed)
- Take some time to document your kickstart file and ideas that you used in its creation; place the document in the place where you can find it later.
- One of the typical situation is that you actually found some pretty elegant approach which you can't reproduce two
years later and use some inferior solution instead. For example, you might forget that you were using vFLASH card on Dell DRAC for the customized boot image.
- [Optional] In RHEL6 you can modify and partially verify ks.cfg using Kickstart Configurator (very buggy, but still usable)
See Kickstart Configurator
In RHEL 7 it was replaced by the ksvalidator [RHEL7.7 and up]
Verifying the Kickstart File (RHEL/CentOS 7.7 and up)
When creating or customizing your Kickstart file, it is useful to verify that it is valid before attempting
to use it in an installation. CentOS 7.7.1908 includes the ksvalidator
command line utility which can be used to do this. This tool is a part of the pykickstart package. To install this package, execute the following command as
root
:#
yum install pykickstart
After installing the package, you can validate a Kickstart file using the following command:$
ksvalidator /path/to/kickstart.ks
Replace
/path/to/kickstart.ks with the path to the Kickstart file you want to verify.For more information about this tool, see the
ksvalidator(1)
man page.
- Make the Kickstart file available and reachable from the installation system. This is exactly the same as making the
installation source (ISO) available, only with the Kickstart file instead of the installation ISO image or tree. For full
procedures, see
Preparing Installation Sources.
- Test ks.cfg from Grub on one blade or the rack server. Usually you will find some errors and need
several iterations to make it right.
- To start a Kickstart installation, use the boot option
inst.ks=location
when
booting the installation system, replacing location with the location of your Kickstart file on the network or local
media. See
Boot Options for details.
- RHEL7 reliably works if you put kickstart file on NFS. That simplifies testing in case of small computational clusters.
- If the Kickstart file is valid and contains all required commands, the installation is completely automated from this
point forward.
- Include it in image and create a new boot or full ISO
TIP: If you disk was not initialized (new blade or server) you need to use
zerombr yes
clearpart --all --initlabel
in your ks.cfg file to avoid prompts. In this case you will not be prompted to
confirm that want to wipe out the whole disks.
You can put multiple Kickstart config files in your image and just specify the appropriate one at
boot time or in you custom boot image.
Within the ks.cfg file you can specify pre-install and post-install scripts.
These are standard scripts that will be run either before or
after the install process. Post install scripts can do some additional operations but it is
important not to overdo this: kickstart is a limited environment with its own gotchas (it boots from
its own virtual disk) and all operations that you can do in Postinstall scripts you can do after
rebooting the server via ssh. Which is much more convinient.
For inspiration you can also look at examples on Internet, but there are a lot of
overcomplexity junking out their so be careful. Search for ks.cfg example in your
favorite search engine (actually Google is not the best in this particular case ;-).
There are multiple samples of custom kickstart configuration files that
can be downloaded from the Internet. But generally, you should never use them other that to borrow
small fragment that accomplish a specific task (most of them are
outdated anyway).
Here on a simple kickstart to install HP blades that I created to update the systems from RHEL 6:
# Kickstart for RHEL7 on HP blades. Nikolai Bezroukov, 2020
# System authorization information
auth --enableshadow --passalgo=sha512
# Use text install
#text
# Use NFS installation media
nfs --server=10.194.181.50 --dir=/Apps/centos75.iso
# Run the Setup Agent on first boot
firstboot --enable
ignoredisk --only-use=sda
# Keyboard layouts
keyboard --vckeymap=us --xlayouts='us'
# System language
lang en_US.UTF-8
# Network information
# Network information
network --bootproto=dhcp --device=eno49 --onboot=off --ipv6=auto --no-activate
network --bootproto=dhcp --device=eno50 --onboot=off --ipv6=auto
network --bootproto=dhcp --device=ens2d1 --onboot=off --ipv6=auto
network --bootproto=static --device=ens2 --ip=10.100.101.131 --gateway=10.10.10.1 --netmask=255.255.240.0 --nameserver=10.201.100.1,10.200.200.2 --noipv6 --activate
network --hostname=blade1
# Root password
rootpw --plaintext dummy-pass@1234
# System services
selinux --disabled
services --enabled="chronyd"
# System timezone
timezone America/New_York --isUtc --ntpservers=ntp1.mycorp.com,ntp2.mycorp.com
# System bootloader configuration
bootloader --append=" crashkernel=auto" --location=mbr --boot-drive=sda
# Partition clearing information
clearpart --all --initlabel --drives=sda
# Disk partitioning information
part / --fstype="xfs" --ondisk=sda --size=938578
part swap --fstype="swap" --ondisk=sda --size=15258
%packages
@^infrastructure-server-environment
@base
@compat-libraries
@core
@development
@infiniband
@java-platform
@large-systems
@network-file-system-client
@performance
@system-admin-tools
chrony
kexec-tools
#
#Useful utilities to add as of Dec 6, 2020
#
dos2unix
screen
tree
tcl
environment-modules
expect
gpm
logwatch
lshw
lsof
lsscsi
mc
nmap
perl-DBD-SQLite
perl-Date-Manip
python-dmidecode
rear
%end
%addon com_redhat_kdump --enable --reserve-mb='auto'
%end
%anaconda
pwpolicy root --minlen=6 --minquality=50 --notstrict --nochanges --notempty
pwpolicy user --minlen=6 --minquality=50 --notstrict --nochanges --notempty
pwpolicy luks --minlen=6 --minquality=50 --notstrict --nochanges --notempty
%end
Some useful links:
Here is yet another outdated, but still pretty educational example from Red Hat -- a
Classroom Server Kickstart Configuration File (2005). It split kickstart file into several useful sections
and you could borrow some of those comments, as they represent a useful documentation tool.
This kickstart file has nice structure that may wish to imitate:
The following is a sample Kickstart configuration file for installing a Red Hat Academy Classroom Server.
#########################################################################
#
# Red Hat Academy Classroom Server Kickstart Script
#
# $Id: 010_text.dbk,v 1.5 2005/08/08 08:35:41 bowe Exp $
# version: RHEL4
# [email protected]
#
# For more information, see the Red Hat Customization Guide,
# http://www.redhat.com/docs/manuals/enterprise/RHEL-4-Manual/sysadmin-guide/ch-kickstart2.html
#
#########################################################################
###############################################################
# you definately want to set one of the following
###############################################################
rootpw redhat
bootloader --location=mbr --password=redhat
###########################################################################
#
# the following MD5 encrypted passwords can be generated using
#
# openssl passwd -1 redhat
#
# see "man sslpasswd" for more information
#
###########################################################################
#rootpw --isencrypted $1$Su2Gv/$fZeEi7RtQq/RAZ1oEla5z0 # md5 encrypted "redhat"
#bootloader --location=mbr --md5pass=$1$x.3x1cDe$ucwc8hTScWzfb5DYW6r25/
###############################################################
# point to a local installation server, or use "cdrom"
###############################################################
text # you're not going to be standing there watching it, are you?
cdrom
# url --url http://kickstart.example.com/pub/es4/i386
###############################################################
# partitioning
###############################################################
zerombr yes
clearpart --all --initlabel
part /boot --fstype ext3 --size 128
part / --fstype ext3 --size 4096 --grow --maxsize 8192
part /var --fstype ext3 --size 4096 --grow --maxsize 8192
part swap --recommended
###############################################################
# network configuration
# - the following is for the "recommended solution" outlined
# in the Red Hat Academy Instructor's Guide
###############################################################
network --bootproto=static --ip=192.168.0.254 --netmask=255.255.255.0 --device=eth0
network --bootproto=dhcp --device=eth1
#firewall --enabled --http --ftp --port=https:tcp --port=ipp:tcp
firewall --disabled
###############################################################
# environment
###############################################################
lang en_US
langsupport --default=en_US
timezone America/New_York
#timezone America/Chicago
#timezone America/Denver
#timezone America/Los_Angeles
###############################################################
# hardware
###############################################################
mouse generic3ps/2
#mouse genericps/2 --emulthree # enable for 2 button mice
keyboard us
xconfig --depth=16 --resolution=1024x768 --defaultdesktop=GNOME --startxonboot
###############################################################
# misc
###############################################################
auth --useshadow --enablemd5
reboot # reboot automatically when done
install # instead of "upgrade"
###############################################################
#
# New in RHEL-4: SELinux
#
###############################################################
selinux --enforcing
#selinux --permissive
#selinux --disabled
###############################################################
#
# Software
#
###############################################################
%packages --resolvedeps
@ Workstation Common
@ Server
@ GNOME
@ Engineering and Scientific
@ Games and Entertainment
@ Mail Server
@ DNS Name Server
@ FTP Server
@ Network Servers
@ Development Tools
@ System Tools
ypserv
dhcp
ethereal-gnome
sysstat
vlock
%post
###############################################################
#
# Post Script - the following script runs on the newly
# installed machine, immediately after installation
#
###############################################################
########################################################
# add entry to /etc/hosts, if necessary
########################################################
#echo "192.168.0.254 rha-server" >> /etc/hosts
########################################################
# turn on required services
########################################################
chkconfig httpd on
chkconfig vsftpd on
########################################################
# install red hat academy custom software
########################################################
#RHASRC=ftp://kickstart.example.com/pub/rha/RPMS/
#rpm -ihv $RHASRC/rha-base*.rpm $RHASRC/rha-classroom-rha*.rpm $RHASRC/rha-server-*.rpm $RHASRC/fauxlp-*.rpm
#unset RHASRC
########################################################
# add proxy server to /etc/rha_server.conf, if necessary
########################################################
#echo "ExerciseReporterProxy http://10.1.1.1:8080" >> /etc/rha_server.conf
########################################################
# mirror RHEL-4-ES distribution from remote server
########################################################
#lftp -c "mirror ftp://kickstart.example.com/pub/es4 /var/ftp/pub/es4"
########################################################
# ln anonymous FTP pub dir to Document Root
########################################################
ln -s ../../ftp/pub /var/www/html/pub
# set SELinux context s.t. contents of pub directory available from web
chcon -R --reference /var/www/html /var/ftp/pub
First create a directory that will house the modified image. For example:
$ mkdir /tmp/RHEL_custom
Now we need to mount the source ISO image locally so we can work with it.
# mount -t iso9660 -o loop RHEL-5.6-x86_64-DVD.iso /media
To extract the source ISO files into another directory. This will take a couple
of minutes as we are copying more then 3GB of information:
cd /media
tar cf - . | (cd /tmp/RHEL_custom; tar xfp -)
Note:
The ks.cfg file is
what the install routine will use while loading the OS. You can add it to the root directory of your
ISO image making it king of "golden image" for particular type of servers. Or you can put is on HTTP
server or NFS. This is a better way as you can modify it later.
If your ks,cfg is added to ISO you need to type "linux" line path to your
ks.cfg file.
the result should look like
label kickstart menu label ^Kickstart Installation of RHEL7.7
kernel vmlinuz
append initrd=initrd.img inst.stage2=hd:LABEL=RHEL-7.7\x20Server.x86_64 inst.ks=cdrom:/ks.cfg
If you have additional packages that you want to install, you can copy them into
the custom image directory. This way they will be included in the image when we
create the new ISO.
You can then put a post install script in place to install and
configure those packages automatically at install time.
Here the game probably is not worse the
candles, as you always install additional RPMS after system is installed and rebooted. But theoretically as long as you do not exceed
the capacity of a CD or DVD, then you can add as much as you want.
Once all of your modifications are complete, you just need to put it all together
and create a new ISO image.
With UEFI this a tricky business.
See
Creating a boot image that
is using a remote kickstart file to install Red Hat
Creation of modified ISO file
Now we need to create the ISO. There are three typical situations here
- You use traditional BIOS and want to install RHEL 7
- You use traditional BIOS and want to install RHEL 6 (in many case were you can it makes sense to continue to use RHEL 6)
- You have UEFI BIOS and want to install RHEL7
You use traditional BIOS want to install RHEL7
- Confirm the
LABEL
of the DVD iso. The following command give you the LABEL information. For example:# blkid /tmp/rhel-server-7.7-x86_64-dvd.iso
- Now, save create the ISO as follows. WARNING: Make sure that
-V
has the correct LABEL , any typo will break
ISO image .# cd /tmp/rhel7/
# mkisofs -o /tmp/rhel77ks.iso -b isolinux/isolinux.bin -J -R -l -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -eltorito-alt-boot -e images/efiboot.img -no-emul-boot -graft-points -V "RHEL-7.7 Server.x86_64"
You use traditional BIOS and RHEL6
In this case you just need to rebuild ISO using mkisofs
cd /location_of_file_tree_created_from_boot_cd # for example /svr/www/Boot
mkisofs -o ../myboot.iso -b isolinux/isolinux.bin -c isolinux/boot.cat --no-emul-boot --boot-load-size 4 --boot-info-table -J -R -V disks .
NOTE: . (dot) at the end of the command is obligatory. Otherwise you will get "missing pathspec" error
Also works
mkisofs -o ../myboot.iso -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -J -r .
The resulting ISO image should be bootable and should pick up the necessary ks.cfg file.
NOTE: mkisofs command in the form above is suitable only for legacy boot (MBR based) -- it does not create UEFI boot
partition
You have UEFI BIOS.
In case you server uses UEFI boot it is easier to said then done, because UEFI partition is FAT-based.
mkisofs -o /tmp/efiboot.iso -b isolinux/isolinux.bin -c isolinux/boot.cat --no-emul-boot --boot-load-size 4 \
--boot-info-table -eltorito-alt-boot -e images/efiboot.img \
-graft_points EFI/BOOT=/mnt/EFI/BOOT images/efiboot.img=/mnt/images/efiboot.img \
-no-emul-boot -J -R -V disks .
(assuming you boot image is mounted on /mnt )
After that you need to run
isohybrid --uefi efiboot.iso
Quoting from How can we create a customized Golden Image or RHEL ISO with
kickstart file:
Rebuild the DVD iso image # cd /rhel
# mkisofs -o /tmp/new.iso -b isolinux/isolinux.bin -c isolinux/boot.cat --no-emul-boot --boot-load-size 4 --boot-info-table -J -R -V disks .
NOTE: In RHEL7, please make sure that you specify the volume id with -V option, and it's same as Volume_ID
in step 6.
8. Boot the machine from this ISO
Kickstart has detailed documentation in the
Installation Guide
Important Note:
- The image which will be created using the steps above won't be
UEFI
enabled. So to have an UEFI enabled image,
use the following extra options.
- And the
graft point
as follows.
EFI/BOOT={0}/EFI/BOOT images/efiboot.img={0}/images/efiboot.img
- Where
{0}
is replaced by the location where the existing DVD is mounted/extracted.
- One should also run
isohybrid
on it so that it can be booted by both BIOS and UEFI:
isohybrid --uefi boot.iso
- You can also transfer the image to USB drive using dd, copy isolinux.cfg file of it and then try to
recreate ISO image using dd.
- If you have software to manipulate writable CD/DVD you can copy the ISO to the DVD without finalizing and then add the file.
but this truncated ISO image might still be bootable if your server has legacy boot option.
More information on the options used with the mkisofs command can be found in the man pages for mkisofs(1).
Google is also you friend but it does not provide useful references in this case. Opening Red hat ticket is another option
and if you are perssisten anough they might even help, not just bounce you to some semi-useless documents that they found by searching
their database for relevant keywords.
Kickstart driven CentOS 7 install from USB
None of what is written below is particularly original, however, I was unable to find a
method documented on the internet at the time of writing that successfully created a kickstart
driven CentOS 7 USB installer.
My interest was in doing this manually as I require this USB (image) to be created
from a script. Therefore, I did not look into using ISO to USB applications - in addition,
these typically do not allow custom kickstart files to be used.
References
Much of the process described below was found on the CentOS Wiki page on Installing
from USB key, and from the
Softpanorama page on the same subject. I thoroughly recommend reading all of the latter as
it highlights the shortcomings/dangers associated with the steps below.
USB key
preparation Partition USB
This can probably be done as a disk image too, though I haven't tried this yet. Below I will
use /dev/sdX for the USB device.
- Create two partitions, one of type W95 FAT32 (LBA) (assigned code "c" in fdisk) of
~250MB, make this partition bootable. Create an ext3 partition from the remaining space.
sudo fdisk /dev/sdX
n (create partition, accept defaults for type, number, and first sector)
+250M (defined size as 250MB)
t
c (change type to W95 FAT32 (LBA) - other FAT types may work, but I have not tried)
a (make bootable)
n (create partition, accept defaults for type, number, first sector, and size)
w (write changes to device)
sudo mkfs -t vfat -n "BOOT" /dev/sdX1
sudo mkfs -L "DATA" /dev/sdX2
sudo dd conv=notrunc bs=440 count=1 if=/usr/share/syslinux/mbr.bin of=/dev/sdX
- Install syslinux to first parition
sudo syslinux /dev/sdX1
Copy files to USB
mkdir BOOT && sudo mount /dev/sdX1 BOOT
mkdir DATA && sudo mount /dev/sdX2 DATA
mkdir DVD && sudo mount /path/to/centos/dvd.iso DVD
- Copy DVD isolinux contents to
BOOT
sudo cp DVD/isolinux/* BOOT
- rename
isolinux.cfg
to syslinux.cfg
sudo mv BOOT/isolinux.cfg BOOT/syslinux.cfg
- I also deleted a few bits from
BOOT
I didn't think were required, e.g.
isolinux.bin
, TRANS.TBL
, upgrade.img
,
grub.conf
.
- I then copied my kickstart file to the
BOOT
directory and the CentOS 7 ISO
to the DATA
partition.
The final file structure looked something like this:
BOOT/
├── boot.cat
├── boot.msg
├── initrd.img
├── ks.cfg
├── ldlinux.sys
├── memtest
├── splash.png
├── syslinux.cfg
├── upgrade.img
├── vesamenu.c32
└── vmlinuz
DATA/
└── CentOS-7.0-1406-x86_64-Minimal.iso
Edit the syslinux.cfg
So that it points to the ISO and the kickstart
Here is the install CentOS 7 entry from the Minimal ISO isolinux.cfg
(which we
renamed syslinux.cfg
):
label linux
menu label ^Install CentOS 7
kernel vmlinuz
append initrd=initrd.img inst.stage2=hd:LABEL=CentOS\x207\x20x86_64 quiet
The append
line is changed to read the following:
append initrd=initrd.img inst.stage2=hd:sdb2:/ ks=hd:sdb1:/ks.cfg
I suspect LABEL could be used here, rather than the enumerated device, which would make it
safer, but I haven't tried this yet. Assuming the system you are installing on only has a
single HD the USB key will be enumerated as sdb more information about this can be found in the
Softpanorama article.
When you boot from the USB and select Install CentOS 7, it now installs the system as
described by your kickstart.
Add a "." to the end of the command to specify the output directory as your current working directory (cwd)
Rebuild the DVD iso imageRaw
# cd /rhel
# mkisofs -o /tmp/new.iso -b isolinux/isolinux.bin -c isolinux/boot.cat --no-emul-boot --boot-load-size 4 --boot-info-table -J -R -V disks .
NOTE: In RHEL7, please make sure that you specify the volume id with -V option, and it's same as Volume_ID
in step 6.
8. Boot the machine from this ISO
Kickstart has detailed documentation in the
Installation Guide
Important Note:
- The image which will be created using the steps above won't be
UEFI
enabled. So to have an UEFI enabled image,
use the following extra options.
Raw-eltorito-alt-boot -e images/efiboot.img -no-emul-boot
- And the
graft point
as follows.
RawEFI/BOOT={0}/EFI/BOOT images/efiboot.img={0}/images/efiboot.img
- Where
{0}
is replaced by the location where the existing DVD is mounted/extracted.
- One should also run
isohybrid
on it so that it can be booted by both BIOS and UEFI:
Rawisohybrid --uefi boot.iso
To use a Kickstart file to install a system:
- Boot the system from a bootable medium or from a network installation server that supports PXE client installation. If you
need to modify the boot command, press Esc to access the command line. Note, however, that the boot configuration might
not allow you to modify the boot command.
For PXE clients, it is usual to specify the Kickstart parameters in the boot loader
configuration. For example, the following example configures a Kickstart installation for a PXE client that boots using pxelinux:
prompt 0
default ol6u6
timeout 0
label ol6u6
kernel vmlinuz-OL6u6
append initrd=initrd-OL6u6.img ksdevice=eth0 kssendmac ks=http://10.0.0.11/ksfiles/ol6u6_cfg.ks
The ksdevice=eth0 parameter specifies the interface to be used for network installation. If a system has multiple
network interfaces, this prevents the installation from prompting you to choose an interface. Alternatively, you could specify
ksdevice=bootif and add an ipappend 2 entry after the append entry:
prompt 0
default ol6u6
timeout 0
label ol6u6
kernel vmlinuz-OL6u6
append initrd=initrd-OL6u6.img ksdevice=bootif kssendmac ks=http://10.0.0.11/ksfiles/ol6u6_cfg.ks
ipappend 2
This configuration also prevents you from being prompted to choose a network interface but it does not control which interface
is selected.
The next example configures a Kickstart installation for a PXE client that boots using GRUB:
default=0
hiddenmenu
splashimage=(nd)/splash.xpm.gz
timeout=0
title Oracle Linux 6 Update 6 Installation
root (nd)
kernel /vmlinuz-OL6u6 ksdevice=eth0 kssendmac ks=http://10.0.0.11/ksfiles/ol6u6_cfg.ks
initrd /initrd-OL6u6.img
NOTE:
- If you have not customized the boot configuration to use Kickstart, you can use the ks option to specify the location
of the Kickstart file.
- The following boot command specifies that the Kickstart file is on the boot CD:
boot: linux ks=cdrom:/ks.cfg
- If the Kickstart file is located on an NFS server, you might use a boot command such as the following:
boot: linux ksdevice=eth0 ip=dhcp ks=nfs:10.0.0.11:/ksfiles/ks.cfg
where ksdevice=eth0 specifies the network interface and ip=dhcp specifies that DHCP should be used to
configure this interface.
For more information, see Section
2.2, "Installation Boot Options".
Creating the Kickstart Config File, ks.cfg
ks.cfg makes unattended installs possible. It holds canned responses to the questions posed during an interactive
install. The examples assume you've saved this file under the web server's document root as kickstart/ks.cfg.
There are several ways to create ks.cfg. (I did warn you that Kickstart was flexible.) If you're plotting
a clone farm, build one machine to your specs and use /root/anaconda-ks.cfg on that host as a starting point for the
others.
Barring that, use the redhat-config-kickstart
GUI (from the redhat-config-kickstart
package). This
tool doesn't support LVM for disk layout, but is a valuable learning tool nonetheless. You can hand-edit the generated ks.cfg
to use LVM (described below).
You can also create or edit ks.cfg using any text editor, provided you know the directives. Here's a walk through
the directives in the sample
ks.cfg.
You probably already have the redhat-config-language
, hwdata
, and tzdata
RPMs installed
already. They are not required, but include files that simplify hand-editing ks.cfg.
Installation Type
The first entries are the installation type and source.
install
url --url http://kickstart-server/FC1-install
The type may be install
or upgrade
. The url
directive specifies an HTTP installation
and indicates the URL of the install media. (The directory Fedora, from the install media, must be a subdirectory of
the URI part of the URL.) Other installation sources include cdrom
for swapping CDs or DVDs, nfs
for
mounting the install media from an NFS share, and the self-explanatory ftp
.
ISO Master which is claimed to be the best ISO editing tool is a graphical editor
for ISO images. ISO Master is useful for extracting, deleting, or adding files
and directories to or from an ISO image. ISO Master can read .ISO files (ISO9660,
Joliet, RockRidge, and El Torito), most .NRG files, and some single-track .MDF
files and can save and only save as .ISO.
The supported operations include, add/delete files and directories under
the ISO image, Modify/delete the Boot records. extract files from the ISO etc.
Install ISO Master
Packman as always hosts a 1-click install Yast Metapackage for ISO Master.
This installer is supported on openSUSE 11.0, openSUSE 10.3, openSUSE 10.2,
and SUSE 10.1 & 10.0
Softpanorama Recommended
Red Hat documentation
RHEL 7
Older links
Society
Groupthink :
Two Party System
as Polyarchy :
Corruption of Regulators :
Bureaucracies :
Understanding Micromanagers
and Control Freaks : Toxic Managers :
Harvard Mafia :
Diplomatic Communication
: Surviving a Bad Performance
Review : Insufficient Retirement Funds as
Immanent Problem of Neoliberal Regime : PseudoScience :
Who Rules America :
Neoliberalism
: The Iron
Law of Oligarchy :
Libertarian Philosophy
Quotes
War and Peace
: Skeptical
Finance : John
Kenneth Galbraith :Talleyrand :
Oscar Wilde :
Otto Von Bismarck :
Keynes :
George Carlin :
Skeptics :
Propaganda : SE
quotes : Language Design and Programming Quotes :
Random IT-related quotes :
Somerset Maugham :
Marcus Aurelius :
Kurt Vonnegut :
Eric Hoffer :
Winston Churchill :
Napoleon Bonaparte :
Ambrose Bierce :
Bernard Shaw :
Mark Twain Quotes
Bulletin:
Vol 25, No.12 (December, 2013) Rational Fools vs. Efficient Crooks The efficient
markets hypothesis :
Political Skeptic Bulletin, 2013 :
Unemployment Bulletin, 2010 :
Vol 23, No.10
(October, 2011) An observation about corporate security departments :
Slightly Skeptical Euromaydan Chronicles, June 2014 :
Greenspan legacy bulletin, 2008 :
Vol 25, No.10 (October, 2013) Cryptolocker Trojan
(Win32/Crilock.A) :
Vol 25, No.08 (August, 2013) Cloud providers
as intelligence collection hubs :
Financial Humor Bulletin, 2010 :
Inequality Bulletin, 2009 :
Financial Humor Bulletin, 2008 :
Copyleft Problems
Bulletin, 2004 :
Financial Humor Bulletin, 2011 :
Energy Bulletin, 2010 :
Malware Protection Bulletin, 2010 : Vol 26,
No.1 (January, 2013) Object-Oriented Cult :
Political Skeptic Bulletin, 2011 :
Vol 23, No.11 (November, 2011) Softpanorama classification
of sysadmin horror stories : Vol 25, No.05
(May, 2013) Corporate bullshit as a communication method :
Vol 25, No.06 (June, 2013) A Note on the Relationship of Brooks Law and Conway Law
History:
Fifty glorious years (1950-2000):
the triumph of the US computer engineering :
Donald Knuth : TAoCP
and its Influence of Computer Science : Richard Stallman
: Linus Torvalds :
Larry Wall :
John K. Ousterhout :
CTSS : Multix OS Unix
History : Unix shell history :
VI editor :
History of pipes concept :
Solaris : MS DOS
: Programming Languages History :
PL/1 : Simula 67 :
C :
History of GCC development :
Scripting Languages :
Perl history :
OS History : Mail :
DNS : SSH
: CPU Instruction Sets :
SPARC systems 1987-2006 :
Norton Commander :
Norton Utilities :
Norton Ghost :
Frontpage history :
Malware Defense History :
GNU Screen :
OSS early history
Classic books:
The Peter
Principle : Parkinson
Law : 1984 :
The Mythical Man-Month :
How to Solve It by George Polya :
The Art of Computer Programming :
The Elements of Programming Style :
The Unix Hater’s Handbook :
The Jargon file :
The True Believer :
Programming Pearls :
The Good Soldier Svejk :
The Power Elite
Most popular humor pages:
Manifest of the Softpanorama IT Slacker Society :
Ten Commandments
of the IT Slackers Society : Computer Humor Collection
: BSD Logo Story :
The Cuckoo's Egg :
IT Slang : C++ Humor
: ARE YOU A BBS ADDICT? :
The Perl Purity Test :
Object oriented programmers of all nations
: Financial Humor :
Financial Humor Bulletin,
2008 : Financial
Humor Bulletin, 2010 : The Most Comprehensive Collection of Editor-related
Humor : Programming Language Humor :
Goldman Sachs related humor :
Greenspan humor : C Humor :
Scripting Humor :
Real Programmers Humor :
Web Humor : GPL-related Humor
: OFM Humor :
Politically Incorrect Humor :
IDS Humor :
"Linux Sucks" Humor : Russian
Musical Humor : Best Russian Programmer
Humor : Microsoft plans to buy Catholic Church
: Richard Stallman Related Humor :
Admin Humor : Perl-related
Humor : Linus Torvalds Related
humor : PseudoScience Related Humor :
Networking Humor :
Shell Humor :
Financial Humor Bulletin,
2011 : Financial
Humor Bulletin, 2012 :
Financial Humor Bulletin,
2013 : Java Humor : Software
Engineering Humor : Sun Solaris Related Humor :
Education Humor : IBM
Humor : Assembler-related Humor :
VIM Humor : Computer
Viruses Humor : Bright tomorrow is rescheduled
to a day after tomorrow : Classic Computer
Humor
The Last but not Least Technology is dominated by
two types of people: those who understand what they do not manage and those who manage what they do not understand ~Archibald Putt.
Ph.D
Copyright © 1996-2021 by Softpanorama Society. www.softpanorama.org
was initially created as a service to the (now defunct) UN Sustainable Development Networking Programme (SDNP)
without any remuneration. This document is an industrial compilation designed and created exclusively
for educational use and is distributed under the Softpanorama Content License.
Original materials copyright belong
to respective owners. Quotes are made for educational purposes only
in compliance with the fair use doctrine.
FAIR USE NOTICE This site contains
copyrighted material the use of which has not always been specifically
authorized by the copyright owner. We are making such material available
to advance understanding of computer science, IT technology, economic, scientific, and social
issues. We believe this constitutes a 'fair use' of any such
copyrighted material as provided by section 107 of the US Copyright Law according to which
such material can be distributed without profit exclusively for research and educational purposes.
This is a Spartan WHYFF (We Help You For Free)
site written by people for whom English is not a native language. Grammar and spelling errors should
be expected. The site contain some broken links as it develops like a living tree...
Disclaimer:
The statements, views and opinions presented on this web page are those of the author (or
referenced source) and are
not endorsed by, nor do they necessarily reflect, the opinions of the Softpanorama society. We do not warrant the correctness
of the information provided or its fitness for any purpose. The site uses AdSense so you need to be aware of Google privacy policy. You you do not want to be
tracked by Google please disable Javascript for this site. This site is perfectly usable without
Javascript.
Last modified:
February 17, 2021