Hajat di hati hendak emulate pemacu NVMe
, maka kuturuti hati ini. Memandangkan pemacu simpanan kita memang jenis M.2 NVMe
, boleh tahan laju dan berdesup jugalah perginya.
Dah alang-alang kan, kita cuba jugalah emulate di external HDD.
Hah, boleh tu memanglah boleh! Kit dah namanya pon HDD yak! Tak ande ler laju mana belaghinya ter. Tapinya nak ngabokan boleh le kita cuba mengajukkan ter. Kitnya entohlah. Macam perasaannya ter tak berapa nok sampei gitulah nak digambokan.
Em tak apelah jadilah ter koi memulakan kalam di sini. Sekadar mewujudkan muqaddimahnya. Mengkala baca dek oghang asing ni, ha bior lantokkan dia terpinga nok teranseleit pun tak dapat.
Saya sediakan opsyen Qemu yang seragam buat ketiga-tiga jenis sistem operasi dan baris tambahan untuk disuaikan dengan setiap satunya.
Sebelum itu, salin OVMF_VARS.4m.fd
ke dalam direktori yang dikhususkan untuk setiap OS bagi pengasingan UEFI firware.
cp /usr/share/edk2/x64/OVMF_VARS.4m.fd ~/qemu/linux/firmware # Linux
cp /usr/share/edk2/x64/OVMF_VARS.4m.fd ~/qemu/bsd/firmware # FreeBSD
cp /usr/share/edk2/x64/OVMF_VARS.4m.fd ~/qemu/win11/firmware # Windows 11
qemu-system-x86_64 -enable-kvm \
-machine type=q35,vmport=off,usb=on \
-drive if=pflash,format=raw,readonly=on,file=/usr/share/edk2/x64/OVMF_CODE.4m.fd \
-drive if=pflash,format=raw,file=$HOME/qemu/bsd/firmware/OVMF_VARS.4m.fd \
-usb -device usb-tablet -daemonize \
-vga qxl -display gtk,gl=on,show-cursor=on \
-display spice-app,gl=on -device virtio-serial-pci \
-spice unix=on,addr=/tmp/vm_spice.socket,disable-ticketing=on \
Linux & FreeBSD:
-m 2G -cpu host -smp 4 \
Windows 11:
-m 6G -cpu host,hv_relaxed,hv_spinlocks=0x1fff,hv_vapic,hv_time -smp 12 \
Linux & FreeBSD:
-nic user,model=virtio-net-pci,id=nic0,hostfwd=tcp::60022-:22 \
Windows 11:
-nic user,model=virtio-net-pci,id=nic0,smb=$HOME/qemu/share/win \
Bagi Linux dan Windows 11 sahaja:
-device virtserialport,chardev=spicechannel0,name=com.redhat.spice.0 \
-chardev spicevmc,id=spicechannel0,name=vdagent \
-chardev socket,id=chrtpm,path=$HOME/tmp/mytpm/swtpm-sock \
-tpmdev emulator,id=tpm0,chardev=chrtpm -device tpm-tis,tpmdev=tpm0 \
NVMe
) dan fail-fail ISOLinux & FreeBSD:
-device nvme,serial=deadbeef,drive=nvm \
-drive index=0,media=disk,if=none,id=nvm,aio=native,cache.direct=on,file=$HOME/qemu/bsd/disks/disk.img \
-drive index=1,media=cdrom,file=$HOME/qemu/bsd/isos/laluan_ke_LiveISO
Windows 11:
-device nvme,serial=deadbeef,drive=nvm \
-drive index=0,media=disk,if=none,id=nvm,aio=native,cache.direct=on,file=$HOME/qemu/win11/disks/disk.img \
-drive index=1,media=cdrom,file=$HOME/qemu/win11/isos/Win11_23H2_English_x64.iso \
-drive index=2,media=cdrom,file=$HOME/qemu/win11/isos/virtio-win-0.1.240.iso
-device intel-hda -device hda-duplex -device hda-micro -device virtio-balloon \
-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 \
NOTA TAMBAHAN: |
---|
1) Linux (UEFI) |
2) FreeBSD (UEFI) |
3) Windows 11 |
CPU Cores
dengan -smp
. Komputer riba saya memiliki CPU dengan 6-core
, bermakna jumlah Threads
-nya ialah 12
. Maka saya tugaskan bilangan Cores-nya sebanyak 4
(quad-core) untuk kesemua jenis sistem operasi tetamu ini, jumlah yang popular gitu (serasa diri inilah. Kah!). Kalau tidak dinyatakan, sistem tetamu hanya akan memiliki 1-core
sahaja.
-boot [options]
sekiranya perlu kepada keutamaan susunan jenis media semasa proses booting.ssh user@127.0.0.1 -p 60022
' di sistem hos dengan memanjangkan port TCP hos melalui opsyen '-nic user,hostfwd=tcp::60022-:22
'.-virtfs local,path=$HOME/path_to_shared-folder,mount_tag=hostshare,security_model=none,id=fsdev0
' boleh digunakan untuk perkongsian data antara sistem hos dan tetamu sekiranya tidak mahu menggunakan SSH connection atau SSHFS. Kemudian, mount di VM dengan baris perintah mount -m -t 9p -o trans=virtio,version=9p2000.L hostshare /mnt/shared
.spice-vdagent
untuk fungsi menyalin dan menampal dari Hos > Tetamu > Hos (clipboard
) sepertinya tidak available untuk FreeBSD. Compiling from source has also failed.ZFS
(single stripe device) untuk VM ini.Xorg
. Sila rujuk Tutorial: FreeBSD 12 on KVM + UEFI (OVMF) = Working Xorg ini.Selepas memasang pakej xorg
dan juga window manager atau desktop environment pilihan hati, mulakan dengan konfigurasi Xorg
sebagai root.
Xorg -configure
Ambil perhatian kepada output yang memaparkan ralat di bahagian bawah sekali. Jika tiada sebarang konfigurasi lanjut dibuat, log masuk ke Xorg
akan gagal.
X.Org X Server 1.20.14
X Protocol Version 11, Revision 0
Build Operating System: FreeBSD 13.0-RELEASE-p11 amd64
Current Operating System: FreeBSD freebsdvm 13.1-RELEASE FreeBSD 13.1-RELEASE releng/13.1-n250148-fc952ac2212 GENERIC amd64
Build Date: 07 June 2022 01:52:09AM
Current version of pixman: 0.40.0
Before reporting problems, check http://wiki.x.org
to make sure that you have the latest version.
Markers: (--) probed, (**) from config file, (==) default setting,
(++) from command line, (!!) notice, (II) informational,
(WW) warning, (EE) error, (NI) not implemented, (??) unknown.
(==) Log file: "/var/log/Xorg.0.log", Time: Sat Jun 18 23:32:06 2022
List of video drivers:
scfb
modesetting
vesa
scfb trace: probe start
(++) Using config file: "/root/xorg.conf.new"
(==) Using system config directory "/usr/local/share/X11/xorg.conf.d"
Xorg detected your mouse at device /dev/sysmouse.
Please check your config if the mouse is still not
operational, as by default Xorg tries to autodetect
the protocol.
Your xorg.conf file is /root/xorg.conf.new
To test the server, run 'X -config /root/xorg.conf.new'
(EE) Server terminated with error (2). Closing log file.
Langkahnya adalah dengan menyalin dan menampal xorg.conf.new
ke dalam direktori /usr/local/etc/X11
dan namakan semula fail sebagai xorg.conf
.
cp xorg.conf.new /usr/local/etc/X11/xorg.conf
Buka fail yang telah disalin ke direktori yang berkenaan itu dengan editor yang disukai, serta gantikan baris Driver "modesetting"
di bawah Section "Device"
kepada Driver "scfb"
.
Section "Device"
...
Identifier "Card0"
#Driver "modesetting"
Driver "scfb"
BusID "PCI:0:1:0"
EndSection
Setelah itu, bolehlah cuba log masuk ke dalam pengurus tetingkap / Desktop Environment yang dipasang.
Ada beberapa perkara yang perlu dilakukan untuk memasang VM Windows 11
. Hal ini adalah diakibatkan oleh cip komputer (microcontroller) yang dilekatkan kepada motherboard di dalam kebanyakan peranti moden sekarang ini yang dinamakan sebagai Trusted Platform Module (TPM).
Perlu pasang pakej swtpm
terlebih dahulu sama ada dari git
stefanberger / swtpm atau dari distribusi masing-masing. Arch Linux
ada menyediakan pakej ini dalam repositori community.
Baris perintah untuk SWTPM:
swtpm socket --tpmstate dir=$HOME/tmp/mytpm \
--ctrl type=unixio,path=$HOME/tmp/mytpm/swtpm-sock \
--log level=20 --tpm2
Di terminal baru, gunakan baris perintah QEMU sebagaimana di atas untuk pemasangan.
Tanpa sebarang intervensi, ralat di bawah ini pasti akan keluar:-
Ralat ini boleh diselesaikan dengan command regedit
. Caranya adalah seperti berikut, terima kasih kepada ProgrammingKnowledge2
yang menyediakan tutorial-nya di Fix: This PC can’t run Windows 11 error | How to Fix Cannot Install Windows 11 on VirtualBox.
Jalankan semula QEMU
dan apabila sampai di bahagian ini, tekan kekunci ‘Shift + F10
’.
Kemudian, masukkan perintah regedit
.
Bahagian ini akan dipaparkan,
Pergi ke ‘Computer\HKEY_LOCAL_MACHINE\SYSTEM\Setup
’. Kemudian, right-click di Setup, dan tambah kunci baru; (New > Key)
. Masukkan nama kunci LabConfig
.
Setelah itu, right-click dekat LabConfig
, pilih DWORD (32-bit) Value
, masukkan nama BypassTPMCheck
.
Right-click pula BypassTPMCheck
itu, dan modify dengan menggantikan nilai ‘0’ kepada ‘1’.
Tambah lagi DWORD (32-bit) Value
dengan memasukkan nama BypassSecureBootCheck
serta modify nilai data kepada ‘1’ seperti di atas.
Tiada lagi ralat yang menyatakan bahawa PC tidak dapat menjalankan Windows 11 kerana tidak menepati syarat/keperluan minimum.
QEMU NVMe Ctrl
.swtpm
untuk dilangsungkan ke dalam $HOME/tmp
kerana saya malas nak buat direktori baru i.e. mytpm
sebagai root. Pilihan masing-masing. Boleh langsungkan soket ini ke direktori /tmp
sekiranya itu yang dimahukan.-nic
dengan model=rtl8139
selain daripada model virtio-net-pci
:-
-nic user,ipv6=off,model=rtl8139,mac=84:1b:77:c9:03:a6,id=nic0,smb=$HOME/path_to_shared-folder \
Semak model yang available di Terminal:
$ qemu-system-x86_64 -nic model=help
Supported NIC models:
e1000
e1000-82544gc
e1000-82545em
e1000e
i82550
i82551
i82557a
i82557b
i82557c
i82558a
i82558b
i82559a
i82559b
i82559c
i82559er
i82562
i82801
ne2k_pci
pcnet
rtl8139
tulip
virtio-net-pci
virtio-net-pci-non-transitional
virtio-net-pci-transitional
vmxnet3
Cores
di Task Manager > Performance > CPU
. Virtual processors
itu adalah merujuk kepada bilangan Cores
yang telah diberikan kepada sistem tetamu ini iaitu 4.
Jikalau Windows 11 ini ialah sebuah sistem operasi sebenar di dalam peranti, maka bahagian ini akan memaparkan maklumat CPU dengan perincian Cores
manakala Logical processors
pula ialah jumlah Threads
.
ArchWiki
, ada pelbagai cara bagi mendapatkan paparan grafik yang tinggi kualitinya atau hampir sama dengan persembahan sistem sebenar.Linux
, GPU virtio
sudah agak matang namun bagi Windows
pula, terlalu sedikit maklumat diperolehi yang melibatkan GPU ini.PCI GPU Passthrough
jika ingin mendapatkan persembahan yang hampir sama dengan sistem sebenar. Walaubagaimanapun, tak kuasalah saya hendak mencuba kaedah ini semata sebabnya renyah bebenar caranya dan juga tak ada keperluan bagi saya. Saya tidak bermain games mahupun mempunyai kerja yang melibatkan sebarang penggunaan aplikasi 3D
dari VM.qxl
dan virtio
sajalah untuk VM Windows 11
ini.Resolusi 1920x1080
dan skrin berskala 125%
(Kena besarkan sikitlah bagi terang gitu pemandangannya).
Hurm… Macam hampir kelihatan sama saja paparan skrinnya apabila dalam mod penuh. Namun di luar skrin penuh, kad grafik VirtIO
tidak mampu melaras skrin secara automatik berbanding kad grafik QXL
. Jadi QXL
ialah pemenang di sini.