ramdisk boot のため、ramdisk driver が満たさなければいけない必須条件。 | |
1-1 |
/dev/disk 以下で正常にマウントできる必要がある。 tracker の右クリックマウントメニューに出てくる程度にしないと駄目かも。 |
1-2 |
boot 時に、tar-fs から自動ロードされ、有効になる必要がある。 |
1-3 |
ramdisk のパーティションを2つにして、システム(cdからコピー)と、 それ以外に分けた方がシステムロードが短くて済むなぁ |
ramdisk boot のための Haiku loader の改造。 | |
2-1 |
boot-cd の 1st-volume に含まれる tar-fs 内に入れる必要がある。 |
2-2 |
ramdisk 用メモリを確保し、cd の 2nd-volume(bfs) を読込む。 |
2-3 |
ramdisk 用メモリ管理の引き継ぎ |
2-4 |
メモリ管理が始まり、ramdisk driver がロードされ、 root-fs にブートボリュームがマウントされる時に、 代わりにramdiskをマウントするように変更する必要がある。 (cd はマウントしないので、イジェクトも他のcdをマウントすることも可能になる) |
1-1 |
未解決。 ブロックデバイスにしないといけないのかなぁ??? |
1-2 |
未解決。 もしかして、tar-fs に入れておくだけで自動でロードしてくれるかも。 device_manager.c の device_manager_rescan_bus() で有効に(rescan)されるために、 アトリビュート B_DRIVER_BUS が必要? (ramdiskなので、rescan自体不要な気もする) |
1-3 |
とりあえず後回し。。。 |
2-1 |
スクリプト makehaikufloppy に追加記述すればok。 |
2-2 |
memory の確保に付いては、stage2 では、8MBしかマッピングされないようなので、 それ以降を使っても問題ないはず。 system/boot/platform/bios_ia32 の init_page_directory() で、マッピングを追加する。 。。。上、間違いっぽい気がしてきたので、やりなおし。。。 ramdisk用memory への読込と、初期(stage2)の ramdisk-driver 代わりとして、 ちょっとずるいやりかたではあるが、 system/boot/platform/bios_ia32/devices.cpp の BIOSDrive::ReadAt() を改造。 |
2-3 |
物理アドレス(mmuの設定)の方は未解決。再設定しているはずなんだが。。。 仮想アドレスの方は、 system/kernel/vm/vm.cpp の vm_init()内で他と同様に行えばいいはず。 (stage2 で 読み込んだイメージを create_area() を使って確保している) |
2-4 |
未解決。 system/kernel/fs/vfs_boot.cpp の vfs_mount_boot_file_system で ブートボリュームを /boot に mount しているので、この部分を ramdisk にmount するように変更する必要がある。 (ramdisk 用に確保したメモリは find_area() で調べる) |