tencent cloud

Cloud Virtual Machine

最新情報とお知らせ
製品情報
パブリックイメージの更新情報
OSの公式サポート終了計画
製品に関するお知らせ
製品概要
CVM概要
製品の強み
基本概念
リージョンとゾーン
初心者ガイド
Service Regions and Service Providers
製品の課金
課金概要
課金モデル
課金項目
課金モデルの変更
購入インスタンス
仕様変更の料金説明
料金未払いに関する説明
クイックスタート
カスタム設定によるLinuxインスタンスの購入
カスタム設定によるWindowsインスタンスの購入
ユーザーガイド
操作ガイド一覧
ご利用制限一覧
インスタンス
スポットインスタンス
リザーブドインスタンス
イメージ
ストレージ
バックアップと復元
ネットワーク
セキュリティ
パスワード/キー
監視とアラート
運用管理
便利な機能
サーバー移行
オンライン移行
オフライン移行
移行に関するご相談
トラブルシューティング
CVMインスタンスにログインできない原因や対処法
Windowsインスタンスのログインに関する障害
Linuxインスタンスのログインに関する障害
その他のインスタンスログインに関する障害
インスタンス実行時の障害
Linuxインスタンスのメモリに関する障害
ネットワーク障害
実践チュートリアル
CVMの選定ガイド
環境構築
ウェブサイトの構築
アプリケーションの構築
可視化ページの構築
ローカルファイルをCVMへアップロード
ネットワークパフォーマンステスト
その他の実践チュートリアル
API リファレンス
History
Introduction
API Category
Making API Requests
Region APIs
Instance APIs
Cloud Hosting Cluster APIs
Image APIs
Instance Launch Template APIs
Placement Group APIs
Key APIs
Security Group APIs
Network APIs
Data Types
Error Codes
セキュリティとコンプライアンス
Cloud Access Management(CAM)
ネットワーク
よくあるご質問
リージョンとアベイラビリティゾーンに関するご質問
課金クラス
インスタンスに関するご質問
ストレージに関するご質問
イメージに関するご質問
サーバー移行について
ネットワークに関するご質問
セキュリティに関するご質問
OSに関するご質問
運用と監視に関するご質問
CAMに関するご質問
NTPサービスに関するご質問
適用シナリオに関するご質問
Agreements
CVM Service Level Agreements
Red Hat Enterprise Linux Image Service Agreement
Public IP Service Level Agreement
用語集
ドキュメントCloud Virtual Machineユーザーガイドイメージイメージの作成LinuxシステムにおけるVirtioドライバのチェック

LinuxシステムにおけるVirtioドライバのチェック

PDF
フォーカスモード
フォントサイズ
最終更新日: 2023-05-10 17:07:04

概要

CVMシステムカーネルは、Tencent Cloud上で正常に動作するために、Virtioドライバー(ブロックデバイスドライバーvirtio_blkとNICドライバーvirtio_netを含む)をサポートする必要があります。カスタムイメージで作成されたCVMインスタンスが起動しない不具合を未然に防ぐには、イメージをインポートする前に、イメージがソースサーバーでVirtioドライバーをサポートしているかどうかを確認してください。このドキュメントでは、CentOSを例に、イメージをインポートする前に、イメージがVirtioドライバーをサポートしているかどうかを確認する方法を説明します。

操作手順

ステップ1:カーネルがVirtioドライバーをサポートしているかどうかの確認

次のコマンドを実行して、現在カーネルがVirtioドライバーをサポートしているかどうかを確認します。
grep -i virtio /boot/config-$(uname -r)
以下のような結果が返されます:


返された結果にパラメータCONFIG_VIRTIO_BLKとパラメータCONFIG_VIRTIO_NETの値がmである場合、ステップ2 を実行してください。
返された結果にパラメータCONFIG_VIRTIO_BLKとパラメータCONFIG_VIRTIO_NETの値がyである場合、このOSにVirtioドライバーが含まれていることを示し、カスタムイメージをTencent Cloudに直接インポートすることができます。操作の詳細については イメージのインポートの概要 をご参照ください。
返された結果にパラメータCONFIG_VIRTIO_BLKとパラメータCONFIG_VIRTIO_NETの情報がない場合、このOSのイメージをTencent Cloudにインポートできないことを意味します。カーネルをダウンロードしてコンパイル してください。

