Note: updated for XCP 1.5b/1.6 and Xenserver 6.x
Install Type
- Non-interactive
- Network boot
- Commandline
- Paravirtualized
Prerequisites
- XCP/Xenserver
- Access to Internet
- Working DHCP server
- Working DNS name resolution
Introduction
This tutorial was originally written for CentOS and has been adapted for Fedora 20.
Note: This tutorial is designed so you can copy and paste the text inside the boxes. I don't actually type any of this in and neither should you.
1. Getting the network info
This line gets the Network UUID for xenbr0. If you're using a different bridge you will want to insert it here. Get a list of XCP networks with xe network-list. This network is connected to the outside interface. This tutorial requires there to be a DHCP server on this network answering requests and providing network access to the Internet.
NETUUID=$(xe network-list bridge=xenbr0 --minimal)
2. Creating the VM and setting parameters
Here we create the VM from the RHEL6 template, create a network interface and add it to our network from step one. Additional settings are for configuring the install repository and specifying the kickstart file from my site. The last setting turns off VNC so we can watch the install via a text console (very important in my environment). Even if you can't see all the text below just highlight and paste. The text is there even if it's not visible.
TMPLUUID=$(xe template-list | grep -B1 'name-label.*Red Hat.* 6.*32-bit' | awk -F: '/uuid/{print $2}'| tr -d " ") VMUUID=$(xe vm-install new-name-label="Fedora20" template=${TMPLUUID}) xe vif-create vm-uuid=$VMUUID network-uuid=$NETUUID mac=random device=0 xe vm-param-set uuid=$VMUUID other-config:install-repository=http://mirror.symnds.com/distributions/fedora/releases/20/Fedora/i386/os/ xe vm-param-set uuid=$VMUUID PV-args="ks=http://grantmcwilliams.com/files/kickstart-minimal-fedora20-i386.cfg ksdevice=eth0" xe vm-param-set uuid=${VMUUID} other-config:disable_pv_vnc=1
3. Starting the VM and watching the install
The VM installs without any interaction from the user at this point. It is however, nice to watch it using xenconsole. Once it's done installing it will shutdown.
If you're using XCP 1.0/1.1
xe vm-start uuid=$VMUUID DOMID=$(xe vm-list uuid=${VMUUID} params=dom-id --minimal) /usr/lib/xen/bin/xenconsole ${DOMID}
If you're using XCP 1.5b/1.6 or Xenserver 6.x
xe vm-start uuid=$VMUUID xe console uuid=$VMUUID
4. Starting the VM and configuring settings
We need to boot the VM up again and using xenconsole log in as root to configure the network and reset the root users password.
If you're using XCP 1.0/1.1
xe vm-start uuid=$VMUUID DOMID=$(xe vm-list uuid=${VMUUID} params=dom-id --minimal) /usr/lib/xen/bin/xenconsole ${DOMID}
If you're using XCP 1.5b/1.6 or Xenserver 6.x
xe vm-start uuid=$VMUUID xe console uuid=$VMUUID
Now that yourFedora VM is running you can login. The password was automatically set by the kickstart file.
- Username: root
- Password: password
Reset the root users password and change the network settings to static IP using system-config-network. If you want to keep the IP assignment dynamic note the ip address.
5. Shutting down the VM and re-enabling VNC
If you're going to use XVP or some other method of connecting to the VMs direct VNC connection you'll need to enable it.
xe vm-shutdown uuid=$VMUUID xe vm-param-remove uuid=${VMUUID} param-name=other-config param-key=disable_pv_vnc xe vm-start uuid=$VMUUID
6. Add RPMfusion repository
I almost always install RPMfusion. It is very stable and doesn't replace standard packages.
yum localinstall --nogpgcheck http://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-stable.noarch.rpm
7. Export our VM for safe keeping
Before you start modifying the base Fedora image you should back it up.
xe vm-export uuid=$VMUUID filename=Fedora20-base.xva
Be aware that you may not have enough space on the Control Domain's disk to export it. A good solution (and shorter than explaining how to add disks to the control domain) is to mount an nfs volume and export it there.
mount nfsserver:/share /media/share xe vm-export uuid=$VMUUID filename=/media/share/Fedora20-base.xva
This would mount the NFS share on nfsserver to /media/share. The exported disk would be saved on the NFS share.
Notes: Since it's more likely that you will want to do a Fedora desktop install than for the other Operating Systems I've written tutorials for I've put together a list of packages for your custom kickstart file (extracted from the Fedora-20-comps.xml file.)
- admin-tools
- authoring-and-publishing
- base
- base-x
- books
- cloud-infrastructure
- clustering
- design-suite
- development-libs
- development-tools
- dial-up
- directory-server
- dns-server
- dogtag
- eclipse
- editors
- education
- electronic-lab
- engineering-and-scientific
- fedora-packager
- font-design
- fonts
- ftp-server
- games
- gnome-desktop
- gnome-software-development
- graphical-internet
- graphics
- haskell
- input-methods
- java
- java-development
- kde-desktop
- kde-software-development
- legacy-fonts
- legacy-network-server
- legacy-software-development
- libreoffice-development
- lxde-desktop
- mail-server
- medical
- meego-netbook
- milkymist
- mingw32
- mysql
- network-server
- news-server
- ocaml
- office
- perl
- printing
- robotics-suite
- ruby
- server-cfg
- smb-server
- sound-and-video
- sql-server
- sugar-desktop
- system-tools
- text-internet
- virtualization
- virtualization-hypervisor
- web-development
- web-server
- window-managers
- xfce-desktop
- xfce-software-development
- x-software-development
To insert any of these package groups into your own custom kickstart file precede the group name with an @ and insert it in the Package section.
# Packages %packages --excludedocs @ base man man-pages sendmail yum-presto %end
Then to use your kickstart file save it to a webserver somewhere. Follow the installation instructions but refer to your kickstart file (ks=<URL> in Step 2.
xe vm-param-set uuid=$VMUUID PV-args="ks=http://grantmcwilliams.com/files/kickstart-minimal-fedora20-i386.cfg ksdevice=eth0"