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 翻訳者: 川崎 貴彦 校正者: 早川 仁