# virsh VM 指令 ###### tags: `IT` ## Install qemu-img and virsh ```bash= sudo apt install cpu-checker -y # kvm-ok sudo apt install qemu-kvm virt-manager virtinst libvirt-clients bridge-utils libvirt-daemon-system -y apt-get install libosinfo-bin # osinfo-query ``` ## 在 terminal 下從 iso 建立 virtual machine 1. 建立一個 20G 的虛擬硬碟空間 ``` sudo qemu-img create -f qcow2 ~/linux_test.qcow2 20G ``` 2. 用 virsh-install 安裝 linux ```shell= sudo virt-install --virt-type kvm --name ubuntu1804 --ram 2048 --disk ~/linux_test.qcow2,format=qcow2 --network network=default --graphics vnc,listen=0.0.0.0,password=YOUR_PASSWORD --noautoconsole --os-type=linux --os-variant=ubuntu17.10 --cdrom=/home/seal/Downloads/ubuntu-18.10-desktop-amd64.iso ``` Install RHEL ```shell sudo virt-install --virt-type kvm --name RHEL7 --ram 2048 --disk ~/rhel7.9.qconw2,format=qcow2 --network network=default --graphics vnc,listen=0.0.0.0,password=YOUR_PASSWORD --noautoconsole --os-type=linux --os-variant=rhl7 --cdrom=/home/seal/Downloads/<rhel img> ``` 如果在 remote 狀態下可能會卡在手動安裝. 如果沒有 console, 可以考慮用 [vnc-viewer](https://formulae.brew.sh/cask/vnc-viewer) 來顯示手動安裝畫面. 畫面完成後可以得到 ks file 來做自動安裝 virt-manager 也可以做到同樣的事情,但是在 macbook m1 會無法執行 用 ks file 來做 auto installation /root/anaconda-ks.cfg ## 如何在 vm 中新增一個 disk (attach disk) 建立一個 6G 左右的 raw 空間 (rhel6 基本需求為 6g 的空間) 這邊沒辦法使用 qcow2 ,會無法進行 partition 跟格式化 ``` qemu-img create -f raw disk_raw.img 6G ``` 接著用 attach-disk 把硬碟接上 VM ``` virsh attach-disk {vm-name} --source /var/lib/libvirt/images/{img-name-here} --target vdb --persistent ``` 接著在 vm 裡面做一般的分割跟格式化 ``` fdisk /dev/vda //分割 vda 假設新的裝置在 vda mkfs.ext4 /dev/vdb1 //格式化成 ext4 ``` 透過 lsblk 應該可以得到以下結果 ``` $lsblk ... ... vdb 252:16 0 6G 0 disk └─vdb1 252:17 0 6G 0 part /vdb ``` 最後對 `vdb1` 做 mount ``` mount /dev/vdb1 /vdb ``` 成功的話就可以再把檔案放到裡面了 ### 檢查在 vm 上的 HDD ``` $ virsh domblklist rhel-server-6.10-x86_64-dvd.iso Target Source ------------------------------------------------ sda /home/user/linux_test.qcow2 hda - vdb /home/user/rhel_extra_6G ``` https://www.cyberciti.biz/faq/how-to-add-disk-image-to-kvm-virtual-machine-with-virsh-command/ ### 從 cdrom reboot 把 cd rom mount 上 VM ``` virsh change-media image.iso hda ~/clonezilla-live-2.7.0-10-amd64.iso ``` ### Error: to '/var/run/libvirt/libvirt-sock': No such file or directory Reference: - https://askubuntu.com/questions/1225216/failed-to-connect-socket-to-var-run-libvirt-libvirt-sock ``` sudo systemctl enable libvirtd sudo systemctl start libvirtd ``` ### Error: You will need to grant the 'libvirt-qemu' user search permissions ``` chown libvirt-qemu:libvirt-qemu rhel-server.img chown libvirt-qemu:libvirt-qemu rhel.qconw2 ``` ## 參考 * https://blog.gtwang.org/linux/kvm-qemu-virt-install-command-tutorial/ * https://mycfg.net/articles/booting-from-a-cdrom-in-a-kvm-guest-using-libvirt/ * [KVM詳解,太詳細太深入了,經典](https://tw511.com/a/01/7301.html) * https://linux.die.net/man/1/virt-install * https://libvirt.org/storage.html