Driver virtio adalah driver I/O berperforma tinggi yang diperlukan untuk lingkungan virtualisasi. Untuk memastikan gambar Linux kustom Anda dapat boot dengan benar di Alibaba Cloud, Anda harus menginstal driver virtio dan menyertakannya dalam sistem file sementara. Jika tidak, instans Elastic Compute Service (ECS) yang dibuat dari gambar Anda mungkin gagal untuk mulai karena tidak dapat mendeteksi perangkat penyimpanan dan jaringan virtual. Topik ini membimbing Anda melalui instalasi driver virtio di Linux.
Alur operasi
Berikut adalah alur operasi untuk menginstal driver virtio di sistem Linux:
Prosedur
Periksa apakah kernel sistem mendukung driver virtio
Di mesin virtual tempat Anda membuat gambar, jalankan perintah berikut untuk memeriksa apakah kernel sistem saat ini mendukung driver virtio. Ini membantu menentukan apakah akan menginstal driver virtio untuk gambar kustom atau menambahkan driver ke sistem file sementara.
grep -i virtio /boot/config-$(uname -r)Keluaran perintah berikut dikembalikan:

Analisis keluaran perintah.
Periksa parameter
CONFIG_VIRTIO_BLK(driver perangkat blok virtio) danCONFIG_VIRTIO_NET(driver perangkat jaringan virtio) dalam keluaran perintah:Jika nilai parameternya adalah y: Sistem telah menginstal driver virtio dengan benar, dan driver tersebut dikompilasi ke dalam kernel. Driver akan dimuat secara otomatis saat startup. Anda tidak perlu melanjutkan langkah-langkah dalam topik ini.
Jika nilai parameternya adalah m atau satu nilai parameter y dan yang lainnya m: Driver virtio ada sebagai modul kernel. Anda hanya perlu menambahkan driver virtio ke sistem file sementara.
Jika parameter tidak muncul: Sistem tidak memiliki driver virtio yang terinstal. Anda perlu menginstal driver virtio secara manual.
Tambahkan driver virtio ke sistem file sementara
Jika kernel telah mengaktifkan CONFIG_VIRTIO_BLK=m atau CONFIG_VIRTIO_NET=m, tetapi modul ini belum ditambahkan ke sistem file sementara (initramfs), sistem mungkin gagal memuat driver virtio saat startup, menyebabkan mesin virtual gagal mendeteksinya.
Jika nilai parameter
CONFIG_VIRTIO_BLKdanCONFIG_VIRTIO_NETadalah m atau satu nilai parameter y dan yang lainnya m, jalankan salah satu perintah berikut untuk memeriksa apakah driver virtio telah ditambahkan ke sistem file sementara.Seri CentOS
lsinitrd /boot/initramfs-$(uname -r).img | grep virtio
Seri Debian
lsinitramfs /boot/initrd.img-$(uname -r)|grep virtio
Seri SUSE
lsinitrd /boot/initrd-$(uname -r)|grep virtio
Seperti yang ditunjukkan pada gambar sebelumnya, jika keluaran berisi informasi
virtio_blk.kodanvirtio_net.ko, driver virtio sudah ditambahkan ke sistem file sementara. Anda tidak perlu melanjutkan langkah-langkah dalam topik ini.Jika keluaran tidak berisi informasi
virtio_blk.kodanvirtio_net.ko, atau hanya berisi salah satu darivirtio_blk.kodanvirtio_net.ko, Anda perlu melanjutkan ke langkah berikutnya untuk menambahkan driver virtio ke sistem file sementara.
Tambahkan driver virtio ke sistem file sementara.
Seri CentOS
Jika versi sistem operasi adalah CentOS 6, Anolis OS 7, AlmaLinux 8, Fedora 33, atau lebih baru dan versi kernel lebih baru dari 2.6.24 (Anda dapat menjalankan perintah
uname -runtuk memeriksa versi kernel), lakukan operasi berikut untuk menambahkan driver virtio ke sistem file sementara.Jalankan perintah berikut untuk membuka file dracut.conf:
vim /etc/dracut.confTekan tombol i untuk masuk ke mode Insert dan tambahkan konten berikut ke file:
add_drivers+="virtio_blk virtio_net"Tekan tombol Esc, masukkan :wq, lalu tekan tombol Enter untuk menyimpan dan menutup file.
CatatanJika salah satu nilai
CONFIG_VIRTIO_BLKdanCONFIG_VIRTIO_NETadalah y dan yang lainnya m, Anda hanya perlu menambahkan driver virtio yang nilainya m ke file. Sebagai contoh, jika nilai parameterCONFIG_VIRTIO_NETadalah m, tuliskan hanyaadd_drivers+="virtio_net"ke file.Jalankan perintah berikut untuk meregenerasi initrd:
dracut -fCatatanSetelah Anda menjalankan perintah, Anda dapat menjalankan perintah
echo $?untuk memeriksa apakah nilai 0 dikembalikan. Jika ya, initrd diregenerasi sesuai harapan. Anda juga dapat menjalankanlsinitrd /boot/initramfs-$(uname -r).img | grep virtioperintah untuk memeriksa apakah driver virtio telah ditambahkan ke sistem file sementara sesuai harapan.
Seri Debian
Jalankan perintah berikut untuk membuka file modules:
vim /etc/initramfs-tools/modulesTekan tombol i untuk masuk ke mode Insert dan tambahkan konten berikut ke file:
virtio_blk virtio_netTekan tombol Esc, masukkan :wq, lalu tekan tombol Enter untuk menyimpan dan menutup file.
CatatanJika salah satu nilai
CONFIG_VIRTIO_BLKdanCONFIG_VIRTIO_NETadalah y dan yang lainnya m, Anda hanya perlu menambahkan driver virtio yang nilainya m ke file. Sebagai contoh, jika nilai parameterCONFIG_VIRTIO_NETadalah m, tambahkan hanyavirtio_netke file.Jalankan perintah berikut untuk meregenerasi initrd:
update-initramfs -uCatatanSetelah Anda menjalankan perintah, Anda dapat menjalankan perintah
echo $?untuk memeriksa apakah nilai 0 dikembalikan. Jika ya, initrd diregenerasi sesuai harapan. Anda juga dapat menjalankanlsinitramfs /boot/initrd.img-$(uname -r)|grep virtioperintah untuk memeriksa apakah driver virtio telah ditambahkan ke sistem file sementara sesuai harapan.
Seri SUSE
Versi sebelum SUSE 12 SP1 atau openSUSE 13
Buka file kernel:
vim /etc/sysconfig/kernelTekan tombol i untuk masuk ke mode Insert dan tambahkan konten berikut ke file:
INITRD_MODULES="virtio_blk virtio_net"Tekan tombol Esc, masukkan :wq, lalu tekan tombol Enter untuk menyimpan dan menutup file.
CatatanJika salah satu nilai
CONFIG_VIRTIO_BLKdanCONFIG_VIRTIO_NETadalah y dan yang lainnya m, Anda hanya perlu menambahkan driver virtio yang nilainya m ke file. Sebagai contoh, jika nilai parameterCONFIG_VIRTIO_NETadalah m, tuliskan hanyaINITRD_MODULES="virtio_net"ke file.Meregenerasi initrd:
mkinitrd
SUSE 12 SP1, OpenSUSE 13, atau lebih baru
Buka file dracut.conf:
vim /etc/dracut.confTekan tombol i untuk masuk ke mode Insert dan tambahkan konten berikut ke file:
add_drivers+="virtio_blk virtio_net"Tekan tombol Esc, masukkan :wq, lalu tekan tombol Enter untuk menyimpan dan menutup file.
CatatanJika salah satu nilai
CONFIG_VIRTIO_BLKdanCONFIG_VIRTIO_NETadalah y dan yang lainnya m, Anda hanya perlu menambahkan driver virtio yang nilainya m ke file. Sebagai contoh, jika nilai parameterCONFIG_VIRTIO_NETadalah m, tuliskan hanyaadd_drivers+="virtio_net"ke file.Meregenerasi initrd:
dracut -f
CatatanSetelah Anda menjalankan perintah, jalankan perintah
echo $?untuk memeriksa apakah nilai 0 dikembalikan. Jika ya, initrd diregenerasi sesuai harapan. Anda juga dapat menjalankanlsinitrd /boot/initrd-$(uname -r)|grep virtioperintah untuk memeriksa apakah driver virtio telah ditambahkan ke sistem file sementara sesuai harapan.
Instal driver virtio secara manual
Langkah 1: Unduh paket instalasi kernel
Dalam contoh ini, paket instalasi kernel linux-4.4.24.tar.gz digunakan di sistem operasi CentOS. Modifikasi perintah berdasarkan versi kernel sistem operasi Anda.
Instal komponen yang diperlukan untuk kompilasi kernel:
yum install -y ncurses-devel gcc make wgetKueri versi kernel sistem operasi Anda. Dalam contoh ini, versi kernel adalah 4.4.24-2.al7.x86_64.
uname -r
Kunjungi halaman daftar kernel Linux untuk menemukan URL unduhan kode sumber versi kernel yang sesuai.
Dalam contoh ini, URL unduhan linux-4.4.24.tar.gz adalah
https://www.kernel.org/pub/linux/kernel/v4.x/linux-4.4.24.tar.gz.
Unduh paket instalasi:
cd /usr/src/ wget https://www.kernel.org/pub/linux/kernel/v4.x/linux-4.4.24.tar.gzEkstrak paket instalasi dan buat tautan simbolik:
tar -xzf linux-4.4.24.tar.gz ln -s linux-4.4.24 linux cd /usr/src/linux
Langkah 2: Kompilasi kernel
Jalankan perintah berikut secara berurutan untuk mengompilasi kernel:
make mrproper symvers_path=$(find /usr/src/ -name "Module.symvers") test -f $symvers_path && cp $symvers_path . cp /boot/config-$(uname -r) ./.config make menuconfigCatatanJika pesan kesalahan muncul saat Anda menjalankan perintah make menuconfig, atasi masalah berdasarkan pesan tersebut. Sebagai contoh, jika komponen ncurses-devel, bison, dan flex belum diinstal, Anda dapat menjalankan perintah berikut secara berurutan untuk menginstal komponen:
yum install ncurses-devel yum install bison yum install flexSelesaikan konfigurasi terkait virtio pada halaman berikut:
CatatanJika Anda memilih konfigurasi yang berisi tanda bintang (*), driver virtio dikompilasi ke dalam kernel. Jika Anda memilih konfigurasi yang berisi m, driver virtio dikompilasi menjadi modul.
Konfigurasikan opsi Virtualization.
Tekan tombol spasi untuk memilih Virtualization, lalu tekan tombol Enter untuk melihat opsi.

