tomoyasuzuki / kvmm

kvmm is a type2 hypervisor that uses the Linux Kernel Virtual Machine(KVM).
Apache License 2.0
12 stars 4 forks source link

動かし方について: how to run #9

Open yushoyamaguchi opened 1 year ago

yushoyamaguchi commented 1 year ago

ラボユースの発表資料から興味を持ち、自分もvmmでxv6を動かしてみたいと思いました。 もしよろしければ、やり方を教えていただいてもよろしいでしょうか? また動かすにあたって、xv6自体に何らかの改造をする必要はあるでしょうか?

p.s. ここでのやり取りは日本語で大丈夫でしょうか? 念の為、英語も書いておきます。

I am interested from the Lab Youth presentation material and would like to run xv6 with vmm myself. If you don't mind, could you tell me how to do this? Also, do I need to make any modifications to xv6 itself in order to run it?

tomoyasuzuki commented 1 year ago

しばらく気づかずすみません。

動かし方については自分もかなり忘れてしまっている部分があるので、色々と見返しながらREADMEに追記できるようにします🙇‍♂️

また、完全な xv6 バイナリを動かすことはできてなくて、シングルコアでしか動作しなかった気がします。なので、xv6 からマルチコア周りの処理を削ったバイナリを用意する必要があります。この辺りも一度動かして確認してみます。

yushoyamaguchi commented 1 year ago

ご返信ありがとうございます。 シングルコアのxv6風OSを試しに動かしてみたところ、kvmm上で無事動作しました。

yushoyamaguchi commented 1 year ago

@tomoyasuzuki マルチコア対応の追加実装をしようかなと考えているのですが、もし過去に試されて困難な点を経験されていましたら、簡単に教えていただけると嬉しいです。

tomoyasuzuki commented 1 year ago

返信が遅れてすみません。

確か、EBDA にあるコアの設定情報を読み込む部分をエミュレートするのが面倒だったからだと思います。xv6 ではマルチコアの初期化時に EBDA を見る(参考 )んですが、この部分の処理を変更なしで動かすには(少なくとも当時の記憶では)自分でコアの情報を用意してそれを VM のメモリ領域に書き込む必要がありました。kvmm は基本的にトラップ & エミュレートするシンプルな構成にしたくて、ハイパーバイザー側でうまく設定を用意してあげないといけない部分は省略したかったんだと思います。

yushoyamaguchi commented 1 year ago

なるほど。 ご回答ありがとうございました。