/*
- * Copyright (c) 1999 Apple Computer, Inc. All rights reserved.
+ * Copyright (c) 1999-2003 Apple Computer, Inc. All rights reserved.
*
* @APPLE_LICENSE_HEADER_START@
*
- * Portions Copyright (c) 1999 Apple Computer, Inc. All Rights
+ * Portions Copyright (c) 1999-2003 Apple Computer, Inc. All Rights
* Reserved. This file contains Original Code and/or Modifications of
* Original Code as defined in and that are subject to the Apple Public
- * Source License Version 1.1 (the "License"). You may not use this file
+ * Source License Version 2.0 (the "License"). You may not use this file
* except in compliance with the License. Please obtain a copy of the
* License at http://www.apple.com/publicsource and read it before using
* this file.
#ifndef __BOOT2_BOOT_H
#define __BOOT2_BOOT_H
+#include "libsaio.h"
+
/*
- * How long to wait (in seconds) to load the
- * kernel after displaying the "boot:" prompt.
+ * Keys used in system Boot.plist
*/
-#define BOOT_TIMEOUT 10 /* 10 second timeout */
+#define kGraphicsModeKey "Graphics Mode"
+#define kTextModeKey "Text Mode"
+#define kBootGraphicsKey "Boot Graphics"
+#define kQuietBootKey "Quiet Boot"
+#define kKernelFlagsKey "Kernel Flags"
+#define kMKextCacheKey "MKext Cache"
+#define kKernelNameKey "Kernel"
+#define kKernelCacheKey "Kernel Cache"
+#define kBootDeviceKey "Boot Device"
+#define kTimeoutKey "Timeout"
+#define kRootDeviceKey "rd"
+#define kBootUUIDKey "boot-uuid"
+#define kPlatformKey "platform"
+#define kACPIKey "acpi"
+#define kCDROMPromptKey "CD-ROM Prompt"
+#define kCDROMOptionKey "CD-ROM Option Key"
+
+#define kDefaultKernel "mach_kernel"
/*
- * Keys used in system Default.table / Instance0.table
+ * Flags to the booter or kernel
+ *
*/
-#define PROMPT_KEY "Prompt For Driver Disk"
-#define NUM_PROMPTS_KEY "Driver Disk Prompts"
-#define ASK_KEY "Ask For Drivers"
-#define INSTALL_KEY "Install Mode"
-#define G_MODE_KEY "Graphics Mode"
+#define kVerboseModeFlag "-v"
+#define kSafeModeFlag "-x"
+#define kOldSafeModeFlag "-f"
+#define kIgnoreBootFileFlag "-F"
+#define kSingleUserModeFlag "-s"
/*
- * Possible values for the bootdev argument passed to boot().
+ * Booter behavior control
*/
+#define kBootTimeout -1
+#define kCDBootTimeout 8
+
+/*
+ * A global set by boot() to record the device that the booter
+ * was loaded from.
+ */
+extern int gBIOSDev;
+extern long gBootMode;
+extern BOOL sysConfigValid;
+extern char bootBanner[];
+extern char bootPrompt[];
+extern BOOL gOverrideKernel;
+extern char *gPlatformName;
+extern char gMKextName[];
+extern char gRootDevice[];
+extern BVRef gBootVolume;
+
+// Boot Modes
enum {
- kBootDevHardDisk = 0,
- kBootDevFloppyDisk = 1,
- kBootDevNetwork = 2,
+ kBootModeNormal = 0,
+ kBootModeSafe = 1,
+ kBootModeSecure = 2,
+ kBootModeQuiet = 4
};
/*
- * The directory that contains the booter support files.
+ * graphics.c
*/
-#define BOOT_DIR_DISK "/usr/standalone/i386/"
-#define BOOT_DIR_NET ""
+extern void printVBEInfo();
+extern void printVBEModeInfo();
+extern void setVideoMode(int mode);
+extern int getVideoMode();
+extern void spinActivityIndicator();
+extern void clearActivityIndicator();
+extern void drawColorRectangle( unsigned short x,
+ unsigned short y,
+ unsigned short width,
+ unsigned short height,
+ unsigned char colorIndex );
+extern void drawDataRectangle( unsigned short x,
+ unsigned short y,
+ unsigned short width,
+ unsigned short height,
+ unsigned char * data );
+extern int
+convertImage( unsigned short width,
+ unsigned short height,
+ const unsigned char *imageData,
+ unsigned char **newImageData );
+extern char * decodeRLE( const void * rleData, int rleBlocks, int outBytes );
+extern void drawBootGraphics(void);
+extern int getVideoMode(void);
/*
- * A global set by boot() to record the device that the booter
- * was loaded from.
+ * drivers.c
*/
-extern int gBootDev;
+extern long LoadDrivers(char * dirSpec);
+extern long DecodeKernel(void *binary, entry_t *rentry, char **raddr, int *rsize);
/*
- * Create the complete path to a booter support file.
+ * options.c
*/
-#define makeFilePath(x) \
- (gBootDev == kBootDevNetwork) ? BOOT_DIR_NET x : BOOT_DIR_DISK x
+extern int getBootOptions(BOOL firstRun);
+extern int processBootOptions();
/*
- * Functions defined in graphics.c.
+ * lzss.c
*/
-extern void message(char * str, int centered);
-extern void setMode(int mode);
-extern int currentMode();
-extern void spinActivityIndicator();
-extern void clearActivityIndicator();
+extern int decompress_lzss(u_int8_t *dst, u_int8_t *src, u_int32_t srclen);
+
+struct compressed_kernel_header {
+ u_int32_t signature;
+ u_int32_t compress_type;
+ u_int32_t adler32;
+ u_int32_t uncompressed_size;
+ u_int32_t compressed_size;
+ u_int32_t reserved[11];
+ char platform_name[64];
+ char root_path[256];
+ u_int8_t data[0];
+};
+typedef struct compressed_kernel_header compressed_kernel_header;
#endif /* !__BOOT2_BOOT_H */