更新时间:2025-04-10 GMT+08:00
分享

配置Linux虚拟机

安装原生的XEN和KVM驱动

本节操作以Ubuntu 20.04操作系统为例,其他操作系统具体操作请参考“XEN虚拟化ECS安装原生的XEN和KVM驱动”。

  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. 执行以下命令,重新生成initramfs或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

    如果误将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

修改grub文件磁盘标识方式为UUID

以Ubuntu 20.04为例,执行blkid命令获取root分区对应的UUID并记录下来,编辑“/boot/grub/grub.cfg”文件,使用root分区的UUID来配置boot项。如果root分区已经使用UUID形式则不需要修改。具体操作方法如下:
  1. 使用root用户登录虚拟机。
  2. 执行以下命令,列出当前系统中所有已挂载文件系统的类型以及对应设备的UUID 。

    blkid

    回显信息如下所示。

    /dev/xvda1: UUID="ec51d860-34bf-4374-ad46-a0c3e337fd34" TYPE="ext3"
    /dev/xvda5: UUID="7a44a9ce-9281-4740-b95f-c8de33ae5c11" TYPE="swap"
  1. 执行以下命令,查看“grub.cfg”文件:

    cat /boot/grub/grub.cfg

    回显信息如下所示:

    ……menuentry 'Ubuntu Linux, with Linux 3.13.0-24-generic' --class ubuntu --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-3.13.0-24-generic-advanced-ec51d860-34bf-4374-ad46-a0c3e337fd34' {
    recordfail
    load_video
    gfxmode $linux_gfx_mode
    insmod gzio
    insmod part_msdos
    insmod ext2
    if [ x$feature_platform_search_hint = xy ]; then
    search --no-floppy --fs-uuid --set=root ec51d860-34bf-4374-ad46-a0c3e337fd34
    else
    search --no-floppy --fs-uuid --set=root ec51d860-34bf-4374-ad46-a0c3e337fd34
    fi
    echo 'Loading Linux 3.13.0-24-generic ...'
    linux /boot/vmlinuz-3.13.0-24-generic root=/dev/xvda1 ro 
    echo 'Loading initial ramdisk ...'
    initrd /boot/initrd.img-3.13.0-24-generic 
    }
  1. 根据“/boot/grub/grub.cfg”配置文件里标记的root分区,查找是否包括“root=/dev/xvda1”或者“root=UUID=ec51d860-34bf-4374-ad46-a0c3e337fd34”信息。
    • 存在“root=UUID=ec51d860-34bf-4374-ad46-a0c3e337fd34”,即root分区以UUID的表示形式,无需修改。
    • 存在“root=/dev/xvda1”,即root分区以设备名称表示的形式,请执行步骤5
  1. 根据“root=/dev/xvda1”,即root分区对应的设备名称,以及blkid命令获取的分区信息,找到root分区设备名称对应的UUID。
  2. 执行以下命令,打开“grub.cfg”文件。

    vi /boot/grub/grub.cfg

  3. 按“i”进入编辑模式,将root分区改成UUID形式,本例中将“root=/dev/xvda1”修改为“root=UUID=ec51d860-34bf-4374-ad46-a0c3e337fd34”。
  4. 按“Esc”后,输入:wq,按“Enter”, 保存设置并退出vi编辑器。
  5. 执行以下命令,确认修改结果。

    cat /boot/grub/grub.cfg

    回显信息如下所示表示修改成功,即root分区以UUID的形式表示。

    ……menuentry 'Ubuntu Linux, with Linux 3.13.0-24-generic' --class ubuntu --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-3.13.0-24-generic-advanced-ec51d860-34bf-4374-ad46-a0c3e337fd34' {
    recordfail
    load_video
    gfxmode $linux_gfx_mode
    insmod gzio
    insmod part_msdos
    insmod ext2
    if [ x$feature_platform_search_hint = xy ]; then
    search --no-floppy --fs-uuid --set=root ec51d860-34bf-4374-ad46-a0c3e337fd34
    else
    search --no-floppy --fs-uuid --set=root ec51d860-34bf-4374-ad46-a0c3e337fd34
    fi
    echo 'Loading Linux 3.13.0-24-generic ...'
    linux /boot/vmlinuz-3.13.0-24-generic root=UUID=ec51d860-34bf-4374-ad46-a0c3e337fd34 ro
    echo 'Loading initial ramdisk ...'
    initrd /boot/initrd.img-3.13.0-24-generic
    }

