私が2年間進めてきたプロジェクトは、最新バージョンのLinuxでKVM(libvirtおよびvirt-managerをサポート)を有効にし、古いがまだ優れたARM Chromebookモデルxe303c12でカーネルを有効にすることです。
私の目標は、armV7用FreeBSD 13.2を仮想化することです。このプロジェクトはほぼ終わりました。現在私はUbuntu 22.04を使用しています(しかしDevuan 5でも動作します)。 KVMが有効になっており、virt-managerが正しく実行されています。
FreeBSDをほぼ仮想化できるようになりました。ほとんど解決すべき問題を発見したからです。そうしないと、プロジェクト全体が失敗します。 Ubuntuは利用可能なメモリを1GBしか認識しませんが、ARM Chromebookには2GBのメモリがマザーボードにはんだ付けされています。そのため、以前のカーネル(およびUbuntu)バージョンでKVMを有効にしようとした最初のプロジェクトの切り替え中に、1 GBのメモリが失われました。ここで確認できます。
http://www.virtualopensystems.com/en/solutions/guides/kvm-on-chromebook/#setting-up-the-boot-medium
私のプロジェクトは最新のカーネルバージョン(5.4)とUbuntuバージョン(22.04)を使用しています。カーネルを再コンパイルすると、Virtual Open Systems開発者が使用する3.13カーネルで有効になっているいくつかのカーネルエントリが失われたようです。残念ながら、私のカーネル設定でどのエントリが欠落しているのかわかりません。
次のコマンドを実行するオペレーティングシステムの利用可能なメモリを確認しました。
# free -m
1GBのメモリを復元しないとFreeBSDを仮想化できません。なぜなら、1GBはホストとゲストオペレーティングシステムの両方を実行できる非常に少量のメモリであるからです。
それでは、2GBのメモリをすべて使用するには、どのカーネルエントリを追加する必要があるかを見つけるのに役立ちますか?
Virtual Open System は独自のカーネル構成ファイルを提供し、ここに保存しました。
https://pastebin.ubuntu.com/p/j4B54TChKD/
カーネルプロファイルを使用して、合計2GBの空きメモリがあることを確認しました(Linuxのロードに400MBを費やしたため、600MBしか残っていません。これは良くありません。実際にはqemuクラッシュがたくさんありました)。しかし、私のプロフィールを使用してOSが1 GBでのみ起動した場合
2つのカーネル構成ファイルを共有したいと思います。
- カーネル 3.13 dmesg ログファイルは、次のように 2 GB を認識します。
https://pastebin.ubuntu.com/p/gsw9SM4zY3/
- カーネル 5.4 dmesg ログファイルは、次のように 1 GB のみを認識します。
https://pastebin.ubuntu.com/p/W6Mgj4jGg2/
dmesgログ(カーネル3.13対カーネル5.4プロファイル)を比較しましたが、これが空きメモリが1GBしかない理由だと思います。
OF: fdt: メモリ範囲 0x40000000 - 0x80000000 無視
この行はカーネル 3.13 dmesg ログファイルにはありませんが、カーネル 5.4 dmesg ログファイルにはあります。 dtbファイルの生成に関連しているようです。
どう思いますか?