公式のドキュメントに従ってDebianテンプレートでカーネルを更新しようとしていますが、Qubes OS
何かが欠けているか、何か間違っているようです。
私はそれを使用していますgcc 6.3.0
。
キューブ文書:
Debian VMへのカーネルのインストール
DebianベースのVMでは、qubes-kernel-vm-supportパッケージをインストールする必要があります。このパッケージには、Qubes VMの起動に必要な追加のカーネルモジュールとinitramfsの追加エントリが含まれています(詳細については、テンプレートの実装を参照)。また、構成を作成するにはいくつかの GRUB ツールが必要です。注: dom0 が提供する実際の grub ブートローダは必要ありません。しかし、一つ持っていても悪くありません。
sudo apt-get update
sudo apt-get install qubes-kernel-vm-support grub2-common
次に、必要なカーネルをインストールします。デプロイカーネルパッケージ(linux-image-amd64パッケージ)を使用している場合は、initramfsとカーネルモジュールを自動的に処理する必要があります。そうでない場合、またはカーネルを手動でビルドする場合は、dkms と initramfs-tools を使用して次のようにします。
sudo dkms autoinstall -k <kernel-version> # replace this <kernel-version> with actual kernel version
sudo update-initramfs -u
カーネルをインストールしたら、GRUB構成を作成する必要があります。 VMの起動速度を上げるためにGRUB_TIMEOUTを下げるなど、/etc/default/grubでいくつかの設定を調整する必要があるかもしれません。その後、実際の構成を作成する必要があります。 Fedoraでは、update-grub2ツールを使用してこれを行うことができます。
sudo mkdir /boot/grub
sudo update-grub2
その後、仮想マシンをシャットダウンします。これで、pvgrub2 を VM カーネルとして設定でき、VM に設定されたカーネルが起動します。
Debian ドキュメント:
カーネルのコンパイルを恐れないでください。楽しく収益性があります。
Debian 方式でカーネルをコンパイルするには、fakeroot、kernel-package、linux-source-version など、いくつかのパッケージが必要です。
その後、私たちはあなたのコンピュータを自由に制御でき、ホームディレクトリにカーネルソースコードを抽出すると仮定します[22]。カーネルソースを解凍したいディレクトリにあることを確認し、tar xf /usr/src/linux-source-version.tar.xzを使用して解凍し、以前に作成したlinux-source-versionディレクトリに変更します。
これでカーネルを設定できます。 X11がインストール、構成、および実行中の場合はmake xconfigを実行し、そうでない場合はmake menuconfigを実行します(libncurses5-devをインストールする必要があります)。時間をかけてオンラインヘルプを読み、慎重に選択してください。不明な場合は、通常、不明なデバイスドライバ(イーサネットカード、SCSIコントローラなどのハードウェア周辺機器を管理するソフトウェア)を含めるのが最善です。注:特定のハードウェアに関連しない他のオプションがあり、理解できない場合は、デフォルトのままにしてください。 「ロード可能モジュールのサポート」から「カーネルモジュールローダー」を選択することを忘れないでください(デフォルトでは選択されていません)。含まれていない場合、Debian のインストールに問題が発生します。
ソースツリーをクリーンアップし、カーネルパッケージパラメータをリセットします。
make-kpkg clean
これでカーネルをコンパイルします。
fakeroot make-kpkg --initrd
コンパイルすると、他のソフトウェアパッケージと同様にカスタムカーネルをインストールできます。 rootとしてdpkg -i ../linux-image-version-subarchitecture.debを実行します。たとえば、System.mapは正しくインストールされ、現在の設定セットを含む/boot/config-3.16がインストールされます。新しいカーネルパッケージは、新しいカーネルを使用するようにブートローダを自動的に更新するのに十分スマートです。モジュールパッケージを作成した場合は、そのパッケージもインストールする必要があります。
Debian モード出力:
...
...
...
This is kernel package version 13.014+nmu1.
install -p -d -o root -g root -m 755 /usr/src/linux-source-4.8/debian/linux-image-4.8.15-rt10-11.pvops.qubes.x86_64/DEBIAN
sed -e 's/=V/4.8.15-rt10-11.pvops.qubes.x86_64/g' -e 's/=IB//g' \
-e 's/=ST/linux/g' -e 's/=R//g' \
-e 's/=KPV/13.014+nmu1/g' \
-e 's/=K/vmlinuz/g' \
-e 's/=I/YES/g' -e 's,=D,/boot,g' \
-e 's@=A@amd64@g' \
-e 's@=B@x86_64@g' \
...
dpkg-gencontrol: error: illegal package name 'linux-image-4.8.15-rt10-11.pvops.qubes.x86_64':
character '_' not allowed
debian/ruleset/targets/image.mk:230: recipe for target 'debian/stamp/binary/linux-image-4.8.15-rt10-11.pvops.qubes.x86_64' failed
make: *** [debian/stamp/binary/linux-image-4.8.15-rt10-11.pvops.qubes.x86_64] Error 255
手動コンパイル:
私はDebianからダウンロードして
linux-source-4.8
解凍しました/usr/src
。
それから:
make defconf
make menuconf # custom settings
make
上記のエラー:
dpkg-gencontrol: error: illegal package name 'linux-image-4.8.15-rt10-11.pvops.qubes.x86_64':
character '_' not allowed
この問題は解決しやすいと思いますが、カーネルを手動でコンパイルできる場合はどうすればよいですか?必須
make install
ですか、それとも直接使用するmake modules_install
必要がありますか?dkms autoinstall
これに関する特別な規定はありません。
修正する:
Debianパッケージを直接インストールすると、linux-image-amd64
コンソールが消えて仮想マシンが正しく動作しなくなったため、再起動してみましたが、シリアルコンソールに接続してください。インストール中に競合が発生し、インストールを
実行して完了しましたがコンピュータが起動しないという警告メッセージが表示されました。実際に更新して再起動しましたが、ルートをインストールできませんでした。dpkg
dpkg --configure -a
initramfs
GRUB
initramfs
ベストアンサー1
AFAIK Qubes-OS は VM 内部カーネルを使用して VM を起動しません。代わりに、Dom0にある独自のカーネルを使用してください。