KVM
- 第 1 類與第 2 類 Hypervisor - Hypervisor 類型之間的區別 - AWS
- GitHub - 0voice/kernel_awsome_feature: 深入研究 kvm,ceph,fuse特性
- 什麼是 KVM? - 說明 Kernel 虛擬機器 - AWS
- KVM: Linux 虛擬化基礎建設 - HackMD
- How to Create Virtual Machines in Linux Using KVM (Kernel-based Virtual Machine) - Part 1
- Ubuntu安裝QEMU/KVM和Virt Manager虛擬機管理員 · Ivon的部落格
- Linux KVM啟用巢狀虛擬化,在虛擬機裡面跑虛擬機 · Ivon的部落格
- 免Mac電腦,OSX-KVM讓你在Linux系統安裝macOS的QEMU虛擬機 · Ivon的部落格
KVM QEMU virtio(para virtualization)
KVM/QEMU KVM/virtio (para virtualization)
Intel VT-x AMD AMD-V
three mode - user - kernel - guest
libvirt
Ubuntu
- KVM hypervisor: a beginners’ guide | Ubuntu
- Install KVM On Ubuntu 22.04 Server - OSTechNix
- 鳥哥私房菜 - 第二章、第一個虛擬機器的安裝與調整
- 在 ubuntu 實體機安裝 ubuntu VM 的流程 - HackMD
- Virtual Machine Manager | Ubuntu
- kvm virtualization - How to install Ubuntu 22.04 as GUEST in KVM - Ask Ubuntu
- Web or GUI
- Web-based interface for KVM / QEMU VM management? : r/selfhosted
- How to Install a Desktop (GUI) on an Ubuntu Server
- Managing KVM Virtual Machines with Cockpit Web Console in Linux
- Proxmox VE
if the node is the vmware vm, enable "向客體作業系統公開硬體協助虛擬化" in "硬體虛擬化"
sudo apt-get -y install bridge-utils cpu-checker libvirt-clients libvirt-daemon qemu qemu-kvm
sudo kvm-ok
lsmod | grep kvm
modinfo kvm
modinfo kvm_amd
systemctl status libvirtd
GUI
Web Console
sudo apt-get install cockpit cockpit-machines
# for error "sscg: command not found"
sudo apt-get install libgnutls-openssl27
sudo systemctl start cockpit
sudo systemctl status cockpit
sudo ufw allow 9090/tcp
sudo ufw reload
For Ubuntu guest
wget https://cloud-images.ubuntu.com/jammy/current/jammy-server-cloudimg-amd64.img
cp jammy-server-cloudimg-amd64.img /var/lib/libvirt/images/
qemu-img create -F qcow2 -b jammy-server-cloudimg-amd64.img -f qcow2 my-ubuntu-vm.img 10G
cp my-ubuntu-vm.img /var/lib/libvirt/images/
virt-install --name my-first-vm --ram 6144 --vcpus 2 --import --disk path=/var/lib/libvirt/images/my-ubuntu-vm.img,format=qcow2 --cloud-init root-password-generate=on,disable=on,meta-data=/root/meta-data,user-data=/root/user-data --os-variant ubuntu22.04 --network bridge=virbr0 --graphics vnc,listen=0.0.0.0 --console pty,target_type=serial --noautoconsole
virsh net-dhcp-leases default
meta-data
user-data - https://bugs.launchpad.net/cloud-images/+bug/2049860/comments/15
#cloud-config
ssh_pwauth: true
users:
- name: root
lock_passwd: false
hashed_passwd: $6$P2LlhzIYWXC4XyCa$JzSWM6UBQ3BNLtQXO2jKTIhkBQyNl8DuhJ6tx8kovCtiick0mXMWE6z12HGBhTzAPW0EpDglWn7j.W9XZoaBl0
- name: ubuntu
lock_passwd: false
hashed_passwd: $6$P2LlhzIYWXC4XyCa$JzSWM6UBQ3BNLtQXO2jKTIhkBQyNl8DuhJ6tx8kovCtiick0mXMWE6z12HGBhTzAPW0EpDglWn7j.W9XZoaBl0
shell: /bin/bash
sudo: ALL=(ALL) NOPASSWD:ALL
from openssl passwd -6 foo@123 :::
Redhat
- Chapter 8. Preparing and deploying a KVM Guest Image by using RHEL image builder | Red Hat Product Documentation
- 🐧Linux_RH134_09_安裝RHEL - HackMD
For redhat guest
- fetch Red Hat Enterprise Linux x.x KVM Guest Image
- example:
rhel-8.8-x86_64-kvm.qcow2
- example:
- Creating a virtual machine from a KVM guest image
meta-data
user-data
#cloud-config
ssh_pwauth: true
users:
- name: root
lock_passwd: false
hashed_passwd: $6$P2LlhzIYWXC4XyCa$JzSWM6UBQ3BNLtQXO2jKTIhkBQyNl8DuhJ6tx8kovCtiick0mXMWE6z12HGBhTzAPW0EpDglWn7j.W9XZoaBl0
- name: rhel
lock_passwd: false
hashed_passwd: $6$P2LlhzIYWXC4XyCa$JzSWM6UBQ3BNLtQXO2jKTIhkBQyNl8DuhJ6tx8kovCtiick0mXMWE6z12HGBhTzAPW0EpDglWn7j.W9XZoaBl0
shell: /bin/bash
sudo: ALL=(ALL) NOPASSWD:ALL
cp rhel-8.8-x86_64-kvm.qcow2 /var/lib/libvirt/images/
qemu-img create -F qcow2 -b rhel-8.8-x86_64-kvm.qcow2 -f qcow2 my-rhel-vm.img 20G
mv my-rhel-vm.img /var/lib/libvirt/images/
method 1: use cloud-init.iso
genisoimage -output cloud-init.iso -volid cidata -joliet -rock user-data meta-data
cp cloudinitiso/cloud-init.iso /var/lib/libvirt/images/
virt-install \
--memory 4096 \
--vcpus 4 \
--name myvm \
--disk /var/lib/libvirt/images/my-rhel-vm.img,device=disk,bus=virtio,format=qcow2 \
--disk /var/lib/libvirt/images/cloud-init.iso,device=cdrom \
--os-variant rhel8.8 \
--virt-type kvm \
--graphics vnc,listen=0.0.0.0 \
--console pty,target_type=serial \
--noautoconsole \
--import
method 2: use --cloud-init argument
virt-install \
--memory 4096 \
--vcpus 4 \
--name myvm2 \
--disk /var/lib/libvirt/images/my-rhel-vm.img,device=disk,bus=virtio,format=qcow2 \
--cloud-init root-password-generate=on,disable=on,meta-data=/root/cloudinitiso/meta-data,user-data=/root/cloudinitiso/user-data \
--os-variant rhel8.8 \
--virt-type kvm \
--graphics vnc,listen=0.0.0.0 \
--console pty,target_type=serial \
--noautoconsole \
--import
command
- Ubuntu Cloud Images - the official Ubuntu images for public clouds, Openstack, KVM and LXD
- 第 4 章 配置 cloud-init | Red Hat Product Documentation
- Creating a VM using Libvirt, Cloud Image and Cloud-Init | Sumit’s Space
- Use Ubuntu Server Cloud Image to Create a KVM Virtual Machine with Fixed Network Properties | by Yu Ping | Medium
- Cloud Images with KVM (cloud-init) | 夢想家
- How to Install Ubuntu 22.04 Virtual Machine on KVM
- virt-install --cloud-init support | Cole Robinson
network
- libvirt: Virtual Networking
- kernel_awsome_feature/KVM虚拟机网络管理实战.md
- Bridged network — libvirt Networking Handbook — Jamie Nguyen
- How to set up a network bridge for virtual machine communication | Enable Sysadmin
- 設定 Ubuntu 下 KVM 的 Bridge Networking » j7 碎唸人生
- Set up Network Bridge on Ubuntu 22.04 - Full Guide - OrcaCore
- 將Linux的QEMU/KVM網路設定為橋接模式,讓外網可以連線到虛擬機 · Ivon的部落格
- How to Connect KVM VM to Host Network? – GetLabsDone
- Setting up UEFI HTTP boot with libvirt | Enable Sysadmin