Periksa bahwa opsi dukungan Kernel-based Virtual Machine (KVM) dipilih.

Konfigurasikan opsi Processor type and features.
Kembali ke menu utama, tekan tombol panah atas dan bawah untuk memilih Processor type and features, lalu tekan tombol Enter untuk melihat opsi.
Tekan tombol spasi untuk memilih Paravirtualized guest support, lalu tekan tombol Enter untuk melihat opsi.

Periksa bahwa opsi KVM paravirtualized clock dan KVM Guest support dipilih.

Konfigurasikan opsi Device Drivers.
Kembali ke menu utama, tekan tombol panah atas dan bawah untuk memilih Device Drivers, lalu tekan tombol Enter untuk melihat opsi.
Tekan tombol spasi untuk memilih Block devices, lalu tekan tombol Enter untuk melihat opsi.
Periksa bahwa opsi Virtio block driver dipilih.

Kembali ke daftar opsi Device Drivers, tekan tombol panah atas dan bawah untuk memilih Network device support, lalu tekan tombol Enter untuk melihat opsi.
Periksa bahwa opsi Virtio network driver dipilih.

Tekan tombol Esc untuk keluar dari jendela konfigurasi kernel dan pilih Yes pada prompt untuk menyimpan file .config.
Periksa apakah konfigurasi terkait virtio sudah lengkap.
Untuk informasi lebih lanjut, lihat Periksa apakah kernel sistem mendukung driver virtio.
(Opsional) Jika konfigurasi terkait virtio belum lengkap, jalankan perintah berikut secara berurutan untuk memodifikasi file .config:
make oldconfig make prepare make scripts make make installPeriksa apakah driver virtio telah diinstal:
find /lib/modules/"$(uname -r)"/ -name "virtio*" | grep -E "virtio*" grep -E "virtio*" < /lib/modules/"$(uname -r)"/modules.builtinJika driver virtio telah diinstal, salah satu keluaran perintah berisi daftar file terkait virtio, seperti virtio_blk, virtio_pci, dan virtio_console, seperti yang ditunjukkan pada gambar berikut.
