オペレーティングシステムカーネルがvirtioドライバーをサポートしているカスタムイメージのみをAlibaba Cloud Elastic Compute Service (ECS) にインポートし、起動可能なECSインスタンスの作成に使用できます。 ソースサーバーのデータに基づいてカスタムイメージを作成するとき、またはカスタムイメージをインポートするときは、virtioドライバーがイメージにインストールされ、一時ファイルシステムに追加されていることを確認してください。 virtioドライバがインストールされていない場合は、ドライバをインストールします。
次の手順を実行して、ソースサーバーのオペレーティングシステムカーネルがvirtioドライバーをサポートしているかどうかを確認し、チェック結果に基づいてアクションを実行できます。
チェック結果に基づいて次の操作を実行します。
ソースサーバーのオペレーティングシステムカーネルがvirtioドライバーをサポートしているかどうかを確認する
次のコマンドを実行して、ソースサーバーのオペレーティングシステムカーネルがvirtioドライバーをサポートしているかどうかを確認し、カスタムイメージ用のvirtioドライバーをインストールするか、一時ファイルシステムにドライバーを追加するかを判断します。
grep -i virtio /boot/config-$(uname -r)
コマンド出力の表示
コマンド出力のCONFIG_VIRTIO_BLK
およびCONFIG_VIRTIO_NET
パラメーターの値を確認します。
パラメーター値がyの場合、virtioドライバーは期待どおりにインストールされます。 このトピックの [参照] セクションで説明されている操作を実行します。
パラメーターが存在しない場合、virtioドライバーはインストールされません。 ドライバをインストールします。 詳細については、このトピックの「virtioドライバーのインストール」をご参照ください。
パラメーター値がmの場合、または一方のパラメーター値がyで、もう一方のパラメーター値がmの場合は、virtioドライバーがサポートされます。 次のいずれかの操作を実行します。
パラメーター値がmの場合、virtioドライバーがサポートされます。 次のいずれかのコマンドを実行して、virtioドライバが一時ファイルシステムに追加されているかどうかを確認します。
一方のパラメーター値がyで、もう一方のパラメーター値がmの場合、値がyのvirtioドライバーがカーネルにコンパイルされ、期待どおりにインストールされます。 次のいずれかのコマンドを実行して、値がmのvirtioドライバが一時ファイルシステムに追加されているかどうかを確認します。
CentOSシリーズ
lsinitrd /boot/initramfs-$(uname -r).img | grep virtio
上の図に示す出力と同様のコマンド出力が返されると、virtioドライバが一時ファイルシステムに追加されます。 この場合、このトピックの [参照] セクションで説明されている操作を実行します。
virtioドライバーが一時ファイルシステムに追加されていない場合は、このトピックの「一時ファイルシステムへのvirtioドライバーの追加」セクションで説明されている操作を実行します。
CONFIG_VIRTIO_BLK
およびCONFIG_VIRTIO_NET
パラメーターの値の一方がyで、もう一方がmの場合、値がmのvirtioドライバーが一時ファイルシステムに追加されているかどうかだけを確認する必要があります。
UbuntuまたはDebianシリーズ
lsinitramfs /boot/initrd.img-$(uname -r)|grep virtio
上の図に示す出力と同様のコマンド出力が返されると、virtioドライバが一時ファイルシステムに追加されます。 この場合、このトピックの [参照] セクションで説明されている操作を実行します。
virtioドライバーが一時ファイルシステムに追加されていない場合は、このトピックの「一時ファイルシステムへのvirtioドライバーの追加」セクションで説明されている操作を実行します。
CONFIG_VIRTIO_BLK
およびCONFIG_VIRTIO_NET
パラメーターの値の一方がyで、もう一方がmの場合、値がmのvirtioドライバーが一時ファイルシステムに追加されているかどうかだけを確認する必要があります。
virtioドライバーを一時ファイルシステムに追加する
ソースサーバーのオペレーティングシステムカーネルがvirtioドライバーをサポートしているが、virtioドライバーが一時ファイルシステムに追加されていない場合は、一時ファイルシステムにドライバーを追加します。 移行元サーバーのオペレーティングシステムに基づいて、次のコマンドを1つ実行します。
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キーを押してInsertモードに入り、次のコンテンツをファイルに追加します。
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
説明コマンドを実行した後、
エコー $?
コマンドを実行して、値0が返されるかどうかを確認します。 値0が返された場合、initrdは期待どおりに再生成されます。 export OSS_IMPORT_HOME=<dir> を実行するか、システム設定ファイル $HOME/.bashrc を変更してディレクトリを設定することもできます。lsinitrd /boot/initramfs-$(uname -r).img | grep virtio
コマンドを実行して、virtioドライバーが一時ファイルシステムに期待どおりに追加されているかどうかを確認します。
DebianまたはUbuntu
次のコマンドを実行して、modulesファイルを開きます。
vim /etc/initramfs-tools/modules
Iキーを押してInsertモードに入り、次のコンテンツをファイルに追加します。
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
説明コマンドを実行した後、
エコー $?
コマンドを実行して、値0が返されるかどうかを確認します。 値0が返された場合、initrdは期待どおりに再生成されます。 また、lsinitramfs /boot/initrd.img-$(uname -r)| grep virtio
コマンドを実行して、virtioドライバが一時ファイルシステムに期待どおりに追加されているかどうかを確認することもできます。
SUSEまたはopenSUSE
SUSE 12 SP1またはopenSUSE 13より前のバージョン
次のコマンドを実行して、カーネルファイルを開きます。
vim /etc/sysconfig/kernel
Iキーを押してInsertモードに入り、次のコンテンツをファイルに追加します。
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キーを押してInsertモードに入り、次のコンテンツをファイルに追加します。
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
コマンドを実行した後、エコー $?
コマンドを実行して、値0が返されるかどうかを確認します。 値0が返された場合、initrdは期待どおりに再生成されます。 export OSS_IMPORT_HOME=<dir> を実行するか、システム設定ファイル $HOME/.bashrc を変更してディレクトリを設定することもできます。
lsinitrd /boot/initramfs-$(uname -r).img | grep virtio
コマンドを実行して、virtioドライバーが一時ファイルシステムに期待どおりに追加されているかどうかを確認します。
virtioドライバーのインストール
Red HatおよびCentOS 5では、virtioドライバーをインストールする前に、カーネルバージョンを5.11にアップグレードすることをお勧めします。
手順1: カーネルインストールパッケージをダウンロードする
この例では、linux-4.4.24.tar.gzのカーネルインストールパッケージがCentOSオペレーティングシステムで使用されています。 オペレーティングシステムのカーネルバージョンに基づいてコマンドを変更する必要があります。
次のコマンドを実行して、カーネルのコンパイルに必要なコンポーネントをインストールします。
yum install -y ncurses-devel gcc make wget
次のコマンドを実行して、オペレーティングシステムのカーネルバージョンを照会します。 この例では、カーネルのバージョンは4.4.24-2.al7.x86_64です。
uname -r
に移動します。Go to the/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キーを押してオプションのリストを表示します。
カーネルベースの仮想マシン (KVM) サポートオプションが選択されていることを確認します。
プロセッサの種類と機能のオプションを設定します。
メインメニューに戻り、上下の矢印キーを押してプロセッサの種類と機能を選択し、Enterキーを押してオプションのリストを表示します。
スペースバーキーを押してParahivalized guest supportを選択し、Enterキーを押してオプションのリストを表示します。
KVM準仮想化クロックおよびKVMゲストサポートオプションが選択されていることを確認します。
[デバイスドライバー] オプションを設定します。
メインメニューに戻り、上下の矢印キーを押してデバイスドライバを選択し、Enterキーを押してオプションのリストを表示します。
スペースバーキーを押してデバイスをブロックを選択し、Enterキーを押してオプションのリストを表示します。
Virtio block driverオプションが選択されていることを確認します。
[デバイスドライバー] オプションのリストに戻り、上下の矢印キーを押して [ネットワークデバイスのサポート] を選択し、[入力] キーを押してオプションのリストを表示します。
Virtio network driverオプションが選択されていることを確認します。
を押してください。Escキーを押してカーネル構成ウィンドウを終了し、はいを保存するためのプロンプトで. 設定ファイルを作成します。
virtio関連の設定が完了しているかどうかを確認します。
詳細については、このトピックの「ソースサーバーのオペレーティングシステムカーネルがvirtioドライバーをサポートしているかどうかの確認」をご参照ください。
(オプション)virtio関連の設定が不完全な場合は、次のコマンドを順番に実行して、. 設定ファイル:
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ドライバーがインストールされている場合、次の図に示すように、コマンド出力の1つにvirtio関連のファイル (virtio_blk、virtio_pci、virtio_consoleなど) のリストが含まれます。
リファレンス
virtioドライバーをLinuxオペレーティングシステムにインストールした後、次の操作を実行できます。