Sabotenboy's *sigh*
今年こそ本業を変えたいなぁ...^^;




OS が永遠の学習課題になりつつあるので、これはいかんといっぺん通して学習すべしと思い、蔵書の「はじめてのOSコードリーディング」とかUNIX v6関係の資料を見ていたものの、最近のリソースを使わない手は無いとMIT の xv6 (x86へ最近のCで再実装)を調べてたら、近年は RISC-V に移行していた ^^;

ならばということで、この RISC-V 版の xv6 で学習すべくリサーチ & 環境整備

VirtualBoxでDebian VM作ってというのが普通(?)っぽいが、Rasp4(8GB) で動くかなという単純な疑問から以下を実施、結論としてはあまりにすんなり動いて...問題なし。QEMUでkernelが起動してます。

(1) 機材、Raspi4(8GB) 暫く前に調達してた ^^、OSは直近のRaspiOS(Bullseyeでないといかんとのこと、kernel 5.15.61-v8+ #1579)

(2) sudo apt-get update/upgrade を済ませたらxv6のbuildに必要なものを入れる

sudo apt-get install git build-essential gdb-multiarch qemu-system-misc gcc-riscv64-linux-gnu binutils-riscv64-linux-gnu

(3) xv6のリポをgit clone

git clone https://github.com/mit-pdos/xv6-riscv.git

(4) 上記でcloneしたディレクトリに移動して、

$ make qemu
# kernelがbuildされる...
init: starting sh
$

"$"が表示されたらxv6-riscv kernelの下、shが起動してます
lsすると^^

次回以降もxv6-riscvのディレクトリから make qemu でさっくり起動します(buildしないのですぐ起動)
qemuの停止方法は Ctrl+a を押して一旦手を離した後 x で。

(5) MITのコースでは課題をスムーズにこなせるように上記のものから若干(?)改変したものをgithubに上げています
Assignmentsをやるのでこっちも別リポをcloneしてbuild

$ git clone https://github.com/mit-pdos/xv6-riscv-fall19.git
Cloning into 'xv6-riscv'...
...
$ cd xv6-riscv-fall19
$ git checkout util

utilの別ブランチでAssignment等の作業します。

kernelのbuild

$ make
$ make qemu

とすると、kernal起動時にqemuから rom: requested regiron overlap (rom phdr #0: kernel/kernel. free=0x0000000080012558, addr=0x0000000080000000) qemu-system-riscv64: rom check and register reset failed ... と怒られ kernel が起動しません ^^;
結論としてはバッティングしてる領域を解放するためにqemuのオプションに --bios none を指定します(Makefile中 196行目 QEMYOPTS の1行目の終わり辺りに追記しました)
初期状態でいくつかのプログラムが存在しており、大元のxv6-riscvのkernelをbuildしたてとは異なります。

 

Raspi4(8GB) のqemuでもRISC-V版のxv6がスムーズに遊べ..もとい学習出来るとは、
さぁ、学習 ^^

 

本家のテキスト 、RISC-V版の最新版はSep 2022のrev3

git clone git://github.com/mit-pdos/xv6-riscv-book.git

邦訳(July 2020 RISC-V版) https://www.sugawara-lab.jp/fig/xv6-riscv-jpn.pdf

OSTEP(OS: Three Easy Pieces 本)のページ https://pages.cs.wisc.edu/~remzi/OSTEP/

 

 

 



コメント ( 0 ) | Trackback ( )


« IOデータ LCD... xv6-riscv Lab... »
 
コメント
 
コメントはありません。
コメントを投稿する
 
名前
タイトル
URL
コメント
コメント利用規約に同意の上コメント投稿を行ってください。

数字4桁を入力し、投稿ボタンを押してください。