11/27 xv6-aarch64、aarch64のEL
作業
dalmoreのssh key消えてたので、送り直し
自分でbuildしたQEMU使う
singularity環境に、QEMU-system-aarch64追加
elfファイルのロード、実装について情報集める
xv6-aarch64のbootプロセス調べる
memo
rsync -av ~/hogehoge dal:~/mnt/ssd1/user/e205729/xv6-UEFI/
ファイル送る時に使う
( rsync - av hogehoge/ すると、ファイルの中身がぶちまけられるので注意)
aarch64 のプロセッサー機能
arm v8 の特権モード、EL0~EL3までレベルがある
raspyだと、初めからEL3で起動する。Linuxを起動するときはEL2/EL1までレベル落とすhttps://scrapbox.io/files/656431fdaf62f5001c0d4dd7.jpeg
ELの変更方法
aarch64のMMU(memory management unit)についての解説もある
ELFヘッダーのサイズについて
OSのブート時に確保するメモリサイズの話?
どのxv6(aarch64)を使うか?
ELの問題で、gitにissueがある。修正パッチはなさそう
こっちのxv6-aarch64は、buildもqemuの動作も確認済
↓
ently.S
EL1まで移動する処理とか、アセンブリで書かれている。(.Sは、アセンブリとかのSourse code file らしい)
code: [entry.S
// qemu -kernel loads the kernel at 0x40000000
// and causes each CPU to jump there.
// kernel.ld causes the following code to
// be placed at 0x40000000.
kernel.ld
こちらのブログによると、リンカスクリプトを活用してバイナリファイルをくっつけたりディスクイメージをくっつけたりするらしい code:kernel.ld
/*
* ensure that entry.S / _entry is at 0x40000000(physical address),
* where qemu's -kernel jumps.
* 0x40000000(PA) is 0xffffff8040000000(VA);
*/