ステップ2:一時ファイルシステムにVirtioドライバーが含まれているかどうかの確認

ステップ1 でパラメーターの値がmである場合、さらに一時ファイルシステムinitramfsまたはinitrdにvirtioドライバーが含まれているかどうかを確認する必要があります。OSによって、対応するコマンドを実行してください。
CentOS 6/CentOS 7/CentOS 8/RedHat 6/RedHat 7の場合:
lsinitrd /boot/initramfs-$(uname -r).img | grep virtio
RedHat 5/CentOS 5の場合:
mkdir -p /tmp/initrd && cd /tmp/initrd
zcat /boot/initrd-$(uname -r).img | cpio -idmv
find . -name "virtio*"
Debian/Ubuntu の場合:
lsinitramfs /boot/initrd.img-$(uname -r) | grep virtio
以下のような結果が返されます:

つまり、Initramfsには、virtio_blkドライバーと、それに依存するvirtio.kovirtio_pci.koおよびvirtio_ring.koが含まれていることが分かり、カスタムイメージをTencent Cloudに直接インポートすることができます。操作の詳細については、イメージのインポートの概要 をご参照ください。 Initramfsまたはinitrdvirtioドライバーが含まれていない場合、ステップ3 を実行してください。

ステップ3:一時ファイルシステムの再構成

ステップ2 で一時ファイルシステムinitramfsまたはinitrdvirtioドライバーが含まれていないことが判明した場合は、一時ファイルシステムinitramfsまたはinitrdを再構成してvirtioドライバーを含むようにする必要があります。OSによって、対応する操作を選択してください。
CentOS 8/RedHat 8 の場合:
mkinitrd -f --allow-missing --with=virtio_blk --preload=virtio_blk --with=virtio_net --preload=virtio_net --with=virtio_console --preload=virtio_console /boot/initramfs-$(uname -r).img $(uname -r)
CentOS 6/CentOS 7/RedHat 6/RedHat 7の場合:
cp /boot/initramfs-$(uname -r).img /boot/initramfs-$(uname -r).img.bak
mkinitrd -f --with=virtio_blk --with=virtio_pci /boot/initramfs-$(uname -r).img $(uname -r)
RedHat 5/CentOS 5の場合:
cp /boot/initrd-$(uname -r).img /boot/initrd-$(uname -r).img.bak
mkinitrd -f --with=virtio_blk --with=virtio_pci /boot/initrd-$(uname -r).img $(uname -r)
Debian/Ubuntu の場合:
echo -e "virtio_pci\\nvirtio_blk" >> /etc/initramfs-tools/modules
update-initramfs -u

付録

カーネルのダウンロードとコンパイル

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

1. 次のコマンドを実行して、カーネルのコンパイルに必要なコンポーネントをインストールします。
yum install -y ncurses-devel gcc make wget
2. 次のコマンドを実行して、現在システムで使用されているカーネルバージョンを確認します。
uname -r
以下のような結果が返され、現在システムで使用されているカーネルバージョンが2.6.32-642.6.2.el 6.x 86_64であることを示します。


3. Linuxカーネルのダウンロードページ に進み、対応するカーネルバージョンのソースコードをダウンロードします。 例えば、2.6.32-642.6.2.el 6.x 86_64バージョンのカーネルは、linux-2.6.32.tar.gzのインストールパッケージをダウンロードし、そのダウンロードパスはhttps://mirrors.edge.kernel.org/pub/linux/kernel/v2.6/linux-2.6.32.tar.gzです。
4. 次のコマンドを実行して、ディレクトリを切り替えます。
cd /usr/src/
5. 次のコマンドを実行して、インストールパッケージをダウンロードします。
wget https://mirrors.edge.kernel.org/pub/linux/kernel/v2.6/linux-2.6.32.tar.gz
6. 次のコマンドを実行して、インストールパッケージを解凍します。
tar -xzf linux-2.6.32.tar.gz
7. 次のコマンドを実行して、接続を確立します。
ln -s linux-2.6.32 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
「Linux Kernel vX.X.XX Configuration」画面に入ります。以下の通りです。

