修改引导的硬件设备驱动
操作场景
此操作主要是在系统启动阶段,针对加载的实际物理服务器的硬件设备驱动所进行的。
前提条件
已登录虚拟机。
操作步骤
- 增加或修改驱动。
- 对于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 "
如果有报错,请在引号内前后增加空格,再次尝试。
- 对于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”文件中添加驱动。但是,在编辑配置文件之前,需要安装相关软件:
- 由于该操作系统默认不带dracut软件,执行以下命令安装dracut软件:
安装完成后,按照CentOS系列操作系统的方法,编辑“/etc/dracut.conf”文件,在末尾添加add_drivers+="ahci megaraid_sas mpt3sas mpt2sas virtio_blk virtio_scsi virtio_net"。
如果有报错,请在引号内前后增加空格,再次尝试。
- 由于该操作系统默认不带initramfs-tools软件,执行以下命令进行安装:
apt-get install initramfs-tools
安装完成后,按照Debian操作系统的方法,编辑“/etc/initramfs-tools/modules”文件,在末尾添加ahci、megaraid_sas、mpt3sas、mpt2sas和virtio_blk virtio_scsi virtio_net驱动。
- 由于该操作系统默认不带dracut软件,执行以下命令安装dracut软件:
- 对于Ubuntu 18.04 ARM,还需要执行以下命令更新内核和驱动,之后再重启虚拟机。
sudo apt-get dist-upgrade
服务器的RAID卡驱动可以填写多个,以空格分开。驱动信息可以根据采购的硬件设备获取RAID相关的驱动名称。镜像支持多种类型的驱动并存,如“mpt3sas”、“mpt2sas”和“megaraid_sas”就是3种不同的RAID卡型号。当操作系统不支持某些硬件的驱动时,需要额外安装硬件驱动。
- 对于RedHat系列/Oracle Linux系列/openEuler/Huawei Cloud EulerOS 2.0/CentOS系列操作系统,使用vi编辑器打开“/etc/dracut.conf”文件,修改或添加“add_drivers”的取值,如下所示,add_drivers+="服务器的RAID卡驱动"。
- 刷新内核,对于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。
依次执行以下命令,检查是否已经成功装载了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
- 对于Ubuntu 18.04 for ARM,还需要修改grub引导文件、fstab文件和interfaces文件。
- 修改“/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
- 修改“/etc/fstab”中的UUID为物理磁盘/dev/sdax。硬盘的UUID可以通过sudo blkid命令获取。

- 修改“/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 ~ ~
- 修改“/etc/default/grub”配置文件中的参数。