JF Linux Kernel 2.6 Documentation: /usr/src/linux/Documentation/x86/i386/zero-page.txt

x86/i386/zero-page.txt

boot_params レイアウトの要約 [プレインテキスト版]


boot_params レイアウト (カーネルの視点) の要約
     ( Hans Lermen と Martin Mares が収集しました )

boot_params の内容は、カーネルの 16 ビットリアルモードのコードから
32 ビットモードのコードへパラメータを渡すために使用されます。
boot_params の参照や設定は、主に以下のファイルでおこなっています。

  arch/i386/boot/setup.S
  arch/i386/boot/video.S
  arch/i386/kernel/head.S
  arch/i386/kernel/setup.c


オフセット  タイプ           説明
----------  ---------------  -----------
         0  32 バイト        struct screen_info, SCREEN_INFO
                             注目、あとに続くものをオーバーラップします !!!
         2  unsigned short   EXT_MEM_K, キロバイト単位の拡張メモリサイズ
                             (割込み 0x15 より)
      0x20  unsigned short   CL_MAGIC, コマンドライン・マジックナンバー
                             (=0xA33F)
      0x22  unsigned short   CL_OFFSET, コマンドライン・オフセット
                             コマンドラインのアドレスは計算されます:
                               0x90000 + CL_OFFSET の内容
                             (CL_MAGIC = 0xA33F のときのみ行われます)
      0x40  20 バイト        struct apm_bios_info, APM_BIOS_INFO
      0x60  16 バイト        Intel SpeedStep (IST) BIOS サポート情報
      0x80  16 バイト        割込みベクタ 0x41 による hd0 ディスクパラメータ
      0x90  16 バイト        割込みベクタ 0x46 による hd1 ディスクパラメータ

      0xa0  16 バイト        16 バイトに切り詰められたシステム記述テーブル
                             ( struct sys_desc_table_struct )
      0xb0 - 0x1c3           自由。本当に必要ならば、追加のパラメータをここに
                             置きます。

     0x1c4  unsigned long    EFI システムテーブルポインタ
     0x1c8  unsigned long    EFI メモリ記述子サイズ
     0x1cc  unsigned long    EFI メモリ記述子バージョン
     0x1d0  unsigned long    EFI メモリ記述子マップポインタ
     0x1d4  unsigned long    EFI メモリ記述子マップサイズ
     0x1e0  unsigned long    ALT_MEM_K, もう一つのメモリチェック、キロバイト単位
     0x1e8  char             E820MAP 内のエントリ数 (下記参照)
     0x1e9  unsigned char    EDDBUF 内のエントリ数 (下記参照)
     0x1f1  char             setup.S のサイズ、セクタ数
     0x1f2  unsigned short   MOUNT_ROOT_RDONLY (0 でないならば)
     0x1f4  unsigned short   (b)zImage ファイル内の圧縮カーネル部のサイズ
                             (16 バイト単位、端数切上げ)
     0x1f6  unsigned short   swap_dev (私の知る限りでは使われていません)
     0x1f8  unsigned short   RAMDISK_FLAGS
     0x1fa  unsigned short   VGA モード (古いもの)
     0x1fc  unsigned short   ORIG_ROOT_DEV (高位=メジャー番号、低位=マイナー番号)
     0x1ff  char             AUX_DEVICE_INFO

     0x200  セットアップコード開始位置へのショートジャンプ。別名は "予約" 
            フィールドです。
     0x202  4 バイト         セットアップヘッダ用シグネチャ = "HdrS"
     0x206  unsigned short   ヘッダ形式のバージョン番号
                             現在のバージョンは 0x0201...
     0x208  8 バイト         (ブートローダとの通信用に setup.S により使用されます。
                             そこを見てください)
     0x210  char             LOADER_TYPE, 0 の場合は古いローダです。
                             それ以外なら、ブートローダによってセットされます:
                             0xTV: T=0 は LILO
                                     1 は Loadlin
                                     2 は bootsect-loader
                                     3 は SYSLINUX
                                     4 は ETHERBOOT
                                     V = バージョン
     0x211  char             ロードフラグ:
                             bit0 = 1: カーネルは高位にロードされる (bzImage)
                             bit7 = 1: ブートローダによってセットされるヒープ
                                       終端ポインタ (下記参照)
     0x212  unsigned short   (setup.S)
     0x214  unsigned long    KERNEL_START, ローダがカーネルをスタートさせた位置
     0x218  unsigned long    INITRD_START, ロードされた RAM ディスクイメージの
                             アドレス
     0x21c  unsigned long    INITRD_SIZE, バイト単位の RAM ディスクイメージの
                             サイズ
     0x220  4 バイト         (setup.S)
     0x224  unsigned short   setup.S ヒープ終端ポインタ
     0x2cc  4 bytes          DISK80_SIG_BUFFER (setup.S)
     0x2d0 - 0x600           E820MAP
     0x600 - 0x7ff           ディスクシグネチャリードセクタ用 EDDBUF (setup.S)
     0x600 - 0x7eb           edd データ用 EDDBUF (setup.S)

------------------------------------------------------------
翻訳団体: JF プロジェクト < http://www.linux.or.jp/JF/ >
最終更新: 2004/04/05
翻訳者:   川崎 貴彦 <takahiko(a)hakubi.co.jp>
校正者:   早川 仁

Linux カーネル 2.6 付属文書一覧へ戻る