This post introduces how to install a paravirtualized CentOS 7 DomU on Xen. The very common way of installing DomU does not work for CentOS 7. A little trick to set the repository and the network used by the VM should be used by adding a setting strings to the “extra=” field for this VM.
Note that this tutorials was tested with CentOS 7.2 (1511). The kernel in CentOS 7.4 seems have problems with Xen. Please check comments on some details.
To install the DomU VM, first download the pxeboot images from CentOS’s website at http://vault.centos.org/7.2.1511/os/x86_64/images/pxeboot/ (due to the problems of some later kernels with Xen, we use vault here to make sure it is a 7.2.1511 kernel).
The commands are (assume we are working in a directory of the VM
# wget http://vault.centos.org/7.2.1511/os/x86_64/images/pxeboot/vmlinuz # wget http://vault.centos.org/7.2.1511/os/x86_64/images/pxeboot/initrd.img
Prepare the configuration file centos7.cfg used for the VM:
name="centos7install" vcpus=4 memory=2048 disk=['file:/home/xen/centos7/vmdisk0,xvda,w' ] vif=['bridge=xenbr0'] on_reboot="restart" on_crash="restart" kernel="/home/xen/centos7/vmlinuz" ramdisk="/home/xen/centos7/initrd.img" extra="ksdevice= inst.repo=http://mirror.centos.org/centos/7/os/x86_64/ ip=10.0.0.222::10.0.0.2:255.255.0.0:cento7:eth0:none nameserver=18.104.22.168"
Here, note the trick of adding the line
extra="ksdevice= inst.repo=http://mirror.centos.org/centos/7/os/x86_64/ ip=10.0.0.222::10.0.0.2:255.255.0.0:cento7:eth0:none nameserver=22.214.171.124"
Here 10.0.0.222 is the IP assigned to the VM and 10.0.0.2 is the gateway. You will need to change the parameters here according to your network environment for the VM.
Prepare the disk image for the VM in the VM’s directory:
# dd if=/dev/zero of=./vmdisk0 bs=1k seek=20480k count=1
Now, start the VM and it will starts to install itself,
# xl create -c centos7.cfg
Then, just follow the CentOS 7’s instructions to install and configure the VM.
Booted the kernel and starting to download the installation files:
Choose the installation interface (choose “Use text mode”):
Make the choices for various OS configurations:
Started to install packages:
Boot the VM again with a normal configuration file as follows.
name="centos7" vcpus=4 memory=2048 disk=['file:/home/xen/centos7/vmdisk0,xvda,w' ] vif=['bridge=xenbr0'] on_reboot="restart" on_crash="restart" bootloader = "pygrub"
The key changes here are to remove the
extra variables and setting
bootloader to “pygrub”.
It works nicely now: