Kenapa perlu bersusah payah dengan mesin maya KVM
Disebabkan hal ehwal syarikat baru-baru ini, saya tidak mempunyai banyak masa untuk menulis, jadi saya hanya akan menulis artikel teknikal untuk menggantikannya.
Perkaranya begini, syarikat kami ada satu perkara kecil yang dibangunkan berdasarkan sistem embedded dan bukan milik platform Android atau iOS. Nah, apa maksudnya? Ini bermakna bahasa untuk membangunkan perkara kecil ini ialah bahasa C, bukan Java, Objective-C atau Swift. Oleh itu, kami memerlukan Cross Compiler, juga dikenali sebagai persekitaran kompilasi silang, untuk menyusun kod ini.
Malah, Apl iOS yang disusun oleh Xcode juga tergolong dalam kategori kompilasi silang.
Walau bagaimanapun, persekitaran kompilasi silang ini hanya tersedia pada platform Windows! Malah, nampaknya selain daripada GCC, persekitaran kompilasi silang yang paling berguna ialah persekitaran di bawah Windows. Dianggarkan bahawa ramai pelajar yang bermain sistem terbenam harus tahu bahawa siri Keil dan IAR biasanya digunakan dalam industri sekarang. Malangnya, kedua-duanya adalah khusus Windows dan tiada versi macOS atau Linux.
Mengapa Windows membuatkan saya tidak berpuas hati? Kerana biasanya untuk meningkatkan kecekapan kerja dengan lebih baik, kecuali apabila perisian aplikasi industri yang perlu kami gunakan mesti dijalankan di bawah Windows, kami hanya menggunakan Mac dan bukannya Windows. Jadi, kami pada asasnya tidak mempunyai hos Windows terbiar dan kaya, tidak! Tidak ada perkara seperti "pada dasarnya tidak".
Dan pada bahagian pelayan, jangan beritahu saya apa-apa tentang Windows Server. Sebagai pengguna gila macOS dan Ubuntu, adalah mustahil untuk saya menjalankan Pelayan Windows pada Bare metal. Kami hanya menjalankan Linux pada pelayan dan tidak berminat dengan perkara lain.
Maka persoalannya ialah, kami mempunyai sistem kompilasi automatik, yang juga dikenali sebagai sistem CI (Integrasi berterusan), menggunakan baldi keluarga Atlassian: Bitbucket, Bamboo, JIRA dan Confluence, dsb., semuanya berjalan pada wadah maya Docker platform Linux .
Sekarang kami ingin mengautomasikan pengkompil untuk perkara kecil ini, supaya dapat membebaskan tenaga kerja dengan lebih baik dan memudahkan untuk menjejak dan mengurus kandungan setiap Keluaran pada masa hadapan. Masalah pertama yang perlu diselesaikan ialah: kami tidak mempunyai pelayan Windows.
Memandangkan virtualisasi sangat popular sekarang, mari gunakan pelayan Ubuntu sedia ada untuk memayakan Windows Okay, jom!
Apa itu KVM
Nama penuh KVM ialah: Mesin Maya berasaskan kernel Dalam ayat mudah, ia adalah sistem pengurusan virtualisasi berdasarkan kernel Linux.
Ciri ini telah disepadukan sejak kernel Linux versi 2.6.20. Hanya faham bahawa Docker adalah virtualisasi pada lapisan aplikasi, manakala KVM adalah virtualisasi pada lapisan sistem.
Perbezaannya ialah kandungan virtualisasi Docker mesti berkongsi kernel dengan Hos, yang bermaksud ia hanya boleh menjalankan sistem jenis Linux.
KVM memayakan keseluruhan hos, jadi ia boleh memasang sistem pengendalian yang berbeza dan tidak terhad kepada Linux sendiri. Apabila saya cergas nanti, saya akan lihat sama ada saya boleh memayakan macOS pada Ubuntu. Dengan cara ini, tidak perlu mendapatkan hos Mac yang berasingan untuk menyusun Apl iOS secara automatik.
Pasang KVM
Saya menggunakan versi Ubuntu 16.04 LTS di sini Memandangkan penggunaan jangka panjang dan kestabilan, saya pada asasnya hanya memilih versi LTS yang tidak terlalu berbeza, jadi rujuk sahaja.
Langkah pertama ialah memasang fail pakej berkaitan KVM Kerana pelayan saya adalah semua baris arahan dan desktop X tidak dipasang, saya menambah parameter --no-install-recommends. Jika tidak, ia akan memasang pakej seperti virt-viewer, yang mempunyai X11 dan banyak perpustakaan grafik di antara kebergantungan mereka, yang tidak diperlukan. Tetapi jika anda mendayakan sistem desktop, anda tidak perlu menambah parameter ini.
$ sudo apt-get install --no-install-recommends qemu-kvm qemu-utils libvirt-bin virtinst cpu-checker
Mari sahkan sama ada semuanya OK
$kvm-ok
INFO: /dev/kvm wujud
Pecutan KVM boleh digunakan
Sangat bagus, semuanya berjalan lancar, mari dapatkan rangkaian jambatan yang lain. Sebenarnya, ini tidak perlu, ia bergantung pada senario penggunaan anda.
KVM akan mencipta rangkaian jambatan virbr0 dengan sendirinya, tetapi ini adalah rangkaian NAT dan tiada cara untuk berkomunikasi dengan hos lain dalam LAN, jadi jangan malas dan bina sendiri rangkaian jambatan.
Konfigurasi rujukan adalah seperti berikut:
$ kucing /etc/network/interfaces
# Fail ini menerangkan antara muka rangkaian yang tersedia pada sistem anda
# dan cara mengaktifkannya Untuk maklumat lanjut, lihat antara muka(5).
sumber /etc/network/interfaces.d/*
# Antara muka rangkaian gelung balik
auto lo
iface lo inet loopback
# Antara muka rangkaian yang dirapatkan
autobr0
iface br0 inet statik
alamat 1.2.3.4
netmask 255.255.255.0
pintu masuk 1.2.3.1
dns-pelayan nama 1.2.3.1
pelabuhan_jambatan enp9s0
jambatan_hentian
bridge_fd 0
bridge_maxwait 0
Mulakan semula rangkaian dan sahkan status jambatan:
$ sudo systemctl mulakan semula rangkaian
$ rancangan sudo brctl
nama jambatan id STP membolehkan antara muka
.BR0 8000.F079593874D9 Tiada ENP9S0virbr0 8000.525400087ef2 ya virbr0-nic
OK, semuanya baik-baik saja dan anda boleh mula mencipta hos maya.
Buat hos maya
KVM baru sahaja menyelesaikan langkah pertama, kami masih perlu mencipta hos maya sebelum kami boleh meneruskan.Sebelum bermula, kita perlu sediakan beberapa perkara:
1.Imej pemasangan Windows
2.Imej Virtio ISO dan cakera liut
3.Pelanggan VNC (disertakan dengan macOS)
Saya menggunakan versi Virtio 0.1.126-2 di sini. Versi sistem pengendalian ialah: Ubuntu 16.04.1 LTS.
Semuanya sudah sedia, gunakan arahan virt-install untuk membantu mencipta mesin maya:
virt-install
--nama win10
--ingatan 2048
--soket vcpus=1,teras=1,benang=2
--cdrom=/path/to/windows_10.iso
--os-variant=win8.1
--disk /path/to/win10/win10.qcow2,bus=virtio,size=40
--cakera /path/to/virtio/virtio-win-0.1.126_amd64.vfd,device=floppy
--jambatan rangkaian=br0,model=virtio
--graphics vnc,password=Passw0rd,port=5910
--hvm
--kvm jenis virt
Pada asasnya semua maklumat konfigurasi adalah di atas Konfigurasi mesin maklumat maya adalah seperti berikut:
Memori 2G1 CPU, 1 teras, 2 benang
1 CDROM (CD pemasangan Windows)
40G cakera keras (cakera sistem)
1 pemacu liut (pemandu Virtio)
Buka desktop jauh VNC pada port 5910
Jika anda memasukkan arahan dengan betul, anda sepatutnya mendapat maklum balas yang serupa dengan:
Mula memasang...
Mencipta domain...
Pemasangan domain masih dalam proses menunggu pemasangan selesai.
Secara ringkasnya, mesin maya telah dicipta, tetapi kerana tiada antara muka grafik, tiada cara untuk meneruskan. Setelah kami menyambungkan VNC, kami boleh meneruskan. Gesaan ini hanya akan muncul sekali Selepas sistem dipasang, situasi menunggu permulaan ini tidak akan berlaku.
Pasang Windows 10
Walaupun semasa kami mencipta mesin maya, kami menetapkan penggunaan port 5910 untuk menyediakan desktop jauh VNC. Walau bagaimanapun, port ini tidak boleh diakses secara langsung kerana ia terikat kepada 127.0.0.1 secara lalai, yang bermaksud ia hanya boleh diakses secara tempatan. Kita perlu terlebih dahulu memetakan pelabuhan tempatan terpencil ke pelabuhan tempatan.ssh -L 5910:127.0.0.1:5910 pelayan
Kemudian di bawah macOS, ⌘ + Ruang untuk memanggil Spotlight, kemudian masukkan:
vnc://127.0.0.1:5910
Masukkan kata laluan dalam tetingkap timbul: Passw0rd
Kemudian anda boleh dengan senang hati memasang sistem Windows Jika cakera keras tidak dapat dikenali, anda perlu memuatkan pemacu secara manual dan pilih pemacu A dan direktori Windows yang sepadan. Begitu juga, jika kad rangkaian tidak mempunyai pemacu, kaedah yang sama digunakan.
Dilampirkan adalah tangkapan skrin pemasangan selesai:
Atas ialah kandungan terperinci Panduan untuk Mengkonfigurasi dan Memasang Sistem Pengendalian Windows dalam KVM untuk Ubuntu. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!