入口
    OF 1/2 の場合
    OF 3 の場合
      設置後すぐ
      CDROM 無で
    Mac OS の場合
    その他
  NetBSD
  Booting Media
Primary
  bootxx
Secondary
  xcf/elf
    release(7)
    /usr/mdec
ofwboot
  Locore.c
  boot.c
    main()
    boot-file
    chain()
    OF_chain()
kernel(1)
  locore.S
  machdep.c
    initppc()
kernel(2)
  init_main.c
    main()
その他
  installboot
    旧版
    新版
    実例
  DEFAULT CATCH
GENERIC_MD
  mdsetimage

NetBSD/macppc booting

Last Update: "2007/01/25 20:01:09 makoto"

NetBSD

NetBSD/macppc が起動するのは、 非常に大雑把に言えば、次の三つの段階から成っている。
(1) Primary Boot Loader ( bootxx = ofwboot 前)
次の ofwboot.* を起動させるまでの短いプログラム。 大きいものは起動部分に置けないので、まずはこれが起動する。 OF 1/2 専用。 (この項の説明 2002/09/09 に修正)
(2) Secondary Boot Loader (ofwboot)
ofwboot.xcf 等 src/sys/arch/macppc/stand/ofwboot/
OF 1/2 の場合は bootxx によって 0xe00000 (14MBytes)に置かれて起動される ( rev 1.13 から変更されている。 以前には 0x600000 (6 MBytes) だった)
その値は bootxx.c ( 1.9) の中の最初の方に書いてある。...
 54 #ifndef DEFAULT_ENTRY_POINT
 55 #define DEFAULT_ENTRY_POINT     0xe00000
 56 #endif 
 57  
 58 void (*entry_point)(int, int, void *) = (void *)DEFAULT_ENTRY_POINT;
 ....
333         entry_point(0, 0, openfirm);
OF 3 の場合は Open Firmware が直接 HFS 形式を読む(*1)ので、いきなりこの ofwboot.* を起動出来る。 OF 1/2 の場合も、Ethernet i/f を内蔵している機種では netboot の機能を使って、 OF から直接この ofwboot.xcf 等を読むことが出来る。

(注 *1)「 HFS 形式しか読まない」とも言う。

(3) kernel の最初の部分
kernel は
通常の場合     0x100000
INSTALL の場合 0x800000
に置かれて起動される。 この数字は、Makefile (sys/arch/macppc/conf/Makefile.macppc) の 次の部分に書いてある。
##
## (5) link settings
##
TEXTADDR?=	0x100000
その時の kern/init_main.c に行く前に少し作業がある (主として initppc())。
以上 (1)(2)(3) をもっと簡単に言うと、 起動は ofwboot と kernel である。そうして、
  1. ofwboot 前
  2. ofwboot
  3. kernel( initppc + init_main )
の三段階 ということも出来る。

上で 通常 0x100000 (1M) に置かれると書いたが、 OF 1/2 の場合、0x400000 (4M) から上を OF が作業領域として使っているので、 最近のように 3M を越える大きさの kernel をそのまま置くと、 kernel を読んでいる途中で、止ってしまう。

これを避けるため OF の設定で、 real-base=F00000 のようにずらしておくことが必要になる。

boot の書式等については ofwboot(8) にも説明がある。 (良く見ると nazuha という名前があるが、あれは僕の機械、 でも不適切な説明の気がする)

Last Update: Fri, 03 May 2019 15:45:20 GMT 1.66 2008/03/08