| 1 | !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! | 
|---|
| 2 | !! THIS INFORMATION IS OUTDATED WITH REGARD TO THE ECOMSTATION ADAPTED       !! | 
|---|
| 3 | !! VERSIONS OF AIR-BOOT !  (Versions v1.07 and higher)                       !! | 
|---|
| 4 | !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! | 
|---|
| 5 |  | 
|---|
| 6 |  | 
|---|
| 7 |  | 
|---|
| 8 | ÖÄ[ Developer Information for AiR-BOOT v1.05+ ]ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ· | 
|---|
| 9 | ÖÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ  ÄÄ  ú                           ú  ÄÄ  ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ· | 
|---|
| 10 | º                                                                            º | 
|---|
| 11 | º This documentation is meant for developers that wish to support AiR-BOOT.  º | 
|---|
| 12 | º  It explains detection, verification and reading/changing configuration of º | 
|---|
| 13 | º  AiR-BOOT.                                                                 º | 
|---|
| 14 | º                                                                            º | 
|---|
| 15 | ÓÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ  ÄÄ  ú                           ú  ÄÄ  ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄœ | 
|---|
| 16 | ÓÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄœ | 
|---|
| 17 |  | 
|---|
| 18 | 1.1  - Foreword | 
|---|
| 19 | 2.1  - Detection | 
|---|
| 20 | 2.2  - Code-Image | 
|---|
| 21 | 2.3  - Config-Data | 
|---|
| 22 | 3.1  - Configuration | 
|---|
| 23 | 3.2  - Internal Partition Table | 
|---|
| 24 | 3.3  - Hide-Configuration | 
|---|
| 25 |  | 
|---|
| 26 | ------------------------------------------------------------------------------- | 
|---|
| 27 |  | 
|---|
| 28 | =================== | 
|---|
| 29 | | 1.1  - FOREWORD | | 
|---|
| 30 | =================== | 
|---|
| 31 |  | 
|---|
| 32 | This document defines several aspects of AiR-BOOT v0.26b+ and is | 
|---|
| 33 | currently on the level of AiR-BOOT v1.05+. | 
|---|
| 34 |  | 
|---|
| 35 | AiR-BOOT is an advanced multi-boot-loader that resides completly in | 
|---|
| 36 | MBR/track-0. It has built-in colored menu-driven setup, | 
|---|
| 37 | Virus-Detection and much more. | 
|---|
| 38 |  | 
|---|
| 39 | Please keep in mind that you are responsible for doing those changes | 
|---|
| 40 | the documented, correct manner. AiR-BOOT is able to fix some | 
|---|
| 41 | configuration values like Default-Partition, because the user could | 
|---|
| 42 | have killed that partition as well, but AiR-BOOT is not completely | 
|---|
| 43 | error-tolerant. Work as defined in this documentation and everything | 
|---|
| 44 | will work as expected. | 
|---|
| 45 |  | 
|---|
| 46 | All offsets are zero-based, which means offset 1 is the 2nd byte. | 
|---|
| 47 | Everything is meant to be in Intel-Order. | 
|---|
| 48 |  | 
|---|
| 49 | AiR-BOOT and its source is available via | 
|---|
| 50 | http://air-boot.sourceforge.net | 
|---|
| 51 |  | 
|---|
| 52 | You may contact the author via | 
|---|
| 53 | m_kiewitz [AT] users [DOT] sourceforge [DOT] net | 
|---|
| 54 |  | 
|---|
| 55 |  | 
|---|
| 56 | ==================== | 
|---|
| 57 | | 2.1  - DETECTION | | 
|---|
| 58 | ==================== | 
|---|
| 59 |  | 
|---|
| 60 | AiR-BOOT consists of several parts. | 
|---|
| 61 | - AiR-BOOT MBR Code (sector 1) | 
|---|
| 62 | - AiR-BOOT Code (starting at sector 2) | 
|---|
| 63 | - AiR-BOOT configuration (sector 55-59) | 
|---|
| 64 | - AiR-BOOT MBR backup (sector 60) | 
|---|
| 65 |  | 
|---|
| 66 | A detailed view: | 
|---|
| 67 |  | 
|---|
| 68 | Sec.  Name | 
|---|
| 69 | --------------------------- | 
|---|
| 70 | |  1 | Master Boot Record | -> Code | 
|---|
| 71 | |  2 | System-Table       | -> Code | 
|---|
| 72 | |  3 | Code               | -> Code | 
|---|
| 73 | | .. | ...                | -> Code | 
|---|
| 74 | | 55 | Configuration      | -> Config | 
|---|
| 75 | | 56 | Partitiontable 1   | -> Config | 
|---|
| 76 | | 57 | Partitiontable 2   | -> Config | 
|---|
| 77 | | 58 | Hide-Configuration | -> Config | 
|---|
| 78 | | 59 | Hide-Configuration | -> Config | 
|---|
| 79 | | 60 | Backup of our MBR  | -> Config | 
|---|
| 80 | --------------------------- | 
|---|
| 81 |  | 
|---|
| 82 | Internally those parts are combined into Code and Configuration Data. | 
|---|
| 83 | Both can get individually checked for corruption, so if the code is | 
|---|
| 84 | damaged, but the configuration is intact, we don't have to rewrite | 
|---|
| 85 | everything and force the user to reconfigure. | 
|---|
| 86 |  | 
|---|
| 87 | Now a basic-routine used for making a checksum out of ONE 512-byte | 
|---|
| 88 | sector. Further use is explained in the following sections. | 
|---|
| 89 |  | 
|---|
| 90 | ;        In: BX - Base Check | 
|---|
| 91 | ;            DS:SI - Pointer to 512-byte-area to be included | 
|---|
| 92 | ;       Out: BX - Base Check Result | 
|---|
| 93 | ; Destroyed: SI will get updated (+512) | 
|---|
| 94 | MBR_GetCheckOfSector         Proc Near   Uses ax cx | 
|---|
| 95 | mov    cx, 256 | 
|---|
| 96 | GetCheckOfSector_Loop: | 
|---|
| 97 | lodsw | 
|---|
| 98 | xor    ax, 0BABEh | 
|---|
| 99 | xor    bx, ax | 
|---|
| 100 | loop   GetCheckOfSector_Loop | 
|---|
| 101 | or     bx, bx | 
|---|
| 102 | jnz    GetCheckOfSector_NoFixUp | 
|---|
| 103 | mov    bx, 1             ; No 0, because 0 means "empty" | 
|---|
| 104 | GetCheckOfSector_NoFixUp: | 
|---|
| 105 | ret | 
|---|
| 106 | MBR_GetCheckOfSector         EndP | 
|---|
| 107 |  | 
|---|
| 108 |  | 
|---|
| 109 | ===================== | 
|---|
| 110 | | 2.2  - CODE-IMAGE | | 
|---|
| 111 | ===================== | 
|---|
| 112 |  | 
|---|
| 113 | Detecting presence of AiR-BOOT code is easy. | 
|---|
| 114 | Look in the MBR at offset 2 for the signature 'AiRBOOT'. | 
|---|
| 115 |  | 
|---|
| 116 | If it's found, then the following structure is legal: | 
|---|
| 117 |  | 
|---|
| 118 | ----------------------------------------------------------------------- | 
|---|
| 119 | Contents: Standard AiR-BOOT basic information structure | 
|---|
| 120 | ======================================================================= | 
|---|
| 121 | Identifier         : STRING * 7    - 'AiRBOOT' | 
|---|
| 122 | DayOfRelease       : BYTE          - in BCD | 
|---|
| 123 | MonthOfRelease     : BYTE          - in BCD | 
|---|
| 124 | YearOfRelease      : WORD          - in BCD (non-intel byte order) | 
|---|
| 125 | MajorVersion       : BYTE          - in BCD | 
|---|
| 126 | MinorVersion       : BYTE          - in BCD | 
|---|
| 127 | ReleaseLanguage    : BYTE          - 'D' for dutch | 
|---|
| 128 | 'F' for french | 
|---|
| 129 | 'G' for german | 
|---|
| 130 | 'I' for italian | 
|---|
| 131 | 'R' for russian | 
|---|
| 132 | 'E' for english (v1.01+) | 
|---|
| 133 | 'S' for swedish | 
|---|
| 134 | 'U' for USA (removed in v1.01+) | 
|---|
| 135 | TotalCodeSectors   : BYTE          - counting from sector 2 | 
|---|
| 136 | CheckSumOfCode     : WORD          - explained later | 
|---|
| 137 | ----------------------------------------------------------------------- | 
|---|
| 138 |  | 
|---|
| 139 | Now how to verify, if the Code-Image is completely intact. | 
|---|
| 140 |  | 
|---|
| 141 | Please note: There is no verification of the MBR-code. Anyway, if the | 
|---|
| 142 | MBR-code is bad, then the signature should not be in place and it | 
|---|
| 143 | would not load anyway. | 
|---|
| 144 |  | 
|---|
| 145 | Code used for verification in x86 assembly: | 
|---|
| 146 |  | 
|---|
| 147 | ; DS:SI - point to Sector 2 (the sector following MBR) | 
|---|
| 148 | xor     bx, bx | 
|---|
| 149 | mov     cx, TotalCodeSectors | 
|---|
| 150 | CheckCodeLoop: | 
|---|
| 151 | call    MBR_GetCheckOfSector | 
|---|
| 152 | loop    CheckCodeLoop | 
|---|
| 153 | -> BX holds CheckSum | 
|---|
| 154 |  | 
|---|
| 155 | Now if BX and CheckSumOfCode match, we got a intact code-image. | 
|---|
| 156 |  | 
|---|
| 157 |  | 
|---|
| 158 | ====================== | 
|---|
| 159 | | 2.3  - CONFIG-DATA | | 
|---|
| 160 | ====================== | 
|---|
| 161 |  | 
|---|
| 162 | Detecting AiR-BOOT configuration is similar to code detection. | 
|---|
| 163 | Look in sector 55 at offset 0 for the signature 'AiRCFG-TABLE'. | 
|---|
| 164 |  | 
|---|
| 165 | If it's found, then the following structure is legal: | 
|---|
| 166 |  | 
|---|
| 167 | ----------------------------------------------------------------------- | 
|---|
| 168 | Contents: Standard AiR-BOOT config identification structure | 
|---|
| 169 | ======================================================================= | 
|---|
| 170 | Identifier         : STRING * 13   - 'AiRCFG-TABLE' | 
|---|
| 171 | MajorVersion       : BYTE          - in BCD | 
|---|
| 172 | MinorVersion       : BYTE          - in BCD | 
|---|
| 173 | ReleaseLanguage    : BYTE          - see above | 
|---|
| 174 | EditCounter        : DWORD         - Will be increased on every save | 
|---|
| 175 | CheckSumOfConfig   : WORD          - explained later | 
|---|
| 176 | ----------------------------------------------------------------------- | 
|---|
| 177 |  | 
|---|
| 178 | Please note: MajorVersion/MinorVersion/ReleaseLanguage may NOT have to | 
|---|
| 179 | match the Version in the basic information structure. | 
|---|
| 180 | This is the version of AiR-BOOT that installed the Config | 
|---|
| 181 | area. It may be as well the current data structure level. | 
|---|
| 182 | Anyway, you need to get the code version to find out what | 
|---|
| 183 | data structure is used. | 
|---|
| 184 |  | 
|---|
| 185 | Code used for verification in x86 assembly: | 
|---|
| 186 |  | 
|---|
| 187 | ; DS:SI - point to Sector 55 | 
|---|
| 188 | xor     bx, bx | 
|---|
| 189 | mov     cx, 5                   ; total of 5 configuration sectors | 
|---|
| 190 | CheckCodeLoop: | 
|---|
| 191 | call    MBR_GetCheckOfSector | 
|---|
| 192 | loop    CheckCodeLoop | 
|---|
| 193 | -> BX holds CheckSum | 
|---|
| 194 |  | 
|---|
| 195 | Now if BX and CheckSumOfConfig match, we got an intact code-image. | 
|---|
| 196 |  | 
|---|
| 197 | Please note: The MBR-BackUp sector is *NOT* included. | 
|---|
| 198 |  | 
|---|
| 199 |  | 
|---|
| 200 | ======================== | 
|---|
| 201 | | 3.1  - CONFIGURATION | | 
|---|
| 202 | ======================== | 
|---|
| 203 |  | 
|---|
| 204 | Please note: You have to check that the configuration data is INTACT, | 
|---|
| 205 | before even thinking about writing to the configuration | 
|---|
| 206 | area. If it's not intact, consider it as unknown data. | 
|---|
| 207 |  | 
|---|
| 208 | After changing anything in configuration area, do the following: | 
|---|
| 209 | - Increase the EditCounter in sector 55 by one | 
|---|
| 210 | - Set the CheckSumConfig to 0 | 
|---|
| 211 | - Calculate a new CheckSum by using the algo specified earlier | 
|---|
| 212 | - Set CheckSumConfig to the checksum you calculated | 
|---|
| 213 |  | 
|---|
| 214 | In this section, I will specify the basic configuration structure used | 
|---|
| 215 | in sector 55. | 
|---|
| 216 |  | 
|---|
| 217 | ----------------------------------------------------------------------- | 
|---|
| 218 | Contents: AiR-BOOT basic configuration structure | 
|---|
| 219 | ======================================================================= | 
|---|
| 220 | Identifier         : STRING * 13   - 'AiRCFG-TABLE' | 
|---|
| 221 | MajorVersion       : BYTE          - in BCD | 
|---|
| 222 | MinorVersion       : BYTE          - in BCD | 
|---|
| 223 | ReleaseLanguage    : BYTE          - normally 'E' for English | 
|---|
| 224 | EditCounter        : DWORD         - Will be increased on every save | 
|---|
| 225 | CheckSumOfConfig   : WORD          - explained in [2.3] | 
|---|
| 226 | Partitions         : BYTE          - Partitions count in IPT | 
|---|
| 227 | BootPartitions     : BYTE          - Removed since v0.28b | 
|---|
| 228 | DefaultSelection   : BYTE          - Default-selection no (zero based) | 
|---|
| 229 | FFh - nothing bootable | 
|---|
| 230 | [additions/changes v1.02+] | 
|---|
| 231 | FFh - Floppy Boot | 
|---|
| 232 | FEh - BIOS continue (CD-ROM,etc.) | 
|---|
| 233 | 80h - nothing bootable | 
|---|
| 234 | LastPartition      : BYTE          - Last-booted-partition (zero based) | 
|---|
| 235 | Even under v1.02+, this never | 
|---|
| 236 | contains floppy or Resume-BIOS | 
|---|
| 237 | TimedBoot          : BYTE          - 0 - Timed Boot disabled | 
|---|
| 238 | 1 - Timed Boot enabled | 
|---|
| 239 | TimedSeconds       : BYTE          - How many seconds till Timed Boot | 
|---|
| 240 | TimedDelay         : WORD          - Internal Do not change | 
|---|
| 241 | TimedBootLast      : BYTE          - 0 - Boot default, if Timed Boot | 
|---|
| 242 | 1 - Boot last, if Timed Boot | 
|---|
| 243 | RememberBoot       : BYTE          - 0 - No action | 
|---|
| 244 | 1 - User-Boot->set LastPartition | 
|---|
| 245 | RememberTimed      : BYTE          - 0 - No action | 
|---|
| 246 | 1 - Timed-Boot->set LastPartition | 
|---|
| 247 | IncludeFloppy      : BYTE          - 0 - No floppy drive in bootmenu | 
|---|
| 248 | 1 - Floppy drive in bootmenu | 
|---|
| 249 | BootMenuActive     : BYTE          - 0 - Don't display bootmenu | 
|---|
| 250 | 1 - Display bootmenu | 
|---|
| 251 | 2 - Detailed bootmenu (v0.91+) | 
|---|
| 252 | PartitionsDetect   : BYTE          - 0 - No action | 
|---|
| 253 | 1 - Add new partitions as bootable | 
|---|
| 254 | PasswordedSetup    : BYTE          - 0 - No action | 
|---|
| 255 | 1 - Ask Password on enter setup | 
|---|
| 256 | PasswordedSystem   : BYTE          - 0 - No action | 
|---|
| 257 | 1 - Ask Password everytime | 
|---|
| 258 | PasswordedChngBoot : BYTE          - 0 - No action | 
|---|
| 259 | 1 - Ask Password, if user boots | 
|---|
| 260 | by himself | 
|---|
| 261 | ProtectMBRTSR      : BYTE          - 0 - No action | 
|---|
| 262 | 1 - Install MBR-Protect TSR | 
|---|
| 263 | ProtectMBRignore   : BYTE          - 0 - System halt on MBR write | 
|---|
| 264 | 1 - Ignoring MBR writes | 
|---|
| 265 | FloppyGetName      : BYTE          - 0 - No action | 
|---|
| 266 | 1 - Get floppy name on startup | 
|---|
| 267 | DetectVirus        : BYTE          - 0 - No action | 
|---|
| 268 | 1 - Detect normal MBR virii | 
|---|
| 269 | DetectStealth      : BYTE          - 0 - No action | 
|---|
| 270 | 1 - Detect stealth MBR virii | 
|---|
| 271 | DetectVIBR         : BYTE          - 0 - No action | 
|---|
| 272 | 1 - Detect Virii-In-Boot-Record | 
|---|
| 273 | AutoEnterSetup     : BYTE          - 0 - No action | 
|---|
| 274 | 1 - enter setup automatically | 
|---|
| 275 | (reset by setup) | 
|---|
| 276 | MasterPassword     : QWORD         - Not documented | 
|---|
| 277 | BootPassword       : QWORD         - Not documented | 
|---|
| 278 | RudeProtection     : BYTE          - Removed since v0.28b | 
|---|
| 279 | LinuxPartition     : BYTE          - Linux Root partition no (0-based) | 
|---|
| 280 | [not used anymore since 1.02+] | 
|---|
| 281 | TimedKeyHandling   : BYTE          - 0 - Do nothing | 
|---|
| 282 | 1 - Reset time | 
|---|
| 283 | 2 - Stop time | 
|---|
| 284 | MakeSound          : BYTE          - 0 - No action | 
|---|
| 285 | 1 - Make startup/boot sounds | 
|---|
| 286 | FloppyGetTimer     : BYTE          - 0 - No action | 
|---|
| 287 | 1 - Get floppy name every 2 secs | 
|---|
| 288 | ResumeBIOSbootSeq  : BYTE          - 0 - Disabled | 
|---|
| 289 | 1 - CD-ROM | 
|---|
| 290 | 2 - Network | 
|---|
| 291 | 3 - ZIP/LS120 | 
|---|
| 292 | CooperBars         : BYTE          - 0 - Disabled | 
|---|
| 293 | 1 - Enabled | 
|---|
| 294 | [following contents are not used anymore - since 1.02] | 
|---|
| 295 | LinuxCommandLine   : STRING * 75   - Linux Command Line (0-terminated) | 
|---|
| 296 | LinuxKrnlPartition : BYTE          - 0FFh - Disabled | 
|---|
| 297 | Otherwise no of partition | 
|---|
| 298 | (has to be FAT-16) (0 based) | 
|---|
| 299 | LinuxDefaultKernel : STRING * 11   - Default Kernel Name | 
|---|
| 300 | will override Default Partition, | 
|---|
| 301 | if found. Filled up with spaces. | 
|---|
| 302 | LinuxKernelNameEnd : BYTE          - Fixed ZERO | 
|---|
| 303 | LinuxLastKernel    : STRING * 11   - Last-Booted Kernel Name | 
|---|
| 304 | if Partition got booted, this | 
|---|
| 305 | field will get filled with spaces | 
|---|
| 306 | LinuxKernelNameEnd2: BYTE          - Fixed ZERO | 
|---|
| 307 | [End of contents that are not used anymore] | 
|---|
| 308 | ExtPartitionMShack : BYTE          - 0 - Disabled | 
|---|
| 309 | 1 - MS Work-Around Enabled | 
|---|
| 310 | AutomaticBoot      : BYTE          - Automatic Booting (0.94+) | 
|---|
| 311 | 0 - Disabled | 
|---|
| 312 | 1 - Enabled (only for one time) | 
|---|
| 313 | AutomaticPartition : BYTE          - Automatic Booting (0.94+) | 
|---|
| 314 | Partition no (zero based) | 
|---|
| 315 | FFh - Floppy booting | 
|---|
| 316 | FEh - BIOS continue (CD-ROM,ZIP) | 
|---|
| 317 | ForceLBAUsage      : BYTE          - Forces BIOS LBA API Usage (1.00+) | 
|---|
| 318 | 0 - Disabled | 
|---|
| 319 | 1 - Enabled | 
|---|
| 320 | IgnoreLVM          : BYTE          - Ignores LVM information (1.02+) | 
|---|
| 321 | 0 - Disabled (do not ignore) | 
|---|
| 322 | 1 - Enabled | 
|---|
| 323 | Reserved           : STRING * 253  - RESERVED | 
|---|
| 324 | AutoDriveLetter    : STRING * 5    - RESERVED CONTENT (0.94+) | 
|---|
| 325 | (used by Installer/2) | 
|---|
| 326 | BIOScontIPTentry   : STRING * 34   - RESERVED CONTENT | 
|---|
| 327 | VirusDetectionHelp : STRING * 12   - RESERVED CONTENT | 
|---|
| 328 | FloppyIPTentry     : STRING * 34   - RESERVED CONTENT | 
|---|
| 329 | ----------------------------------------------------------------------- | 
|---|
| 330 |  | 
|---|
| 331 | Please note: | 
|---|
| 332 | = Any area marked as Reserved MUST not get touched in any way = | 
|---|
| 333 |  | 
|---|
| 334 |  | 
|---|
| 335 | =================================== | 
|---|
| 336 | | 3.2  - INTERNAL PARTITION TABLE | | 
|---|
| 337 | =================================== | 
|---|
| 338 |  | 
|---|
| 339 | The internal partition table (IPT) is in sectors 56-57. | 
|---|
| 340 |  | 
|---|
| 341 | The basic rule: Don't delete/add/move any of those entries. | 
|---|
| 342 | AiR-BOOT will detect changes on the partition tables | 
|---|
| 343 | by itself and will adjust pointers from basic | 
|---|
| 344 | configuration and hide-configuration automatically. | 
|---|
| 345 |  | 
|---|
| 346 | Each IPT-entry is 34-bytes long. Those entries begin at offset 0. | 
|---|
| 347 | You have to look in basic configuration to know how many IPT-entries | 
|---|
| 348 | are in there. | 
|---|
| 349 |  | 
|---|
| 350 | If you change any partitions-bootable flag, you have to adjust the | 
|---|
| 351 | BootPartitions-variable from basic configuration accordingly. | 
|---|
| 352 |  | 
|---|
| 353 | ----------------------------------------------------------------------- | 
|---|
| 354 | Contents: AiR-BOOT internal partition table entry (IPT) | 
|---|
| 355 | ======================================================================= | 
|---|
| 356 | SerialNumber       : DWORD         - Serial number of partition / | 
|---|
| 357 | Partition ID from LVM | 
|---|
| 358 | (if available) | 
|---|
| 359 | PartitionName      : STRING * 11   - Name of the partition (in sync | 
|---|
| 360 | with LVM and/or boot-record) | 
|---|
| 361 | Drive              : BYTE          - Drive of partition (INT 13h-like) | 
|---|
| 362 | PartitionID        : BYTE          - unhidden ID of partition | 
|---|
| 363 | (08h == NTFS, thanx M$) | 
|---|
| 364 | (FCh == JFS - v1.05+) | 
|---|
| 365 | Flags              : BYTE          - Bit 0 - BootAble | 
|---|
| 366 | Bit 1 - VIBR Detection | 
|---|
| 367 | Bit 2 - Hide Feature used | 
|---|
| 368 | Bit 3 - Logical Drive Letter set | 
|---|
| 369 | Bit 4 - M$ Partition Hack Req. | 
|---|
| 370 | All others: RESERVED | 
|---|
| 371 | CheckSum           : WORD          - CheckSum of boot-record | 
|---|
| 372 | LocationBegin      : STRING * 3    - Cyl/Head/Sec of Boot-Record | 
|---|
| 373 | LocationPartTab    : STRING * 3    - Cyl/Head/Sec of Partition Table | 
|---|
| 374 | containing this partition | 
|---|
| 375 | AbsoluteBegin      : DWORD         - LBA sector of Boot-Record | 
|---|
| 376 | AbsolutePartTab    : DWORD         - LBA sector of Partition Table | 
|---|
| 377 | ----------------------------------------------------------------------- | 
|---|
| 378 |  | 
|---|
| 379 | You may change: | 
|---|
| 380 | SerialNumber/PartitionName - If you sync your changes with the | 
|---|
| 381 | bootrecord of the partition | 
|---|
| 382 | Flags                      - Do not (re)set any reserved bits | 
|---|
| 383 |  | 
|---|
| 384 | All other entries should NOT be changed by anyone but AiR-BOOT. | 
|---|
| 385 |  | 
|---|
| 386 |  | 
|---|
| 387 | ============================= | 
|---|
| 388 | | 3.3  - HIDE CONFIGURATION | | 
|---|
| 389 | ============================= | 
|---|
| 390 |  | 
|---|
| 391 | First of all, if you define a Hide-Configuration, set the "Hide-Feature | 
|---|
| 392 | used" flag. If you delete a Hide-Configuration completely, reset the | 
|---|
| 393 | flag. | 
|---|
| 394 |  | 
|---|
| 395 | Hiding is defined per partition using a 30-byte string. This string is | 
|---|
| 396 | built up of Partition-pointers that consist of a single byte. | 
|---|
| 397 |  | 
|---|
| 398 | Each partition-pointer is actually the number of the partition in the | 
|---|
| 399 | IPT, which means they are zero-based. | 
|---|
| 400 |  | 
|---|
| 401 | The entry FFh is a terminator and actually defines "no-partition". | 
|---|
| 402 | An empty Hide-Configuration entry consists of 30x FFh bytes. | 
|---|
| 403 |  | 
|---|
| 404 | The partitions listed in each hide-configuration string should be in- | 
|---|
| 405 | order, which means if you want to hide partition 0, 2 and 3 the string | 
|---|
| 406 | should look like this: 00h 02h 03h FFh (and 26 more FFhs) | 
|---|
| 407 |  | 
|---|
| 408 | The boot-drive-letters string is 30-bytes long. One byte per partition. | 
|---|
| 409 | It's used for OS/2 use ONLY and it's only definable for HPFS and | 
|---|
| 410 | FAT16 partitions. If you enable/disable the driveletter, then YOU are | 
|---|
| 411 | required to change the corresponding partition's Drive-Letter flag | 
|---|
| 412 | accordingly. | 
|---|
| 413 |  | 
|---|
| 414 | Since 1.02, AiR-BOOT supports LVM driveletter adjustment and will | 
|---|
| 415 | change the driveletter of the partition that is to be booted. | 
|---|
| 416 |  | 
|---|
| 417 | ----------------------------------------------------------------------- | 
|---|
| 418 | Contents: AiR-BOOT hide configuration | 
|---|
| 419 | ======================================================================= | 
|---|
| 420 | HideConfiguration  : STRING * 30   - for one partition each | 
|---|
| 421 | * 30 -> 900 Bytes (due maximum of 30 partitions in IPT) | 
|---|
| 422 | DriveLetters       : STRING * 30   - Boot driveletters of partitions | 
|---|
| 423 | [since v0.92+] | 
|---|
| 424 | 00h - disabled | 
|---|
| 425 | 80h - "C" | 
|---|
| 426 | 81h - "D"... | 
|---|
| 427 | Reserved           : STRING * 84   - RESERVED | 
|---|
| 428 | Identifier         : STRING * 10   - 'AiRBOOTHID' | 
|---|
| 429 | ----------------------------------------------------------------------- | 
|---|