요약·해설과 원문, 전문 번역을 서로 분리했습니다. API 이름, symbol, source path는 원문 표기를 사용합니다.
1. 요약·해설
원문의 핵심 논리와 kernel programming 관점의 보충 설명입니다. 아래의 전문 번역과는 별도로 작성했습니다.
2. 영어 원문 전체
번역 기준이 된 Linux v6.18.37 원문입니다. 줄 번호는 이 버전의 파일 좌표입니다.
원문 전체 펼치기
1
.. SPDX-License-Identifier: GPL-2.0
3
=========
4
Zero Page
5
=========
6
The additional fields in struct boot_params as a part of 32-bit boot
7
protocol of kernel. These should be filled by bootloader or 16-bit
8
real-mode setup code of the kernel. References/settings to it mainly
9
are in::
11
arch/x86/include/uapi/asm/bootparam.h
13
=========== ===== ======================= =================================================
14
Offset/Size Proto Name Meaning
16
000/040 ALL screen_info Text mode or frame buffer information
17
(struct screen_info)
18
040/014 ALL apm_bios_info APM BIOS information (struct apm_bios_info)
19
058/008 ALL tboot_addr Physical address of tboot shared page
20
060/010 ALL ist_info Intel SpeedStep (IST) BIOS support information
21
(struct ist_info)
22
070/008 ALL acpi_rsdp_addr Physical address of ACPI RSDP table
23
080/010 ALL hd0_info hd0 disk parameter, OBSOLETE!!
24
090/010 ALL hd1_info hd1 disk parameter, OBSOLETE!!
25
0A0/010 ALL sys_desc_table System description table (struct sys_desc_table),
26
OBSOLETE!!
27
0B0/010 ALL olpc_ofw_header OLPC's OpenFirmware CIF and friends
28
0C0/004 ALL ext_ramdisk_image ramdisk_image high 32bits
29
0C4/004 ALL ext_ramdisk_size ramdisk_size high 32bits
30
0C8/004 ALL ext_cmd_line_ptr cmd_line_ptr high 32bits
31
13C/004 ALL cc_blob_address Physical address of Confidential Computing blob
32
140/080 ALL edid_info Video mode setup (struct edid_info)
33
1C0/020 ALL efi_info EFI 32 information (struct efi_info)
34
1E0/004 ALL alt_mem_k Alternative mem check, in KB
35
1E4/004 ALL scratch Scratch field for the kernel setup code
36
1E8/001 ALL e820_entries Number of entries in e820_table (below)
37
1E9/001 ALL eddbuf_entries Number of entries in eddbuf (below)
38
1EA/001 ALL edd_mbr_sig_buf_entries Number of entries in edd_mbr_sig_buffer
39
(below)
40
1EB/001 ALL kbd_status Numlock is enabled
41
1EC/001 ALL secure_boot Secure boot is enabled in the firmware
42
1EF/001 ALL sentinel Used to detect broken bootloaders
43
290/040 ALL edd_mbr_sig_buffer EDD MBR signatures
44
2D0/A00 ALL e820_table E820 memory map table
45
(array of struct e820_entry)
46
D00/1EC ALL eddbuf EDD data (array of struct edd_info)
47
=========== ===== ======================= =================================================
3. 한국어 전문 번역
영어 원문의 문단 순서와 의미를 유지한 전체 번역입니다. 코드, 함수명, symbol과 URL은 원문 표기를 유지합니다.
32-bit boot protocol의 Zero Page
1-12이 문서는 `SPDX-License-Identifier: GPL-2.0`으로 배포됩니다. Zero Page는 kernel 32-bit boot protocol의 일부인 `struct boot_params` 추가 field를 정의합니다.
이 field들은 bootloader 또는 kernel의 16-bit real-mode setup code가 채워야 합니다. 주요 reference와 setting은 다음 header에 있습니다.
arch/x86/include/uapi/asm/bootparam.h
struct boot_params field 표
13-47| Offset/Size | Proto | Name | 의미 |
|---|---|---|---|
| `000/040` | `ALL` | `screen_info` | text mode 또는 frame buffer 정보 (`struct screen_info`) |
| `040/014` | `ALL` | `apm_bios_info` | APM BIOS 정보 (`struct apm_bios_info`) |
| `058/008` | `ALL` | `tboot_addr` | tboot shared page의 physical address |
| `060/010` | `ALL` | `ist_info` | Intel SpeedStep (IST) BIOS 지원 정보 (`struct ist_info`) |
| `070/008` | `ALL` | `acpi_rsdp_addr` | ACPI RSDP table의 physical address |
| `080/010` | `ALL` | `hd0_info` | hd0 disk parameter, 사용 중단됨 (`OBSOLETE!!`) |
| `090/010` | `ALL` | `hd1_info` | hd1 disk parameter, 사용 중단됨 (`OBSOLETE!!`) |
| `0A0/010` | `ALL` | `sys_desc_table` | system description table (`struct sys_desc_table`), 사용 중단됨 (`OBSOLETE!!`) |
| `0B0/010` | `ALL` | `olpc_ofw_header` | OLPC의 OpenFirmware CIF와 관련 정보 |
| `0C0/004` | `ALL` | `ext_ramdisk_image` | `ramdisk_image` 상위 32bit |
| `0C4/004` | `ALL` | `ext_ramdisk_size` | `ramdisk_size` 상위 32bit |
| `0C8/004` | `ALL` | `ext_cmd_line_ptr` | `cmd_line_ptr` 상위 32bit |
| `13C/004` | `ALL` | `cc_blob_address` | Confidential Computing blob의 physical address |
| `140/080` | `ALL` | `edid_info` | video mode setup (`struct edid_info`) |
| `1C0/020` | `ALL` | `efi_info` | EFI 32 정보 (`struct efi_info`) |
| `1E0/004` | `ALL` | `alt_mem_k` | KB 단위 alternative memory check |
| `1E4/004` | `ALL` | `scratch` | kernel setup code용 scratch field |
| `1E8/001` | `ALL` | `e820_entries` | 아래 `e820_table`의 entry 수 |
| `1E9/001` | `ALL` | `eddbuf_entries` | 아래 `eddbuf`의 entry 수 |
| `1EA/001` | `ALL` | `edd_mbr_sig_buf_entries` | 아래 `edd_mbr_sig_buffer`의 entry 수 |
| `1EB/001` | `ALL` | `kbd_status` | Numlock 활성화 여부 |
| `1EC/001` | `ALL` | `secure_boot` | firmware에서 Secure Boot가 활성화되었는지 표시 |
| `1EF/001` | `ALL` | `sentinel` | 오작동하는 bootloader 감지에 사용 |
| `290/040` | `ALL` | `edd_mbr_sig_buffer` | EDD MBR signature |
| `2D0/A00` | `ALL` | `e820_table` | E820 memory map table (`struct e820_entry` 배열) |
| `D00/1EC` | `ALL` | `eddbuf` | EDD data (`struct edd_info` 배열) |
요약과 해설
zero-page.rst:1-47Zero Page는 bootloader와 16-bit setup code가 kernel에 전달하는 `struct boot_params` 영역입니다. 화면·APM·ACPI·EFI·E820·EDD 정보를 고정 offset에 배치합니다.