すべてのプロダクト
Search
ドキュメントセンター

Elastic Compute Service:virtio ドライバーのインストール

最終更新日:Oct 23, 2025

virtio ドライバーは、仮想化環境に必要な高性能 I/O ドライバーです。カスタム Linux イメージが Alibaba Cloud で正常に起動できるようにするには、virtio ドライバーをインストールし、一時ファイルシステムに含める必要があります。そうしないと、イメージから作成された Elastic Compute Service (ECS) インスタンスは、仮想化ストレージおよびネットワークデバイスを検出できないため、起動に失敗する可能性があります。このトピックでは、Linux に virtio ドライバーをインストールする方法について説明します。

操作フロー

Linux システムに virtio ドライバーをインストールするための操作フローは次のとおりです。

手順

システムカーネルが virtio ドライバーをサポートしているかどうかの確認

  1. イメージを作成している仮想マシンで、次のコマンドを実行して、現在のシステムカーネルが virtio ドライバーをサポートしているかどうかを確認します。これにより、カスタムイメージに virtio ドライバーをインストールするか、ドライバーを一時ファイルシステムに追加するかを判断できます。

    grep -i virtio /boot/config-$(uname -r)

    次のコマンド出力が返されます。

    virtio_driver

  2. コマンド出力を分析します。

    コマンド出力の CONFIG_VIRTIO_BLK (virtio ブロックデバイスドライバー) と CONFIG_VIRTIO_NET (virtio ネットワークデバイスドライバー) パラメーターを確認します。

    • パラメーター値が y の場合: システムに virtio ドライバーが正しくインストールされており、ドライバーはカーネルにコンパイルされています。ドライバーは起動時に自動的にロードされます。このトピックの以降の手順を続行する必要はありません。

    • パラメーター値が m、または一方のパラメーター値が y でもう一方が m の場合: virtio ドライバーはカーネルモジュールとして存在します。virtio ドライバーを一時ファイルシステムに追加するだけで済みます。

    • パラメーターが表示されない場合: システムに virtio ドライバーがインストールされていません。virtio ドライバーを手動でインストールする必要があります。

virtio ドライバーを一時ファイルシステムに追加する

