by shigemk2

当面は技術的なことしか書かない

xv6+mist32+mruby #kernelvm

@hktechno

筑波大学院

UNIX V6の現代版x86再実装

MIT製、教育用OSといっている、教科書付き

PDP-11が古すぎるので、再実装している。

構造が非常にシンプル

マルチコアにも対応

ツールチェインはgcc

ツールチェーン - Wikipedia

卒研でやったこと

  • SSDAllocのようなもの
  • 他のアーキテクチャへの移植も簡単

xv6のパッチを書く

  • LGDT後の動作(常識)
  • RaspberryPi向けもある
  • mist32向けに移植しよう

移植の前提

  • MMUが必要
  • ディスクは不要
  • 実機で動かすならマルチブート対応で

  • 謎エラーcpu-local? storage

  • スタックの構築

  • exec()などでスタックを構築してエントリポイントへ渡す
  • 引数はスタックに構築

ダメなところ

  • メモリマップ NULL Pointerを読んでも落ちない!!!

メモリわりあて

  • スタックの壱がなんか変な感じ

ファイルシステム

移植してみたけど

  • シェルしか動かないし楽しくないからmrubyを移植したい
  • 用意するもの Newlib
  • newlib/libc/sysの下にxv6を移植

  • 同頑張っても400kbぐらいになる(ファイルシステムの制限に引っかかる)

  • kernelに直接リンクしてまおう
$ ld -b binary hoge

みたいなことをやったらうまくいった

まとめ

研究にxv6を使うのはやめよう

  • 評価が大変
  • 実用性皆無