Before using a Xen ECS to create a private image, you need to install native Xen and KVM drivers on the ECS.
This section describes how to install native KVM drivers.
If an ECS has no KVM drivers installed, the NICs of the ECS may not be detected and the ECS will be unable to communicate with other resources.
lscpu
Figure 1 Checking the virtualization type of a Linux ECS

To ensure that you can successfully install native Xen and KVM drivers, you must uninstall PV drivers from the ECS first.
ps -ef | grep uvp-monitor
root 4561 1 0 Jun29 ? 00:00:00 /usr/bin/uvp-monitorroot 4567 4561 0 Jun29 ? 00:00:00 /usr/bin/uvp-monitorroot 6185 6085 0 03:04 pts/2 00:00:00 grep uvp-monitor
/etc/.uvp-monitor/uninstall
The PV driver is uninstalled successfully. Reboot the system for the uninstallation to take effect.
-bash: /etc/.uvp-monitor/uninstall: No such file or directory
rpm -qa | grep uvp
Information similar to the following is displayed:
libxenstore_uvp3_0-3.00-36.1.x86_64uvp-monitor-2.2.0.315-3.1.x86_64kmod-uvpmod-2.2.0.315-3.1.x86_64
rpm -e kmod-uvpmod
rpm -e uvp-monitor
rpm -e libxenstore_uvp
Modify the configuration file depending on the OS.
Take CentOS 7.0 as an example. Modify the /etc/dracut.conf file. Add VirtIO drivers to add_drivers. VirtIO drivers include virtio_blk, virtio_scsi, virtio_net, virtio_pci, virtio_ring, and virtio. Separate driver names with spaces. Save and exit the /etc/dracut.conf file. Run the dracut -f command to regenerate initrd.
For details, see CentOS and EulerOS.
Modify the /etc/initramfs-tools/modules file. Add VirtIO drivers. VirtIO drivers include virtio_blk, virtio_scsi, virtio_net, virtio_pci, virtio_ring, and virtio. Separate driver names with spaces. Save and exit the /etc/initramfs-tools/modules file. Run the update-initramfs -u command to regenerate initrd.
For details, see Ubuntu and Debian.
For details, see SUSE and openSUSE.
For SUSE, run the following command to check whether xen-kmp (driver package for Xen PV) is installed:
rpm -qa |grep xen-kmp
If information similar to the following is displayed, xen-kmp is installed in the OS:
xen-kmp-default-4.2.2_04_3.0.76_0.11-0.7.5
If xen-kmp is not installed, obtain it from the ISO file and install it.
If you add built-in drivers to the initrd or initramfs file by mistake, the ECS will not be affected.
vi /etc/dracut.conf
[root@CTU10000xxxxx ~]# vi /etc/dracut.conf# additional kernel modules to the defaultadd_drivers+="xen-blkfront xen-netfront virtio_blk virtio_scsi virtio_net virtio_pci virtio_ring virtio"......
dracut -f /boot/initramfs-2.6.32-573.8.1.el6.x86_64.img
If the virtual file system is not the default initramfs, run dracut -f Name of the initramfs or initrd file actually used. You can obtain the actual initramfs or initrd file name from the grub.cfg file, which can be /boot/grub/grub.cfg, /boot/grub2/grub.cfg, or /boot/grub/grub.conf depending on the OS.
lsinitrd /boot/initramfs-`uname -r`.img | grep xen
lsinitrd /boot/initramfs-`uname -r`.img | grep virtio
If the virtual file system is initrd, run the following commands:
lsinitrd /boot/initrd-`uname -r` | grep xen
lsinitrd /boot/initrd-`uname -r` | grep virtio
Assume that the virtual file system is initramfs. The command output will be:
[root@CTU10000xxxxx home]# lsinitrd /boot/initramfs-`uname -r`.img | grep xen-rwxr--r-- 1 root root 54888 Jul 16 17:53 lib/modules/2.6.32-573.8.1.el6.x86_64/kernel/drivers/block/xen-blkfront.ko-rwxr--r-- 1 root root 45664 Jul 16 17:53 lib/modules/2.6.32-573.8.1.el6.x86_64/kernel/drivers/net/xen-netfront.ko[root@CTU10000xxxxx home]# lsinitrd /boot/initramfs-`uname -r`.img | grep virtio-rwxr--r-- 1 root root 23448 Jul 16 17:53 lib/modules/2.6.32-573.8.1.el6.x86_64/kernel/drivers/block/virtio_blk.ko-rwxr--r-- 1 root root 50704 Jul 16 17:53 lib/modules/2.6.32-573.8.1.el6.x86_64/kernel/drivers/net/virtio_net.ko-rwxr--r-- 1 root root 28424 Jul 16 17:53 lib/modules/2.6.32-573.8.1.el6.x86_64/kernel/drivers/scsi/virtio_scsi.kodrwxr-xr-x 2 root root 0 Jul 16 17:53 lib/modules/2.6.32-573.8.1.el6.x86_64/kernel/drivers/virtio-rwxr--r-- 1 root root 14544 Jul 16 17:53 lib/modules/2.6.32-573.8.1.el6.x86_64/kernel/drivers/virtio/virtio.ko-rwxr--r-- 1 root root 21040 Jul 16 17:53 lib/modules/2.6.32-573.8.1.el6.x86_64/kernel/drivers/virtio/virtio_pci.ko-rwxr--r-- 1 root root 18016 Jul 16 17:53 lib/modules/2.6.32-573.8.1.el6.x86_64/kernel/drivers/virtio/virtio_ring.ko
If you add built-in drivers to the initrd or initramfs file, the ECS will not be affected but such drivers cannot be shown by running the lsinitrd command. You can run the following commands to check whether there are built-in drivers in the kernel:
cat /boot/config-`uname -r` | grep CONFIG_VIRTIO | grep y
cat /boot/config-`uname -r` | grep CONFIG_XEN | grep y
vi /etc/initramfs-tools/modules
[root@CTU10000xxxxx ~]#vi /etc/initramfs-tools/modules......# Examples:## raid1# sd_mOdxen-blkfrontxen-netfrontvirtio_blkvirtio_scsivirtio_netvirtio_pcivirtio_ringvirtio
update-initramfs -u
lsinitramfs /boot/initrd.img-`uname -r` |grep xen
lsinitramfs /boot/initrd.img-`uname -r` |grep virtio
[root@ CTU10000xxxxx home]# lsinitramfs /boot/initrd.img-`uname -r` |grep xenlib/modules/3.5.0-23-generic/kernel/drivers/net/ethernet/qlogic/netxenlib/modules/3.5.0-23-generic/kernel/drivers/net/ethernet/qlogic/netxen/netxen_nic.kolib/modules/3.5.0-23-generic/kernel/drivers/net/xen-netbacklib/modules/3.5.0-23-generic/kernel/drivers/net/xen-netback/xen-netback.kolib/modules/3.5.0-23-generic/kernel/drivers/block/xen-blkbacklib/modules/3.5.0-23-generic/kernel/drivers/block/xen-blkback/xen-blkback.ko[root@ CTU10000xxxxx home]# lsinitramfs /boot/initrd.img-`uname -r` |grep virtiolib/modules/3.5.0-23-generic/kernel/drivers/scsi/virtio_scsi.ko
If you add built-in drivers to the initrd or initramfs file by mistake, the ECS will not be affected. The drivers cannot be found by running the lsinitrd command. You can run the following commands to check whether built-in drivers are in the kernel:
[root@ CTU10000xxxxx home]# cat /boot/config-`uname -r` | grep CONFIG_VIRTIO | grep yCONFIG_VIRTIO_BLK=yCONFIG_VIRTIO_NET=yCONFIG_VIRTIO=yCONFIG_VIRTIO_RING=yCONFIG_VIRTIO_PCI=yCONFIG_VIRTIO_MMIO_CMDLINE_DEVICES=y[root@ CTU10000xxxxx home]# cat /boot/config-`uname -r` | grep CONFIG_XEN | grep yCONFIG_XEN_BLKDEV_FRONTEND=yCONFIG_XEN_NETDEV_FRONTEND=y
If the OS version is earlier than SUSE 12 SP1 or openSUSE 13, modify the /etc/sysconfig/kernel file to install the drivers. For details, see scenario 1.
If the OS version is SUSE 12 SP1, modify the /etc/dracut.conf file to install the drivers. For details, see scenario 2.
If the OS version is later than SUSE 12 SP1 or openSUSE 13, modify the /etc/dracut.conf file to install the drivers. For details, see scenario 3.
Before installing the drivers, run the following command to check whether xen-kmp (driver package for Xen PV) is installed:
rpm -qa |grep xen-kmp
If information similar to the following is displayed, xen-kmp is installed:
xen-kmp-default-4.2.2_04_3.0.76_0.11-0.7.5
If xen-kmp is not installed, obtain it from the ISO package and install it first.
vi /etc/sysconfig/kernel
SIA10000xxxxx:~ # vi /etc/sysconfig/kernel# (like drivers for scsi-controllers, for lvm or reiserfs)#INITRD_MODULES="ata_piix ata_generic xen_vnif xen_vbd xen_platform_pci virtio_blk virtio_scsi virtio_net virtio_pci virtio_ring virtio"
If the virtual file system is not the default initramfs or initrd, run dracut -f Name of the initramfs or initrd file actually used. The actual initramfs or initrd file name can be obtained from the menu.lst or grub.cfg file (/boot/grub/menu.lst, /boot/grub/grub.cfg, or /boot/grub2/grub.cfg).
The following is an example initrd file of SUSE 11 SP4:
default 0timeout 10gfxmenu (hd0,0)/boot/messagetitle sles11sp4_001_[_VMX_]root (hd0,0)kernel /boot/linux.vmx vga=0x314 splash=silent console=ttyS0,115200n8 console=tty0 net.ifnames=0 NON_PERSISTENT_DEVICE_NAMES=1 showoptsinitrd /boot/initrd.vmxtitle Failsafe_sles11sp4_001_[_VMX_]root (hd0,0)kernel /boot/linux.vmx vga=0x314 splash=silent ide=nodma apm=off noresume edd=off powersaved=off nohz=off highres=off processor.max+cstate=1 nomodeset x11failsafe console=ttyS0,115200n8 console=tty0 net.ifnames=0 NON_PERSISTENT_DEVICE_NAMES=1 showoptsinitrd /boot/initrd.vmx
/boot/initrd.vmx is the initrd file actually used. If /boot is missing in the initrd file path, you need to add it when you run the dracut -f command. In this case, the command should be dracut -f /boot/initramfs-xxx.
lsinitrd /boot/initrd-`uname -r` | grep xen
lsinitrd /boot/initrd-`uname -r` | grep virtio
SIA10000xxxxx:~ # lsinitrd /boot/initrd-`uname -r` | grep xen-rwxr--r-- 1 root root 42400 Jun 22 2012 lib/modules/2.6.32-279.el6.x86_64/kernel/drivers/block/xen-blkfront.ko-rwxr--r-- 1 root root 44200 Jun 22 2012 lib/modules/2.6.32-279.el6.x86_64/kernel/drivers/net/xen-netfront.koSIA10000xxxxx:~ # lsinitrd /boot/initrd-`uname -r` | grep virtio-rwxr--r-- 1 root root 19248 Jun 22 2012 lib/modules/2.6.32-279.el6.x86_64/kernel/drivers/scsi/virtio_scsi.ko-rwxr--r-- 1 root root 23856 Jun 22 2012 lib/modules/2.6.32-279.el6.x86_64/kernel/drivers/block/virtio_blk.kodrwxr-xr-x 2 root root 0 Jul 12 14:53 lib/modules/2.6.32-279.el6.x86_64/kernel/drivers/virtio-rwxr--r-- 1 root root 15848 Jun 22 2012 lib/modules/2.6.32-279.el6.x86_64/kernel/drivers/virtio/virtio_ring.ko-rwxr--r-- 1 root root 20008 Jun 22 2012 lib/modules/2.6.32-279.el6.x86_64/kernel/drivers/virtio/virtio_pci.ko-rwxr--r-- 1 root root 12272 Jun 22 2012 lib/modules/2.6.32-279.el6.x86_64/kernel/drivers/virtio/virtio.ko-rwxr--r-- 1 root root 38208 Jun 22 2012 lib/modules/2.6.32-279.el6.x86_64/kernel/drivers/net/virtio_net.ko
Before the modification:
###Don't change this comment -YaST2 identifier: Original name: linux###title SUSE Linux Enterprise Server 11SP4 - 3.0.76-0.11 (default)root (hd0,0)kernel /boot/vmlinuz-3.0.76-0.11-default root=UUID=4eb40294-4c6f-4384-bbb6-b8795bbb1130 splash=silentcrashkernel=256M-:128M showopts vga=0x314initrd /boot/initrd-3.0.76-0.11-default
After the modification:
###Don't change this comment -YaST2 identifier: Original name: linux###title SUSE Linux Enterprise Server 11SP4 - 3.0.76-0.11 (default)root (hd0,0)kernel /boot/vmlinuz-3.0.76-0.11-default root=UUID=4eb40294-4c6f-4384-bbb6-b8795bbb1130 splash=silentcrashkernel=256M-:128M showopts vga=0x314 xen_platform_pci.dev_unplug=allinitrd /boot/initrd-3.0.76-0.11-default
lsinitrd /boot/initrd-`uname -r` | grep xen
lsinitrd /boot/initrd-`uname -r` | grep virtio
SIA10000xxxxx:~ # lsinitrd /boot/initrd-`uname -r` | grep xen-rwxr--r-- 1 root root 42400 Jun 22 2012 lib/modules/2.6.32-279.el6.x86_64/kernel/drivers/block/xen-blkfront.ko-rwxr--r-- 1 root root 44200 Jun 22 2012 lib/modules/2.6.32-279.el6.x86_64/kernel/drivers/net/xen-netfront.koSIA10000xxxxx:~ # lsinitrd /boot/initrd-`uname -r` | grep virtio-rwxr--r-- 1 root root 19248 Jun 22 2012 lib/modules/2.6.32-279.el6.x86_64/kernel/drivers/scsi/virtio_scsi.ko-rwxr--r-- 1 root root 23856 Jun 22 2012 lib/modules/2.6.32-279.el6.x86_64/kernel/drivers/block/virtio_blk.kodrwxr-xr-x 2 root root 0 Jul 12 14:53 lib/modules/2.6.32-279.el6.x86_64/kernel/drivers/virtio-rwxr--r-- 1 root root 15848 Jun 22 2012 lib/modules/2.6.32-279.el6.x86_64/kernel/drivers/virtio/virtio_ring.ko-rwxr--r-- 1 root root 20008 Jun 22 2012 lib/modules/2.6.32-279.el6.x86_64/kernel/drivers/virtio/virtio_pci.ko-rwxr--r-- 1 root root 12272 Jun 22 2012 lib/modules/2.6.32-279.el6.x86_64/kernel/drivers/virtio/virtio.ko-rwxr--r-- 1 root root 38208 Jun 22 2012 lib/modules/2.6.32-279.el6.x86_64/kernel/drivers/net/virtio_net.ko
If you add built-in drivers to the initrd or initramfs file by mistake, the ECS will not be affected. The drivers cannot be found by running the lsinitrd command. You can run the following commands to check whether built-in drivers are in the kernel:
cat /boot/config-`uname -r` | grep CONFIG_VIRTIO | grep y
cat /boot/config-`uname -r` | grep CONFIG_XEN | grep y
vi /etc/dracut.conf
[root@CTU10000xxxxx ~]# vi /etc/dracut.conf# additional kernel modules to the defaultadd_drivers+="ata_piix ata_generic xen_vnif xen_vbd xen_platform_pci virtio_blk virtio_scsi virtio_net virtio_pci virtio_ring virtio"
dracut -f /boot/initramfs-File name
If the virtual file system is not the default initramfs, run the dracut -f Name of the initramfs or initrd file actually used command. The actual initramfs or initrd file name can be obtained from the grub.cfg file, which can be /boot/grub/grub.cfg, /boot/grub2/grub.cfg, or /boot/grub/grub.conf depending on the OS.
lsinitrd /boot/initramfs-`uname -r`.img | grep xen
lsinitrd /boot/initramfs-`uname -r`.img | grep virtio
If the virtual file system is initrd, run the following commands:
lsinitrd /boot/initrd-`uname -r` | grep xen
lsinitrd /boot/initrd-`uname -r` | grep virtio
Take SUSE Linux Enterprise Server 12 SP2 (x86_64) as an example.
vi /etc/dracut.conf
[root@CTU10000xxxxx ~]# vi /etc/dracut.conf# additional kernel modules to the defaultadd_drivers+="ata_piix ata_generic xen-blkfront xen-netfront virtio_blk virtio_scsi virtio_net virtio_pci virtio_ring virtio"
dracut -f /boot/initramfs-File name
If the virtual file system is not the default initramfs, run the dracut -f Name of the initramfs or initrd file actually used command. The actual initramfs or initrd file name can be obtained from the grub.cfg file, which can be /boot/grub/grub.cfg, /boot/grub2/grub.cfg, or /boot/grub/grub.conf depending on the OS.
lsinitrd /boot/initramfs-`uname -r`.img | grep xen
lsinitrd /boot/initramfs-`uname -r`.img | grep virtio
If the virtual file system is initrd, run the following commands:
lsinitrd /boot/initrd-`uname -r` | grep xen
lsinitrd /boot/initrd-`uname -r` | grep virtio
Assume that the virtual file system is initrd. The command output will be:
sluo-ecs-30dc:~ # lsinitrd /boot/initrd-`uname -r` | grep xen-rw-r--r-- 1 root root 69575 Oct 26 2016 lib/modules/4.4.21-69-default/kernel/drivers/block/xen-blkfront.ko-rw-r--r-- 1 root root 53415 Oct 26 2016 lib/modules/4.4.21-69-default/kernel/drivers/net/xen-netfront.kodrwxr-xr-x 2 root root 0 Sep 28 10:21 lib/modules/4.4.21-69-default/updates/pvdriver/xen-hcall-rwxr-xr-x 1 root root 8320 Sep 28 10:21 lib/modules/4.4.21-69-default/updates/pvdriver/xen-hcall/xen-hcall.kosluo-ecs-30dc:~ # lsinitrd /boot/initrd-`uname -r` | grep virtio-rw-r--r-- 1 root root 29335 Oct 26 2016 lib/modules/4.4.21-69-default/kernel/drivers/block/virtio_blk.ko-rw-r--r-- 1 root root 57007 Oct 26 2016 lib/modules/4.4.21-69-default/kernel/drivers/net/virtio_net.ko-rw-r--r-- 1 root root 32415 Oct 26 2016 lib/modules/4.4.21-69-default/kernel/drivers/scsi/virtio_scsi.kodrwxr-xr-x 2 root root 0 Sep 28 10:21 lib/modules/4.4.21-69-default/kernel/drivers/virtio-rw-r--r-- 1 root root 19623 Oct 26 2016 lib/modules/4.4.21-69-default/kernel/drivers/virtio/virtio.ko-rw-r--r-- 1 root root 38943 Oct 26 2016 lib/modules/4.4.21-69-default/kernel/drivers/virtio/virtio_pci.ko-rw-r--r-- 1 root root 24431 Oct 26 2016 lib/modules/4.4.21-69-default/kernel/drivers/virtio/virtio_ring.ko
If you add built-in drivers to the initrd or initramfs file by mistake, the ECS will not be affected. The drivers cannot be found by running the lsinitrd command. You can run the following commands to check whether built-in drivers are in the kernel:
cat /boot/config-`uname -r` | grep CONFIG_VIRTIO | grep y
cat /boot/config-`uname -r` | grep CONFIG_XEN | grep y
Delete log files, historical records, and other data.
echo > /$path/$to/$root/.ssh/authorized_keys
Example: echo > /root/.ssh/authorized_keys
echo > /$path/$to/$none-root/.ssh/authorized_keys
Example: echo > /home/linux/.ssh/authorized_keys
rm -rf /var/log/*
Before deleting log files, back up log directories and log files required by application startup. For example, if the default Nginx log directory /var/log/nginx is deleted, Nginx may fail to be started.
echo > /root/.bash_history
history -c