オペレーティングシステムカーネルが virtio ドライバーをサポートするカスタムイメージのみを Alibaba Cloud Elastic Compute Service (ECS) にインポートし、そのイメージを使用して起動可能な ECS インスタンスを作成できます。ソースサーバーに基づいてカスタムイメージを作成する場合、またはカスタムイメージをインポートする場合は、virtio ドライバーがイメージにインストールされ、一時ファイルシステムに追加されていることを確認してください。
手順 1:ソースサーバーのオペレーティングシステムカーネルが virtio ドライバーをサポートしているかどうかを確認する
次のコマンドを実行して、ソースサーバーのオペレーティングシステムカーネルが virtio ドライバーをサポートしているかどうかを確認します。これは、カスタムイメージに virtio ドライバーをインストールするか、ドライバーを一時ファイルシステムに追加するかを判断するのに役立ちます。
grep -i virtio /boot/config-$(uname -r)
次のコマンド出力が返されます。
コマンド出力を分析します。
コマンド出力の
CONFIG_VIRTIO_BLK
パラメーターとCONFIG_VIRTIO_NET
パラメーターを確認します。パラメーター値が y の場合、virtio ドライバーはインストールされています。 イメージが要件を満たしているかどうかを確認し、Linux イメージファイルを取得します。
パラメーターが表示されない場合、virtio ドライバーはインストールされていません。 virtio ドライバーをインストールする。
パラメーター値が m の場合、または一方のパラメーター値が y で、もう一方のパラメーター値が m の場合、virtio ドライバーはサポートされています。 virtio ドライバーが一時ファイルシステムに追加されているかどうかを確認する。
手順 2:virtio ドライバーが一時ファイルシステムに追加されているかどうかを確認する
CONFIG_VIRTIO_BLK
パラメーターと CONFIG_VIRTIO_NET
パラメーターの値が m の場合、または一方のパラメーター値が y で、もう一方のパラメーター値が m の場合、次のコマンドのいずれかを実行して、virtio ドライバーが一時ファイルシステムに追加されているかどうかを確認します。
CentOS シリーズ
lsinitrd /boot/initramfs-$(uname -r).img | grep virtio
Ubuntu または Debian シリーズ
lsinitramfs /boot/initrd.img-$(uname -r)|grep virtio
上記のコマンド出力は、virtio ドライバーが一時ファイルシステムに追加されていることを示しています。 手順 3 をスキップし、イメージが要件を満たしているかどうかを確認してから、Linux イメージファイルを取得できます。
CONFIG_VIRTIO_BLK
またはCONFIG_VIRTIO_NET
のいずれかの値が y で、もう一方が m の場合、値が m の virtio ドライバーが一時ファイルシステムに追加されているかどうかを確認します。 詳細については、「手順 3:virtio ドライバーを一時ファイルシステムに追加する」をご参照ください。
手順 3:virtio ドライバーを一時ファイルシステムに追加する
ソースサーバーのオペレーティングシステムカーネルが virtio ドライバーをサポートしているが、virtio ドライバーが一時ファイルシステムに追加されていない場合は、ドライバーを一時ファイルシステムに追加します。 ソースサーバーのオペレーティングシステムに基づいて、次のコマンドセットのいずれかを実行します。
CentOS 6、Anolis OS 7、AlmaLinux 8、または Fedora 33
オペレーティングシステムのバージョンが CentOS 6、Anolis OS 7、AlmaLinux 8、Fedora 33 以降で、カーネルバージョンが 2.6.24 以降の場合は、次のコマンドを実行して一時ファイルシステムを修復します。 uname -r
コマンドを実行して、カーネルバージョンを確認できます。
次のコマンドを実行して、dracut.conf ファイルを開きます。
vim /etc/dracut.conf
I キーを押して挿入モードに入り、ファイルに次のコンテンツを追加します。
add_drivers+="virtio_blk virtio_net"
Esc キーを押し、:wq と入力して Enter キーを押すと、ファイルを保存して閉じることができます。
説明CONFIG_VIRTIO_BLK
とCONFIG_VIRTIO_NET
の値のいずれかが y で、もう一方が m の場合は、値が m の virtio ドライバーのみをファイルに追加する必要があります。 たとえば、CONFIG_VIRTIO_NET
パラメーターの値が m の場合は、add_drivers+="virtio_net"
のみをファイルに書き込みます。次のコマンドを実行して、initrd を再生成します。
dracut -f
説明コマンドを実行した後、
echo $?
コマンドを実行して、値 0 が返されるかどうかを確認できます。返された場合、initrd は想定どおりに再生成されています。また、次のことも実行できます。lsinitrd /boot/initramfs-$(uname -r).img | grep virtio
コマンドを実行して、virtio ドライバーが一時ファイルシステムに想定どおりに追加されているかどうかを確認します。
Debian または Ubuntu
次のコマンドを実行して、modules ファイルを開きます。
vim /etc/initramfs-tools/modules
I キーを押して挿入モードに入り、ファイルに次のコンテンツを追加します。
virtio_blk virtio_net
Esc キーを押し、:wq と入力して Enter キーを押すと、ファイルを保存して閉じることができます。
説明CONFIG_VIRTIO_BLK
とCONFIG_VIRTIO_NET
の値のいずれかが y で、もう一方が m の場合は、値が m の virtio ドライバーのみをファイルに追加する必要があります。 たとえば、CONFIG_VIRTIO_NET
パラメーターの値が m の場合は、virtio_net
のみをファイルに追加します。次のコマンドを実行して、initrd を再生成します。
update-initramfs -u
説明コマンドを実行した後、
echo $?
コマンドを実行して、値 0 が返されるかどうかを確認できます。 返される場合、initrd は想定どおりに再生成されます。 また、lsinitramfs /boot/initrd.img-$(uname -r)|grep virtio
コマンドを実行して、virtio ドライバーが一時ファイルシステムに想定どおりに追加されているかどうかを確認することもできます。
SUSE または openSUSE
SUSE 12 SP1 または openSUSE 13 より前のバージョン
次のコマンドを実行して、kernel ファイルを開きます。
vim /etc/sysconfig/kernel
I キーを押して挿入モードに入り、ファイルに次のコンテンツを追加します。
INITRD_MODULES="virtio_blk virtio_net"
Esc キーを押し、:wq と入力して Enter キーを押すと、ファイルを保存して閉じることができます。
説明CONFIG_VIRTIO_BLK
とCONFIG_VIRTIO_NET
の値のいずれかが y で、もう一方が m の場合は、値が m の virtio ドライバーのみをファイルに追加する必要があります。 たとえば、CONFIG_VIRTIO_NET
パラメーターの値が m の場合は、INITRD_MODULES="virtio_net"
のみをファイルに書き込みます。次のコマンドを実行して、initrd を再生成します。
update-initramfs -u
SUSE 12 SP1、OpenSUSE 13 以降
次のコマンドを実行して、dracut.conf ファイルを開きます。
vim /etc/dracut.conf
I キーを押して挿入モードに入り、ファイルに次のコンテンツを追加します。
add_drivers+="virtio_blk virtio_net"
Esc キーを押し、:wq と入力して Enter キーを押すと、ファイルを保存して閉じることができます。
説明CONFIG_VIRTIO_BLK
とCONFIG_VIRTIO_NET
の値のいずれかが y で、もう一方が m の場合は、値が m の virtio ドライバーのみをファイルに追加する必要があります。 たとえば、CONFIG_VIRTIO_NET
パラメーターの値が m の場合は、add_drivers+="virtio_net"
のみをファイルに書き込みます。次のコマンドを実行して、initrd を再生成します。
dracut -f
コマンドを実行した後、echo $?
コマンドを実行して、値 0 が返されるかどうかを確認できます。返された場合、initrd は想定どおりに再生成されています。また、次のことも実行できます。
lsinitrd /boot/initramfs-$(uname -r).img | grep virtio
コマンドを実行して、virtio ドライバーが一時ファイルシステムに想定どおりに追加されているかどうかを確認します。
手順 4:virtio ドライバーをインストールする
Red Hat および CentOS 5 の場合、virtio ドライバーをインストールする前に、カーネルバージョンを 5.11 にアップグレードすることをお勧めします。
サブ手順 1:カーネルインストールパッケージをダウンロードする
この例では、CentOS オペレーティングシステムで linux-4.4.24.tar.gz カーネルインストールパッケージを使用しています。 オペレーティングシステムのカーネルバージョンに基づいてコマンドを変更してください。
次のコマンドを実行して、カーネルのコンパイルに必要なコンポーネントをインストールします。
yum install -y ncurses-devel gcc make wget
次のコマンドを実行して、オペレーティングシステムのカーネルバージョンをクエリします。 この例では、カーネルバージョンは 4.4.24-2.al7.x86_64 です。
uname -r
Index of /pub/linux/kernel/ ページで、カーネルバージョンリポジトリのダウンロード URL をクエリします。
この例では、次の図に示すように、linux-4.4.24.tar.gz のダウンロード URL は
https://www.kernel.org/pub/linux/kernel/v4.x/linux-4.4.24.tar.gz
です。次のコマンドを実行して、インストールパッケージをダウンロードします。
cd /usr/src/ wget https://www.kernel.org/pub/linux/kernel/v4.x/linux-4.4.24.tar.gz
次のコマンドを実行して、インストールパッケージを解凍し、シンボリックリンクを作成します。
tar -xzf linux-4.4.24.tar.gz ln -s linux-4.4.24 linux cd /usr/src/linux
サブ手順 2:カーネルをコンパイルする
次のコマンドを順番に実行して、カーネルをコンパイルします。
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
次のページで virtio 関連の構成を完了します。
説明アスタリスク (*) を含む構成を選択すると、virtio ドライバーはカーネルにコンパイルされます。 m を含む構成を選択すると、virtio ドライバーはモジュールにコンパイルされ、ドライバーの起動時にモジュールがカーネルに挿入されます。
[仮想化] オプションを構成します。
スペースバーキーを押して [仮想化] を選択し、Enter キーを押してオプションを表示します。
Kernel-based Virtual Machine (KVM) サポートオプションが選択されていることを確認します。
[プロセッサの種類と機能] オプションを構成します。
メインメニューに戻り、上下の矢印キーを押して [プロセッサの種類と機能] を選択し、Enter キーを押してオプションを表示します。
スペースバーキーを押して [準仮想化ゲストのサポート] を選択し、Enter キーを押してオプションを表示します。
[KVM 準仮想化クロック] オプションと [KVM ゲストのサポート] オプションが選択されていることを確認します。
[デバイスドライバー] オプションを構成します。
メインメニューに戻り、上下の矢印キーを押して [デバイス ドライバー] を選択し、Enter キーを押してオプションを表示します。
スペースバーキーを押して [ブロック デバイス] を選択し、Enter キーを押してオプションを表示します。
[Virtio ブロックドライバー] オプションが選択されていることを確認します。
[デバイスドライバー] オプションリストに戻り、上下の矢印キーを押して [ネットワークデバイスのサポート] を選択し、Enter キーを押してオプションを表示します。Enter キーを押します
[Virtio ネットワークドライバー] オプションが選択されていることを確認します。
Esc キーを押してカーネル構成ウィンドウを終了し、プロンプトで [はい] を選択して .config ファイルを保存します。
virtio 関連の構成が完了しているかどうかを確認します。
詳細については、「手順 1:ソースサーバーのオペレーティングシステムカーネルが virtio ドライバーをサポートしているかどうかを確認する」をご参照ください。
(オプション) virtio 関連の構成が不完全な場合は、次のコマンドを順番に実行して .config ファイルを変更します。
make oldconfig make prepare make scripts make make install
次のコマンドを実行して、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 関連ファイルのリストが含まれています。