この関数からKernelが呼び出されて、Kernel側に処理が移行します。
この関数からKernelが呼び出されて、Kernel側に処理が移行します。
下記のパラメータをセットします。
dev_t bootdev = bootdev_dip->bootdev; /* ブートしたデバイスIDをセット */ size_t ac = BOOTARG_LEN; /* BIOS情報格納エリアのサイズ */ caddr_t av = (caddr_t)BOOTARG_OFF; /* BIOS情報格納エリアのアドレス */
この関数はpxeboot (Preboot Execution Environment)時に呼ばれるようです。今回は関係無いので華麗にスルー。
PXE(Preboot eXecution Environment)は、Intelの作成した、ネットワークブートの為の規格であり、サーバおよびクライアントが従うべきプロトコルなどが規定されている。PXE準拠のNIC(Network Interface Card)は、これに準拠したソフトウエアを、そのROM上にもっており、PXEサーバが用意されたネットワーク環境において、ネットワークブートが可能となる。サーバとして、PXEサーバ(ProxyDHCP、(M)TFTPサーバ)と、DHCP(またはBOOTPサーバ)を動作させる必要がある。
machdep関数で検出したコンソールデバイス情報をbootargに追加します。
mem_pass関数をcall。mem_pass関数ではmachdep関数で検出したメモリ情報をbootargに追加します。
makebootargs関数をcallして、bootargのデータを連続したメモリ領域にコピーします。
marks[MARK_ENTRY]にセットされている、リニアメモリ上のKernel開始アドレスを変数entryにセットします。
kernelのentry pointを表示します。
Using drive 0 , partition 4 .
Loading........
probing:pc0 com1 com2 apm pci mem[639K 253M a20=on]
disk:fd0 hd0+
>>OpenBSD/i386 BOOT 2.06
boot>
booting /dev/rhd0a:/bsd: 4918204+859636 [52+230528+209187]
entry point at 0x100120
Kernelで最初に動くlocoreに処理が移行します。