X-Git-Url: https://git.grml.org/?a=blobdiff_plain;f=templates%2Fboot%2Faddons%2Fbsd4grml%2Fldbsd.txt;fp=templates%2Fboot%2Faddons%2Fbsd4grml%2Fldbsd.txt;h=0000000000000000000000000000000000000000;hb=d4af86eccb5471c503bebd3c689c7ed37fb0c554;hp=d7142310cc39ab157011c5534207c70afa33a9ce;hpb=773464378cb9b67c0fb7fc770efa2c816efd3b27;p=grml-live.git diff --git a/templates/boot/addons/bsd4grml/ldbsd.txt b/templates/boot/addons/bsd4grml/ldbsd.txt deleted file mode 100644 index d714231..0000000 --- a/templates/boot/addons/bsd4grml/ldbsd.txt +++ /dev/null @@ -1,487 +0,0 @@ -BOOT(8) BSD System Manager's Manual (i386) BOOT(8) - -NAME - boot, boot.cfg, ldbsd.com, pxeboot - i386 second-stage boot loader - -DESCRIPTION - The boot system programme, often called ldbsd.com, aims to load the sys- - tem kernel into core memory from disc or network and run it, as well as - do some auxiliary functions, while dealing with the problems arising from - the history of the i386 architecture since 1978, incompatibilities, ex- - tensions, bugs, El Torito booting, Intel's Preboot Execution Environment - (PXE) for network boot, the Multiboot Specification, etc. MirOS floppies - use a specially limited version optimised for size, lacking support for - any filesystem other than 4.2FFS and most commands. - - It can be loaded either directly from the BIOS (most commonly via PXE; - earlier versions could also be loaded using El Torito), the bootxx first - stage boot loader (from floppy, hard disc, compact flash card, USB stick, - and the likes; recently, since bootxx itself was made El Torito capable, - this has become the desired method for El Torito boot), any bootloader - compliant with the Multiboot specification (as boot is a Multiboot com- - pliant OS Kernel image), or after renaming to ldbsd.com by any bootloader - implementing the COMBOOT API (specified by SYSLINUX, EXTLINUX, ISOLINUX, - PXELINUX) or MS-DOS(R) (unless DOS occupies the HMA). Once loaded, it can - be used, in a more or less limited fashion, to boot a MirOS kernel from a - supported filesystem (4.2FFS, ISO 9660, FAT12, FAT16, FAT28, TFTP, NFS, - and a pseudo filesystem called lmbmfs), inspect the filesystems, get or - set machine information, or load other bootloaders (see below for de- - tails). It can inflate gzip(1) compressed files (with LZMA compression - planned), set up serial console, and provides an interactive prompt. - - Basic operation procedure is as follows: - - 1. Be loaded. However this is done, as the first thing we write a RETF - instruction to 0000:0000 and CALL FAR it (from 16-bit code), or - write a RET instruction to 0x00000000 and CALL it (from 32-bit - code), backing up the previous content of course, so that qemu+gdb - users can intercept via "b *0". - - BIOS We are loaded to 0x07C00. The drive used to load us from - is passed in the DL register. The ES:BX and DS:SI regis- - ters and the stack contain additional data. While we do - not care about the actual address, we expect to be whole. - - bootxx We are loaded at the final address. The drive used to - load us from is passed in a special memory location. The - DS:SI registers are set up if we were loaded from a HDD - partition. The Master Boot Record (/usr/mdec/mbrldr or - /usr/mdec/mbrmgr) takes care to set these up correctly. - - PXE The NIC's PXE boot ROM initialises the NIC, network - driver, UNDI and PXE interfaces, contacts a DHCP server - by broadcasting an IPv4 request on the network, gets an - IP address and the name of a file to load from the DHCP - server, and downloads the file indicated via TFTP to - 0x07C00. That would be boot. Control is then passed to - address 0x07C00 with ES:BX and the stack set up. - - PXE booting is useful for diskless(8) clients or initial - download and execution of the installation kernel, - bsd.rd, or for rescue system purposes. - - DOS We are loaded to xxxx:0100h with no drive or PXE informa- - tion set up. The interrupt vectors are hooked by DOS, so - if we overwrite any memory in use by DOS, we lose. That - would be the case if xxxx is larger than our final ad- - dress, any hooks point to an address between our final - address and 9000:0000h, the HMA is in use (because that's - where the kernel is loaded to), or somesuch. This also - implies we cannot chain any other bootloader. Further- - more, we require the machine to be in Real Mode, not in - VM86 mode, so EMM386.SYS, Win32 or similar must not be - active. We ask DOS for the current drive to use this in- - formation later. DOS has set up a PSP (Program Segment - Prefix) for us, which may contain a command line which we - store away for later perusal if it is not empty. - - COMBOOT We are loaded in a similar way as from DOS, except the - machine state is not changed as much from the initial - state. After determining that we are in fact loaded via - COMBOOT and not DOS, we ask SYSLINUX to terminate after - gathering information about the boot drive, partition, or - PXE; the UNDI and PXE stacks are kept active if any. The - COMBOOT API has set up a PSP like DOS as well, which we - handle the same. - - Multiboot We request to be loaded to 0x00100000 (the HMA) due to - GNU GRUB's limitations, save the boot device off the MBI - structure, copy ourselves to the final location, and - switch back to Real Mode. Modules passed to us by the - Multiboot compliant boot loader will be moved off to just - above 20 MiB in memory; their dirnames as well as any - command lines to the Multiboot modules are discarded. If - a command line is passed to the Multiboot OS kernel, i.e. - this bootloader, the pathname of the loader is skipped; - it is then cut off after a certain size limit (currently, - 256 bytes) and stored away for later use. The modules are - made available as regular files using the virtual lmbm - (Loadable Multiboot Modules) device and filesystem (in- - RAM file store, really). - - During the initial operation, the stack is located about 80 KiB - behind the start of our own memory area, and switched to the final - location if the position in memory is known to be correct early. - - 2. System information (boot drive, potential partition table entry, - PXENV+ and !PXE structure pointers, multiboot module information) - are stored in safe locations. - - 3. The code is relocated to the final address once or twice if needed. - The final address is 4000:0000h with the stack beginning at - 3000:FF7Ch. The 128 bytes in between, from 3000:FF80h onwards, con- - tains a potentially stored away PSP command line, before it is moved - to the buffer after the bss and ssbss sections have been initialised - (zeroed out). The stack is shared between Real Mode and 32-bit Vir- - tual Protected Address Mode. The code is mostly organised using the - small memory model, with everything within 64 KiB (although the real - limit is more than 256 bytes less than that due to initial loading - issues), except some rather large uninitialised areas and the disc - I/O bounce buffer, which begin at 3000:0000 and grow upwards, nick- - named the ssbss section. The heap begins after the bss section and - grows up to just short of 9000:0000h. - - 4. If the bootloader is compiled to do so, for example on a Live CD, it - displays a boot menu unless the shift key is pressed, and retains - the numeric return value for later, to replace the cfg suffix of the - configuration file with it, unless a (non-empty) command line is - passed. - - 5. The system is switched to Protected Mode. - - 6. If a command line was passed, it is moved from its original (Multi- - boot, above 1 MiB or way below in the real mode area) or temporary - (0x3FF80) location to cmd_buf. - - 7. The hardware is probed: - - + o Console devices: the default BIOS console (INT 10h, which may be - a MDA/MGA/Hercules, CGA/EGA or VGA CRT/LCD, plus DIN or PS/2 or - emulated keyboard) as well as up to four serial ports (via the - BIOS interface). - + o Memory: ask the BIOS and probe page by page through the address - space, in case the BIOS reports wrong information. - + o APM support - + o PXE support - + o Loadable Multiboot Modules (if any, they are moved off to safe - locations and the virtual lmbm device and lmbmfs are set up) - + o Floppy disc drives - + o Hard disc drives, including El Torito CD-ROM drives - - 8. If a command line was passed, it is executed. If it contained a boot - command, the kernel is attempted to be loaded; otherwise, or if it - fails, execution flow continues at the command prompt (see below) - with no timeout or auto-boot enabled. - - 9. Unless a control key is held or a command line was passed, the files - /x.x.x.x/boot.cfg if loaded via PXE (where x.x.x.x is our own IPv4 - address) and /boot.cfg, with "cfg" possibly replaced from the Live - CD menu, are read and executed as if the commands had been entered - on the loader prompt. - - 10. The bootloader prompt - - boot> _ - - is issued, and a command line is read. If no key is pressed within - five seconds, the kernels /bsd and /bsd.old are tried, in order, to - be booted with the current parameters; if unsuccessful or any key is - pressed, the timeout is disabled (it can be manipulated from the - configuration file or command line). The system will be unable to - boot if no suitable kernel image is found. - - Commands from the configuration file and the loader prompt are read line - by line and executed as read. Empty lines and lines beginning with the - comment character, '#', are ignored when reading from the configuration - file. Just entering an empty line at the loader prompt, however, will do - the default action of booting a kernel with the current parameters. To - pass multiple commands on a line, use the U+0060 character, '`', as del- - imiter. To pass multiple commands into a macro definition, use the tilde, - '~', as delimiter. Leading and trailing whitespace is ignored. - -COMMANDS - The following commands are accepted at the loader prompt: - - boot [image [-acds]] - Boots the kernel image specified by image with any options given. - If the image file specification, or one of its device or filename - parts (see below) is omitted, values from variables will be used. - - -a Causes the kernel to ask for the root filesystem to use. - - -c Causes the kernel to go into UKC(8) before performing - autoconf(4). - - -d Causes the kernel to drop into ddb(4) at the earliest con- - venient point. - - -s Attempts to boot into single-user mode. - - cat image - Displays the file onto the console. Output is paginated every 24 - lines. - - echo Displays the arguments onto the console. - - env On i386, this command is not used. - - help Prints a list of available commands. - - ls [dirspec] - Prints the content of the specified directory in long format. - Output is paginated every 24 lines. - - The cd9660, tftp and nfs filesystems do not support this command. - They will either always fail or always succeed with sane but - unusable results. The FAT12, FAT16 and FAT28 filesystems have - hardcoded perms and uid/gid. - - machine [command] - Issues machine-specific commands: - - boot dev Load a bootsector (MBR or PBR) from the indicated dev- - ice and boot it. Possible devices are fd0 (floppy - boot), hd0 (MBR), hd0a, hd0b, hd0c, hd0d (PBR), and - some more useless combinations. - - diskinfo Display a list of probed floppy and hard disc drives - including BIOS and geometry information. - - exec dos Execute INT 21h, AH=4Ch, to return to DOS or SYSLINUX, - if possible. This will not always work and may hang - your system. - - exec type image - Load a bootsector or other bootloader from an image - file and execute it. Currently known values for type: - - grub GNU GRUB 0.9x stage2 file - GNU GRUB 0.9x stage2_eltorito file - GNU GRUB2 core.img file - - sector Boot sector or image, loaded to 0000:7C00h - MirOS boot second-stage loader - - label [device] - Displays the idea boot has about the disklabel of the - currently active or the specified device. - - memory [arg] - If used without any arguments, print the current idea - boot has about the memory configuration taken from BIOS - or probed. Arguments having the form of - - [+-]@
- - add (+) or exempt (-) the specified amount of memory. - Both size and base address can be specified in decimal, - octal or hexadecimal, using standard C prefixes. - - Memory segments are not required to be adjacent to each - other; the only requirement is that there is real phy- - sical memory under the range added. The following exam- - ple adds 32 MiB of memory right after the first 16 MiB: - - boot> machine mem +0x2000000@0x01000000 - - Another useful command is to withdraw a range of memory - from OS usage, which may have been wrongfully reported - as useful by the BIOS. This example excludes the 1516 - MiB range from the map of useful memory: - - boot> machine mem -0x100000@0x00F00000 - - oldbios Enable or disable the so-called "Old BIOS / Soekris - helper", which restricts boot from loading more than - one sector at a time from disc. - - pxe Forcibly scan for a PXE boot ROM. - - regs Debugging command displaying register dumps. - - macro Displays the names of all currently defined macros. Up to four - can be defined, holding up to 256 characters. - - macro name [cmd] - Deletes the macro name, or defines it to cmd. - - reboot Initiates a warm machine reboot. - - set [name [value]] - If invoked without arguments, prints a list of variables and - their values. If only a name is given, the value of that variable - is displayed. Otherwise, the variable is set to the new value. - The following variables are defined: - - addr Address at which to load the kernel - - debug Debug flag - - device Boot device name (see below) - - doboot "0" disables automatic boot on entering an empty line - - howto Options passed to the loaded kernel, see boot - - image File name containing the kernel image - - timeout Number of seconds to wait for human intervention before - auto-booting - - tty Name of the active console device, for example: - + o com0 - + o com1 - + o pc0 - - stty [device [speed]] - Displays or sets the speed for a console device. If the baudrate - for the currently active console device is changed, boot offers - you five seconds of grace period to switch your terminal to - match. If the baudrate for an inactive device is changed, it will - only become active on the next switch to a serial console device; - it is not used on the PC CRT console. - - The default baudrate is 9600 bps. boot uses eight data bits, no - parity, one stop bit. - - time Displays the system date and time. - -IMAGE SPECIFICATIONS - An image specification consists of two parts, the device name and a path- - name, separated by a colon (':'). In most circumstances, both can be om- - itted, and pathnames do not need to begin with a leading slash even if - they are absolute. Note that, for some filesystems, you are limited to an - 8.3 character naming scheme with case insensitive (mapped to lowercase) - filenames. Other filesystems may not provide directory listing informa- - tion or the ability to stat files (especially remote filesystems). - - Examples of valid image specifications are: - + o fd0a:/bsd - + o hd0o:/bsd.rd - + o / (for "ls") - + o hd0a:/ (for "ls") - + o lmbm:/ (for "ls") - + o cd0a:/boot/grub/stage2 - + o tftp:/bsd.rd.i386 - + o lmbm:/bsd4grml - + o /bsd - - Disklabels are read from hard discs (BIOS drive >= 80h) by searching for - a primary MirOS partition first. The default partition type, 0x27, can be - changed at installboot(8) time, where it is hardcoded into the partition - boot record. If no suitable MBR partition was found or we're on a floppy, - the disklabel is searched at the beginning of the drive instead. The la- - bel offset for the i386 architecture is one 512-byte sector. On MirOS - DuaLive CDs, it may be embedded in the first-stage sparc bootloader. If - no disklabel can be read from the disc, one is faked. The device size - ('c' slice) defaults to the size of an 1440 KiB floppy disc, but if any - MBR primary partitions are found which span more space, their values are - used instead. The 'd', 'e', 'f' and 'g' slices are filled with the four - MBR primary partitions, if any. The 'a' slice is filled, in this order, - with: the partition passed via DS:SI if plausible, the first non-empty - MBR partition ('d'-'g' slices), the whole disc ('c' slice). - -FILES - /usr/mdec/bootxx first stage bootloader (PBR) - /usr/mdec/boot second stage bootloader - /usr/mdec/mbrldr hard disc MBR, simple version - /usr/mdec/mbrmgr MBR, bootmanager version - /boot usual location of installed loader - ldbsd.com alternative name for boot - /boot.cfg boot configuration file - /bsd standard kernel image - /bsd.rd kernel image for installation/recovery - /bsd.old alternative kernel image - /etc/dhcpd.conf dhcpd(8) configuration file - /tftpboot/boot standard location of boot for netboot - /tftpboot/boot.cfg common/shared boot configuration file on the TFTP - server; /tftpboot/10.11.12.13/boot.cfg contains - peer-specific configuration to be used instead - /tftpboot/bsd kernel image - /tftpboot/pxeboot deprecated, no longer in use - -EXAMPLES - A sample configuration file for dhcpd(8) is already contained with MirOS - and might look as follows: - - shared-network KICKSTART { - subnet 172.23.42.0 netmask 255.255.255.0 { - option routers 172.23.42.1; - filename "boot"; - range 172.23.42.10 172.23.42.199; - } - } - - Boot the default kernel: - - boot> boot - - Remove the 5 second pause at boot-time permanently, causing boot to load - the kernel immediately without prompting: - - # echo "boot" >/boot.cfg - - Remove the 5 second pause at boot-time permanently, causing boot to do - nothing automatically: - - # echo "set timeout 0" >/boot.cfg - - Use serial console. A null modem cable should connect the specified seri- - al port to a terminal. Useful for debugging. - - boot> set tty com0 - - Invoke the serial console at every boot: - - # echo "set tty com0" >/boot.cfg - - Multiple commands on one line are useful for machines whose serial con- - sole is unusable from within the boot loader, but the only way to talk to - the kernel, e.g. for installation on a Soekris/WRAP: - - boot> stty com0 38400 ` set tty com0 ` boot /bsd.rd - - Boot the kernel named /bsd from the second hard disc in "User Kernel - Configuration" mode (see boot_config(8)). This mechanism allows for the - explicit enabling and disabling of devices during the current boot se- - quence, as well as the modification of device parameters. Once booted, - such changes can be made permanent by using config(8)'s -e option. - - boot> boot hd1a:/bsd -c - -SEE ALSO - gzip(1), compress(3), autoconf(4), ddb(4), dhcpd.conf(5), boot_config(8), - boot_i386(8), dhcpd(8), diskless(8), fdisk(8), httpd(8), inetd(8), - installboot(8), reboot(8), tftpd(8) - - Intel Corporation, Preboot Execution Environment (PXE) Specification, - Version 2.1, September 20, 1999. - - Free Software Foundation, Inc., Multiboot Specification, Version 0.6.93. - -HISTORY - This bootloader is based on code written by Michael Shalayeff for - OpenBSD 2.1. The separate pxeboot command first appeared in OpenBSD 3.5, - based upon work from NetBSD. In OpenBSD and MirOS #7 and below, the - boot.cfg file was called boot.conf, it has been renamed for ISO 9660 and - FAT compatibility. A version called cdboot appeared in MirOS #8 and went - away for MirOS #10. The separate versions got merged into one bootloader, - DOS, COMBOOT, Multiboot support (including modules), pagination, macros, - the machine exec and cat commands, working chainbooting of bootsectors - and GNU GRUB, faked disklabels (if none exist on disc), FAT filesystem - support, and many more things were added or rewritten for MirOS #11 and - MirOS bsd4grml by Thorsten Glaser. - -CAVEATS - The default location of the kernels and the boot.cfg file can be changed - at compile time. - - FILESYSTEM SPECIFIC NOTES - - ISO 9660 Filesystems above 4 GiB in size definitively do not work. We - do not know at this time if there is a 2 GiB or 4 GiB limit, - nor if this affects any other filesystems. - - The ls command does not work. - - lmbmfs This filesystem and device will only appear if loaded via a - Multiboot compliant boot loader, masquerading as Multiboot - compliant OS kernel, and when modules are passed. ls is possi- - ble only on the root directory ("/", "/."). Files keep the - names passed by the Multiboot boot loader, but have the direc- - tory part stripped, and can be accessed with any directory - leading. If they have no names, they are given an enumerated - hex number as name. - - tftp, nfs These filesystems and devices will only appear of loaded via - PXE. They obviously do not support ls. - - http There are plans to support this if pxebsd.0 is loaded from - gPXE, but no code yet. For now, gPXE can load boot using Mul- - tiboot, and any passed modules are handled via lmbmfs. - - ustarfs This filesystem is currently only usable with the boot floppy - and assumes that the entire floppy disc (except, on sparc, the - MD disklabel) is a valid ustar archive. - -MirOS BSD #10-current August 6, 2010 7