Linux Kernel 2.4 Documentation:
/usr/src/linux/Documentation/i386/zero-page.txt
i386/zero-page.txt
empty_zero_page レイアウトの要約
[プレインテキスト版]
- 原著作者: Hans Lermen Martin Mares
- 翻訳者: 川崎 貴彦 <takahiko@hakubi.co.jp>
- バージョン: 2.4.0
- 翻訳日時: 2001/05/29
empty_zero_page レイアウト (カーネルの視点) の要約
( Hans Lermen と Martin Mares が収集しました )
翻訳:JF プロジェクト
翻訳者:川崎 貴彦
校正協力者:早川 仁
empty_zero_page の内容は、カーネルの 16 ビットリアルモードのコードから
32 ビットモードのコードへパラメータを渡すために使用されます。
empty_zero_page の参照や設定は、主に以下のファイルでおこなっています。
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, キロバイト単位の拡張メモリサイズ
(int 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
0x80 16 バイト 割込みベクタ 0x41 による hd0 ディスクパラメータ
0x90 16 バイト 割込みベクタ 0x46 による hd1 ディスクパラメータ
0xa0 16 バイト 16 バイトに切り詰められたシステム記述テーブル
( struct sys_desc_table_struct )
0xb0 - 0x1df 自由。本当に必要ならば、追加のパラメータをここに
置きます。
0x1e0 unsigned long ALT_MEM_K, もう一つのメモリチェック、キロバイト単位
0x1e8 char E820MAP 内のエントリ数 (下記参照)
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 ヒープ終端ポインタ
0x2d0 - 0x600 E820MAP
0x800 文字列、最大 2K COMMAND_LINE, CL_OFFSET を使ってコピーされた
コマンドライン
注意:これは、setup.c により、長さ 256 バイトのみの
ローカルバッファにもう一度コピーされます。
( #define COMMAND_LINE_SIZE 256 )
Linux カーネル 2.4 付属文書一覧へ戻る