カーネルで CONFIG_VIRTIO_BLK=m または CONFIG_VIRTIO_NET=m が有効になっているが、これらのモジュールが一時ファイルシステム (initramfs) に追加されていない場合、システムは起動時に virtio ドライバーのロードに失敗し、仮想マシンがそれらを検出できなくなる可能性があります。

  1. CONFIG_VIRTIO_BLK および CONFIG_VIRTIO_NET パラメーターの値が m、または一方のパラメーター値が y でもう一方が m の場合は、次のいずれかのコマンドを実行して、virtio ドライバーが一時ファイルシステムに追加されているかどうかを確認します。

    CentOS シリーズ

    lsinitrd /boot/initramfs-$(uname -r).img | grep virtio

    image

    Debian シリーズ

    lsinitramfs /boot/initrd.img-$(uname -r)|grep  virtio

    image

    SUSE シリーズ

    lsinitrd /boot/initrd-$(uname -r)|grep virtio

    image

    • 上の図に示すように、出力に virtio_blk.kovirtio_net.ko の情報が含まれている場合、virtio ドライバーはすでに一時ファイルシステムに追加されています。このトピックの以降の手順を続行する必要はありません。

    • 出力に virtio_blk.kovirtio_net.ko の情報が含まれていない場合、または virtio_blk.kovirtio_net.ko のいずれか一方しか含まれていない場合は、次のステップに進んで virtio ドライバーを一時ファイルシステムに追加する必要があります。

  2. virtio ドライバーを一時ファイルシステムに追加します。

    CentOS シリーズ

    オペレーティングシステムのバージョンが CentOS 6、Anolis OS 7、AlmaLinux 8、Fedora 33 以降で、カーネルのバージョンが 2.6.24 より新しい場合 (カーネルのバージョンは uname -r コマンドを実行して確認できます)、次の操作を実行して virtio ドライバーを一時ファイルシステムに追加します。

    1. 次のコマンドを実行して dracut.conf ファイルを開きます。

      vim /etc/dracut.conf
    2. i キーを押して挿入モードに入り、次の内容をファイルに追加します。

      add_drivers+="virtio_blk virtio_net"

      Esc キーを押し、:wq と入力してから Enter キーを押して、ファイルを保存して閉じます。

      説明

      CONFIG_VIRTIO_BLKCONFIG_VIRTIO_NET の値の一方が y でもう一方が m の場合は、値が m の virtio ドライバーのみをファイルに追加する必要があります。たとえば、CONFIG_VIRTIO_NET パラメーターの値が m の場合は、ファイルに add_drivers+="virtio_net" のみを記述します。

    3. 次のコマンドを実行して initrd を再生成します。

      dracut -f
      説明

      コマンドを実行した後、echo $? コマンドを実行して値 0 が返されるかどうかを確認できます。返された場合、initrd は期待どおりに再生成されます。また、

      lsinitrd /boot/initramfs-$(uname -r).img | grep virtio コマンドを実行して、virtio ドライバーが期待どおりに一時ファイルシステムに追加されたかどうかを確認することもできます。

    Debian シリーズ

    1. 次のコマンドを実行して modules ファイルを開きます。

      vim /etc/initramfs-tools/modules
    2. i キーを押して挿入モードに入り、次の内容をファイルに追加します。

      virtio_blk
      virtio_net

      Esc キーを押し、:wq と入力してから Enter キーを押して、ファイルを保存して閉じます。

      説明

      CONFIG_VIRTIO_BLKCONFIG_VIRTIO_NET の値の一方が y でもう一方が m の場合は、値が m の virtio ドライバーのみをファイルに追加する必要があります。たとえば、CONFIG_VIRTIO_NET パラメーターの値が m の場合は、ファイルに virtio_net のみを追加します。

    3. 次のコマンドを実行して initrd を再生成します。

      update-initramfs -u
      説明

      コマンドを実行した後、echo $? コマンドを実行して値 0 が返されるかどうかを確認できます。返された場合、initrd は期待どおりに再生成されます。また、lsinitramfs /boot/initrd.img-$(uname -r)|grep virtio コマンドを実行して、virtio ドライバーが期待どおりに一時ファイルシステムに追加されたかどうかを確認することもできます。

    SUSE シリーズ

    • SUSE 12 SP1 または openSUSE 13 より前のバージョン

      1. kernel ファイルを開きます。

        vim /etc/sysconfig/kernel
      2. i キーを押して挿入モードに入り、次の内容をファイルに追加します。

        INITRD_MODULES="virtio_blk virtio_net"

        Esc キーを押し、:wq と入力してから Enter キーを押して、ファイルを保存して閉じます。

        説明

        CONFIG_VIRTIO_BLKCONFIG_VIRTIO_NET の値の一方が y でもう一方が m の場合は、値が m の virtio ドライバーのみをファイルに追加する必要があります。たとえば、CONFIG_VIRTIO_NET パラメーターの値が m の場合は、ファイルに INITRD_MODULES="virtio_net" のみを記述します。

      3. initrd を再生成します。

        mkinitrd
    • SUSE 12 SP1、OpenSUSE 13、またはそれ以降

      1. dracut.conf ファイルを開きます。

        vim /etc/dracut.conf
      2. i キーを押して挿入モードに入り、次の内容をファイルに追加します。

        add_drivers+="virtio_blk virtio_net"

        Esc キーを押し、:wq と入力してから Enter キーを押して、ファイルを保存して閉じます。

        説明

        CONFIG_VIRTIO_BLKCONFIG_VIRTIO_NET の値の一方が y でもう一方が m の場合は、値が m の virtio ドライバーのみをファイルに追加する必要があります。たとえば、CONFIG_VIRTIO_NET パラメーターの値が m の場合は、ファイルに add_drivers+="virtio_net" のみを記述します。

      3. initrd を再生成します。

        dracut -f
    説明

    コマンドを実行した後、echo $? コマンドを実行して値 0 が返されるかどうかを確認できます。返された場合、initrd は期待どおりに再生成されます。また、

    lsinitrd /boot/initrd-$(uname -r)|grep virtio コマンドを実行して、virtio ドライバーが期待どおりに一時ファイルシステムに追加されたかどうかを確認することもできます。

virtio ドライバーの手動インストール

ステップ 1: カーネルインストールパッケージのダウンロード

説明

この例では、CentOS オペレーティングシステムで linux-4.4.24.tar.gz カーネルインストールパッケージを使用します。お使いのオペレーティングシステムのカーネルバージョンに基づいてコマンドを修正してください。

  1. カーネルのコンパイルに必要なコンポーネントをインストールします。

    yum install -y ncurses-devel gcc make wget
  2. お使いのオペレーティングシステムのカーネルバージョンをクエリします。この例では、カーネルバージョンは 4.4.24-2.al7.x86_64 です。

    uname -r

    kernel_version

  3. Linux カーネルリストページに移動して、対応するカーネルバージョンのソースコードのダウンロード URL を見つけます。

    この例では、linux-4.4.24.tar.gz のダウンロード URL は https://www.kernel.org/pub/linux/kernel/v4.x/linux-4.4.24.tar.gz です。

    download

  4. インストールパッケージをダウンロードします。

    cd /usr/src/
    wget https://www.kernel.org/pub/linux/kernel/v4.x/linux-4.4.24.tar.gz
  5. インストールパッケージを解凍し、シンボリックリンクを作成します。

    tar -xzf linux-4.4.24.tar.gz
    ln -s linux-4.4.24 linux
    cd /usr/src/linux

ステップ 2: カーネルのコンパイル

  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
    説明

    make menuconfig コマンドの実行時にエラーメッセージが表示された場合は、それに基づいて問題をトラブルシューティングします。たとえば、ncurses-devel、bison、flex コンポーネントがインストールされていない場合は、次のコマンドを順番に実行してコンポーネントをインストールできます。

    yum install  ncurses-devel
    yum install  bison
    yum install  flex
  2. 次のページで virtio 関連の構成を完了します。

    説明

    アスタリスク (*) を含む構成を選択した場合、virtio ドライバーはカーネルにコンパイルされます。m を含む構成を選択した場合、virtio ドライバーはモジュールにコンパイルされます。

    1. Virtualization オプションを構成します。

      1. スペースバーキーを押して [Virtualization] を選択し、Enter キーを押してオプションを表示します。Select_Virtualization

      2. Kernel-based Virtual Machine (KVM) サポートオプションが選択されていることを確認します。Select_KVM

    2. Processor type and features オプションを構成します。

      1. メインメニューに戻り、上下の矢印キーを押して [Processor Type And Features] を選択し、Enter キーを押してオプションを表示します。

      2. スペースバーキーを押して [Paravirtualized Guest Support] を選択し、Enter キーを押してオプションを表示します。guest_support

      3. [KVM Paravirtualized Clock][KVM Guest Support] オプションが選択されていることを確認します。KVM

    3. Device Drivers オプションを構成します。

      1. メインメニューに戻り、上下の矢印キーを押して [Device Drivers] を選択し、Enter キーを押してオプションを表示します。

      2. スペースバーキーを押して [Block Devices] を選択し、Enter キーを押してオプションを表示します。

      3. [Virtio Block Driver] オプションが選択されていることを確認します。Virtio_block

      4. [Device Drivers] オプションリストに戻り、上下の矢印キーを押して [Network Device Support] を選択し、Enter キーを押してオプションを表示します。

      5. [Virtio Network Driver] オプションが選択されていることを確認します。Virtio_network

    4. Esc キーを押してカーネル構成ウィンドウを終了し、プロンプトで [Yes] を選択して .config ファイルを保存します。

    5. virtio 関連の構成が完了したかどうかを確認します。

    6. (オプション) virtio 関連の構成が不完全な場合は、次のコマンドを順番に実行して .config ファイルを修正します。

      make oldconfig
      make prepare
      make scripts
      make
      make install
    7. virtio ドライバーがインストールされているかどうかを確認します。

      find /lib/modules/"$(uname -r)"/ -name "virtio*" | grep -E "virtio*"
      grep -E "virtio*" < /lib/modules/"$(uname -r)"/modules.builtin

      virtio ドライバーがインストールされている場合、コマンド出力のいずれかに、次の図に示すように、virtio_blk、virtio_pci、virtio_console などの virtio 関連ファイルのリストが含まれます。确认结果