
# （可选）XEN虚拟化ECS安装原生的XEN和KVM驱动
#### 操作场景
对于XEN虚拟化类型的弹性云服务器，在创建Linux私有镜像前，需要确保弹性云服务器已安装原生的XEN和KVM驱动。
本节介绍安装原生XEN和KVM驱动的具体方法。
![](https://support.huaweicloud.com/usermanual-ims/public_sys-resources/caution_3.0-zh-cn.png)
如果不安装XEN驱动，弹性云服务器的网络性能很差，并且安全组和防火墙也不会生效；
如果不安装KVM驱动，弹性云服务器的网卡可能无法检测到，无法与外部通信。因此，请您务必安装XEN和KVM驱动。
#### 前提条件
- 请先确认您当前的弹性云服务器为XEN构架。 您可以执行以下命令，查看当前弹性云服务器的虚拟化类型。
  **lscpu**
  - 如果回显信息中的Hypervisor vendor为XEN，说明当前弹性云服务器为XEN虚拟化类型，请按照本章节操作。
  
  - 如果回显信息中的Hypervisor vendor为KVM，说明当前弹性云服务器为KVM虚拟化类型。请参见[（可选）KVM虚拟化ECS安装原生的KVM驱动](https://support.huaweicloud.com/usermanual-ims/ims_01_0326.html)。
  
  
  图1查看Linux弹性云服务器虚拟化类型   
  ![](https://support.huaweicloud.com/usermanual-ims/zh-cn_image_0000002148325088.png "点击放大") 
- 对于使用Linux系统原生的XEN和KVM驱动的Linux弹性云服务器，其内核版本必须高于2.6.24。
- 建议您禁用任何防病毒软件或入侵检测软件，安装原生的XEN和KVM驱动完成后，您可以再次启用这些软件。
- 请确认已完成[修改grub文件磁盘标识方式为UUID](https://support.huaweicloud.com/usermanual-ims/ims_01_0324.html)和[修改fstab文件磁盘标识方式为UUID](https://support.huaweicloud.com/usermanual-ims/ims_01_0325.html)。
 
#### 卸载PV driver
为了成功安装原生的XEN和KVM驱动，需要先卸载PV driver。
1. 使用VNC方式，以"root"用户登录弹性云服务器。
2. 执行如下命令，检查操作系统中是否安装PV driver相关的驱动。
   ```
   ps -ef | grep uvp-monitor
   ```
   - 若回显信息如下所示，表示已安装PV driver相关的驱动。
   
   - 若无如下回显信息，表示未安装PV driver相关的驱动，本节操作结束。
   
   
   ```
   root     4561        1    0   Jun29 ?           00:00:00   /usr/bin/uvp-monitor
   root     4567     4561    0   Jun29 ?           00:00:00   /usr/bin/uvp-monitor
   root     6185     6085    0   03:04  pts/2      00:00:00   grep uvp-monitor
   ```
   
3. 在VNC登录窗口的弹性云服务器操作系统界面，打开命令行终端（具体方式请查询对应操作系统的使用手册）。 进入命令行模式。
   
4. 执行以下命令，卸载PV driver。
   ```
   /etc/.uvp-monitor/uninstall
   ```
   - 回显信息如下时，表示Tools卸载成功。
     ```
     The PV driver is uninstalled successfully. Reboot the system for the uninstallation to take effect.
     ```
     
   
   - 回显信息如下提示不存在".uvp-monitor"时，请执行步骤[5]。
     ```
     -bash: /etc/.uvp-monitor/uninstall: No such file or directory
     ```
     
    
5. 执行如下操作，删除KVM虚拟化平台下不生效的uvp-monitor，防止日志溢出。
   1. 执行如下命令，查询操作系统是否安装了UVP用户态相关的监控程序。
      ```
      rpm -qa | grep uvp
      ```
      回显信息如下所示：
      ```
      libxenstore_uvp3_0-3.00-36.1.x86_64
      uvp-monitor-2.2.0.315-3.1.x86_64
      kmod-uvpmod-2.2.0.315-3.1.x86_64
      ```
      
   
   2. 执行如下命令，删除以下三个安装包。
      ```
      rpm -e kmod-uvpmod
      rpm -e uvp-monitor
      rpm -e libxenstore_uvp
      ```
      
    
 
#### 操作步骤
请根据操作系统版本，修改不同的配置文件，如[表1]所示。
 表1不同OS的修改方案 
| 操作系统             | 配置简介                                                                                                                                                                                                                                                                                                                                                                                                                                                                          | 操作指导                                                                                   |
|:---|:---|:---|
| CentOS/EulerOS系列 | 以CentOS 7.0为例： 1. 请修改"/etc/dracut.conf"文件，在add_drivers项中添加xen-pv以及virtio的驱动（xen-pv驱动：xen-blkfront、xen-netfront；virtio驱动：virtio_blk、virtio_scsi 、virtio_net、virtio_pci、virtio_ring、virtio）。驱动名之间以空格隔开。  2. 保存并退出"/etc/dracut.conf"文件，执行**dracut -f**命令，重新生成initrd。                   | [CentOS/EulerOS系列操作指导]。                           |
| Ubuntu/Debian系列  | 1. 请修改"/etc/initramfs-tools/modules"文件，添加xen-pv以及virtio的驱动（xen-pv驱动：xen-blkfront、xen-netfront；virtio驱动：virtio_blk、virtio_scsi 、virtio_net、virtio_pci、virtio_ring、virtio）。驱动名之间以空格隔开。  2. 保存并退出"/etc/initramfs-tools/modules"文件，执行**update-initramfs -u**命令，重新生成initrd。                                                | [Ubuntu/Debian系列操作指导]                              |
| SUSE和openSUSE系列  | 版本低于SUSE 12 SP1或低于openSUSE 13时： 1. 请修改"/etc/sysconfig/kernel"文件，在INITRD_MODULES=""添加xen-pv以及virtio的驱动（xen-pv驱动：xen_vnif、xen_vbd、xen_platform_pci；virtio驱动：virtio_blk、virtio_scsi 、virtio_net、virtio_pci、virtio_ring、virtio）。驱动名之间以空格隔开。  2. 执行**mkinitrd**命令，重新生成initrd。                    | [SUSE/openSUSE系列操作指导（版本低于SUSE 12 SP1/openSUSE 13）] |
| SUSE和openSUSE系列  | 版本为SUSE 12 SP1时： 1. 修改"/etc/dracut.conf"文件，在add_drivers项中添加xen-pv以及virtio的驱动（xen-pv驱动：xen_vnif、xen_vbd、xen_platform_pci；virtio驱动：virtio_blk、virtio_scsi、virtio_net、virtio_pci、virtio_ring、virtio）。驱动名之间以空格隔开。  2. 执行命令**dracut -f**，重新生成initrd。                                        | [SUSE/openSUSE系列操作指导（版本为SUSE 12 SP1）]             |
| SUSE和openSUSE系列  | 版本高于SUSE 12 SP1或高于openSUSE 13版本时： 1. 修改"/etc/dracut.conf"文件，在add_drivers项中添加xen-pv和virtio的驱动（xen-pv驱动：xen-blkfront、xen-netfront；virtio驱动：virtio_blk、virtio_scsi 、virtio_net、virtio_pci、virtio_ring、virtio）。驱动名之间以空格隔开。  2. 保存并退出"/etc/dracut.conf"文件，执行**dracut -f**命令，重新生成initrd。   | [SUSE/openSUSE系列操作指导（版本高于SUSE 12 SP1/openSUSE 13）]  |
   
![](https://support.huaweicloud.com/usermanual-ims/public_sys-resources/note_3.0-zh-cn.png)
SUSE系列操作系统首先应确认OS是否已经安装了xen-kmp包（xen-pv的驱动包），执行以下命令：
```
rpm -qa |grep xen-kmp
```
回显类似如下：
```
xen-kmp-default-4.2.2_04_3.0.76_0.11-0.7.5
```
如果没有安装xen-kmp的包，请到ISO装机文件中获取并安装。
如果误将built-in形式的驱动添加到initrd或initramfs文件中，不会影响弹性云服务器正常使用。
- [CentOS/EulerOS系列操作指导]
  
  1. 执行以下命令，打开"/etc/dracut.conf"文件。
     ```
     vi /etc/dracut.conf
     ```
     
  
  2. 按"i"进入编辑模式，在"add_drivers"项中添加xen-pv和virtio的驱动（具体格式要根据操作系统本身的要求来决定）。
     ```
     [root@CTU10000xxxxx ~]# vi /etc/dracut.conf 
     # additional kernel modules to the default 
     add_drivers+="xen-blkfront xen-netfront virtio_blk virtio_scsi virtio_net virtio_pci virtio_ring virtio" 
     ……
     ```
     
  
  3. 按"Esc"后，输入**:wq**，按"Enter"。 保存设置并退出"/etc/dracut.conf"文件。
  
  4. 执行以下命令，重新生成initrd。
     ```
     dracut -f /boot/initramfs-2.6.32-573.8.1.el6.x86_64.img
     ```
     如果引导的虚拟文件系统不是默认的initramfs，则命令为：**dracut -f** *实际使用的initramfs文件名或者initrd文件名*。"实际使用的initramfs文件名或者initrd文件名"可在grub.cfg配置（"/boot/grub/grub.cfg"或"/boot/grub2/grub.cfg"或"/boot/grub/grub.conf"，具体路径根据OS不同会有所区别）中获取。
     
  
  5. 如果引导的虚拟文件系统是initramfs，执行以下命令，检查是否已经成功装载了原生的XEN和KVM驱动相应模块。
     ```
     lsinitrd /boot/initramfs-`uname -r`.img | grep xen
     lsinitrd /boot/initramfs-`uname -r`.img | grep virtio
     ```
     如果引导的虚拟文件系统是initrd，执行如下命令，检查是否已经成功装载了原生的XEN和KVM驱动相应模块。
     ```
     lsinitrd /boot/initrd-`uname -r` | grep xen
     lsinitrd /boot/initrd-`uname -r` | grep virtio
     ```
     以引导的虚拟文件系统是initramfs为例，回显信息如下所示：
     ```
     [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.ko 
     drwxr-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
     ```
     ![](https://support.huaweicloud.com/usermanual-ims/public_sys-resources/note_3.0-zh-cn.png)
     如果误将built-in形式存在内核中的驱动添加到initrd或initramfs文件中，不会影响弹性云服务器正常使用，这里全写进去只是为了修改的方便，但是使用lsinitrd命令无法检查到。可使用如下方法确定这些驱动是否以built-in形式存在内核中，例如：
     ```
     cat /boot/config-`uname -r` | grep CONFIG_VIRTIO | grep y
     cat /boot/config-`uname -r` | grep CONFIG_XEN | grep y
     ```
     
   
- [Ubuntu/Debian系列操作指导]
  
  1. 执行以下命令，打开"modules"文件。
     ```
     vi /etc/initramfs-tools/modules
     ```
     
  
  2. 按"i"进入编辑模式，修改"/etc/initramfs-tools/modules"文件，添加xen-pv以及virtio的驱动（具体格式要根据操作系统本身的要求来决定）。
     ```
     [root@CTU10000xxxxx ~]#vi /etc/initramfs-tools/modules 
     …… 
     # Examples: 
     # 
     # raid1 
     # sd_mOd 
     xen-blkfront
     xen-netfront
     virtio_blk
     virtio_scsi
     virtio_net
     virtio_pci
     virtio_ring
     virtio
     ```
     
  
  3. 按"Esc"后，输入**:wq**，按"Enter"。保存设置并退出"/etc/initramfs-tools/modules"文件。
  
  4. 执行以下命令，重新生成initrd。
     ```
     update-initramfs -u
     ```
     
  
  5. 执行以下命令，检查是否已经成功装载了原生的XEN和KVM驱动相应模块。
     ```
     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 xen 
     lib/modules/3.5.0-23-generic/kernel/drivers/net/ethernet/qlogic/netxen 
     lib/modules/3.5.0-23-generic/kernel/drivers/net/ethernet/qlogic/netxen/netxen_nic.ko 
     lib/modules/3.5.0-23-generic/kernel/drivers/net/xen-netback 
     lib/modules/3.5.0-23-generic/kernel/drivers/net/xen-netback/xen-netback.ko 
     lib/modules/3.5.0-23-generic/kernel/drivers/block/xen-blkback 
     lib/modules/3.5.0-23-generic/kernel/drivers/block/xen-blkback/xen-blkback.ko 
      
     [root@ CTU10000xxxxx home]# lsinitramfs /boot/initrd.img-`uname -r` |grep virtio 
     lib/modules/3.5.0-23-generic/kernel/drivers/scsi/virtio_scsi.ko
     ```
     ![](https://support.huaweicloud.com/usermanual-ims/public_sys-resources/note_3.0-zh-cn.png)
     如果误将built-in形式存在内核中的驱动添加到initrd或initramfs文件中，不会影响弹性云服务器正常使用，这里全写进去只是为了修改方便，但是使用lsinitrd命令无法检查到。可使用如下方法确定这些驱动是否以built-in形式存在内核中，例如：
     ```
     [root@ CTU10000xxxxx home]# cat /boot/config-`uname -r` | grep CONFIG_VIRTIO | grep y
     CONFIG_VIRTIO_BLK=y
     CONFIG_VIRTIO_NET=y
     CONFIG_VIRTIO=y
     CONFIG_VIRTIO_RING=y
     CONFIG_VIRTIO_PCI=y
     CONFIG_VIRTIO_MMIO_CMDLINE_DEVICES=y
     [root@ CTU10000xxxxx home]# cat /boot/config-`uname -r` | grep CONFIG_XEN | grep y
     CONFIG_XEN_BLKDEV_FRONTEND=y
     CONFIG_XEN_NETDEV_FRONTEND=y
     ```
     
   
- [SUSE/openSUSE系列操作指导（版本低于SUSE 12 SP1/openSUSE 13）]
  
  当操作系统版本低于SUSE 12 SP1或低于openSUSE 13时，请修改"/etc/sysconfig/kernel"文件，操作步骤如下：
  ![](https://support.huaweicloud.com/usermanual-ims/public_sys-resources/note_3.0-zh-cn.png)
  SUSE系列操作系统首先应确认OS是否已经安装了xen-kmp包（xen-pv的驱动包），执行如下命令：
  ```
  rpm -qa |grep xen-kmp
  ```
  回显类似如下：
  ```
  xen-kmp-default-4.2.2_04_3.0.76_0.11-0.7.5
  ```
  如果没有安装xen-kmp的包，请到安装ISO中获取并安装。
  1. 执行如下命令，修改"/etc/sysconfig/kernel"文件。
     ```
     vi /etc/sysconfig/kernel
     ```
     
  
  2. 在INITRD_MODULES=""中添加xen-pv以及virtio的驱动（具体格式要根据OS本身的要求来决定）。
     ```
     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"
     ```
     
  
  3. 执行**mkinitrd** 命令，重新生成initrd。
     ![](https://support.huaweicloud.com/usermanual-ims/public_sys-resources/note_3.0-zh-cn.png)
     如果引导的虚拟文件系统不是默认的initramfs或者initrd，则命令为：**dracut -f** *实际使用的initramfs或者initrd文件名*。"实际使用的initramfs或者initrd文件名"可在menu.lst或者grub.cfg配置（"/boot/grub/menu.lst"或"/boot/grub/grub.cfg"或"/boot/grub2/grub.cfg"）中获取。
     以SUSE 11 SP4为例，如下所示：
     ```
     default 0
     timeout 10
     gfxmenu (hd0,0)/boot/message
     title 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 showopts
     initrd /boot/initrd.vmx
     title 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 showopts
     initrd /boot/initrd.vmx
     ```
     其中，initrd所在行的/boot/initrd.vmx为实际使用的initrd文件，执行的时候请按照**dracut -f /boot/initrd.vmx** 执行。如果initrd所在行的initrd文件不包含/boot目录，如/initramfs-xxx，请在执行dracut命令时增加boot目录，例如：**dracut -f /boot/initramfs-xxx**。
     
  
  4. 执行如下命令，检查是否已经成功装载了XEN的PVOPS或者KVM的virtio相应模块。 **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.ko
     SIA10000xxxxx:~ # 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.ko
     drwxr-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
     ```
     
  
  5. 重启弹性云服务器。
  
  6. 重启完毕后，修改"/boot/grub/menu.lst"文件，增加xen_platform_pci.dev_unplug=all和修改root的配置。 修改前如下所示：
     ```
     ###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
     initrd /boot/initrd-3.0.76-0.11-default
     ```
     修改后如下所示：
     ```
     ###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=all 
     initrd /boot/initrd-3.0.76-0.11-default
     ```
     ![](https://support.huaweicloud.com/usermanual-ims/public_sys-resources/note_3.0-zh-cn.png)
     - 确保磁盘root分区为UUID的表示形式。
     
     - xen_platform_pci.dev_unplug=all该参数的添加是为了屏蔽qemu设备。
     
     - SUSE 11 SP1 64bit \~ SUSE 11 SP4 64bit系统需要在"menu.lst"文件添加xen_platform_pci.dev_unplug=all，SUSE 12以后版本默认启用此功能，无需配置。
       
  
  7. 执行如下命令确认initrd中是否存在XEN驱动。 **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.ko
     SIA10000xxxxx:~ # 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.ko
     drwxr-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
     ```
     ![](https://support.huaweicloud.com/usermanual-ims/public_sys-resources/note_3.0-zh-cn.png)
     如果误将built-in形式存在内核中的驱动添加到initrd或initramfs文件中，不会影响弹性云服务器正常使用，这里全写进去只是为了修改方便，但是使用lsinitrd命令无法检查到。可使用如下方法确定这些驱动是否以built-in形式存在内核中，例如：
     ```
     cat /boot/config-`uname -r` | grep CONFIG_VIRTIO | grep y
     cat /boot/config-`uname -r` | grep CONFIG_XEN | grep y
     ```
     
   
- [SUSE/openSUSE系列操作指导（版本为SUSE 12 SP1）]
  
  当操作系统版本为SUSE 12 SP1时，修改"/etc/dracut.conf"文件，添加xen-pv以及virtio的驱动，操作步骤如下：
  1. 执行以下命令，打开"/etc/dracut.conf"文件。
     ```
     vi /etc/dracut.conf
     ```
     
  
  2. 按"i"进入编辑模式，在"add-drivers"项中添加xen-pv和virtio的驱动（具体格式要根据操作系统本身的要求来决定）。
     ```
     [root@CTU10000xxxxx ~]# vi /etc/dracut.conf 
     # additional kernel modules to the default
     add_drivers+="ata_piix ata_generic xen_vnif xen_vbd xen_platform_pci virtio_blk virtio_scsi virtio_net virtio_pci virtio_ring virtio"
     ```
     
  
  3. 按"Esc"后，输入**:wq**，按"Enter"。 保存设置并退出"/etc/dracut.conf"文件。
  
  4. 执行以下命令，重新生成initrd。
     ```
     dracut -f /boot/initramfs-文件名
     ```
     如果引导的虚拟文件系统不是默认的initramfs，则命令为：**dracut -f** *实际使用的initramfs文件名或者initrd文件名*。"实际使用的initramfs文件名或者initrd文件名"可在grub.cfg配置（"/boot/grub/grub.cfg"或"/boot/grub2/grub.cfg"或"/boot/grub/grub.conf"，具体路径根据OS不同会有所不同）中获取。
     
  
  5. 如果引导的虚拟文件系统是initramfs，执行以下命令，检查是否已经成功装载了原生的XEN和KVM驱动相应模块。
     ```
     lsinitrd /boot/initramfs-`uname -r`.img | grep xen
     lsinitrd /boot/initramfs-`uname -r`.img | grep virtio
     ```
     如果引导的虚拟文件系统是initrd，执行如下命令，检查是否已经成功装载了原生的XEN和KVM驱动相应模块。
     ```
     lsinitrd /boot/initrd-`uname -r` | grep xen
     lsinitrd /boot/initrd-`uname -r` | grep virtio
     ```
     
   
- [SUSE/openSUSE系列操作指导（版本高于SUSE 12 SP1/openSUSE 13）]
  
  当操作系统版本高于SUSE 12 SP1或高于openSUSE 13版本时，修改"/etc/dracut.conf"文件，在add_drivers项中添加xen-pv和virtio的驱动，操作步骤如下：
  以SUSE Linux Enterprise Server 12 SP2 (x86_64)为例，如下所示：
  1. 执行以下命令，打开"/etc/dracut.conf"文件。
     ```
     vi /etc/dracut.conf
     ```
     
  
  2. 按"i"进入编辑模式，在"add_drivers"项中添加xen-pv和virtio的驱动（具体格式要根据操作系统本身的要求来决定）。
     ```
     [root@CTU10000xxxxx ~]# vi /etc/dracut.conf 
     # additional kernel modules to the default
     add_drivers+="ata_piix ata_generic xen-blkfront xen-netfront virtio_blk virtio_scsi virtio_net virtio_pci virtio_ring virtio"
     ```
     
  
  3. 按"Esc"后，输入**:wq**，按"Enter"。 保存设置并退出"/etc/dracut.conf"文件。
  
  4. 执行以下命令，重新生成initrd。
     ```
     dracut -f /boot/initramfs-文件名
     ```
     如果引导的虚拟文件系统不是默认的initramfs，则命令为：**dracut -f** *实际使用的initramfs文件名或者initrd文件名*。"实际使用的initramfs文件名或者initrd文件名"可在grub.cfg配置（"/boot/grub/grub.cfg"或"/boot/grub2/grub.cfg"或"/boot/grub/grub.conf"，具体路径根据OS不同会有所区别）中获取。
     
  
  5. 如果引导的虚拟文件系统是initramfs，执行以下命令，检查是否已经成功装载了原生的XEN和KVM驱动相应模块。
     ```
     lsinitrd /boot/initramfs-`uname -r`.img | grep xen
     lsinitrd /boot/initramfs-`uname -r`.img | grep virtio
     ```
     如果引导的虚拟文件系统是initrd ，执行如下命令，检查是否已经成功装载了原生的XEN和KVM驱动相应模块。
     ```
     lsinitrd /boot/initrd-`uname -r` | grep xen
     lsinitrd /boot/initrd-`uname -r` | grep virtio
     ```
     以引导的虚拟文件系统是initrd为例，回显信息如下所示：
     ```
     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.ko
     drwxr-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.ko
     sluo-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.ko
     drwxr-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
     ```
     ![](https://support.huaweicloud.com/usermanual-ims/public_sys-resources/note_3.0-zh-cn.png)
     如果误将built-in形式存在内核中的驱动添加到initrd或initramfs文件中，不会影响弹性云服务器正常使用，这里全写进去只是为了修改方便，但是使用lsinitrd命令无法检查到。可使用如下方法确定这些驱动是否以built-in形式存在内核中，例如：
     ```
     cat /boot/config-`uname -r` | grep CONFIG_VIRTIO | grep y
     cat /boot/config-`uname -r` | grep CONFIG_XEN | grep y
     ```
     
   
#### 后续操作
按照如下步骤清除日志文件、历史记录等。
1. 执行如下命令，清除冗余key文件：
   ```
   echo > /$path/$to/$root/.ssh/authorized_keys
   例如：echo > /root/.ssh/authorized_keys
   echo > /$path/$to/$none-root/.ssh/authorized_keys
   例如：echo > /home/linux/.ssh/authorized_keys
   ```
   

2. 执行如下命令，清空"/var/log"目录的日志文件：
   ```
   rm -rf /var/log/*
   ```
   ![](https://support.huaweicloud.com/usermanual-ims/public_sys-resources/note_3.0-zh-cn.png)
   删除日志前，请备份需要的应用日志目录及日志文件，防止应用没有日志目录导致启动失败。例如，nginx日志默认路径为/var/log/nginx，若删除了此目录，可能导致nginx应用启动失败。
   
3. 执行如下命令，清空历史记录：
   ```
   echo > /root/.bash_history
   history -c
   ```
   
 
