Apakah mesin virtual tidak mengizinkan semua ekstensi CPU host?

0

Demi kenyamanan, saya mencoba menjalankan instalasi Gentoo Linux yang "biasa" sebagai tamu di dalam VirtualBox di host Windows 7. Saya mem-bootstrap instalasi dengan menggunakan VirtualBox, bahkan. Tetapi sekarang, setelah sekitar satu tahun tak terhindarkan membangun kembali semua paket di Portage dengan -march = asli di flag kompiler saya, saya telah menemukan bahwa semua program non-sepele (sepele = ls, cd, cat, nontrivial = vim, man, pada dasarnya segala sesuatu yang tertaut ke pustaka standar c ++) terbunuh segera pada saat startup. Log kernel menunjukkan itu terperangkap instruksi ilegal, seolah-olah program dikompilasi dengan ekstensi CPU yang tidak didukung oleh CPU host. Tapi itu benar! Pemahaman saya tentang hypervisors seperti VirtualBox adalah bahwa program-program seharusnya tetap berjalan pada dasarnya dengan bare-metal, peran terbesarnya adalah menjaga OS tamu dan userland-nya dan OS host dan memori virtual userland-nya terpisah.

Pertanyaan saya adalah, apa yang menyebabkannya? Apakah VM hanya diperbolehkan menggunakan beberapa instruksi yang tersedia di CPU host? Atau apakah ini masalah yang sama sekali berbeda?

Spijdar
sumber
2
apakah Anda memiliki ekstensi virtualisasi yang tersedia dan diaktifkan di BIOS host Anda? jika CPU / Mobo Anda tidak mendukung ekstensi virtualisasi Intel atau AMD, banyak fitur CPU host tidak akan tersedia. Tipe 2 hypervisor seperti Virtualbox memiliki lapisan abstraksi yang sangat tebal antara perangkat keras virtual dan fisik. jika ini merupakan masalah bagi penggunaan kata kunci Anda, pertimbangkan implementasi hypervisor type1 seperti ZenServer atau esxi
Frank Thomas
@ FrankThomas benar. Saya menggunakan Hyper-V, hypervisor tipe-1, dan tidak memiliki masalah seperti itu pada laptop berbasis Haswell saya. -march=native atau -march=haswell menghasilkan executable yang berfungsi pada tamu Gentoo.
bwDraco
Senang mendengarnya! Ya, ekstensi Intel VT-x diaktifkan. Yang membuat saya bingung, hanya menilai dengan apa yang saya baca saat menggunakan VT-x hypervisor berjalan dalam mode sendiri pada CPU dan instruksi CPU tamu dijalankan tanpa gangguan, hanya instruksi OS istimewa yang terperangkap dan dimodifikasi. Yang tidak menjelaskan mengapa ekstensi tertentu tampaknya ilegal di bawahnya. Tapi hypervisor tipe-1 memang terdengar seperti solusi yang baik, meskipun hal lain yang perlu dipelajari.
Spijdar