「Linux Kernel vX.X.XX Configuration」画面が表示されない場合は、
説明:
「Linux Kernel vX.X.XX Configuration」画面が表示されない場合は、ステップ18を実行してください。 「Linux Kernel vX.X.XX Configuration」画面に入ります。
「Tab」または「↑」、「↓」方向キーを押してカーソルを移動します。
「Enter」キーを押して、カーソルで選択された項目を選択または実行します。
スペースキーを押して、カーソルで選択された項目を選択し、「*」はカーネルにコンパイルすることを表し、「M」はモジュールとしてコンパイルすることを表します。
2. 「↓」キーを押してカーソルを「Virtualization」に移動し、スペースキーを押して「Virtualization」を選択します。
3. 「Enter」を押してVirtualization詳細画面に入ります。
4. Virtualization詳細画面では、Kernel-based Virtual Machine(KVM)supportオプションがチェックされているかどうかを確認します。以下の通りです。

チェックされていない場合は、スペースキーを押して「Kernel-based Virtual Machine(KVM)support」オプションにチェックを入れてください。
5. 「Esc」を押して「Linux Kernel vX.X.XX Configuration」主画面に戻ります。
6. 「↓」キーを押してカーソルを「Processor type and features」に移動し、「Enter」キーを押してProcessor type and features詳細画面に入ります。
7. 「↓」キーを押してカーソルを「Paravirtualized guest support」に移動し、「Enter」キーを押してParavirtualized guest support詳細画面に入ります。
8. Paravirtualized guest support詳細画面では、「KVM paravirtualized clock」と「KVM Guest support」がチェックされているかどうかを確認します。以下の通りです。

チェックされていない場合は、スペースキーを押して「KVM paravirtualized clock」と「KVM Guest support」オプションにチェックを入れてください。
9. 「Esc」を押して「Linux Kernel vX.X.XX Configuration」主画面に戻ります。
10. 「↓」キーを押してカーソルを「Device Drivers」に移動し、「Enter」キーを押してDevice Drivers詳細画面に入ります。
11. 「↓」キーを押してカーソルを「Block devices」に移動し、「Enter」キーを押してBlock devices詳細画面に入ります。
12. Block devices詳細画面では、「Virtio block driver(EXPERIMENTAL)」がチェックされているかどうかを確認します。以下の通りです。

チェックされていない場合は、スペースキーを押して「Virtio block driver(EXPERIMENTAL)」オプションにチェックを入れてください。
13. 「Esc」を押してDevice Drivers詳細画面に戻ります。
14. 「↓」キーを押してカーソルを「Network device support」に移動し、「Enter」キーを押してNetwork device support詳細画面に入ります。
15. Network device support詳細画面では、「Virtio network driver(EXPERIMENTAL)」がチェックされているかどうかを確認します。以下の通りです。

チェックされていない場合は、スペースキーを押して「Virtio network driver(EXPERIMENTAL)」オプションにチェックを入れてください。
16. 「Esc」キーを押してカーネル設定画面を終了し、「YES」を選択して.configファイルを保存します。
17. ステップ1:カーネルがVirtioドライバーをサポートしているかどうかの確認をご参照し、Virtioドライバーが正しく設定されているかどうかを検証します。
18.
オプション
)次のコマンドを実行し、.configファイルを手動で編集します。
説明:
次のいずれかの条件を満たしている場合は、次の操作を実行することをお勧めします。
チェック後、カーネルにはVirtioドライバーに関する設定情報がないことが発見された場合。
カーネルをコンパイルする際に、カーネル設定画面に入ることができないか、.configファイルが保存されていない場合。
make oldconfig
make prepare
make scripts
make
make install
19. 次のコマンドを順次実行して、Virtioドライバーのインストール状況を確認します。
find /lib/modules/"$(uname -r)"/ -name "virtio.*" | grep -E "virtio.*"
grep -E "virtio.*" < /lib/modules/"$(uname -r)"/modules.builtin
任意のコマンドの戻り結果がvirtio_blkvirtio_pci.virtio_consoleなどのファイルリストを出力した場合、Virtioドライバーが正しくインストールされていることを示します。

ヘルプとサポート

この記事はお役に立ちましたか?

フィードバック