下载 ISO 镜像
- 下面两种下载方式选择一种即可
中科大学镜像源下载
__kvm_download_centos7_iso() {
mkdir -p /data/kvm/iso/
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
}
__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
<a name="A4eRh"></a>
##
<a name="bIlmw"></a>
## 创建虚拟机
<a name="yvChy"></a>
### 安装虚拟机
```bash
#!/usr/bin/env bash
__centos_install() {
_name="centos7_template"
virsh destroy "$_name" >/dev/null 2>&1
virsh undefine "$_name" >/dev/null 2>&1
_iso="/data/kvm/iso/CentOS-7-x86_64-Minimal-2009.iso"
_system_img="/data/kvm/vm/centos7_template/disk/system.qcow2"
mkdir -p ${_system_img%/*}
rm -rf "$_system_img"
qemu-img create -f qcow2 "$_system_img" 100G -o preallocation=off
virt-install --name="$_name" \
--memory=4096 \
--cpu host \
--vcpus $(grep 'processor' /proc/cpuinfo | sort -u | wc -l) \
--os-type=linux \
--os-variant=rhel7.9 \
--autostart \
--disk "$_system_img",cache=none,bus=sata \
--disk $_iso,device=cdrom,bus=ide \
--graphics vnc,listen=0.0.0.0,port=5900,password=p \
--network network=default,model=virtio
}
__centos_install
如果你 shell 工具支持 X11 显示, 此时会调起X11, 我的X11 显示的是中文乱码, 要解决这个问题应该是要Linux上安装中文字库
不过还是推荐使用 VNC 连接工具 连接完成安装, 如果VNC 无法连接, 那先关掉 X11 的显示窗口
安装过程这里就不贴了 详情 https://www.yuque.com/uuu/centos/install_course
由于安装命令中没有设置自动重启, 所以安装完成后点击重启, 虚拟机是不会重启的, 而是关闭状态, 这个不用理会, 应为我们马上就会删掉,重新导入它
可以使用以下命令查看虚拟机运行状态
virsh list --all
在安装完成后将虚拟机删除, 等下重新以导入虚拟机的方式重新启动
_name="centos7_template"
virsh destroy "$_name" >/dev/null 2>&1
virsh undefine "$_name" >/dev/null 2>&1
导入虚拟机
导入刚刚安装的虚拟机
__centos_import() {
_name="centos7_template"
virsh destroy "$_name" >/dev/null 2>&1
virsh undefine "$_name" >/dev/null 2>&1
_system_img="/data/kvm/vm/centos7_template/disk/system.qcow2"
virt-install --name="$_name" \
--memory=4096 \
--cpu host \
--vcpus $(grep 'processor' /proc/cpuinfo | sort -u | wc -l) \
--os-type=linux \
--os-variant=rhel7.9 \
--autostart \
--noautoconsole \
--import \
--disk "$_system_img",cache=none,bus=sata \
--graphics vnc,listen=0.0.0.0,port=5900,password=p \
--network network=default,model=virtio
}
__centos_import
连接上Kvm CentOS
获取 IP
导入虚拟机完成后使用 VNC 连接到控制台配置并查看IP
如果虚拟机在安装时已经开启了网络连接, 那么可以使用以下命令连接查看 IP
virsh dumpxml centos7_template |grep -Eo '([0-9a-fA-F]{2}[:]){5}([0-9a-fA-F]{2})' | xargs -I{} echo 'arp -a | grep "{}"' | sh
ssh 登录上虚拟机后执行以下命令开启 virsh console 登录
systemctl enable serial-getty@ttyS0.service
systemctl start serial-getty@ttyS0.service
使用 virsh console 连接虚拟机
我们可以以下命令连, 但在这之前需要配置 kvm CentOS 才能连接
更多关于 virsh console https://www.yuque.com/uuu/kvm/virsh-console
virsh console --force centos7_template
其他常用命令
修改主机名
hostnamectl set-hostname kvm
关闭防火墙以及 selinux
__set_config() {
firewall-cmd --state
systemctl stop firewalld.service
systemctl disable firewalld.service
sed -i 's,^SELINUX=.*$,SELINUX=disabled,' /etc/selinux/config
}
__set_config
如果想要 virsh console 免密码登录, 可以在虚拟机内执行以下命令
sed -i 's,^ExecStart=.*$,ExecStart=-/sbin/agetty --autologin root --noclear %I,' /usr/lib/systemd/system/serial-getty@.service
VNC 连接免密码可执行以下命令
sed -i 's,^ExecStart=.*$,ExecStart=-/sbin/agetty --autologin root --noclear %I,' /etc/systemd/system/getty.target.wants/getty@tty1.service
修改CentOS 选择内核界面的选择时间, 减少系统启动等待时间
sed -i 's,timeout=5$,timeout=1,' /boot/grub2/grub.cfg 2>/dev/null
sed -i 's,timeout=5$,timeout=1,' /boot/efi/EFI/centos/grub.cfg 2>/dev/null