修改fstab文件磁盘标识方式为UUID

以Ubuntu 20.04为例,执行blkid命令获取所有分区对应的UUID并记录下来,编辑“/etc/fstab”文件,使用分区的UUID来配置分区自动挂载。

  1. 执行以下命令,列出当前系统中所有已挂载文件系统的类型以及对应设备的UUID 。

    blkid

    回显信息如下所示。

    /dev/xvda2: UUID="4eb40294-4c6f-4384-bbb6-b8795bbb1130" TYPE="xfs"  
    /dev/xvda1: UUID="2de37c6b-2648-43b4-a4f5-40162154e135" TYPE="swap"
  2. 执行以下命令,查看“fstab”文件。

    cat /etc/fstab

    回显信息如下所示。

    [root@CTU1000028010 ~]# cat /etc/fstab  
    /dev/xvda2  /       xfs     defaults    0 0 
    /dev/xvda1  swap    swap    defaults    0 0     
  3. 查看“fstab”文件中的磁盘的表示形式为设备名称。
    • 若为UUID的表示形式,无需修改。
    • 若为设备名称的表示形式,请执行步骤4
  4. 执行以下命令,打开“fstab”文件。

    vi /etc/fstab

  5. 按“i”进入编辑模式,将“fstab”中的磁盘表示形式修改为UUID的形式。
  6. 按“Esc”后,输入:wq,按“Enter”, 保存设置并退出vi编辑器。

(可选)安装和配置Cloud-Init工具

为了保证使用私有镜像创建的新云服务器可以通过“用户数据注入”功能注入初始化自定义信息(例如为云服务器设置登录密码),请在创建私有镜像前安装Cloud-Init工具。

安装一键式重置密码插件(可选)

为了保证使用生成的镜像创建的新云服务器可以实现一键式重置密码功能,建议您安装密码重置插件CloudResetPwdAgent,可以应用一键式重置密码功能,给云服务器设置新密码。

  1. 下载一键式重置密码插件CloudResetPwdAgent。

    虚拟机需要绑定弹性公网IP才能自动更新一键式重置密码插件。

    下载并解压软件包CloudResetPwdAgent.zip。

    32位操作系统下载地址:http://cn-south-1-cloud-reset-pwd.obs.cn-south-1.myhuaweicloud.com/linux/32/reset_pwd_agent/CloudResetPwdAgent.zip

    64位操作系统下载地址:http://cn-south-1-cloud-reset-pwd.obs.cn-south-1.myhuaweicloud.com/linux/64/reset_pwd_agent/CloudResetPwdAgent.zip

  2. 执行以下命令,解压软件包CloudResetPwdAgent.zip。

    unzip -o -d 插件解压目录 CloudResetPwdAgent.zip

    安装一键式重置密码插件对插件的解压目录无特殊要求,请自定义。例如插件解压的目录为“/home/PwdAgent/test”,则命令如下:

    unzip -o -d /home/PwdAgent/test CloudResetPwdAgent.zip

  3. 安装一键式重置密码插件。
    1. 执行以下命令,进入文件CloudResetPwdAgent.Linux。

      cd CloudResetPwdAgent/CloudResetPwdAgent.Linux

    2. 执行以下命令,添加文件setup.sh的运行权限。

      chmod +x setup.sh

    3. 执行以下命令,安装插件。

      sudo sh setup.sh

      如果脚本执行成功打印“cloudResetPwdAgent install successfully.”,且未打印“Failed to start service cloudResetPwdAgent”,表示安装成功。

      如果密码重置插件安装失败,请检查安装环境是否符合要求,并重试安装操作。

配置NetworkManager

Linux操作系统新增使用NetworkManager来自动化主机的网络配置的方式。新版本操作系统推荐使用NetworkManager的方法。如果您不想使用NetworkManager,可以使用内核原生的网络管理服务。

相关文档