|
|
Line 1: |
Line 1: |
- | ==comps.xml==
| |
- | Here you see comps.xml-hypervisor , a filename of my own choice for a reason. When I am done editing the file, the createrepo.sh sript (shown below), copies it as "comps.xml" in the build tree.
| |
| | | |
- | <pre>
| |
- | [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]#
| |
- | </pre>
| |
- |
| |
- | ==Scripts used to test RPMs, create repo, and build ISO==
| |
- | ===Test RPMs (testrun.sh)===
| |
- | <pre>
| |
- | [root@buildhost-64 tmp]# cat testrun.sh
| |
- | #!/bin/bash
| |
- | # TESTDIR is the location, where you have stored your RPMs, waiting to be tested.
| |
- | TESTDIR=$1
| |
- | if [ "$TESTDIR" == "" ] ; then
| |
- | echo "You should provide the name of test directory containing RPMS. Please specify full path."
| |
- | exit 1
| |
- | fi
| |
- |
| |
- | # Specify the directory, which you want to be the temporary test install path for the RPMs.
| |
- | # Note: It (RPMTEST) should be different than the TESTDIR varible.
| |
- | RPMTEST="/tmp/RPMtest"
| |
- | rpm --initdb --dbpath ${RPMTEST}
| |
- | rpm --test --dbpath ${RPMTEST} --root ${RPMTEST} -ivh ${TESTDIR}/*.rpm
| |
- | [root@buildhost-64 tmp]#
| |
- | </pre>
| |
- |
| |
- | ===Create Repository (createrepo.sh)===
| |
- | <pre>
| |
- | [root@buildhost-64 tmp]# cat createrepo.sh
| |
- | #!/bin/bash
| |
- | BUILDDIR=$1
| |
- | if [ "${BUILDDIR}" == "" ]; then
| |
- | echo "Build Directory cannot be empty. Please specify full path."
| |
- | exit 1
| |
- | fi
| |
- |
| |
- | # Change this to the name you are using for your temporary/work-copy of comps.xml
| |
- | COMPSFILE="/tmp/comps.xml-hypervisor"
| |
- |
| |
- | export DISCINFO=$(head -1 ${BUILDDIR}/.discinfo)
| |
- |
| |
- | # Remove all the file in the repodata directory, including comps.xml.
| |
- | echo "Doing: rm -f /${BUILDDIR}/repodata/*"
| |
- | rm -f ${BUILDDIR}/repodata/*
| |
- |
| |
- | # Copy your working copy of comps.xml to the repodata directory, inside the build directory.
| |
- | echo "Doing: cp -v ${COMPSFILE} ${BUILDDIR}/repodata/comps.xml"
| |
- | cp -v ${COMPSFILE} ${BUILDDIR}/repodata/comps.xml
| |
- |
| |
- | # Create the repository.
| |
- | 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]#
| |
- | </pre>
| |
- |
| |
- | ===Build ISO (buildiso.sh)===
| |
- | <pre>
| |
- | [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
| |
- |
| |
- | # This is where the resultant ISO image will be stored. Can be an NFS share.
| |
- | ISODIR="/mnt/cdimages/"
| |
- |
| |
- | # The name of the resultant ISO file.
| |
- | ISOFILE="CentOS-5.5-x86_64-HypervisorEdition.iso"
| |
- |
| |
- | # Remove the non-english RELEASE-NOTES. Sorry guys!
| |
- | rm -f ${BUILDDIR}/RELEASE-NOTES-[a-d,f-z]*
| |
- |
| |
- | # Remove NOTES directory, which contains RELEASE-NOTES in plethora of different languages. Sorry again!
| |
- | rm -f ${BUILDDIR}/NOTES*
| |
- |
| |
- | # Remove the target ISO file, if it already exists. Just in case.
| |
- | 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]#
| |
- |
| |
- | </pre>
| |