CentOS 5.5 x86 64 (Minimal) Hypervisor Edition

From WBITT's Cooker!

Revision as of 11:56, 3 January 2011 by Kamran (Talk | contribs)
Jump to: navigation, search

comps.xml

[root@buildhost-64 tmp]# cat comps.xml-hypervisor
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE newcomps PUBLIC "-//CentOS//DTD Comps info//EN" "comps.dtd">
<comps>

  <group>
    <id>base</id>
    <name>Base</name>
    <description>This group includes a minimal set of packages, inclusding X.</description>
    <default>false</default>
    <uservisible>true</uservisible>
    <packagelist>
      <packagereq type="default">vim-minimal</packagereq>
      <packagereq type="default">grub</packagereq>
      <packagereq type="default">openssh-clients</packagereq>
      <packagereq type="default">openssh-server</packagereq>
      <packagereq type="default">dhclient</packagereq>
      <packagereq type="default">rootfiles</packagereq>
      <packagereq type="default">iptables</packagereq>
      <packagereq type="optional">kernel-xen</packagereq>
      <packagereq type="default">telnet</packagereq>
      <packagereq type="default">tcpdump</packagereq>
      <packagereq type="default">nmap</packagereq>
      <packagereq type="optional">wireshark</packagereq>
      <packagereq type="default">zip</packagereq>
      <packagereq type="default">bzip2</packagereq>
      <packagereq type="default">rsync</packagereq>
      <packagereq type="default">which</packagereq>
      <packagereq type="default">traceroute</packagereq>
      <packagereq type="default">ftp</packagereq>
      <packagereq type="default">vixie-cron</packagereq>
      <packagereq type="optional">iptraf</packagereq>
      <packagereq type="default">setools</packagereq>
      <packagereq type="default">selinux-policy-targeted</packagereq>
      <packagereq type="default">selinux-policy</packagereq>
      <packagereq type="optional">vnc-server</packagereq>
      <packagereq type="optional">xterm</packagereq>
      <packagereq type="conditional" requires="xterm">xorg-x11-twm</packagereq>
      <packagereq type="conditional" requires="xterm">xorg-x11-xinit</packagereq>
      <packagereq type="conditional" requires="xterm">xorg-x11-xfs</packagereq>
      <packagereq type="conditional" requires="xterm">xorg-x11-server-utils</packagereq>
      <packagereq type="conditional" requires="xterm">xorg-x11-server-Xorg</packagereq>
      <packagereq type="conditional" requires="xterm">xorg-x11-xdm</packagereq>
      <packagereq type="conditional" requires="xterm">xorg-x11-drv-vga</packagereq>
      <packagereq type="conditional" requires="xterm">xorg-x11-drv-cirrus</packagereq>
      <packagereq type="conditional" requires="xterm">xorg-x11-drv-fbdev</packagereq>
    </packagelist>
  </group>

  <group>
    <id>core</id>
    <name>Core</name>
    <description>Smallest possible installation</description>
    <default>true</default>
    <uservisible>false</uservisible>
    <packagelist>
      <packagereq type="mandatory">SysVinit</packagereq>
      <packagereq type="mandatory">basesystem</packagereq>
      <packagereq type="mandatory">bash</packagereq>
      <packagereq type="mandatory">centos-release</packagereq>
      <packagereq type="mandatory">coreutils</packagereq>
      <packagereq type="mandatory">cpio</packagereq>
      <packagereq type="mandatory">e2fsprogs</packagereq>
      <packagereq type="mandatory">redhat-logos</packagereq>
      <packagereq type="mandatory">centos-release-notes</packagereq>
      <packagereq type="mandatory">filesystem</packagereq>
      <packagereq type="mandatory">glibc</packagereq>
      <packagereq type="mandatory">initscripts</packagereq>
      <packagereq type="mandatory">iproute</packagereq>
      <packagereq type="mandatory">iputils</packagereq>
      <packagereq type="mandatory">libgcc</packagereq>
      <packagereq type="mandatory">libtermcap</packagereq>
      <packagereq type="mandatory">mkinitrd</packagereq>
      <packagereq type="mandatory">procps</packagereq>
      <packagereq type="mandatory">readline</packagereq>
      <packagereq type="mandatory">rpm</packagereq>
      <packagereq type="mandatory">setup</packagereq>
      <packagereq type="mandatory">shadow-utils</packagereq>
      <packagereq type="mandatory">sysklogd</packagereq>
      <packagereq type="mandatory">termcap</packagereq>
      <packagereq type="mandatory">util-linux</packagereq>
      <packagereq type="mandatory">yum</packagereq>
      <packagereq type="mandatory">wget</packagereq>
    </packagelist>
  </group>


  <group>
    <id>xen</id>
    <name>Virtualization</name>
    <description>Virtualization Support with XEN</description>
    <default>false</default>
    <uservisible>true</uservisible>
    <packagelist>
      <packagereq type="default">kernel-xen</packagereq>
      <packagereq type="optional">libvirt</packagereq>
      <packagereq type="default">xen</packagereq>
      <packagereq type="optional">virt-manager</packagereq>
      <packagereq type="optional">virt-viewer</packagereq>
    </packagelist>
  </group>

  <group>
    <id>kvm</id>
    <name>KVM</name>
    <description>Virtualization Support with KVM</description>
    <default>false</default>
    <uservisible>true</uservisible>
    <packagelist>
      <packagereq type='default'>celt051</packagereq>
      <packagereq type='default'>etherboot-zroms</packagereq>
      <packagereq type='default'>etherboot-zroms-kvm</packagereq>
      <packagereq type='default'>kmod-kvm</packagereq>
      <packagereq type='default'>kvm</packagereq>
      <packagereq type='default'>kvm-qemu-img</packagereq>
      <packagereq type='default'>log4cpp</packagereq>
      <packagereq type='default'>qcairo</packagereq>
      <packagereq type='default'>qffmpeg-libs</packagereq>
      <packagereq type='default'>qpixman</packagereq>
      <packagereq type='default'>qspice-libs</packagereq>
      <packagereq type='default'>libvirt</packagereq>
      <packagereq type='optional'>etherboot-pxes</packagereq>
      <packagereq type='optional'>etherboot-roms</packagereq>
      <packagereq type='optional'>etherboot-roms-kvm</packagereq>
      <packagereq type='optional'>iasl</packagereq>
      <packagereq type='optional'>kvm-tools</packagereq>
      <packagereq type="optional">virt-manager</packagereq>
      <packagereq type="optional">virt-viewer</packagereq>
    </packagelist>
  </group>

  <category>
    <id>virtualization</id>
    <name>Virtualization</name>
    <description>Virtualization Support.</description>
    <display_order>93</display_order>
    <grouplist>
      <groupid>xen</groupid>
      <groupid>kvm</groupid>
    </grouplist>
  </category>

</comps>
[root@buildhost-64 tmp]#


Scripts used to test RPMs, create repo, and build ISO

[root@buildhost-64 tmp]# cat testrun.sh 
#!/bin/bash
TESTDIR=$1
if [ "$TESTDIR" == "" ] ; then
  echo "You should provide the name of test directory containing RPMS. Please specify full path."
  exit 1
fi
RPMTEST="/tmp/RPMtest"
rpm --initdb --dbpath ${RPMTEST} 
rpm --test --dbpath ${RPMTEST} --root ${RPMTEST} -ivh ${TESTDIR}/*.rpm

[root@buildhost-64 tmp]# cat creaerepo.sh 
#!/bin/bash
BUILDDIR=$1
if [ "${BUILDDIR}" == "" ]; then
  echo "Build Directory cannot be empty. Please specify full path."
  exit 1
fi

COMPSFILE="/tmp/comps.xml-hypervisor"

export DISCINFO=$(head -1 ${BUILDDIR}/.discinfo)

echo "Doing: rm -f /${BUILDDIR}/repodata/*"
rm -f ${BUILDDIR}/repodata/* 

echo "Doing: cp -v ${COMPSFILE} ${BUILDDIR}/repodata/comps.xml"
cp -v ${COMPSFILE} ${BUILDDIR}/repodata/comps.xml 

echo "Doing: createrepo -u "media://${DISCINFO}" -g ${BUILDDIR}/repodata/comps.xml ${BUILDDIR}/"
createrepo  -u "media://${DISCINFO}" -g ${BUILDDIR}/repodata/comps.xml ${BUILDDIR}/

[root@buildhost-64 tmp]# cat buildiso.sh 
#!/bin/bash
BUILDDIR=$1
if [ "${BUILDDIR}" == "" ]; then
  echo "Build Directory cannot be empty. Please specify full path."
  exit 1
fi
ISODIR="/mnt/cdimages/"
ISOFILE="CentOS-5.5-x86_64-HypervisorEdition.iso"

# Remove the non-english RELEASE-NOTES. 
rm -f ${BUILDDIR}/RELEASE-NOTES-[a-d,f-z]*

# Remove NOTES directory, which contains RELEASE-NOTES in plathora of different languages.
rm -f ${BUILDDIR}/NOTES*

# Remove the target ISO file, if it already exists.
rm ${ISODIR}/${ISOFILE}

# Create the README file in the CD root:
cat > ${BUILDDIR}/README << EOFREADME
################################################################################################
# README  : Contains summary about this CD
# Author  : Muhammad Kamran Azeem (kamran@wbitt.com)
# Created : 20110103
# Revision: 20110103
# Summary : This CD is CENTOS 5.5 x86_64 (64 bit), rebuilt by WBITT team, as Hypervisor Edition.
#################################################################################################
Detail:-
1) This is a bootable CD. (Of-course ;)
2) The CD contains four groups only: 
* core [Not visible in installer.]
* base
* xen (Named/shown as group: Virtualization)
* kvm (Named/shown as group: KVM)

3) These groups can be used in your kickstart files.
4) The groups are designed in such a way, that if you do not select any group (uncheck all of them at the time of installation), 
you will get a minimal installation, containing yum and wget. In minimal install you won't get any protection. 
5) SELINUX and IPTABLES are not installed in the minimal (@core) installation.
all other packages if needed must be copied, or installed from the CD directly.
Or whatever way you prefer, including, but not limiting to using YUM.
6) The base contains xterm. If you select that, xterm and its (minimal) necessary X packages will also get installed automatically. (Vesa drivers)
7) If you decide to use kickstart, then please note, that the software in this CD is (should be) compatible with your current kickstarts.
8) The complete CD can be copied to an NFS/HTTP/FTP server, and can in-turn be used for network based installations, of the same.
9) The CD has both KVM and XEN hypervisors. Includes kernel-xen. 
10) If you select the category "Virtualization" at the install time, and do not check "customize software selection", XEN will be installed.

End of README file.
EOFREADME

# Create a sample kickstart file in the CD root:
cat > ${BUILDDIR}/sample-kickstart.ks << EOFKS
################################################################################################
# Author : Muhammad Kamran Azeem (kamran@wbitt.com)
# Created: 2011-01-03
# Revised: 2011-01-03
# Summary: A minimalistic kickstart file by WBITT Team
# Note   : USE AT YOUR OWN RISK. Adjust as per your requirements.
################################################################################################
install
text
# url --url http://192.168.122.1/CentOS-5.5-x86_64-Hypervisor/
lang en_US.UTF-8
keyboard us
network --device eth0 --bootproto dhcp --hostname centos-55-64-hypervisor --noipv6
# The password below is actually redhat
rootpw --iscrypted $1$Q6duWtpC$OcyfP8NCdH1EZBxHmM/tL0
firewall --enabled --port=22:tcp
authconfig --enableshadow --enablemd5
selinux --enabled
timezone Asia/Riyadh
# I prefer you create at least a 2 GB disk for the minimal install.
# Adjust the following three lines as needed.
# zerombr
# bootloader --location=mbr  --append=""
# clearpart --all --initlabel
# part / --fstype=ext3 --size=200 --grow
# part swap --fstype=swap --size=256
reboot

%packages
# The options for groups are: core, base, xen, kvm
@core

%post
# chkconfig --level 35 sendmail off
# chkconfig --level 35 cups off
EOFKS


# Finally, create the ISO.
mkisofs -r -R -J -T -v  \
   -no-emul-boot -boot-load-size 4 -boot-info-table \
   -V "CentOS-5.5-Hypervisor 64-bit" -p "KamranAzeem (kamran@wbitt.com)"  -A "CentOS-5.5-Hypervisor-Edition 64 bit-2011/01/03" \
   -b isolinux/isolinux.bin -c isolinux/boot.cat  -x "lost+found" \
   -o ${ISODIR}/${ISOFILE} ${BUILDDIR}

[root@buildhost-64 tmp]#

Personal tools