diy13/Shutterstock.com
Mesin virtual berusaha sangat keras untuk meyakinkan sistem operasi mereka bahwa mereka berjalan pada perangkat keras fisik. Jadi, dapatkah Anda mengetahui dari baris perintah Linux apakah komputer itu fisik atau virtual?
Mesin Virtual dan Hypervisors
A komputer tradisional adalah objek fisik. Ini adalah kumpulan perangkat keras berbeda yang dicolokkan dan dibaut bersama sehingga Anda dapat memuat sistem operasi, menginstal aplikasi, meluncurkannya, dan menggunakannya.
Perangkat keras mahal. Dibatasi untuk satu sistem operasi per komputer fisik berarti biaya menjalankan beberapa sistem operasi segera menjadi penghalang. Solusi yang lebih baik adalah dengan mengizinkan satu komputer fisik menjalankan pilihan sistem operasi pada saat yang sama, dengan masing-masing berpikir itu berjalan di perangkat kerasnya sendiri yang unik.
RELATEDApa itu Hypervisor Mesin Virtual?
A hypervisor memungkinkan hal ini. Hypervisor—juga disebut manajer mesin virtual atau monitor mesin virtual—adalah perangkat lunak yang memungkinkan Anda membuat mesin virtual. Ini berperilaku seolah-olah mereka adalah komputer fisik individu meskipun mereka berjalan pada host fisik yang sama, berbagi ruang hard drive, memori, dan inti CPU.
Tentu saja, komputer host harus cukup kuat untuk mengatasi tuntutan koleksi dari mesin virtual, tetapi, dengan RAM yang cukup dan kekuatan pemrosesan di host, mesin virtual dapat berjalan dengan kecepatan mendekati kecepatan biasa.
Advertisement
Sejak rilis kernel 2.6.20 pada tahun 2007, Linux telah memiliki dukungan Mesin Virtual berbasis Kernel. in. Linux memiliki beberapa hypervisor yang tersedia untuknya, seperti VirtualBox, GNOME Boxes, dan QEMU-KVM. Mereka memanfaatkan kemampuan KVM asli Linux, membangun fungsionalitas kernel asli dengan menambahkan antarmuka pengguna dan fungsionalitas seperti dapat mengambil snapshot dari mesin virtual.
Mesin virtual membawa penghematan biaya, efisiensi, penerapan yang disederhanakan, dan—disediakan dengan benar—manfaat keamanan. Mereka juga memfasilitasi skalabilitas. Server baru dapat secara otomatis diputar saat permintaan layanan meningkat dan dimatikan saat permintaan turun. Hal ini membuat mereka sangat populer baik di cloud maupun di infrastruktur lokal.
Mungkin Anda mengelola server Linux dari jarak jauh dan Anda perlu tahu apakah itu mesin virtual atau kotak fisik. Atau Anda memiliki skrip yang perlu mengetahui jenis platform tempat eksekusinya. Berikut adalah beberapa cara Anda dapat mendeteksi apakah komputer yang Anda gunakan adalah fisik atau virtual.
Perintah dmidecode
Perintah dmidecode mendukung sejumlah besar opsi dan pengubah. Ini menginterogasi tabel Desktop Management Interface (DMI), dan mencetak informasi di jendela terminal.
RELATEDCara Mendaftar Perangkat Komputer Anda Dari Terminal Linux
Kami akan menggunakannya dengan opsi -s (tampilkan string tunggal), dan tanyakan untuk nama produk sistem. Perhatikan bahwa kita harus menggunakan sudo.
Kita akan menjalankan perintah pada VM VirtualBox yang menjalankan Ubuntu 22.04.
sudo dmidecode -s system-product-name
Platform diidentifikasi dengan benar sebagai VirtualBox.
Advertisement
Pada VM QEMU-KVM yang menjalankan Fedora 35, kita mendapatkan ini output.
sudo dmidecode -s system-product-name
Meskipun ini dilaporkan sebagai PC standar, ini adalah PC virtual QEMU standar, bertipe Q35. Jadi platform dikenali dengan benar sebagai mesin virtual.
Jika kita menjalankan perintah yang sama pada komputer fisik, kita mendapatkan beberapa informasi tentang pabrikan.
sudo dmidecode -s system-product-name
Komputer ini adalah custom-build berdasarkan Micro-Star Motherboard International Company Limited, dengan kode produk MS-7B86.
Perintah lshw
Perintah lshw mencantumkan detail untuk berbagai perangkat keras komputer. Kita dapat memilih kelas perangkat keras mana yang ingin kita laporkan lshw.
RELATEDCara Menggunakan lshw di Linux (Dengan Contoh Praktis)
Kita akan menggunakan opsi -class dengan pengubah sistem. Menggunakan sudo dengan perintah ini memastikan kita melihat semua detail.
Kita akan menjalankan perintah ini di Ubuntu VirtualBox VM.
sudo lshw -class system
Bidang "deskripsi" memiliki entri umum "komputer". Bidang "produk" memberi tahu kita ini adalah mesin virtual yang berjalan di VirtualBox. Kolom "vendor" berisi nama perusahaan Jerman yang menciptakan VirtualBox, Innotek GmbH. Innotek diakuisisi oleh Oracle Corporation pada tahun 2010 sebagai bagian dari akuisisi Sun Microsystems, Inc.
Kami harus menginstal lshw di Fedora.
sudo dnf install lshw
Advertisement
Mari kita coba perintah itu di Fedora VM kami yang berjalan di GNOME Boxes.
sudo lsh
n -sistem kelas bidang "deskripsi" memiliki entri generik "komputer." Bidang "produk" memberi kita informasi PC QEMU standar yang sama dengan yang kita lihat dengan perintah dmidecode. Bidang "vendor" berisi "QEMU" yang cukup jelas menunjukkan ini mesin virtual.
Ini adalah hasil dari menjalankan perintah yang sama pada komputer fisik kita.
sudo lshw -class system
Kita dapat melihat bahwa ini adalah komputer perangkat keras, dengan motherboard Micro-Star.
Perangkat keras diidentifikasi sebagai komputer desktop. product” memberi kita jenis motherboard, MS-7B86. Kolom “vendor” berisi nama pabrikan. Hostnamectl Command
Perintah ini memiliki keuntungan bahwa Anda tidak perlu memiliki su melakukan hak istimewa untuk menjalankannya. Namun, ini hanya tersedia pada distribusi yang mendukung systemd. Sebagian besar distribusi modern menggunakan systemd.
Ini adalah respons dari menjalankan perintah di Ubuntu VirtualBox VM.
hostnamectl
kamiBidang "icon-name" memiliki "-vm" yang ditambahkan padanya. Bidang "Chassis" berisi "vm." Bidang "Virtualisasi" berisi "oracle." Bidang "Vendor Perangkat Keras" berisi "innotek GmbH." Bidang "Model Perangkat Keras" berisi "Kotak Virtual."
Output pada VM Fedora kami di dalam Kotak GNOME sangat mirip.
hostnamectl
"nama ikon" bidang memiliki "-vm" yang ditambahkan padanya. Bidang "Chassis" berisi "vm." Bidang "Virtualisasi" berisi "kvm." Bidang "Vendor Perangkat Keras" berisi "QEMU" Bidang "Model Perangkat Keras" berisi "PC Standar (Q35 + ICH9, 2009).“Advertisement
Jika kita menggunakan perintah hostnamectl pada desktop fisik kita, output tidak berisi baris “Virtualisasi”.
hostnamectl
Jika tidak ada kolom “Virtualisasi”, Anda harus menjalankan bare metal.
Sistemd -detect-virt Command
Jika Anda ingin mendapatkan yang terbaik rt jawaban mungkin, systemd-detect-virt mungkin apa yang Anda cari. Sekali lagi ini membutuhkan distribusi yang dilengkapi systemd, tetapi tidak memerlukan hak sudo. Ini—dan output singkatnya—membuatnya cocok untuk digunakan di scripts.
Ini adalah hasil dari menjalankan perintah di Ubuntu VirtualBox VM.
systemd-detect-virt
Salinan Fedora kami yang berjalan di Kotak GNOME dilaporkan menggunakan KVM virtualization.
systemd -detect-virt
Menjalankan systemd-detect-virt pada mesin perangkat keras kami menghasilkan "tidak ada" yang dicetak ke terminal.
systemd-detect-virt
A Platform-Sensitive Script
Untuk memberikan skrip kemampuan untuk mendeteksi apakah itu berjalan di lingkungan virtual atau di perangkat keras fisik, kita dapat menggunakan perintah systemd-detect-virt dan menggunakan pernyataan kasus Bash untuk menangani opsi.
Advertisement
Ini adalah skrip yang akan kita gunakan. Salin teks ini dan simpan ke dalam file bernama “platform.sh.”
#!/bin/bash shopt -s nocasematch case $(systemd-detect-virt) in none) echo "Perangkat Keras Fisik" ;; *) echo "Mesin Virtual" ;; esac
Script menggunakan shopt untuk memilih pencocokan case-insensitive. Perintah systemd-detect-virt digunakan dalam pernyataan kasus. Keluaran dari perintah ini dibandingkan dengan masing-masing klausa kasus di badan pernyataan kasus sampai ditemukan kecocokan. Apa pun yang tidak cocok akan ditangkap oleh klausa default "*)". Jika ya, skrip berjalan pada perangkat keras fisik. Untuk semua kasus lain, skrip harus dijalankan pada mesin virtual.
Sebelum kita dapat menjalankan skrip, kita harus membuatnya dapat dieksekusi, menggunakan chmod.
chmod +x platform.sh
Ini dengan benar mengidentifikasi Ubuntu VirtualBox VM kami sebagai mesin virtual.
./ platform.sh
Advertisement
Ini juga mendeteksi dengan benar VM Kotak GNOME yang menjalankan Fedora.
./platform.sh
Skrip juga mendeteksi dengan benar saat dijalankan pada mesin fisik.
./platform.sh
Klausul kasus yang berbeda dapat mengatur variabel yang diperiksa di tempat lain di tempat lain dalam variabel yang diperiksa di tempat lain skrip untuk melakukan berbagai jenis pemrosesan, atau mereka dapat memanggil fungsi tertentu dalam skrip Anda.
Jika skrip Anda perlu mendeteksi dan mengakomodasi berbagai jenis lingkungan virtual, Anda dapat menambahkan lebih banyak klausa kasus, mencari string berbeda yang systemd-detect-virt bisa kembali. Kita dapat melihat daftar lengkap kemungkinan tanggapan dengan menggunakan opsi --list. Untuk mempermudah melihat semuanya sekaligus, kita akan menyalurkan output melalui kolom command.
systemd-detect-virt --list | column
Ambil Pil Merah
Teknik ini memberi tahu skrip Anda saat dijalankan di perangkat keras biasa dan saat berada di dalam mesin virtual.
Seperti Neo di Matrix, mereka akan tahu mana yang nyata dan mana yang tidak.
Itulah berita seputar Bagaimana Membiarkan Skrip Linux Mendeteksi Mereka Berjalan di Mesin Virtual, semoga bermanfaat. Disadur dari HowToGeek.com.