⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lilo.h

📁 linux 的引导程序源码The Microsoft&reg Windows&reg Software Development Kit (SDK) provides the documentation
💻 H
字号:
/* lilo.h  -  LILO constants *//*Copyright 1992-1998 Werner Almesberger.Copyright 1999-2002 John Coffman.All rights reserved.Licensed under the terms contained in the file 'COPYING' in the source directory.*//* This file is also included by the boot loader assembler code. Put   everything that isn't legal C syntax or isn't swallowed by the   preprocessor into #ifdef LILO_ASM ... #endif */#ifndef LILO_H#define LILO_H/* This is the stuff to check the configuration: */#if defined(LCF_READONLY) && defined(LCF_REWRITE_TABLE)#error "Incompatible Makefile options: READONLY and REWRITE_TABLE"#endif/* * Starting with 2.1.something, Linux kernels put VGA constants and segment * definitions into asm/boot.h instead of linux/config.h */#ifdef HAS_BOOT_H#include <asm/boot.h>#else#include <linux/config.h>#endif#define nelem(a) (sizeof(a)/sizeof((a)[0]))#define S2(x) #x#define S(x) S2(x)#include "version.h"#define VERSION 256*VERSION_MINOR+VERSION_MAJOR#define MAJMIN_RAM	0x101 /* RAM disk */#define MAJOR_FD	2 /* floppy disks */#define MAJOR_HD	3 /* IDE-type hard disks */#define MAJOR_SD	8 /* SCSI disks 0-15 */#define MAJOR_MD	9 /* multi-disk RAID sets */#define MAJOR_XT	13 /* XT-type hard disks */#define MAJOR_IDE2	22 /* IDE on second interface */#define MAJOR_IDE3	33 /* IDE on third interface */#define MAJOR_IDE4	34 /* IDE on fourth interface */#define MAJOR_ESDI	36 /* PS/2 ESDI drives */#define MAJOR_DAC960	48 /* First Mylex DAC960 PCI RAID controller */#define MAJOR_IDE5	56 /* IDE on fifth interface */#define MAJOR_IDE6	57 /* IDE on sixth interface */#define MAJOR_LVM	58 /* Logical Volume Manager block device */#define MAJOR_FL	62 /* M-Systems Disk-On-Chip 2000 ***experimental*** */#define MAJOR_SD2	65 /* SCSI disks 16-31 */#define MAJOR_SD3	66 /* SCSI disks 32-47 */#define MAJOR_SD4	67 /* SCSI disks 48-63 */#define MAJOR_SD5	68 /* SCSI disks 64-79 */#define MAJOR_SD6	69 /* SCSI disks 80-95 */#define MAJOR_SD7	70 /* SCSI disks 96-111 */#define MAJOR_SD8	71 /* SCSI disks 112-127 */#define MAJOR_SMART2	72 /* First Compaq Smart/2 Major 72-79 */#define MAJOR_I2O	80  /* First I2O block device 80-87 */#define MAJOR_IDE7	88 /* IDE on seventh interface */#define MAJOR_IDE8	89 /* IDE on eighth interface */#define MAJOR_IDE9	90 /* IDE on ninth interface */#define MAJOR_IDE10	91 /* IDE on tenth interface */#define MAJOR_NFTL	93 /* NAND Flash Translation Layer (Disk-On-Chip) */#define MAJOR_AMI_HYP	101 /* AMI Hyper Disk RAID controller */#define MAJOR_CISS	104 /* First CCISS Major 104-111 */#define MAJOR_IBM_iSER	112 /* IBM iSeries virtual disk */#define MAJOR_HPT370	114 /* HPT370 controller */#define MAJOR_EVMS	117 /* Enterprise Volume Management System */#define MAX_RAID	30	/* max number of RAID disks in a set */#define MAX_TOKEN	255 /* max device Token length */#define MAX_IMAGE_NAME	15 /* maximum name length (w/o terminating NUL) */#define MAX_DESCR_SECTORS  12  /* upper limit on MAX_DESCR_SECS */#ifdef LCF_PASS160#define SHS_PASSWORDS		/* use this one if SHS passwords are in use */#define MAX_PW_CRC	5  	/* max # of longwords in password digest */#define PW_FILE_SUFFIX ".shs"  	/* suffix for the file that saves password digest */#else#define CRC_PASSWORDS		/* use this one if CRC passwords are in use */#define MAX_PW_CRC	2  	/* max # of CRC-32's in password */#define PW_FILE_SUFFIX ".crc"  	/* suffix for the file that saves password CRC's */#endif#ifndef MAX_SECONDARY_FILESIZE#define MAX_SECONDARY_FILESIZE 10240#endif#define MAX_SECONDARY ((MAX_SECONDARY_FILESIZE+SECTOR_SIZE-1)/SECTOR_SIZE)#ifdef LCF_DSECS#define MAX_DESCR_SECS LCF_DSECS#else#define MAX_DESCR_SECS 2	/* maximum # of descriptor sectors (8 max) */#endif#if MAX_DESCR_SECS > MAX_DESCR_SECTORS# error "Maximum DSECS=x exceeded."#endif#define MAX_IMAGES      ((SECTOR_SIZE*MAX_DESCR_SECS-sizeof(long)-1)/sizeof(IMAGE_DESCR))			  /* maximum number of images */#define SECTOR_SIZE	512 /* disk sector size */#ifndef BLOCK_SIZE /* may also come from linux/fs.h */#define BLOCK_SIZE	1024 /* disk block size */#endif#if (MAX_SECONDARY_FILESIZE > MAX_SECONDARY*SECTOR_SIZE)#error "Largest secondary loader exceeds sector addresses reserved."#endif#define PARTITION_ENTRY	   16	/* size of one partition entry */#define PARTITION_ENTRIES  4    /* number of partition entries */#define PART_TABLE_SIZE    (PARTITION_ENTRY*PARTITION_ENTRIES)#define PART_TABLE_OFFSET  0x1be /* offset in the master boot sector */#define PART_ACT_ENT_OFF   0	/* offset in entry for active flag */#define PART_TYPE_ENT_OFF  4	/* offset in entry for partition type */#define P_MASK(x) ((~has_partitions(x))&0xFFFF)#define D_MASK(x) (has_partitions(x))#define PART_MAX    4 /* biggest primary partition number */#define MAX_BOOT_SIZE	0x1b6	/* (leave some space for NT's and DR DOS' dirty				   hacks) scream if the boot sector gets any				   bigger */#define BOOT_SIGNATURE	0xaa55	/* boot signature */#define BOOT_SIG_OFFSET	510	/* boot signature offset */#define MAGIC_SERIAL	0xC9CF	/* LILO installed serial number */#define PART_LINUX_MINIX  0x81	/* Linux/MINIX partition */#define PART_LINUX_SWAP	  0x82	/* Linux swap partition */#define PART_LINUX_NATIVE 0x83	/* Linux native (file system) */#define PART_DOS_EXTD 	  5	/* DOS Extended partition */#define PART_WIN_EXTD_LBA 0xF	/* Win95/98 Extended partition */#define PART_LINUX_EXTD   0x85	/* Linux Extended partition */#define PART_OS2_BOOTMGR  0xA	/* OS/2 Boot Manager */#define PART_DOS12	  1	/* DOS 12 bit FAT partition type */#define PART_DOS16_SMALL  4	/* DOS 16 bit FAT partition type, < 32 MB */#define PART_DOS16_BIG	  6	/* DOS 16 bit FAT partition type, >= 32 MB */#define PART_HPFS	  7	/* OS/2 High Performance File System */#define PART_NTFS	  7	/* WinNT File System */#define PART_FAT32	  0xB	/* Win95/98 FAT32 partition on small disk */#define PART_FAT32_LBA	  0xC	/* Win95/98 FAT32 partition on large disk */#define PART_FAT16_LBA	  0xE	/* Win95/98 FAT16 partition on large disk */#define PART_INVALID	  98	/* invalid partition type */#define HIDDEN_OFF	0x10	/* type offset to hide partition (OS/2 BM) */#define PART_HDOS12	PART_DOS12+HIDDEN_OFF#define PART_HDOS16_SMALL PART_DOS16_SMALL+HIDDEN_OFF#define PART_HDOS16_BIG	PART_DOS16_BIG+HIDDEN_OFF#define STAGE_FIRST	1	/* first stage loader code */#define STAGE_SECOND	2	/* second stage loader code */#define	STAGE_CHAIN	0x10	/* chain loader code */#define STAGE_DRIVE_MAP	0x11	/* chain loader drive mapper */#define STAGE_FLAG_SERIAL  0x0100	/* boot loader supports serial i/o */#define STAGE_FLAG_MENU	0x0200	/* boot loader supports menu interface */#define STAGE_FLAG_BMP4	0x0400	/* boot loader supports 640x480x4 bitmaps */#define SETUPSECS	4	/* nr of setup sectors */#define VSS_NUM		497	/* address where variable setup size is				   stored */#define MAX_SETUPSECS	31	/* maximum number of sectors in kernel				   setup code (+ bootsect) */#define MAX_KERNEL_SECS	1024	/* absolute maximum kernel size */#define SPECIAL_SECTORS	2	/* special sectors (don't compact) at beginning				   of map sections */#define LINEAR_FLAG	0x40	/* mark linear address */#define LBA32_FLAG      0x20    /* mark lba 32-bit address */#define LBA32_NOCOUNT   0x40    /* mark address with count absent */#define RAID_REL_FLAG	0x10	/* mark address raid-relocatable *//* *	FLAG	Description * *   	0x00	 pure geometric addressing (C:H:S) *	0x40	 Linear address (24-bits) converted to CHS at boot-time *	0x60	 LBA32 address (32-bits), count=1, sets the high nibble!! *	0x20	 LBA32 address (24-bits) + (8-bit) high nibble (implied) **/#define DEV_MASK        0x8f    /* mask to actual device code */#define	EX_OFF		SETUP_STACKSIZE-8+SSDIFF /* external parameter block */#define EX_DL_MAG	0xfe	/* magic number in DL */#define EX_MAG_L	0x494c	/* magic number at ES:SI, "LI" */#define EX_MAG_H	0x4f4c	/* magic number at ES:SI+2, "LO" */#define EX_MAG_HL	0x4f4c494c  /* "LILO" */#define BIOS_MAX_DEVS	2	/* BIOS devices (2 fd, 2 hd) */#define BIOS_MAX_HEADS  256	/* 8 bits head number; really 255 */			/* but must account for oddball BIOS's that allow 256 */#define BIOS_MAX_CYLS   1024	/* 10 bits cylinder number */#define BIOS_MAX_SECS   63	/* 6 bits sector number (no, it's not 64) *//* these are the boot record flags in the "prompt" variable */#define FLAG_PROMPT	1	/* always issue boot: prompt */#define FLAG_RAID	2	/* one boot record of many */#define FLAG_RAID_DEFEAT  4	/* defeat finding this RAID boot record */#define FLAG_RAID_NOWRITE 8	/* defeat RAID writeback of command line */#define FLAG_NOBD	16	/* defeat BIOS data collection at boot time */#define FLAG_LARGEMEM	32	/* BIOS has MoveExtMemBlk support for 386 */#define FLAG_SAVE (~(FLAG_RAID|FLAG_RAID_DEFEAT|FLAG_RAID_NOWRITE))  /* All but raid flags *//* these are the descriptor flags */#define FLAG_VGA	1	/* override VGA mode */#define FLAG_RESTR	2	/* restrict additional parameters */#define FLAG_LOCK	4	/* lock on target */#define FLAG_MODKRN	8	/* modern kernel with high memory support */#define FLAG_KERNEL	16	/* image is a kernel */#define FLAG_SINGLE	32	/* single key activation */#define FLAG_FALLBACK	64	/* fallback command line exists */#define FLAG_PASSWORD	128	/* this image requires a password */#define FLAG_LOADHI	256	/* this kernel loads high (>=1Mb) */#ifdef LCF_VIRTUAL#define FLAG_VMDISABLE	512	/* unable to boot if virtual */#define FLAG_VMWARN	1024	/* warn on virtual boot */#define FLAG_VMDEFAULT	2048	/* this is the default vitual load */#endif#define VGA_NOCOVR	0x8000	/* VGA setting not overridden on command line */#define SER_DFL_PRM	0xa3	/* default serial parameters: 2400n8 */#define DC_MAGIC	0xf4f2	/* magic number of default cmd. line sector */#define DC_MGOFF	0x6b6d	/* magic number for disabled line */#define MAX_MESSAGE	65535	/* maximum message length */#define MAX_MENU_TITLE	37	/* maximum MENU title length */#define NEW_HDR_SIG	"HdrS"	/* setup header signature */#define NEW_HDR_VERSION	0x200	/* header version number */#define NEW2_HDR_VERSION 0x202	/* new cmdline protocol */#define NEW3_HDR_VERSION 0X203	/* defines CL_RAMDISK_MAX */#define LOADER_VERSION	0x02	/* loader version, for SETUP_HDR.loader */#define LFLAG_HIGH	1	/* SETUP_HDR.flags */#define LFLAG_USE_HEAP	0x80#define PRTMAP_SIZE	32	/* number of partition type mappings */#define DRVMAP_SIZE	8	/* number of drive mappings */#define CRC_POLY1 0x04c11db7#define CRC_POLY2 0x23a55379#define CRC_POLY3 0x049f21c7#define CRC_POLY4 0x1c632927#define CRC_POLY5 0xA3139383#define PROBE_SIGNATURE	"LiLo"	/* signature placed in low memory */#define PROBESEG 0x60		/* must be in first 4k page in memory */#define EDD_LTH	    30		/* length of the EDD return structure (max) */#define EDD_PACKET  01		/* packet calls are supported */#define EDD_LOCK    02		/* removable media may be locked */#define EDD_SUBSET  04		/* EDD call supported */#ifdef LILO_ASMBOOTSEG   = 0x07C0			! original address of boot-sectorPARTS_LOAD= 0x0600			! partition sector load addressPARTS_SCR = 0x0800			! ditto, for non-boot partitionsPART_TABLE= 0x07BE			! partition tableINITSEG   = DEF_INITSEG			! we move boot here - out of the waySETUPSEG  = DEF_SETUPSEG		! setup starts hereSYSSEG    = DEF_SYSSEG			! system loaded at 0x10000 (65536).MAX_SECONDARY_asm1 = MAX_SECONDARY_FILESIZE + SECTOR_SIZE - 1MAX_SECONDARY_asm = MAX_SECONDARY_asm1 / SECTOR_SIZE	! define for the assemblerMAX_DESCR_SECS_asm = MAX_DESCR_SECS	! **MAX_DESCR_SECTORS_asm = MAX_DESCR_SECTORS ! **MAX_IMAGE_NAME_asm = MAX_IMAGE_NAME	! **MAX_PW_CRC_asm	= MAX_PW_CRC		! **SECTOR_SIZE_asm = SECTOR_SIZE		! **MAX_MENU_TITLE_asm = MAX_MENU_TITLE	! **MAPcode   = MAX_SECONDARY_asm*0x200	! size of secondary codeMAP	  = MAPcode+0x200		! plus space for cmdline inputDFLCMD	  = MAP+0x200			! default command lineDESCR	  = DFLCMD+0x200			! descriptor load area offsetKEYTABLE  = DESCR+0x200*MAX_DESCR_SECS_asm	     ! 0x2600	! default command lineDATAEND	  = KEYTABLE+0x200   ! 0x2A00	! PARAMLINE or Load-Low areaSTACKSEG  = 0x9000	     ! MUST == INITSEG for kernel 2.0.36 (and others?)SETUP_STACKSIZE = 2048		! stacksize for kernel setup.S#else#define BOOTSEG 0x07c0			/* for probe.c  */#endif#define FIRSTSEG BOOTSEG#ifdef LILO_ASMSTACK	  = 2048		! amount of stack space to reservePARMLINE  = DATAEND		! 0x2A00	! parameter line construction area off.#if 0SSDIFFseg = FIRSTSEG-STACKSEGSSDIFF	  = SSDIFFseg<<4     ! 0xA000	! used to address FIRSTSEG from SS#elseSSDIFF	= 0#endif!SLA_SIZE  = 0x9E00		! setup load area size				! as the max. heap pointer in newer kernelsBOOTSECT  = 0x200		! kernel bootsect.S#define SETUP_STACK_DYN  PARMLINE#define SLA_SIZE_DYN  SETUP_STACK_DYN-SETUP_STACKSIZE-BOOTSECTKBBEG     = 0x41A			! beginning of keyboard bufferKBEND	  = 0x41C			! end of keyboard bufferKBLOW	  = 0x1eKBHIGH	  = 0x3e!!  Memory layout!! 0x007BE-0x007FD    64 B    partition table! 0x07C00-0x07DFF   0.5 kB   HD/FD boot load address! 0x10000-0x8FFFF 512.0 kB   kernel (zImage)! 0x90000-0x901FF   0.5 kB   kernel floppy boot sector (bootsect.S)! 0x90200-0x967FF  25.5 kB   kernel setup code (setup.S) and heap! 0x96800-0x969FF   0.5 kB   LILO stack! 0x96A00-0x96BFF   0.5 kB   LILO first stage loader! 0x96C00-0x985FF   6.5 kB   LILO second stage loader! 0x98600-0x987FF   0.5 kB   file map load area! 0x98800-0x98BFF     1 kB   descriptor table load area! 0x98C00-0x98DFF   0.5 kB   default command line load area! 0x98E00-0x98FFF   0.5 kB   keyboard translation table load area! 0x99000-0x991FF   0.5 kB   parameter line construction area! 0x99200-0x9FFFF  27.5 kB   Extended BIOS Data Area! when LILO has loaded the kernel, and control is transfered to! the kernel setup.S code at 0x9020:0000!! 0x007BE-0x007FD    64 B    partition table! 0x07C00-0x07DFF   0.5 kB   HD/FD boot load address! 0x10000-0x8FFFF 512.0 kB   kernel (zImage)! 0x90000-0x901FF   0.5 kB   kernel floppy boot sector (bootsect.S)! 0x90200-0x967FF  25.5 kB   kernel setup code (setup.S) and heap! 0x96800-0x987FF   8.0 kB   additional heap space! 0x98800-0x98FFF   2.0 kB   stack created for (setup.S)! 0x99000-0x991FF   0.5 kB   parameter line for kernel! 0x99200-0x9FFFF  27.5 kB   Extended BIOS Data AreaCL_MAGIC_ADDR	= 0x20			! command line magic numberCL_MAGIC	= 0xa33f		! very unusual command sequenceCL_OFFSET	= 0x22			! command line offsetCL_LENGTH	= 256			! maximum length! 0x90020-0x90021     2 by   command line magic number! 0x90022-0x90023     2 by   command line offsetCL_HEADER_ID	= 0x202			! "HdrS"CL_HDRS_VERSION	= 0x206			! 0x0201=old;  0x0202=newNEW_VERSION	= NEW2_HDR_VERSION	! 0x0202 for new cmdline protocolCL_POINTER	= 0x228			! new pointer is dword addressCL_RAMDISK_MAX	= CL_POINTER+4		! ramdisk_max; header version 0x0203#endif#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -