
# 修改引导的硬件设备驱动
#### 操作场景
此操作主要是在系统启动阶段，针对加载的实际物理服务器的硬件设备驱动所进行的。
#### 前提条件
已登录虚拟机。
#### 操作步骤
1. 增加或修改驱动。
   - 对于RedHat系列/Oracle Linux系列/openEuler/Huawei Cloud EulerOS 2.0/CentOS系列操作系统，使用vi编辑器打开"/etc/dracut.conf"文件，修改或添加"add_drivers"的取值，如下所示，add_drivers+="服务器的RAID卡驱动"。
     ```
     logfile=/var/log/dracut.log
     # fileloglvl=7
     ...
     ...
     # additional kernel modules to the default
     add_drivers+=" ahci megaraid_sas mpt3sas mpt2sas virtio_blk virtio_scsi virtio_net "
     ```
     ![](https://support.huaweicloud.com/bpicg-bms/public_sys-resources/note_3.0-zh-cn.png)
     如果有报错，请在引号内前后增加空格，再次尝试。
     
   
   - 对于Debian操作系统，使用vi编辑器打开"/etc/initramfs-tools/modules"文件，添加ahci、megaraid_sas、mpt3sas和mpt2sas驱动（具体格式需要根据操作系统本身的要求决定）。
     ```
     # List of modules that you want to include in your initramfs.
     # They will be loaded at boot time in the order below.
     #
     # Syntax:  module_name [args ...]
     #
     # You must run update-initramfs(8) to effect this change.
     #
     # Examples:
     #
     # raid1
     # sd_mod
     ahci
     megaraid_sas
     mpt3sas
     mpt2sas
     virtio_blk
     virtio_scsi
     virtio_net
     ```
     
   
   - 对于Ubuntu 18.04操作系统，需要分别在"/etc/dracut.conf"和"/etc/initramfs-tools/modules"文件中添加驱动。但是，在编辑配置文件之前，需要安装相关软件：
     1. 由于该操作系统默认不带dracut软件，执行以下命令安装dracut软件： **apt-get install dracut**
        安装完成后，按照CentOS系列操作系统的方法，编辑"/etc/dracut.conf"文件，在末尾添加**add_drivers+="ahci megaraid_sas mpt3sas mpt2sas virtio_blk virtio_scsi virtio_net"**。
        ![](https://support.huaweicloud.com/bpicg-bms/public_sys-resources/note_3.0-zh-cn.png)
        如果有报错，请在引号内前后增加空格，再次尝试。
        
     
     2. 由于该操作系统默认不带initramfs-tools软件，执行以下命令进行安装： **apt-get install** **initramfs-tools**
        安装完成后，按照Debian操作系统的方法，编辑"/etc/initramfs-tools/modules"文件，在末尾添加ahci、megaraid_sas、mpt3sas、mpt2sas和virtio_blk virtio_scsi virtio_net驱动。
        
      
   
   - 对于Ubuntu 18.04 ARM，还需要执行以下命令更新内核和驱动，之后再重启虚拟机。 **sudo apt-get update**
     **sudo apt-get dist-upgrade**
     
   
   
   ![](https://support.huaweicloud.com/bpicg-bms/public_sys-resources/note_3.0-zh-cn.png)
   服务器的RAID卡驱动可以填写多个，以空格分开。驱动信息可以根据采购的硬件设备获取RAID相关的驱动名称。镜像支持多种类型的驱动并存，如"mpt3sas"、"mpt2sas"和"megaraid_sas"就是3种不同的RAID卡型号。当操作系统不支持某些硬件的驱动时，需要额外安装硬件驱动。
   
2. 刷新内核，对于Ubuntu 18.04 ARM，则跳过本步骤。 RadHat系列/Oracle Linux系列/Ubuntu 18.04/CentOS系列刷新命令：**dracut -f**
   - 对于RadHat系列/Oracle Linux系列/openEuler/CentOS系列，执行命令**dracut -f**，等待数秒后，如果命令执行完成不产生回显信息，说明加载成功。
   
   - 对于Ubuntu 18.04/Debian，执行以下命令重新生成initrd。 **update-initramfs -u**
     依次执行以下命令，检查是否已经成功装载了ahci、megaraid_sas、mpt3sas和mpt2sas驱动的相应模块。
     **lsinitramfs /boot/initrd.img-\`uname -r\` \|grep ahci**
     **lsinitramfs /boot/initrd.img-\`uname -r\` \|grep megaraid_sas**
     **lsinitramfs /boot/initrd.img-\`uname -r\` \|grep mpt3sas**
     **lsinitramfs /boot/initrd.img-\`uname -r\` \|grep mpt2sas**
     
    
3. 对于Ubuntu 18.04 for ARM，还需要修改grub引导文件、fstab文件和interfaces文件。
   1. 修改"/etc/default/grub"配置文件中的参数。 将GRUB_DISABLE_LINUX_UUID参数设置为true。
      ```
      ...
      # Uncomment if you don't want GRUB to pass "root=UUID=xxx" parameter to linux
      GRUB_DISABLE_LINUX_UUID=true
      # Uncomment to disable generation of recovery mode menu entries
      ...
      ```
      修改后执行命令：**sudo update-grub2**
      
   
   2. 修改"/etc/fstab"中的UUID为物理磁盘/dev/sdax。硬盘的UUID可以通过**sudo blkid** 命令获取。
      ![](https://support.huaweicloud.com/bpicg-bms/zh-cn_image_0110250240.png "点击放大")
      
   
   3. 修改"/etc/network/interfaces"文件，删除其中除了"lo interface"之外的其他interface信息。
      ```
      # This file describes the network interfaces available on your system
      # and how to activate them. For more information, see interfaces (5).
      source /etc/network/interfaces.d/*
      # The loopback network interface
      auto lo
      iface to inet loopback
      ~
      ~
      ```
      
    
 
