Load Distribusi Linux (Live CD) di VM untuk UEFI

Dengan Aplikasi GUI Virt-Manager


geeky stuff
#QEMU | #KVM | #Virt-Manager
Terkini mengenai QEMU/KVM, tiada lagi sokongan untuk UEFI yang sebelum ini boleh dijalankan dengan baris perintah qemu-system-x86_64 -enable-kvm sahaja, seperti yang pernah saya demo pada hantaran saya lama dahulu di entri Install Arch Linux on Virtual Machine With UEFI Support Enable.
Sebaliknya, jika berkeinginan menjalankan ujian/cubaan untuk memasang sistem Linux di mesin maya dengan bootloader UEFI/GPT, pemasangan hanya boleh dijalankan melalui aplikasi GUI bagi libvirt iaitu Virt-Manager.
 Oops, sebenarnya cubaan sistem UEFI tanpa sokongan asli masih ada. Cuma terdapat sedikit perubahan kepada cara dan baris perintah. Rujuk: Testing UEFI in systems without native support.


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


Sesudah itu, untuk memastikan 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
Proses di atas ini sekaligus turut membolehdayakan 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.

  1. Klik pada ikon Create a new virtual machine. Alah, yang ikon monitor bersinar bintang tu.
    01:
    Beginilah rupa GUI virt-manager
  2. Selepas itu, rujuk gambar-gambar berikut sahajalah.
    02:
    Self-explanatory.
    03:
    Self-explanatory.
    04:
    Self-explanatory.
    05:
    Boleh pilih simpanan cakera maya yang telah dicipta melalui perintah qemu-img create -f qcow2 linux.img 50G atau tick pilihan pertama (butang radio pertama).
    06:
    Tiba di sini, pastikan tick Customize configuration before install.
    07:
    Di bahagian Overview, tukar pilihan Firmware kepada UEFI x86_64.
    08:
    Bus untuk cakera maya secara automatik-nya ditetapkan kepada VirtIO.
    09:
    Self-explanatory.
    10:
    Untuk rangkaian Internet pula, pastikan pilih sumber rangkaian NAT dan model peranti virtio. Sistem hos mesti sudah terhubung dengan rangkaian Internet sebelum memulakan pemasangan ini ya!
    11:
    Untuk perkongsian folder di antara hos dan tetamu, tambah Hardware Filesystem seperti contoh dari gambar di bawah.
    12:
    Rupa sebelum memulakan pemasangan dengan Begin Installation.
    13:
    Beginilah rupa setelah menekan butang Begin Installation. Boleh nampak UEFI di hujung entri menu pertama systemd-boot bootloader ini.
    14:
    Boleh cuba ping mana-mana halaman web untuk memastikan Internet berfungsi.
    15:
    Dan terakhir, kena mount dahulu 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. 😄


CARA MANUAL


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 \
    -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


Kali terakhir halaman ini dikemaskini/disemak semula adalah pada .
Top