安裝virtio驅動 & 升級內核


 

為避免部分服務器、虛擬機或者雲主機的操作系統在導入自定義鏡像后,創建的ECS實例無法啟動,您需要在導入鏡像前檢查是否需要在源服務器中安裝virtio驅動。

背景信息

根據您源服務器的操作系統,判斷是否需要手動安裝virtio驅動。
 
源服務器的操作系統 說明
  • Windows Server 2008
  • Windows Server 2012
  • Windows Server 2016
  • Windows Server Version ****(半年渠道)
  • Windows Server 2019及以上版本
  • CentOS 6/7/8及以上版本
  • Ubuntu 12/14/16/18及以上版本
  • Debian 7/8/9/10及以上版本
  • SUSE 11/12/15及以上版本
如果源服務器的操作系統如左側所示,在導入自定義鏡像時,阿里雲將會自動處理virtio驅動。

默認已安裝virtio驅動的系統,需要注意修復臨時文件系統。具體操作,請參見步驟二:修復臨時文件系統

其他操作系統 如果源服務器的操作系統為其他Linux版本,請根據以下步驟安裝virtio驅動:
  1. 步驟一:檢查服務器內核是否支持virtio驅動
  2. 步驟二:修復臨時文件系統
  3. 步驟三:下載內核安裝包
  4. 步驟四:編譯內核

步驟一:檢查服務器內核是否支持virtio驅動

  1. 運行grep -i virtio /boot/config-$(uname -r)檢查當前操作系統的內核是否支持virtio驅動。

    請檢查CONFIG_VIRTIO_BLK和CONFIG_VIRTIO_NET這兩個參數。

     
    檢查結果 說明
    沒有這兩個參數 表示該操作系統沒有安裝virtio相關驅動,暫時不能直接導入阿里雲雲平台。您需要為您的服務器編譯安裝virtio驅動。具體請參見步驟三:下載內核安裝包步驟四:編譯內核
    參數取值為m 執行下一步。
    參數取值為y 表示包含了virtio驅動,您可以直接導入自定義的鏡像到阿里雲。詳情請參見導入鏡像必讀導入自定義鏡像
  2. 執行命令lsinitrd /boot/initramfs-$(uname -r).img | grep virtio確認virtio驅動是否包含在臨時文件系統initramfs或者initrd中。
    說明
    • 截圖表明,initramfs已經包含了virtio_blk驅動,以及其所依賴的virtio.ko、virtio_pci.ko和virtio_ring.ko,您可以直接導入自定義的鏡像到阿里雲。詳情請參見導入鏡像必讀導入自定義鏡像
    • 如果臨時文件系統initramfs沒有包含virtio驅動,則需要修復臨時文件系統。

步驟二:修復臨時文件系統

通過檢查,發現源服務器內核支持virtio驅動,但是臨時文件系統initramfs或者initrd中沒有包含virtio驅動時,需要修復臨時文件系統。以CentOS等為例。
  • CentOS/RedHat 5
    mkinitrd -f --allow-missing \ --with=xen-vbd --preload=xen-vbd \ --with=xen-platform-pci --preload=xen-platform-pci \ --with=virtio_blk --preload=virtio_blk \ --with=virtio_pci --preload=virtio_pci \ --with=virtio_console --preload=virtio_console \
  • CentOS/RedHat 6/7
    mkinitrd -f --allow-missing \ --with=xen-blkfront --preload=xen-blkfront \ --with=virtio_blk --preload=virtio_blk \ --with=virtio_pci --preload=virtio_pci \ --with=virtio_console --preload=virtio_console \ /boot/initramfs-$(uname -r).img $(uname -r)
  • Debian/Ubuntu
    echo -e 'xen-blkfront\nvirtio_blk\nvirtio_pci\nvirtio_console' >> \ /etc/initramfs-tools/modules mkinitramfs -o /boot/initrd.img-$(uname -r)"

步驟三:下載內核安裝包

說明 本章節以linux-4.4.24.tar.gz為例,您需要修改為操作系統內核對應的版本。
  1. 運行yum install -y ncurses-devel gcc make wget安裝編譯內核的必要組件。
  2. 運行uname -r查詢當前系統使用的內核版本,如示例中的4.4.24-2.a17.x86_64。
  3. 前往Linux內核列表頁面查看對應的內核版本源碼的下載地址。
    如下圖示例中的4.4.24開頭的linux-4.4.24.tar.gz的下載地址為https://www.kernel.org/pub/linux/kernel/v4.x/linux-4.4.24.tar.gz 。
  4. 運行cd /usr/src/切換目錄。
  5. 運行wget https://www.kernel.org/pub/linux/kernel/v4.x/linux-4.4.24.tar.gz下載安裝包。
  6. 運行tar -xzf linux-4.4.24.tar.gz解壓安裝包。
  7. 運行ln -s linux-4.4.24 linux建立鏈接。
  8. 運行cd /usr/src/linux切換目錄。

步驟四:編譯內核

  1. 依次運行以下命令編譯內核。
    make mrproper symvers_path=$(find /usr/src/ -name "Module.symvers") test -f $symvers_path && cp $symvers_path . cp /boot/config-$(uname -r) ./.config make menuconfig
  2. 出現以下界面時,開始打開virtio相關配置:
    說明 選 *配置表示編譯到內核,選m配置表示編譯為模塊。
    1. 使用空格勾選Virtualization項。
      確認是否勾選了KVM(Kernel-based Virtual Machine)選項。
      Processor type and features ---> [*] Paravirtualized guest support ---> --- Paravirtualized guest support (128) Maximum allowed size of a domain in gigabytes [*] KVM paravirtualized clock [*] KVM Guest support
      Device Drivers  ---> [*] Block devices ---> <M> Virtio block driver (EXPERIMENTAL) -*- Network device support ---> <M> Virtio network driver (EXPERIMENTAL)
    2. 按下Esc鍵退出內核配置界面並根據彈窗提示保存.config文件。
    3. 檢查virtio相關配置是否已經正確配置。詳情請參見步驟一:檢查服務器內核是否支持virtio驅動
    4. 可選:若檢查后發現暫未設置virtio相關配置,運行以下命令手動編輯.config文件。
      make oldconfig make prepare make scripts make make install
    5. 運行以下命令查看virtio驅動的安裝情況。
      find /lib/modules/"$(uname -r)"/ -name "virtio.*" | grep -E "virtio.*" grep -E "virtio.*" < /lib/modules/"$(uname -r)"/modules.builtin
      如果任一命令輸出virtio_blk、virtio_pci.virtio_console等文件列表,表明您已經正確安裝了virtio驅動。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM