Bagaimana cara BIOS memblokir virtualisasi?

26

Saya mulai bekerja dengan Docker dan setelah beberapa jam mencoba membuatnya berfungsi, saya mengetahui bahwa BIOS saya memblokirnya dan saya perlu menyesuaikan pengaturan BIOS. Saya diberitahu bahwa BIOS entah bagaimana terkait dengan motherboard.

Bagaimana BIOS dapat memblokir proses semacam ini, mengesampingkan sistem operasi?

Alvaro Joao
sumber
14
Anda memilikinya mundur. Pengaturan BIOS untuk virtualisasi memberi tahu CPU untuk mengizinkan jenis pemrosesan tertentu. jika ekstensi virtualisasi tidak diaktifkan di bios, CPU tidak akan dapat menjalankan program. Situasinya sangat mirip seperti mencoba menjalankan program yang dikompilasi untuk arsitektur prosesor DEC Alpha pada sistem x64. tanpa ekstensi, program akan mencoba menjalankan instruksi yang tidak dimengerti oleh CPU. Docker Anda memblokir dirinya dari mengeksekusi karena telah mendeteksi bahwa CPU Anda saat ini dikonfigurasi tidak dapat menjalankannya.
Frank Thomas

Jawaban:

37

Bukan berarti CPU memblokir program; itu tidak memiliki konsep aplikasi pada tingkat rendah. Masalahnya adalah bahwa Docker pada sistem operasi non-Linux dapat memerlukan virtualisasi perangkat keras. Anda belum menentukan OS Anda, tetapi saya melakukan sedikit pengintaian dan menemukan bahwa Anda mungkin menggunakan Windows.

Virtualisasi perangkat keras adalah fitur CPU yang, seperti yang mungkin Anda tebak dari namanya, memungkinkan CPU membantu dengan virtualisasi. Pada banyak mesin, Anda harus mengaktifkannya di BIOS. Ini, sebagian, untuk mencegah masalah keamanan . Pada dasarnya, Anda tidak dapat memulai program karena berusaha menggunakan fitur yang secara efektif tidak ada sebagai lawan diblokir secara aktif.

Ben N
sumber
14
a tiny bit of snoopingHa..ha
bs677
ya saya menggunakan windows 7! Terima kasih untuk penjelasannya!!! Aku mengerti sekarang!
Alvaro Joao
Saya akrab dengan pengaturan ini tetapi masih belum jelas, apa sebenarnya virtualisasi perangkat keras (dalam konteks pengaturan BIOS)?
Celeritas
2
Virtualisasi Perangkat Keras @Celeritas adalah serangkaian fitur yang disediakan oleh CPU dan BIOS yang membuat mesin virtual yang berjalan lebih efisien, seperti dengan mengatur secara transparan akses memori yang dibuat oleh VM dengan cara yang lebih efisien daripada yang dapat dilakukan pada tingkat perangkat lunak murni, dan menangani / menjebak "istimewa" instruksi seperti operasi I / O untuk perangkat lunak virtualisasi untuk menangani secara lebih efisien.
ζ--
2
@ RACING121 The N adalah singkatan dari NSA :)
Ben N
41

Ben N jawaban jelas yang paling berguna dan jelas.

Bagi yang masih bertanya-tanya, namun inilah kisah lengkapnya.


Virtualisasi dicapai dengan bantuan perangkat keras dari CPU. Karena OS tervirtualisasi akan mengganggu host, karena mereka bersaing untuk sumber daya yang sama, diperlukan mekanisme untuk menghentikan tamu dari memiliki akses yang tidak terkendali ke perangkat keras. Ini bisa turun dengan perangkat lunak, lambat, teknik atau dengan bantuan dari CPU.

Virtualisasi berbantuan perangkat keras diimplementasikan dengan instruksi spesifik dan opsional , Anda dapat membacanya di Bab 23, 24, 25, 26, 27 dan 28 dari Intel Manual 3B Bagian 3 . Perangkat lunak harus terlebih dahulu memeriksa instruksi ini untuk didukung, sebelum mencoba menggunakannya.

Untuk alasan keamanan, CPU memiliki register khusus, ini adalah MSR , yang disebut IA32_FEATURE_CONTROL yang menyimpan bit yang bercerita dengan fitur untuk mengaktifkan atau menonaktifkan.
Mengutip

Bit 0 adalah bit kunci. Jika bit ini jelas, VMXON menyebabkan pengecualian perlindungan umum. Jika bit kunci diatur, WRMSR ke MSR ini menyebabkan pengecualian perlindungan umum; MSR tidak dapat dimodifikasi hingga kondisi penyetelan ulang diaktifkan . Sistem BIOS dapat menggunakan bit ini untuk menyediakan opsi pengaturan untuk BIOS untuk menonaktifkan dukungan untuk VMX. Untuk mengaktifkan dukungan VMX di platform, BIOS harus mengatur bit 1, bit 2, atau keduanya (lihat di bawah), serta bit kunci.

Poin mendasarnya adalah bahwa begitu register dikunci, ia tidak dapat dibuka sampai power-up .

Karena BIOS / UEFI yang lebih dulu, ia memiliki kekuatan untuk menonaktifkan virtualisasi dengan membersihkan bit yang sesuai dan mengunci register sebelum OS apa pun dapat mencegahnya. Ketika fitur virtualisasi dinonaktifkan dengan cara ini, CPU melaporkan bahwa ekstensi instruksi opsional tidak ada (dan sebenarnya kesalahan jika digunakan) dan perangkat lunak tidak dapat menggunakan virtualisasi perangkat keras.

Margaret Bloom
sumber
2
Itu adalah tambahan yang bagus untuk pertanyaan itu. Kebanyakan orang tidak tahu pengaturan membutuhkan reset untuk berubah, sehingga tidak dapat diaktifkan "on the fly" saat OS sedang berjalan.
Tonny
OHH jadi begitulah cara kerjanya! Saya mencari di Google dan menemukan jawaban Anda (yang menarik minat saya, untuk konsep pribadi saya)
Paul Stelian