下载 ISO 镜像

  • 下面两种下载方式选择一种即可

    中科大学镜像源下载

    1. __kvm_download_centos7_iso() {
    2. mkdir -p /data/kvm/iso/
    3. curl -Lo /data/kvm/iso/CentOS-7-x86_64-Minimal-2009.iso https://mirrors.aliyun.com/centos/7.9.2009/isos/x86_64/CentOS-7-x86_64-Minimal-2009.iso
    4. }
    5. __kvm_download_centos7_iso

    使用 docker 下载

    ```bash __download_centos7_iso() {

    下载 centos7 镜像

    docker run -it —rm —pull=always -v /data/kvm/iso:/dest registry.cn-hangzhou.aliyuncs.com/lwmacct/file:1657391318-centos-7-x86_64-minimal-2009.iso } __download_centos7_iso
  1. <a name="A4eRh"></a>
  2. ##
  3. <a name="bIlmw"></a>
  4. ## 创建虚拟机
  5. <a name="yvChy"></a>
  6. ### 安装虚拟机
  7. ```bash
  8. #!/usr/bin/env bash
  9. __centos_install() {
  10. _name="centos7_template"
  11. virsh destroy "$_name" >/dev/null 2>&1
  12. virsh undefine "$_name" >/dev/null 2>&1
  13. _iso="/data/kvm/iso/CentOS-7-x86_64-Minimal-2009.iso"
  14. _system_img="/data/kvm/vm/centos7_template/disk/system.qcow2"
  15. mkdir -p ${_system_img%/*}
  16. rm -rf "$_system_img"
  17. qemu-img create -f qcow2 "$_system_img" 100G -o preallocation=off
  18. virt-install --name="$_name" \
  19. --memory=4096 \
  20. --cpu host \
  21. --vcpus $(grep 'processor' /proc/cpuinfo | sort -u | wc -l) \
  22. --os-type=linux \
  23. --os-variant=rhel7.9 \
  24. --autostart \
  25. --disk "$_system_img",cache=none,bus=sata \
  26. --disk $_iso,device=cdrom,bus=ide \
  27. --graphics vnc,listen=0.0.0.0,port=5900,password=p \
  28. --network network=default,model=virtio
  29. }
  30. __centos_install

如果你 shell 工具支持 X11 显示, 此时会调起X11, 我的X11 显示的是中文乱码, 要解决这个问题应该是要Linux上安装中文字库
不过还是推荐使用 VNC 连接工具 连接完成安装, 如果VNC 无法连接, 那先关掉 X11 的显示窗口
安装过程这里就不贴了 详情 https://www.yuque.com/uuu/centos/install_course

由于安装命令中没有设置自动重启, 所以安装完成后点击重启, 虚拟机是不会重启的, 而是关闭状态, 这个不用理会, 应为我们马上就会删掉,重新导入它
可以使用以下命令查看虚拟机运行状态

  1. virsh list --all

在安装完成后将虚拟机删除, 等下重新以导入虚拟机的方式重新启动

  1. _name="centos7_template"
  2. virsh destroy "$_name" >/dev/null 2>&1
  3. virsh undefine "$_name" >/dev/null 2>&1

导入虚拟机
导入刚刚安装的虚拟机

  1. __centos_import() {
  2. _name="centos7_template"
  3. virsh destroy "$_name" >/dev/null 2>&1
  4. virsh undefine "$_name" >/dev/null 2>&1
  5. _system_img="/data/kvm/vm/centos7_template/disk/system.qcow2"
  6. virt-install --name="$_name" \
  7. --memory=4096 \
  8. --cpu host \
  9. --vcpus $(grep 'processor' /proc/cpuinfo | sort -u | wc -l) \
  10. --os-type=linux \
  11. --os-variant=rhel7.9 \
  12. --autostart \
  13. --noautoconsole \
  14. --import \
  15. --disk "$_system_img",cache=none,bus=sata \
  16. --graphics vnc,listen=0.0.0.0,port=5900,password=p \
  17. --network network=default,model=virtio
  18. }
  19. __centos_import

连接上Kvm CentOS

获取 IP

导入虚拟机完成后使用 VNC 连接到控制台配置并查看IP
如果虚拟机在安装时已经开启了网络连接, 那么可以使用以下命令连接查看 IP

  1. virsh dumpxml centos7_template |grep -Eo '([0-9a-fA-F]{2}[:]){5}([0-9a-fA-F]{2})' | xargs -I{} echo 'arp -a | grep "{}"' | sh

image.png
ssh 登录上虚拟机后执行以下命令开启 virsh console 登录

  1. systemctl enable serial-getty@ttyS0.service
  2. systemctl start serial-getty@ttyS0.service

使用 virsh console 连接虚拟机

我们可以以下命令连, 但在这之前需要配置 kvm CentOS 才能连接
更多关于 virsh console https://www.yuque.com/uuu/kvm/virsh-console

  1. virsh console --force centos7_template


其他常用命令

修改主机名

  1. hostnamectl set-hostname kvm

关闭防火墙以及 selinux

  1. __set_config() {
  2. firewall-cmd --state
  3. systemctl stop firewalld.service
  4. systemctl disable firewalld.service
  5. sed -i 's,^SELINUX=.*$,SELINUX=disabled,' /etc/selinux/config
  6. }
  7. __set_config

如果想要 virsh console 免密码登录, 可以在虚拟机内执行以下命令

  1. sed -i 's,^ExecStart=.*$,ExecStart=-/sbin/agetty --autologin root --noclear %I,' /usr/lib/systemd/system/serial-getty@.service

VNC 连接免密码可执行以下命令

  1. sed -i 's,^ExecStart=.*$,ExecStart=-/sbin/agetty --autologin root --noclear %I,' /etc/systemd/system/getty.target.wants/getty@tty1.service

修改CentOS 选择内核界面的选择时间, 减少系统启动等待时间

  1. sed -i 's,timeout=5$,timeout=1,' /boot/grub2/grub.cfg 2>/dev/null
  2. sed -i 's,timeout=5$,timeout=1,' /boot/efi/EFI/centos/grub.cfg 2>/dev/null