1This is grub.info, produced by makeinfo version 4.0 from grub.texi. 2 3INFO-DIR-SECTION Kernel 4START-INFO-DIR-ENTRY 5* GRUB: (grub). The GRand Unified Bootloader 6* grub-install: (grub)Invoking grub-install. Install GRUB on your drive 7* grub-md5-crypt: (grub)Invoking grub-md5-crypt. Encrypt a password 8 in MD5 format 9* grub-terminfo: (grub)Invoking grub-terminfo. Generate a terminfo 10 command from a 11 terminfo name 12* grub-set-default: (grub)Invoking grub-set-default. Set a default boot 13 entry 14* mbchk: (grub)Invoking mbchk. Check for the format of a Multiboot kernel 15END-INFO-DIR-ENTRY 16 17 Copyright (C) 1999,2000,2001,2002,2004 Free Software Foundation, Inc. 18 19 Permission is granted to make and distribute verbatim copies of this 20manual provided the copyright notice and this permission notice are 21preserved on all copies. 22 23 Permission is granted to copy and distribute modified versions of 24this manual under the conditions for verbatim copying, provided also 25that the entire resulting derived work is distributed under the terms 26of a permission notice identical to this one. 27 28 Permission is granted to copy and distribute translations of this 29manual into another language, under the above conditions for modified 30versions. 31 32 33File: grub.info, Node: install, Next: ioprobe, Prev: initrd, Up: Command-line and menu entry commands 34 35install 36------- 37 38 - Command: install [`--force-lba'] [`--stage2=os_stage2_file'] 39 stage1_file [`d'] dest_dev stage2_file [addr] [`p'] 40 [config_file] [real_config_file] 41 This command is fairly complex, and you should not use this command 42 unless you are familiar with GRUB. Use `setup' (*note setup::) 43 instead. 44 45 In short, it will perform a full install presuming the Stage 2 or 46 Stage 1.5(1) (*note install-Footnote-1::) is in its final install 47 location. 48 49 In slightly more detail, it will load STAGE1_FILE, validate that 50 it is a GRUB Stage 1 of the right version number, install in it a 51 blocklist for loading STAGE2_FILE as a Stage 2. If the option `d' 52 is present, the Stage 1 will always look for the actual disk 53 STAGE2_FILE was installed on, rather than using the booting drive. 54 The Stage 2 will be loaded at address ADDR, which must be `0x8000' 55 for a true Stage 2, and `0x2000' for a Stage 1.5. If ADDR is not 56 present, GRUB will determine the address automatically. It then 57 writes the completed Stage 1 to the first block of the device 58 DEST_DEV. If the options `p' or CONFIG_FILE are present, then it 59 reads the first block of stage2, modifies it with the values of 60 the partition STAGE2_FILE was found on (for `p') or places the 61 string CONFIG_FILE into the area telling the stage2 where to look 62 for a configuration file at boot time. Likewise, if 63 REAL_CONFIG_FILE is present and STAGE2_FILE is a Stage 1.5, then 64 the Stage 2 CONFIG_FILE is patched with the configuration file 65 name REAL_CONFIG_FILE. This command preserves the DOS BPB (and for 66 hard disks, the partition table) of the sector the Stage 1 is to 67 be installed into. 68 69 *Caution:* Several buggy BIOSes don't pass a booting drive 70 properly when booting from a hard disk drive. Therefore, you will 71 unfortunately have to specify the option `d', whether your Stage2 72 resides at the booting drive or not, if you have such a BIOS. We 73 know these are defective in this way: 74 75 76 Fujitsu LifeBook 400 BIOS version 31J0103A 77 78 79 HP Vectra XU 6/200 BIOS version GG.06.11 80 81 *Caution2:* A number of BIOSes don't return a correct LBA support 82 bitmap even if they do have the support. So GRUB provides a 83 solution to ignore the wrong bitmap, that is, the option 84 `--force-lba'. Don't use this option if you know that your BIOS 85 doesn't have LBA support. 86 87 *Caution3:* You must specify the option `--stage2' in the grub 88 shell, if you cannot unmount the filesystem where your stage2 file 89 resides. The argument should be the file name in your operating 90 system. 91 92 93File: grub.info, Node: install-Footnotes, Up: install 94 95 (1) They're loaded the same way, so we will refer to the Stage 1.5 96as a Stage 2 from now on. 97 98 99File: grub.info, Node: ioprobe, Next: kernel, Prev: install, Up: Command-line and menu entry commands 100 101ioprobe 102------- 103 104 - Command: ioprobe drive 105 Probe I/O ports used for the drive DRIVE. This command will list 106 the I/O ports on the screen. For technical information, *Note 107 Internals::. 108 109 110File: grub.info, Node: kernel, Next: lock, Prev: ioprobe, Up: Command-line and menu entry commands 111 112kernel 113------ 114 115 - Command: kernel [`--type=type'] [`--no-mem-option'] file ... 116 Attempt to load the primary boot image (Multiboot a.out or ELF, 117 Linux zImage or bzImage, FreeBSD a.out, NetBSD a.out, etc.) from 118 FILE. The rest of the line is passed verbatim as the "kernel 119 command-line". Any modules must be reloaded after using this 120 command. 121 122 This command also accepts the option `--type' so that you can 123 specify the kernel type of FILE explicitly. The argument TYPE must 124 be one of these: `netbsd', `freebsd', `openbsd', `linux', 125 `biglinux', and `multiboot'. However, you need to specify it only 126 if you want to load a NetBSD ELF kernel, because GRUB can 127 automatically determine a kernel type in the other cases, quite 128 safely. 129 130 The option `--no-mem-option' is effective only for Linux. If the 131 option is specified, GRUB doesn't pass the option `mem=' to the 132 kernel. This option is implied for Linux kernels 2.4.18 and newer. 133 134 135File: grub.info, Node: lock, Next: makeactive, Prev: kernel, Up: Command-line and menu entry commands 136 137lock 138---- 139 140 - Command: lock 141 Prevent normal users from executing arbitrary menu entries. You 142 must use the command `password' if you really want this command to 143 be useful (*note password::). 144 145 This command is used in a menu, as shown in this example: 146 147 title This entry is too dangerous to be executed by normal users 148 lock 149 root (hd0,a) 150 kernel /no-security-os 151 152 See also *Note Security::. 153 154 155File: grub.info, Node: makeactive, Next: map, Prev: lock, Up: Command-line and menu entry commands 156 157makeactive 158---------- 159 160 - Command: makeactive 161 Set the active partition on the root disk to GRUB's root device. 162 This command is limited to _primary_ PC partitions on a hard disk. 163 164 165File: grub.info, Node: map, Next: md5crypt, Prev: makeactive, Up: Command-line and menu entry commands 166 167map 168--- 169 170 - Command: map to_drive from_drive 171 Map the drive FROM_DRIVE to the drive TO_DRIVE. This is necessary 172 when you chain-load some operating systems, such as DOS, if such 173 an OS resides at a non-first drive. Here is an example: 174 175 grub> map (hd0) (hd1) 176 grub> map (hd1) (hd0) 177 178 The example exchanges the order between the first hard disk and the 179 second hard disk. See also *Note DOS/Windows::. 180 181 182File: grub.info, Node: md5crypt, Next: module, Prev: map, Up: Command-line and menu entry commands 183 184md5crypt 185-------- 186 187 - Command: md5crypt 188 Prompt to enter a password, and encrypt it in MD5 format. The 189 encrypted password can be used with the command `password' (*note 190 password::). See also *Note Security::. 191 192 193File: grub.info, Node: module, Next: modulenounzip, Prev: md5crypt, Up: Command-line and menu entry commands 194 195module 196------ 197 198 - Command: module file ... 199 Load a boot module FILE for a Multiboot format boot image (no 200 interpretation of the file contents are made, so the user of this 201 command must know what the kernel in question expects). The rest 202 of the line is passed as the "module command-line", like the 203 `kernel' command. You must load a Multiboot kernel image before 204 loading any module. See also *Note modulenounzip::. 205 206 207File: grub.info, Node: modulenounzip, Next: pause, Prev: module, Up: Command-line and menu entry commands 208 209modulenounzip 210------------- 211 212 - Command: modulenounzip file ... 213 The same as `module' (*note module::), except that automatic 214 decompression is disabled. 215 216 217File: grub.info, Node: pause, Next: quit, Prev: modulenounzip, Up: Command-line and menu entry commands 218 219pause 220----- 221 222 - Command: pause message ... 223 Print the MESSAGE, then wait until a key is pressed. Note that 224 placing <^G> (ASCII code 7) in the message will cause the speaker 225 to emit the standard beep sound, which is useful when prompting 226 the user to change floppies. 227 228 229File: grub.info, Node: quit, Next: reboot, Prev: pause, Up: Command-line and menu entry commands 230 231quit 232---- 233 234 - Command: quit 235 Exit from the grub shell `grub' (*note Invoking the grub shell::). 236 This command can be used only in the grub shell. 237 238 239File: grub.info, Node: reboot, Next: read, Prev: quit, Up: Command-line and menu entry commands 240 241reboot 242------ 243 244 - Command: reboot 245 Reboot the computer. 246 247 248File: grub.info, Node: read, Next: root, Prev: reboot, Up: Command-line and menu entry commands 249 250read 251---- 252 253 - Command: read addr 254 Read a 32-bit value from memory at address ADDR and display it in 255 hex format. 256 257 258File: grub.info, Node: root, Next: rootnoverify, Prev: read, Up: Command-line and menu entry commands 259 260root 261---- 262 263 - Command: root device [hdbias] 264 Set the current "root device" to the device DEVICE, then attempt 265 to mount it to get the partition size (for passing the partition 266 descriptor in `ES:ESI', used by some chain-loaded boot loaders), 267 the BSD drive-type (for booting BSD kernels using their native 268 boot format), and correctly determine the PC partition where a BSD 269 sub-partition is located. The optional HDBIAS parameter is a 270 number to tell a BSD kernel how many BIOS drive numbers are on 271 controllers before the current one. For example, if there is an 272 IDE disk and a SCSI disk, and your FreeBSD root partition is on 273 the SCSI disk, then use a `1' for HDBIAS. 274 275 See also *Note rootnoverify::. 276 277 278File: grub.info, Node: rootnoverify, Next: savedefault, Prev: root, Up: Command-line and menu entry commands 279 280rootnoverify 281------------ 282 283 - Command: rootnoverify device [hdbias] 284 Similar to `root' (*note root::), but don't attempt to mount the 285 partition. This is useful for when an OS is outside of the area of 286 the disk that GRUB can read, but setting the correct root device 287 is still desired. Note that the items mentioned in `root' above 288 which derived from attempting the mount will _not_ work correctly. 289 290 291File: grub.info, Node: savedefault, Next: setup, Prev: rootnoverify, Up: Command-line and menu entry commands 292 293savedefault 294----------- 295 296 - Command: savedefault num 297 Save the current menu entry or NUM if specified as a default 298 entry. Here is an example: 299 300 default saved 301 timeout 10 302 303 title GNU/Linux 304 root (hd0,0) 305 kernel /boot/vmlinuz root=/dev/sda1 vga=ext 306 initrd /boot/initrd 307 savedefault 308 309 title FreeBSD 310 root (hd0,a) 311 kernel /boot/loader 312 savedefault 313 314 With this configuration, GRUB will choose the entry booted 315 previously as the default entry. 316 317 You can specify `fallback' instead of a number. Then, next 318 fallback entry is saved. Next fallback entry is chosen from 319 fallback entries. Normally, this will be the first entry in 320 fallback ones. 321 322 See also *Note default:: and *Note Invoking grub-set-default::. 323 324 325File: grub.info, Node: setup, Next: testload, Prev: savedefault, Up: Command-line and menu entry commands 326 327setup 328----- 329 330 - Command: setup [`--force-lba'] [`--stage2=os_stage2_file'] 331 [`--prefix=dir'] install_device [image_device] 332 Set up the installation of GRUB automatically. This command uses 333 the more flexible command `install' (*note install::) in the 334 backend and installs GRUB into the device INSTALL_DEVICE. If 335 IMAGE_DEVICE is specified, then find the GRUB images (*note 336 Images::) in the device IMAGE_DEVICE, otherwise use the current 337 "root device", which can be set by the command `root'. If 338 INSTALL_DEVICE is a hard disk, then embed a Stage 1.5 in the disk 339 if possible. 340 341 The option `--prefix' specifies the directory under which GRUB 342 images are put. If it is not specified, GRUB automatically 343 searches them in `/boot/grub' and `/grub'. 344 345 The options `--force-lba' and `--stage2' are just passed to 346 `install' if specified. *Note install::, for more information. 347 348 349File: grub.info, Node: testload, Next: testvbe, Prev: setup, Up: Command-line and menu entry commands 350 351testload 352-------- 353 354 - Command: testload file 355 Read the entire contents of FILE in several different ways and 356 compare them, to test the filesystem code. The output is somewhat 357 cryptic, but if no errors are reported and the final `i=X, 358 filepos=Y' reading has X and Y equal, then it is definitely 359 consistent, and very likely works correctly subject to a 360 consistent offset error. If this test succeeds, then a good next 361 step is to try loading a kernel. 362 363 364File: grub.info, Node: testvbe, Next: uppermem, Prev: testload, Up: Command-line and menu entry commands 365 366testvbe 367------- 368 369 - Command: testvbe mode 370 Test the VESA BIOS EXTENSION mode MODE. This command will switch 371 your video card to the graphics mode, and show an endless 372 animation. Hit any key to return. See also *Note vbeprobe::. 373 374 375File: grub.info, Node: uppermem, Next: vbeprobe, Prev: testvbe, Up: Command-line and menu entry commands 376 377uppermem 378-------- 379 380 - Command: uppermem kbytes 381 Force GRUB to assume that only KBYTES kilobytes of upper memory 382 are installed. Any system address range maps are discarded. 383 384 *Caution:* This should be used with great caution, and should only 385 be necessary on some old machines. GRUB's BIOS probe can pick up 386 all RAM on all new machines the author has ever heard of. It can 387 also be used for debugging purposes to lie to an OS. 388 389 390File: grub.info, Node: vbeprobe, Prev: uppermem, Up: Command-line and menu entry commands 391 392vbeprobe 393-------- 394 395 - Command: vbeprobe [mode] 396 Probe VESA BIOS EXTENSION information. If the mode MODE is 397 specified, show only the information about MODE. Otherwise, this 398 command lists up available VBE modes on the screen. See also *Note 399 testvbe::. 400 401 402File: grub.info, Node: Troubleshooting, Next: Invoking the grub shell, Prev: Commands, Up: Top 403 404Error messages reported by GRUB 405******************************* 406 407 This chapter describes error messages reported by GRUB when you 408encounter trouble. *Note Invoking the grub shell::, if your problem is 409specific to the grub shell. 410 411* Menu: 412 413* Stage1 errors:: Errors reported by the Stage 1 414* Stage1.5 errors:: Errors reported by the Stage 1.5 415* Stage2 errors:: Errors reported by the Stage 2 416 417 418File: grub.info, Node: Stage1 errors, Next: Stage1.5 errors, Up: Troubleshooting 419 420Errors reported by the Stage 1 421============================== 422 423 The general way that the Stage 1 handles errors is to print an error 424string and then halt. Pressing `<CTRL>-<ALT>-<DEL>' will reboot. 425 426 The following is a comprehensive list of error messages for the 427Stage 1: 428 429Hard Disk Error 430 The stage2 or stage1.5 is being read from a hard disk, and the 431 attempt to determine the size and geometry of the hard disk failed. 432 433Floppy Error 434 The stage2 or stage1.5 is being read from a floppy disk, and the 435 attempt to determine the size and geometry of the floppy disk 436 failed. It's listed as a separate error since the probe sequence 437 is different than for hard disks. 438 439Read Error 440 A disk read error happened while trying to read the stage2 or 441 stage1.5. 442 443Geom Error 444 The location of the stage2 or stage1.5 is not in the portion of 445 the disk supported directly by the BIOS read calls. This could 446 occur because the BIOS translated geometry has been changed by the 447 user or the disk is moved to another machine or controller after 448 installation, or GRUB was not installed using itself (if it was, 449 the Stage 2 version of this error would have been seen during that 450 process and it would not have completed the install). 451 452 453File: grub.info, Node: Stage1.5 errors, Next: Stage2 errors, Prev: Stage1 errors, Up: Troubleshooting 454 455Errors reported by the Stage 1.5 456================================ 457 458 The general way that the Stage 1.5 handles errors is to print an 459error number in the form `Error NUM' and then halt. Pressing 460`<CTRL>-<ALT>-<DEL>' will reboot. 461 462 The error numbers correspond to the errors reported by Stage 2. 463*Note Stage2 errors::. 464 465 466File: grub.info, Node: Stage2 errors, Prev: Stage1.5 errors, Up: Troubleshooting 467 468Errors reported by the Stage 2 469============================== 470 471 The general way that the Stage 2 handles errors is to abort the 472operation in question, print an error string, then (if possible) either 473continue based on the fact that an error occurred or wait for the user 474to deal with the error. 475 476 The following is a comprehensive list of error messages for the 477Stage 2 (error numbers for the Stage 1.5 are listed before the colon in 478each description): 479 4801 : Filename must be either an absolute filename or blocklist 481 This error is returned if a file name is requested which doesn't 482 fit the syntax/rules listed in the *Note Filesystem::. 483 4842 : Bad file or directory type 485 This error is returned if a file requested is not a regular file, 486 but something like a symbolic link, directory, or FIFO. 487 4883 : Bad or corrupt data while decompressing file 489 This error is returned if the run-length decompression code gets an 490 internal error. This is usually from a corrupt file. 491 4924 : Bad or incompatible header in compressed file 493 This error is returned if the file header for a supposedly 494 compressed file is bad. 495 4965 : Partition table invalid or corrupt 497 This error is returned if the sanity checks on the integrity of the 498 partition table fail. This is a bad sign. 499 5006 : Mismatched or corrupt version of stage1/stage2 501 This error is returned if the install command points to 502 incompatible or corrupt versions of the stage1 or stage2. It can't 503 detect corruption in general, but this is a sanity check on the 504 version numbers, which should be correct. 505 5067 : Loading below 1MB is not supported 507 This error is returned if the lowest address in a kernel is below 508 the 1MB boundary. The Linux zImage format is a special case and 509 can be handled since it has a fixed loading address and maximum 510 size. 511 5128 : Kernel must be loaded before booting 513 This error is returned if GRUB is told to execute the boot sequence 514 without having a kernel to start. 515 5169 : Unknown boot failure 517 This error is returned if the boot attempt did not succeed for 518 reasons which are unknown. 519 52010 : Unsupported Multiboot features requested 521 This error is returned when the Multiboot features word in the 522 Multiboot header requires a feature that is not recognized. The 523 point of this is that the kernel requires special handling which 524 GRUB is probably unable to provide. 525 52611 : Unrecognized device string 527 This error is returned if a device string was expected, and the 528 string encountered didn't fit the syntax/rules listed in the *Note 529 Filesystem::. 530 53112 : Invalid device requested 532 This error is returned if a device string is recognizable but does 533 not fall under the other device errors. 534 53513 : Invalid or unsupported executable format 536 This error is returned if the kernel image being loaded is not 537 recognized as Multiboot or one of the supported native formats 538 (Linux zImage or bzImage, FreeBSD, or NetBSD). 539 54014 : Filesystem compatibility error, cannot read whole file 541 Some of the filesystem reading code in GRUB has limits on the 542 length of the files it can read. This error is returned when the 543 user runs into such a limit. 544 54515 : File not found 546 This error is returned if the specified file name cannot be found, 547 but everything else (like the disk/partition info) is OK. 548 54916 : Inconsistent filesystem structure 550 This error is returned by the filesystem code to denote an internal 551 error caused by the sanity checks of the filesystem structure on 552 disk not matching what it expects. This is usually caused by a 553 corrupt filesystem or bugs in the code handling it in GRUB. 554 55517 : Cannot mount selected partition 556 This error is returned if the partition requested exists, but the 557 filesystem type cannot be recognized by GRUB. 558 55918 : Selected cylinder exceeds maximum supported by BIOS 560 This error is returned when a read is attempted at a linear block 561 address beyond the end of the BIOS translated area. This generally 562 happens if your disk is larger than the BIOS can handle (512MB for 563 (E)IDE disks on older machines or larger than 8GB in general). 564 56519 : Linux kernel must be loaded before initrd 566 This error is returned if the initrd command is used before 567 loading a Linux kernel. 568 56920 : Multiboot kernel must be loaded before modules 570 This error is returned if the module load command is used before 571 loading a Multiboot kernel. It only makes sense in this case 572 anyway, as GRUB has no idea how to communicate the presence of 573 such modules to a non-Multiboot-aware kernel. 574 57521 : Selected disk does not exist 576 This error is returned if the device part of a device- or full 577 file name refers to a disk or BIOS device that is not present or 578 not recognized by the BIOS in the system. 579 58022 : No such partition 581 This error is returned if a partition is requested in the device 582 part of a device- or full file name which isn't on the selected 583 disk. 584 58523 : Error while parsing number 586 This error is returned if GRUB was expecting to read a number and 587 encountered bad data. 588 58924 : Attempt to access block outside partition 590 This error is returned if a linear block address is outside of the 591 disk partition. This generally happens because of a corrupt 592 filesystem on the disk or a bug in the code handling it in GRUB 593 (it's a great debugging tool). 594 59525 : Disk read error 596 This error is returned if there is a disk read error when trying to 597 probe or read data from a particular disk. 598 59926 : Too many symbolic links 600 This error is returned if the link count is beyond the maximum 601 (currently 5), possibly the symbolic links are looped. 602 60327 : Unrecognized command 604 This error is returned if an unrecognized command is entered on the 605 command-line or in a boot sequence section of a configuration file 606 and that entry is selected. 607 60828 : Selected item cannot fit into memory 609 This error is returned if a kernel, module, or raw file load 610 command is either trying to load its data such that it won't fit 611 into memory or it is simply too big. 612 61329 : Disk write error 614 This error is returned if there is a disk write error when trying 615 to write to a particular disk. This would generally only occur 616 during an install of set active partition command. 617 61830 : Invalid argument 619 This error is returned if an argument specified to a command is 620 invalid. 621 62231 : File is not sector aligned 623 This error may occur only when you access a ReiserFS partition by 624 block-lists (e.g. the command `install'). In this case, you should 625 mount the partition with the `-o notail' option. 626 62732 : Must be authenticated 628 This error is returned if you try to run a locked entry. You should 629 enter a correct password before running such an entry. 630 63133 : Serial device not configured 632 This error is returned if you try to change your terminal to a 633 serial one before initializing any serial device. 634 63534 : No spare sectors on the disk 636 This error is returned if a disk doesn't have enough spare space. 637 This happens when you try to embed Stage 1.5 into the unused 638 sectors after the MBR, but the first partition starts right after 639 the MBR or they are used by EZ-BIOS. 640 641 642File: grub.info, Node: Invoking the grub shell, Next: Invoking grub-install, Prev: Troubleshooting, Up: Top 643 644Invoking the grub shell 645*********************** 646 647 This chapter documents the grub shell `grub'. Note that the grub 648shell is an emulator; it doesn't run under the native environment, so it 649sometimes does something wrong. Therefore, you shouldn't trust it too 650much. If there is anything wrong with it, don't hesitate to try the 651native GRUB environment, especially when it guesses a wrong map between 652BIOS drives and OS devices. 653 654* Menu: 655 656* Basic usage:: How to use the grub shell 657* Installation under UNIX:: How to install GRUB via `grub' 658* Device map:: The map between BIOS drives and OS devices 659 660 661File: grub.info, Node: Basic usage, Next: Installation under UNIX, Up: Invoking the grub shell 662 663Introduction into the grub shell 664================================ 665 666 You can use the command `grub' for installing GRUB under your 667operating systems and for a testbed when you add a new feature into GRUB 668or when fixing a bug. `grub' is almost the same as the Stage 2, and, in 669fact, it shares the source code with the Stage 2 and you can use the 670same commands (*note Commands::) in `grub'. It is emulated by replacing 671BIOS calls with UNIX system calls and libc functions. 672 673 The command `grub' accepts the following options: 674 675`--help' 676 Print a summary of the command-line options and exit. 677 678`--version' 679 Print the version number of GRUB and exit. 680 681`--verbose' 682 Print some verbose messages for debugging purpose. 683 684`--device-map=FILE' 685 Use the device map file FILE. The format is described in *Note 686 Device map::. 687 688`--no-floppy' 689 Do not probe any floppy drive. This option has no effect if the 690 option `--device-map' is specified (*note Device map::). 691 692`--probe-second-floppy' 693 Probe the second floppy drive. If this option is not specified, 694 the grub shell does not probe it, as that sometimes takes a long 695 time. If you specify the device map file (*note Device map::), the 696 grub shell just ignores this option. 697 698`--config-file=FILE' 699 Read the configuration file FILE instead of `/boot/grub/menu.lst'. 700 The format is the same as the normal GRUB syntax. See *Note 701 Filesystem::, for more information. 702 703`--boot-drive=DRIVE' 704 Set the stage2 BOOT_DRIVE to DRIVE. This argument should be an 705 integer (decimal, octal or hexadecimal). 706 707`--install-partition=PAR' 708 Set the stage2 INSTALL_PARTITION to PAR. This argument should be 709 an integer (decimal, octal or hexadecimal). 710 711`--no-config-file' 712 Do not use the configuration file even if it can be read. 713 714`--no-curses' 715 Do not use the screen handling interface by the curses even if it 716 is available. 717 718`--batch' 719 This option has the same meaning as `--no-config-file --no-curses'. 720 721`--read-only' 722 Disable writing to any disk. 723 724`--hold' 725 Wait until a debugger will attach. This option is useful when you 726 want to debug the startup code. 727 728 729File: grub.info, Node: Installation under UNIX, Next: Device map, Prev: Basic usage, Up: Invoking the grub shell 730 731How to install GRUB via `grub' 732============================== 733 734 The installation procedure is the same as under the "native" Stage 7352. *Note Installation::, for more information. The command 736`grub'-specific information is described here. 737 738 What you should be careful about is "buffer cache". `grub' makes use 739of raw devices instead of filesystems that your operating systems 740serve, so there exists a potential problem that some cache 741inconsistency may corrupt your filesystems. What we recommend is: 742 743 * If you can unmount drives to which GRUB may write any amount of 744 data, unmount them before running `grub'. 745 746 * If a drive cannot be unmounted but can be mounted with the 747 read-only flag, mount it in read-only mode. That should be secure. 748 749 * If a drive must be mounted with the read-write flag, make sure 750 that no activity is being done on it while the command `grub' is 751 running. 752 753 * Reboot your operating system as soon as possible. This is probably 754 not required if you follow the rules above, but reboot is the most 755 secure way. 756 757 In addition, enter the command `quit' when you finish the 758installation. That is _very important_ because `quit' makes the buffer 759cache consistent. Do not push <C-c>. 760 761 If you want to install GRUB non-interactively, specify `--batch' 762option in the command-line. This is a simple example: 763 764 #!/bin/sh 765 766 # Use /usr/sbin/grub if you are on an older system. 767 /sbin/grub --batch <<EOT 1>/dev/null 2>/dev/null 768 root (hd0,0) 769 setup (hd0) 770 quit 771 EOT 772 773 774File: grub.info, Node: Device map, Prev: Installation under UNIX, Up: Invoking the grub shell 775 776The map between BIOS drives and OS devices 777========================================== 778 779 When you specify the option `--device-map' (*note Basic usage::), 780the grub shell creates the "device map file" automatically unless it 781already exists. The file name `/boot/grub/device.map' is preferred. 782 783 If the device map file exists, the grub shell reads it to map BIOS 784drives to OS devices. This file consists of lines like this: 785 786 DEVICE FILE 787 788 DEVICE is a drive specified in the GRUB syntax (*note Device 789syntax::), and FILE is an OS file, which is normally a device file. 790 791 The reason why the grub shell gives you the device map file is that 792it cannot guess the map between BIOS drives and OS devices correctly in 793some environments. For example, if you exchange the boot sequence 794between IDE and SCSI in your BIOS, it gets the order wrong. 795 796 Thus, edit the file if the grub shell makes a mistake. You can put 797any comments in the file if needed, as the grub shell assumes that a 798line is just a comment if the first character is `#'. 799 800 801File: grub.info, Node: Invoking grub-install, Next: Invoking grub-md5-crypt, Prev: Invoking the grub shell, Up: Top 802 803Invoking grub-install 804********************* 805 806 The program `grub-install' installs GRUB on your drive using the 807grub shell (*note Invoking the grub shell::). You must specify the 808device name on which you want to install GRUB, like this: 809 810 grub-install INSTALL_DEVICE 811 812 The device name INSTALL_DEVICE is an OS device name or a GRUB device 813name. 814 815 `grub-install' accepts the following options: 816 817`--help' 818 Print a summary of the command-line options and exit. 819 820`--version' 821 Print the version number of GRUB and exit. 822 823`--force-lba' 824 Force GRUB to use LBA mode even for a buggy BIOS. Use this option 825 only if your BIOS doesn't work properly in LBA mode even though it 826 supports LBA mode. 827 828`--root-directory=DIR' 829 Install GRUB images under the directory DIR instead of the root 830 directory. This option is useful when you want to install GRUB 831 into a separate partition or a removable disk. Here is an example 832 in which you have a separate "boot" partition which is mounted on 833 `/boot': 834 835 grub-install --root-directory=/boot hd0 836 837`--grub-shell=FILE' 838 Use FILE as the grub shell. You can append arbitrary options to 839 FILE after the file name, like this: 840 841 grub-install --grub-shell="grub --read-only" /dev/fd0 842 843`--recheck' 844 Recheck the device map, even if `/boot/grub/device.map' already 845 exists. You should use this option whenever you add/remove a disk 846 into/from your computer. 847 848 849File: grub.info, Node: Invoking grub-md5-crypt, Next: Invoking grub-terminfo, Prev: Invoking grub-install, Up: Top 850 851Invoking grub-md5-crypt 852*********************** 853 854 The program `grub-md5-crypt' encrypts a password in MD5 format. 855This is just a frontend of the grub shell (*note Invoking the grub 856shell::). Passwords encrypted by this program can be used with the 857command `password' (*note password::). 858 859 `grub-md5-crypt' accepts the following options: 860 861`--help' 862 Print a summary of the command-line options and exit. 863 864`--version' 865 Print the version information and exit. 866 867`--grub-shell=FILE' 868 Use FILE as the grub shell. 869 870 871File: grub.info, Node: Invoking grub-terminfo, Next: Invoking grub-set-default, Prev: Invoking grub-md5-crypt, Up: Top 872 873Invoking grub-terminfo 874********************** 875 876 The program `grub-terminfo' generates a terminfo command from a 877terminfo name (*note terminfo::). The result can be used in the 878configuration file, to define escape sequences. Because GRUB assumes 879that your terminal is vt100-compatible by default, this would be useful 880only if your terminal is uncommon (such as vt52). 881 882 `grub-terminfo' accepts the following options: 883 884`--help' 885 Print a summary of the command-line options and exit. 886 887`--version' 888 Print the version information and exit. 889 890 You must specify one argument to this command. For example: 891 892 grub-terminfo vt52 893 894 895File: grub.info, Node: Invoking grub-set-default, Next: Invoking mbchk, Prev: Invoking grub-terminfo, Up: Top 896 897Invoking grub-set-default 898************************* 899 900 The program `grub-set-default' sets the default boot entry for GRUB. 901This automatically creates a file named `default' under your GRUB 902directory (i.e. `/boot/grub'), if it is not present. This file is used 903to determine the default boot entry when GRUB boots up your system when 904you use `default saved' in your configuration file (*note default::), 905and to save next default boot entry when you use `savedefault' in a 906boot entry (*note savedefault::). 907 908 `grub-set-default' accepts the following options: 909 910`--help' 911 Print a summary of the command-line options and exit. 912 913`--version' 914 Print the version information and exit. 915 916`--root-directory=DIR' 917 Use the directory DIR instead of the root directory (i.e. `/') to 918 define the location of the default file. This is useful when you 919 mount a disk which is used for another system. 920 921 You must specify a single argument to `grub-set-default'. This 922argument is normally the number of a default boot entry. For example, 923if you have this configuration file: 924 925 default saved 926 timeout 10 927 928 title GNU/Hurd 929 root (hd0,0) 930 ... 931 932 title GNU/Linux 933 root (hd0,1) 934 ... 935 936 and if you want to set the next default boot entry to GNU/Linux, you 937may execute this command: 938 939 grub-set-default 1 940 941 Because the entry for GNU/Linux is `1'. Note that entries are 942counted from zero. So, if you want to specify GNU/Hurd here, then you 943should specify `0'. 944 945 This feature is very useful if you want to test a new kernel or to 946make your system quite robust. *Note Making your system robust::, for 947more hints about how to set up a robust system. 948 949 950File: grub.info, Node: Invoking mbchk, Next: Obtaining and Building GRUB, Prev: Invoking grub-set-default, Up: Top 951 952Invoking mbchk 953************** 954 955 The program `mbchk' checks for the format of a Multiboot kernel. We 956recommend using this program before booting your own kernel by GRUB. 957 958 `mbchk' accepts the following options: 959 960`--help' 961 Print a summary of the command-line options and exit. 962 963`--version' 964 Print the version number of GRUB and exit. 965 966`--quiet' 967 Suppress all normal output. 968 969 970File: grub.info, Node: Obtaining and Building GRUB, Next: Reporting bugs, Prev: Invoking mbchk, Up: Top 971 972How to obtain and build GRUB 973**************************** 974 975 *Caution:* GRUB requires binutils-2.9.1.0.23 or later because the 976 GNU assembler has been changed so that it can produce real 16bits 977 machine code between 2.9.1 and 2.9.1.0.x. See 978 `http://sources.redhat.com/binutils/', to obtain information on 979 how to get the latest version. 980 981 GRUB is available from the GNU alpha archive site 982`ftp://alpha.gnu.org/gnu/grub' or any of its mirrors. The file will be 983named grub-version.tar.gz. The current version is 0.95, so the file you 984should grab is: 985 986 `ftp://alpha.gnu.org/gnu/grub/grub-0.95.tar.gz' 987 988 To unbundle GRUB use the instruction: 989 990 zcat grub-0.95.tar.gz | tar xvf - 991 992 which will create a directory called `grub-0.95' with all the 993sources. You can look at the file `INSTALL' for detailed instructions 994on how to build and install GRUB, but you should be able to just do: 995 996 cd grub-0.95 997 ./configure 998 make install 999 1000 This will install the grub shell `grub' (*note Invoking the grub 1001shell::), the Multiboot checker `mbchk' (*note Invoking mbchk::), and 1002the GRUB images. This will also install the GRUB manual. 1003 1004 Also, the latest version is available from the CVS. See 1005`http://savannah.gnu.org/cvs/?group=grub' for more information. 1006 1007 1008File: grub.info, Node: Reporting bugs, Next: Future, Prev: Obtaining and Building GRUB, Up: Top 1009 1010Reporting bugs 1011************** 1012 1013 These are the guideline for how to report bugs. Take a look at this 1014list below before you submit bugs: 1015 1016 1. Before getting unsettled, read this manual through and through. 1017 Also, see the GNU GRUB FAQ 1018 (http://www.gnu.org/software/grub/grub-faq.html). 1019 1020 2. Always mention the information on your GRUB. The version number 1021 and the configuration are quite important. If you build it 1022 yourself, write the options specified to the configure script and 1023 your operating system, including the versions of gcc and binutils. 1024 1025 3. If you have trouble with the installation, inform us of how you 1026 installed GRUB. Don't omit error messages, if any. Just `GRUB hangs 1027 up when it boots' is not enough. 1028 1029 The information on your hardware is also essential. These are 1030 especially important: the geometries and the partition tables of 1031 your hard disk drives and your BIOS. 1032 1033 4. If GRUB cannot boot your operating system, write down _everything_ 1034 you see on the screen. Don't paraphrase them, like `The foo OS 1035 crashes with GRUB, even though it can boot with the bar boot 1036 loader just fine'. Mention the commands you executed, the messages 1037 printed by them, and information on your operating system 1038 including the version number. 1039 1040 5. Explain what you wanted to do. It is very useful to know your 1041 purpose and your wish, and how GRUB didn't satisfy you. 1042 1043 6. If you can investigate the problem yourself, please do. That will 1044 give you and us much more information on the problem. Attaching a 1045 patch is even better. 1046 1047 When you attach a patch, make the patch in unified diff format, and 1048 write ChangeLog entries. But, even when you make a patch, don't 1049 forget to explain the problem, so that we can understand what your 1050 patch is for. 1051 1052 7. Write down anything that you think might be related. Please 1053 understand that we often need to reproduce the same problem you 1054 encounterred in our environment. So your information should be 1055 sufficient for us to do the same thing--Don't forget that we 1056 cannot see your computer directly. If you are not sure whether to 1057 state a fact or leave it out, state it! Reporting too many things 1058 is much better than omitting something important. 1059 1060 If you follow the guideline above, submit a report to the Bug 1061Tracking System (http://savannah.gnu.org/bugs/?group=grub). 1062Alternatively, you can submit a report via electronic mail to 1063<bug-grub@gnu.org>, but we strongly recommend that you use the Bug 1064Tracking System, because e-mail can be passed over easily. 1065 1066 Once we get your report, we will try to fix the bugs. 1067 1068 1069File: grub.info, Node: Future, Next: Internals, Prev: Reporting bugs, Up: Top 1070 1071Where GRUB will go 1072****************** 1073 1074 We started the next generation of GRUB, GRUB 2. This will include 1075internationalization, dynamic module loading, real memory management, 1076multiple architecture support, a scripting language, and many other 1077nice feature. If you are interested in the development of GRUB 2, take 1078a look at the homepage (http://www.gnu.org/software/grub/grub.html). 1079 1080 1081File: grub.info, Node: Internals, Next: Index, Prev: Future, Up: Top 1082 1083Hacking GRUB 1084************ 1085 1086 This chapter documents the user-invisible aspect of GRUB. 1087 1088 As a general rule of software development, it is impossible to keep 1089the descriptions of the internals up-to-date, and it is quite hard to 1090document everything. So refer to the source code, whenever you are not 1091satisfied with this documentation. Please assume that this gives just 1092hints to you. 1093 1094* Menu: 1095 1096* Memory map:: The memory map of various components 1097* Embedded data:: Embedded variables in GRUB 1098* Filesystem interface:: The generic interface for filesystems 1099* Command interface:: The generic interface for built-ins 1100* Bootstrap tricks:: The bootstrap mechanism used in GRUB 1101* I/O ports detection:: How to probe I/O ports used by INT 13H 1102* Memory detection:: How to detect all installed RAM 1103* Low-level disk I/O:: INT 13H disk I/O interrupts 1104* MBR:: The structure of Master Boot Record 1105* Partition table:: The format of partition tables 1106* Submitting patches:: Where and how you should send patches 1107 1108 1109File: grub.info, Node: Memory map, Next: Embedded data, Up: Internals 1110 1111The memory map of various components 1112==================================== 1113 1114 GRUB consists of two distinct components, called "stages", which are 1115loaded at different times in the boot process. Because they run 1116mutual-exclusively, sometimes a memory area overlaps with another 1117memory area. And, even in one stage, a single memory area can be used 1118for various purposes, because their usages are mutually exclusive. 1119 1120 Here is the memory map of the various components: 1121 11220 to 4K-1 1123 BIOS and real mode interrupts 1124 11250x07BE to 0x07FF 1126 Partition table passed to another boot loader 1127 1128down from 8K-1 1129 Real mode stack 1130 11310x2000 to ? 1132 The optional Stage 1.5 is loaded here 1133 11340x2000 to 0x7FFF 1135 Command-line buffer for Multiboot kernels and modules 1136 11370x7C00 to 0x7DFF 1138 Stage 1 is loaded here by BIOS or another boot loader 1139 11400x7F00 to 0x7F42 1141 LBA drive parameters 1142 11430x8000 to ? 1144 Stage2 is loaded here 1145 1146The end of Stage 2 to 416K-1 1147 Heap, in particular used for the menu 1148 1149down from 416K-1 1150 Protected mode stack 1151 1152416K to 448K-1 1153 Filesystem buffer 1154 1155448K to 479.5K-1 1156 Raw device buffer 1157 1158479.5K to 480K-1 1159 512-byte scratch area 1160 1161480K to 512K-1 1162 Buffers for various functions, such as password, command-line, cut 1163 and paste, and completion. 1164 1165The last 1K of lower memory 1166 Disk swapping code and data 1167 1168 See the file `stage2/shared.h', for more information. 1169 1170 1171File: grub.info, Node: Embedded data, Next: Filesystem interface, Prev: Memory map, Up: Internals 1172 1173Embedded variables in GRUB 1174========================== 1175 1176 Stage 1 and Stage 2 have embedded variables whose locations are 1177well-defined, so that the installation can patch the binary file 1178directly without recompilation of the stages. 1179 1180 In Stage 1, these are defined: 1181 1182`0x3E' 1183 The version number (not GRUB's, but the installation mechanism's). 1184 1185`0x40' 1186 The boot drive. If it is 0xFF, use a drive passed by BIOS. 1187 1188`0x41' 1189 The flag for if forcing LBA. 1190 1191`0x42' 1192 The starting address of Stage 2. 1193 1194`0x44' 1195 The first sector of Stage 2. 1196 1197`0x48' 1198 The starting segment of Stage 2. 1199 1200`0x1FE' 1201 The signature (`0xAA55'). 1202 1203 See the file `stage1/stage1.S', for more information. 1204 1205 In the first sector of Stage 1.5 and Stage 2, the block lists are 1206recorded between `firstlist' and `lastlist'. The address of `lastlist' 1207is determined when assembling the file `stage2/start.S'. 1208 1209 The trick here is that it is actually read backward, and the first 12108-byte block list is not read here, but after the pointer is decremented 12118 bytes, then after reading it, it decrements again, reads, and so on, 1212until it is finished. The terminating condition is when the number of 1213sectors to be read in the next block list is zero. 1214 1215 The format of a block list can be seen from the example in the code 1216just before the `firstlist' label. Note that it is always from the 1217beginning of the disk, but _not_ relative to the partition boundaries. 1218 1219 In the second sector of Stage 1.5 and Stage 2, these are defined: 1220 1221`0x6' 1222 The version number (likewise, the installation mechanism's). 1223 1224`0x8' 1225 The installed partition. 1226 1227`0xC' 1228 The saved entry number. 1229 1230`0x10' 1231 The identifier. 1232 1233`0x11' 1234 The flag for if forcing LBA. 1235 1236`0x12' 1237 The version string (GRUB's). 1238 1239`0x12' + "the length of the version string" 1240 The name of a configuration file. 1241 1242 See the file `stage2/asm.S', for more information. 1243 1244 1245File: grub.info, Node: Filesystem interface, Next: Command interface, Prev: Embedded data, Up: Internals 1246 1247The generic interface for filesystems 1248===================================== 1249 1250 For any particular partition, it is presumed that only one of the 1251"normal" filesystems such as FAT, FFS, or ext2fs can be used, so there 1252is a switch table managed by the functions in `disk_io.c'. The notation 1253is that you can only "mount" one at a time. 1254 1255 The block list filesystem has a special place in the system. In 1256addition to the "normal" filesystem (or even without one mounted), you 1257can access disk blocks directly (in the indicated partition) via the 1258block list notation. Using the block list filesystem doesn't effect any 1259other filesystem mounts. 1260 1261 The variables which can be read by the filesystem backend are: 1262 1263`current_drive' 1264 The current BIOS drive number (numbered from 0, if a floppy, and 1265 numbered from 0x80, if a hard disk). 1266 1267`current_partition' 1268 The current partition number. 1269 1270`current_slice' 1271 The current partition type. 1272 1273`saved_drive' 1274 The "drive" part of the root device. 1275 1276`saved_partition' 1277 The "partition" part of the root device. 1278 1279`part_start' 1280 The current partition starting address, in sectors. 1281 1282`part_length' 1283 The current partition length, in sectors. 1284 1285`print_possibilities' 1286 True when the `dir' function should print the possible completions 1287 of a file, and false when it should try to actually open a file of 1288 that name. 1289 1290`FSYS_BUF' 1291 Filesystem buffer which is 32K in size, to use in any way which the 1292 filesystem backend desires. 1293 1294 The variables which need to be written by a filesystem backend are: 1295 1296`filepos' 1297 The current position in the file, in sectors. 1298 1299 *Caution:* the value of FILEPOS can be changed out from under the 1300 filesystem code in the current implementation. Don't depend on it 1301 being the same for later calls into the backend code! 1302 1303`filemax' 1304 The length of the file. 1305 1306`disk_read_func' 1307 The value of DISK_READ_HOOK _only_ during reading of data for the 1308 file, not any other fs data, inodes, FAT tables, whatever, then 1309 set to `NULL' at all other times (it will be `NULL' by default). 1310 If this isn't done correctly, then the `testload' and `install' 1311 commands won't work correctly. 1312 1313 The functions expected to be used by the filesystem backend are: 1314 1315`devread' 1316 Only read sectors from within a partition. Sector 0 is the first 1317 sector in the partition. 1318 1319`grub_read' 1320 If the backend uses the block list code, then `grub_read' can be 1321 used, after setting BLOCK_FILE to 1. 1322 1323`print_a_completion' 1324 If PRINT_POSSIBILITIES is true, call `print_a_completion' for each 1325 possible file name. Otherwise, the file name completion won't work. 1326 1327 The functions expected to be defined by the filesystem backend are 1328described at least moderately in the file `filesys.h'. Their usage is 1329fairly evident from their use in the functions in `disk_io.c', look for 1330the use of the FSYS_TABLE array. 1331 1332 *Caution:* The semantics are such that then `mount'ing the 1333filesystem, presume the filesystem buffer `FSYS_BUF' is corrupted, and 1334(re-)load all important contents. When opening and reading a file, 1335presume that the data from the `mount' is available, and doesn't get 1336corrupted by the open/read (i.e. multiple opens and/or reads will be 1337done with only one mount if in the same filesystem). 1338 1339 1340File: grub.info, Node: Command interface, Next: Bootstrap tricks, Prev: Filesystem interface, Up: Internals 1341 1342The generic interface for built-ins 1343=================================== 1344 1345 GRUB built-in commands are defined in a uniformal interface, whether 1346they are menu-specific or can be used anywhere. The definition of a 1347builtin command consists of two parts: the code itself and the table of 1348the information. 1349 1350 The code must be a function which takes two arguments, a command-line 1351string and flags, and returns an `int' value. The "flags" argument 1352specifies how the function is called, using a bit mask. The return 1353value must be zero if successful, otherwise non-zero. So it is normally 1354enough to return ERRNUM. 1355 1356 The table of the information is represented by the structure `struct 1357builtin', which contains the name of the command, a pointer to the 1358function, flags, a short description of the command and a long 1359description of the command. Since the descriptions are used only for 1360help messages interactively, you don't have to define them, if the 1361command may not be called interactively (such as `title'). 1362 1363 The table is finally registered in the table BUILTIN_TABLE, so that 1364`run_script' and `enter_cmdline' can find the command. See the files 1365`cmdline.c' and `builtins.c', for more details. 1366 1367