qemu-system-x86_64 -enable-kvm
sahaja, seperti yang pernah saya demo pada hantaran saya lama dahululibvirt
iaitu Virt-Manager
.
Ada sesetengah orang, sebelum mula bereksperimentasi dengan pemasangan di mesin sebenar, mesti cuba melalui mesin maya dulu. Manalah tahu, kot-kot ada yang mahu cuba belajar dual-boot Windows dengan sistem Linux kan?
Jadi di sini, saya terangkan sikitlah cara untuk load live CD sistem operasi Linux dengan UEFI
dibolehdayakan. Sebagaimana biasa, cedok dari ArchWiki
-lah.
Oleh sebab saya gunakan Arch Linux
, maka di sini juga saya akan gunakan live CD Arch Linux sebagai demo.
Pakej-pakej dari sistem repositori yang perlu dipasang dahulu sebelum memulakan operasi:-
1️⃣
edk2-ovmf
dan juga libvirt;
2️⃣
ebtables
serta
dnsmasq
(untuk berkongsi rangkaian Internet melalui sistem hos dengan default NAT/DHCP networking);
3️⃣
virt-manager;
Optional untuk pemasangan sistem operasi selain Linux seperti Windows
:-
4️⃣
firewalld
5️⃣
virt-viewer
virt-manager
boleh diakses oleh pengguna (user), ada konfigurasi tambahan perlu dilakukan terhadap polkit
.
Apa yang saya buat dahulu adalah menambah kumpulan wheel ke dalam polkit. Hal ini membolehkan mana-mana pengguna yang berada di dalam kumpulan ini menjalankan operasi yang memerlukan superuser tanpa perlu memasukkan kata laluan.
Caranya adalah dengan mencipta fail /etc/polkit-1/rules.d/49-nopasswd_global.rules
ini sebagai superuser (root) dengan konfigurasi seperti berikut:-
/* Allow members of the wheel group to execute any actions
* without password authentication, similar to "sudo NOPASSWD:"
*/
polkit.addRule(function(action, subject) {
if (subject.isInGroup("wheel")) {
return polkit.Result.YES;
}
});
Kemudian, tambahkan pula fail /etc/polkit-1/rules.d/50-libvirt.rules
berikut:-
/* Allow users in kvm group to manage the libvirt
daemon without authentication */
polkit.addRule(function(action, subject) {
if (action.id == "org.libvirt.unix.manage" &&
subject.isInGroup("kvm")) {
return polkit.Result.YES;
}
});
Dan tambahkanlah user ke dalam kumpulan-kumpulan berikut. Gantikanlah user itu dengan nama pengguna sebenar:-
gpasswd -a user wheel
gpasswd -a user libvirt
gpasswd -a user kvm
Mengikut ArchWiki
, sistem mungkin perlu direboot untuk membolehkan perubahan kepada polkit
tadi berlaku.
Sebelum reboot sistem, bolehdayakan dahulu libvirtd.service
supaya ia terus load ketika sistem bermula.
systemctl enable libvirtd.service
virtlogd.socket
dan virtlockd.socket
.
Selesai reboot sistem hos, boleh mula jalankan virt-manager
sebagai pengguna biasa.
Jom mulakan cubaan load Live CD Arch Linux di mesin maya melalui virt-manager
dengan UEFI bootloader
.
virt-manager
qemu-img create -f qcow2 linux.img 50G
atau tick pilihan pertama (butang radio pertama).UEFI x86_64
.VirtIO
.NAT
dan model peranti virtio
. Sistem hos mesti sudah terhubung dengan rangkaian Internet sebelum memulakan pemasangan ini ya!shared-folder
yang telah ditetapkan sebelum memulakan pemasangan tadi sekiranya perlu kepada fungsi ini. Saya tambah direktori /mnt/share
dahulu. Kemudian mount shared-folder dari sistem hos dengan baris perintah berikut:-mount -t 9p -o trans=virtio,version=9p2000.L /hostshare /mnt/share
/hostshare
adalah target laluan yang ditetapkan sebelumnya dan /mnt/share
adalah mount point yang direktori-nya telah ditambah sebelum ini.
Selesai contoh load virt-manager untuk pemasangan UEFI. Cara pemasangan sistem pula perlu rujuk dokumentasi yang telah disediakan oleh laman web utama distribution masing-masing, jika ianya adalah selain daripada Arch Linux
. 😄
cp /usr/share/edk2-ovmf/x64/OVMF_VARS.fd my_uefi_vars.fd
qemu-system-x86_64 -enable-kvm \
-machine type=q35,vmport=off,usb=on \
-m 2G -cpu host \
-device intel-hda -device hda-duplex \
-device virtio-balloon \
-usb -device usb-tablet \
-vga qxl -device virtio-serial-pci \
-display spice-app,show-cursor=on \
-spice port=5900,disable-ticketing \
-chardev spicevmc,id=spicechannel0,name=vdagent \
-device virtserialport,chardev=spicechannel0,name=com.redhat.spice.0 \
-daemonize \
-device ich9-usb-ehci1,id=usb \
-device ich9-usb-uhci1,masterbus=usb.0,firstport=0,multifunction=on \
-device ich9-usb-uhci2,masterbus=usb.0,firstport=2 \
-device ich9-usb-uhci3,masterbus=usb.0,firstport=4 \
-chardev spicevmc,name=usbredir,id=usbredirchardev1 -device usb-redir,chardev=usbredirchardev1,id=usbredirdev1 \
-chardev spicevmc,name=usbredir,id=usbredirchardev2 -device usb-redir,chardev=usbredirchardev2,id=usbredirdev2 \
-chardev spicevmc,name=usbredir,id=usbredirchardev3 -device usb-redir,chardev=usbredirchardev3,id=usbredirdev3 \
-drive if=pflash,format=raw,readonly,file=/usr/share/edk2-ovmf/x64/OVMF_CODE.fd \
-drive if=pflash,format=raw,file=my_uefi_vars.fd \
-drive file=/laluan-ke-linux.img,if=virtio,aio=native,cache.direct=on \
-cdrom /laluan-ke-distribusi_linux.iso \
-virtfs local,path=/laluan-ke-direktori_dikongsi,mount_tag=/hostshare,security_model=none,id=fsdev0 \
-boot order=d