LILO.CONF(5)
๐ LILO.CONF(5) ๐
File Formats Manual ยท LILO.CONF(5) โ yes bestie, we're doing the lilo.conf page, strap in ๐
โจ NAME โจ
lilo.conf โ the configuration file for lilo ๐
๐ธ DESCRIPTION ๐ธ
This file, by default /etc/lilo.conf, gets read by the boot loader installer lilo (go see lilo(8), she's the main character here).
It might look, like, exactly as follows:
# /etc/lilo.conf
#
# global options:
boot=/dev/hda
prompt
timeout=150
lba32
compact
vga=normal
root=/dev/hda1
read-only
menu-title=" John's Computer "
#
### bootable kernel images ###
image=/boot/vmlinuz-2.6.29-1-i386
label=try
initrd=/boot/initrd.img-2.6.29-1-i386
image=/boot/vmlinuz-2.4.33-1-i386
label=2.4.33
image=/tamu/vmlinuz
label=tamu
initrd=/tamu/initrd.img
root=/dev/hdb2
vga=ask
#
### other operating systems ###
other=/dev/hda3
label=PCDOS
boot-as=0x80 # must be C:
other=/dev/hdb1
label=WinXP
boot-as=0x80 # must be C:
other=/dev/hdb5
label=oldDOS
loader=chain
table=/dev/hdb5
So this config file is saying lilo uses the Master Boot Record on /dev/hda. (And if you wanna get into all the different ways to use lilo, plus how it plays with other operating systems, go read html/user_21-5.html inside the old documentation. It's giving โจarchivalโจ.)
When booting, the boot loader will throw out its boot: prompt and just wait for you to type in the label of the kernel (plus any options) you wanna boot. At any time you can hit [Tab] and it'll show you a list of kernel/other labels โ super handy, no cap. Or, if the menu boot loader is the one installed, you get a whole menu of boot options to pick from, and the title of that menu is overridden by the menu title specification in this configuration file. If you enter literally nothing, then the default kernel image โ the first one mentioned, which in the example is /boot/vmlinuz-2.6.29-1-i386 โ gets booted after a timeout of 15 seconds (that's 150 deciseconds, bestie, they're counting in tenths here ๐
). There may be at least 16 images mentioned in lilo.conf. (The exact number depends upon compilation options, so like, don't @ me.)
As you can see up there ๐ a configuration file starts with a bunch of global options (the top 9 lines in the example, count 'em), followed by descriptions of the options for the various images. And here's the tea: an option in an image description will override a global option. Periodt.
Comment lines may appear anywhere, and begin with the # character. Obsessed with that for them.
๐ GLOBAL OPTIONS ๐
There are many possible keywords. The description below is almost literally from html/user_21-5.html inside the old documentation (just slightly abbreviated, they trimmed a lil).
backup=<backup-file>โ tells you where a copy of any modified boot sector gets saved in a file.backup=can specify that location in one of three ways: a directory where the default backup fileboot.NNNNwill be created; a file pathname template that the.NNNNsuffix gets added to; or the full file pathname, which has to include the correct.NNNNsuffix. ๐ซถ All RAID installations should use only the first two alternatives, because multiple backups may get created. The.NNNNsuffix is the hexadecimal representation of the major and minor device numbers of the device or partition. If you don't specify this option, the default name of boot sector backups is/boot/boot.NNNN. And if a backup already exists, it will be preserved, not overwritten. (C.f.,force-backup=below.) โจbios-passes-dl=<option>โ the option here is indicated asyes,no, orunknown. If you don't specify it, a value of"unknown"is assumed, unless additional information is available to the boot installer. When"no"is specified, it means the BIOS is known not to pass the current boot device code to the boot loader in the DL register. At this point its only function is experimental, since certain RAID installations may benefit from knowing that the BIOS is 100% reliable. Its use should be considered experimental, fr fr.
This option may be specified on the command line with the-Zswitch:yes=1,no=0.
bitmap=<bitmap-file>โ specifies use of a640x480x16(VGA BIOS) or640x480x256(VGA/VESA BIOS) bitmap file as the background that a boot menu gets displayed on. ๐ฆ May not be used ifmessage=is specified. Using this option will select a bitmap-capable boot loader, unless it's overridden withinstall=(see below).
When a bitmap file is specified as a background screen during the boot process, the color selection and layout of the text that overlays the graphic image must be specified in one of two ways.
One way is using header information in the bitmap image (*.bmp) file: from a text file with all the info about bmp-colors, bmp-table and bmp-timer options together with the bitmap option, all stored in the special LILO header of the bitmap image file by the lilo -E command. Another way works without those special header infos: all the information about the bmp-colors, bmp-table and bmp-timer options together with the bitmap option are stored in the configuration file. Any use of the bmp- options within the configuration file overrides the options stored in the bitmap file header. And if lilo can't find any of the bmp- options, then default values are used. Defaults ate, honestly ๐
bmp-colors=<fg>,<bg>,<sh>,<hfg>,<hbg>,<hsh>โ specifies the decimal values of the colors to be used for the menu display on abitmap=background. The list has 6 entries: 3 for normal text followed by 3 for highlighted text. The order of each triple is: foreground color, background color, shadow color. If the background color isn't specified,"transparent"is assumed. If the shadow color isn't specified, then"none"is assumed. The list entries are separated by commas, with no spaces. ๐จbmp-retainโ this option applies to allimage=andother=sections. (See COMMON OPTIONS, below.) ๐bmp-table=<x>,<y>,<ncol>,<nrow>,<xsep>,<spill>โ specifies the location and layout of the menu table.<x>,<y>specify the starting x- and y-position of the upper left corner of the table in character coordinates: x in[1..80], y in[1..30].<ncol>is the number of columns in the menu (1..5); and<nrow>is the number of rows (entries) in each column. If more than one column is specified, then<xsep>is the number of character columns between the leftmost characters in each column: (18..40), and<spill>is the number of entries in one column which must be filled before entries spill into the next column.<spill>must be.le.<nrow>. If pixel addressing is used instead of character addressing, then any of<x>,<y>, or<xsep>may be specified with apsuffix on the decimal value. ๐งbmp-timer=<x>,<y>,<fg>,<bg>,<sh>โ optional specification of thetimeout=countdown timer.<x>,<y>specifies the character (or pixel) coordinate of the location of the timer, the same asbmp-table=above; and the color triple specifies the character color attributes the same asbmp-colors=above, with the exception that the background color must be specified. If you're using it to override the timer specification in a bitmap file, then the formbmp-timer = noneis acceptable โ that disables the timer display entirely. โณboot=<boot-device>โ sets the name of the device (like a hard disk or partition) that contains the boot sector, and where the new boot sector should be written to. โ ๏ธ Notice: the boot-device should be the device with the currently mounted root partition.
A raid installation is initiated by specifying a RAID1 device as the boot device; e.g., "boot=/dev/md0".
On newer systems you need a unique ID for the boot device. If the boot sector should write to a partition, you can use its UUID in the same manner as for the root options.
If your boot device is a hard disk you need a special ID, which is supported by udev. You find the right ID in the directory /dev/disk/by-id, i.e.:
boot = /dev/disk/by-id/ata-SAMSUNG_SV1604N_S01FJ10X999999
change-rulesโ defines boot-time changes to partition type numbers (hiding). ๐
change-rules
reset
type=DOS12
normal=1
hidden=0x11
type=DOS16_small
normal=4
hidden=0x14
type=DOS16_big
normal=0x06
hidden=0x16
That excerpt from a configuration file says all default change-rules are removed ("reset"), and the change-rules for three partition types are specified. Without the reset, the three types specified would have been added to the existing default change-rules. Normally the default rules are sufficient, so like, you probably don't need to touch this. The strings which define the partition types are used in a change section (see below), with the suffixes "_normal" or "_hidden" appended. See section "Partition type change rules" of html/user_21-5.html inside the old documentation for more details.
compactโ tries to merge read requests for adjacent sectors into a single read request. This drastically reduces load time and keeps the map file smaller. Usingcompactis especially recommended when booting using a map file on a floppy disk. ๐ฅdefault=<name>โ uses the specified image as the default boot image. Ifdefaultis omitted, the image appearing first in the configuration file is used. See also,vmdefaultbelow. ๐delay=<tsecs>โ specifies the number of tenths of a second the boot loader should wait before automatically booting a locked command line, a command line pre-stored bylilo -R, or the defaultimage=orother=. Whendelayis non-zero, the boot loader will wait for an interrupt for the specified interval. If an interrupt is received, or is already waiting, theboot:prompt will be issued, and no automatic boot will take place. Setting CAPS LOCK or SCROLL LOCK, or holding down any of the keys ALT, CTRL, or SHIFT, all count as interrupts. ๐ญ (yes bestie, caps lock is a feature now)
โฆand that's just the global options, there's so much more coming ๐
disk=<device-name>โ bestie this one lets you define non-standard parameters for a specific disk. Full details live in the section "Disk geometry" ofhtml/user_21-5.htmlinside the old documentation, iykyk. For LILO versions prior to 22.5, thebios=parameter was lowkey iconic for saying how the BIOS handed out device codes to your disks. Like, for example:
disk=/dev/sda
bios=0x80
disk=/dev/hda
bios=0x81
disk=/dev/sdb
inaccessible
which is literally saying: your SCSI disk is the first BIOS disk (0x80), your (primary master) IDE disk is the second BIOS disk (0x81), and your second SCSI disk (maybe a USB device, who knows) gets no device code at all, so it's inaccessible at boot time. ๐
NOTE: using the bios= option is largely obsolete starting with LILO version 22.5, because the boot loader now identifies disks by 32-bit Volume-ID and defers BIOS device code determination until boot time. so likeโฆ it's giving legacy.
Other options include specifying disk geometry, e.g.:
disk=/dev/fd0
sectors=18
heads=2
cylinders=80
which is probably only useful for floppy disks and loopback devices, because for hard disks the lba32 disk addressing option just ignores disk geometry. โจ
Developers who implemented a disk driver for a new block storage device will have to tell LILO the maximum number of partitions on the device. This is in addition to making all of the necessary entries for the device in the /dev directory (with mknod). And that max number of partitions has to be one of 63 (like an IDE disk), 31 (uncommon), 15 (like SCSI disks โ most common value), or 7 (like one array controller). An example spec would be:
disk=/dev/userd0
max-partitions=15
And in cases where there's no kernel partition information available, like on loopback devices, the disk= specification can include partition start info; viz.,
disk=/dev/loop0
bios=0x80 # use this BIOS code
max-partitions=7 # declare partitionable
partition=/dev/loop1
start=63 # offset from sector 0
partition=/dev/loop2
start=102400 # offset from sector 0
disktab=<disktab-file>โ names the disk parameter table file. Ifdisktabis omitted, the map installer looks for/etc/disktab. But ngl, using disktabs is discouraged. ๐ซel-torito-bootable-CDโ flags the second stage loader to terminate disk emulation when booting from an El Torito Bootable CD. This option is used by themkrescueutility when the--isoswitch is specified. ๐fix-tableโ this letsliloadjust 3D addresses in partition tables. Every partition entry contains a 3D (cylinder/head/sector) address and a linear address of the first and the last sector of the partition. If a partition isn't track-aligned and if certain other operating systems (e.g. PC/MS-DOS) are using the same disk, they may change the 3D address.lilocan only store its boot sector on partitions where both address types correspond.lilore-adjusts incorrect 3D start addresses iffix-tableis set.
WARNING: this does not guarantee that other operating systems won't try to reset the address later. It's also possible that this change has other, unexpected side-effects. ๐ญ The correct fix is to re-partition the drive with a program that aligns partitions to tracks. Also, with some disks (e.g. some large EIDE disks with address translation enabled), under some circumstances, it may even be unavoidable to have conflicting partition table entries. no cap.
force-backup=<backup-file>โ operation is identical tobackup=above, except an existing backup file is unconditionally overwritten if it exists. periodt.geometricโ forces disk addressing compatible with older versions of LILO. Geometric addressing uses cylinder/head/sector addresses and is limited to disk cylinders up to1023. If inaccessible cylinders are referenced, diagnostics get issued at boot-install time rather than boot-time. With a newer BIOS, use oflba32is recommended. ๐ignore-tableโ tellsliloto ignore corrupt partition tables. ๐install=<user-interface>โ picks the user interface you'll see at boot time. You can specify one of three options:text,menu, orbmp. The traditional LILO interface istext; butmenuis now the default, unless the configuration file contains thebitmap=specification. Thetextinterface is strictly a command-line interface, as though the console were a dumb terminal. Themenuinterface is a text-based screen of the boot choices, with the option to enter additional command line parameters. And thebmpinterface is a menu presented against a graphic screen, specified as a 640x480 BitMaP file of 16 or 256 colors. (See thelilo -Eswitch for editing options.)
(Prior to LILO version 22.3, install= specified the user interface as a file in the /boot directory.) โญ
large-memoryโ normally any initial ramdisk (initrd) loaded with a kernel is loaded as high in memory as possible, but never above 15 MB. This is due to a BIOS limitation on older systems. On newer systems, this option enables using memory above 15 MB (up to a kernel-imposed limit, around 768 MB) for passing the initrd to the kernel. The presence of this option merely indicates that your system does not have that old BIOS limitation.
This switch (or its absence) is not passed to the kernel, and does not in any way affect the amount of physical memory it will use. (See the kernel documentation for the kernel command line parameter mem= for limiting the memory used by the kernel.) ๐
lba32โ generate 32-bit Logical Block Addresses instead of cylinder/head/sector addresses. If the BIOS supports packet addressing, then packet calls will be used to access the disk. This allows booting from any partition on disks with more than1024cylinders. If the BIOS doesn't support packet addressing, thenlba32addresses get translated to cylinder/head/sector (geometric), just as forlinear. All floppy disk references are retained in C:H:S form. Use oflba32is recommended on all post-1998 systems. Beginning with LILO version 22,lba32is the default disk addressing scheme. slay. ๐ฅlinearโ generate 24-bit linear sector addresses instead of cylinder/head/sector (geometric) addresses. Linear addresses are translated at run time to geometric addresses, and are limited to cylinders <=1023. When usinglinearwith large disks,/sbin/lilomay generate references to inaccessible disk cylinders.lba32avoids many of these pitfalls with its use of packet addressing, but requires a recent BIOS (post-1998).
The linear option is considered obsolete, and its use is strongly discouraged. ๐ซถ please don't.
lockโ enables automatic recording of boot command lines as the defaults for the following boots. This way,lilo"locks" on a choice until it's manually overridden. ๐mandatoryโ the per-image password optionmandatory(see below) applies to all images. ๐map=<map-file>โ specifies the location of the map file. Ifmapis omitted, the file/boot/mapis used.
On machines with a pre-1998 BIOS, the EDD bios extensions required to support lba32 disk sector addressing may not be present. In that case, the boot loader will fall back automatically to geometric addressing; this fall-back situation, or the specific use of geometric or linear addressing, will require the map file to be located within the first 1024 cylinders of the disk drive. This BIOS limitation is not present on post-1998 systems, most of which support the newer EDD disk BIOS calls. ๐
menu-title=<title-string>โ specifies the title line (up to 37 characters) for the boot menu. This title replaces the default"LILO Boot Menu"title string. Ifmenuisn't installed as the boot loader (see theinstall=option), then this line has no effect. ๐menu-scheme=<color-scheme>โ the default color scheme of the boot menu can be overridden on VGA displays with this option. (The color scheme of MDA displays is fixed, sorry bestie.) The general color-scheme string is of the form:
<text>:<highlight>:<border>:<title>
where each entry is two characters specifying a foreground color and a background color. Only the first entry is required. The default highlight is the reverse of the text color; and the default border and title colors are the text color. Colors are specified using the characters kbgcrmyw, for blacK, Blue, Green, Cyan, Red, Magenta, Yellow, and White: upper case for intense (fg only), lower case for dim. Valid color-scheme strings would be
menu-scheme=Wm intense white on magenta
menu-scheme=wr:bw:wr:Yr the LILO default
menu-scheme=Yk:kw bright yellow on black
If menu isn't installed as the boot loader, then this line has no effect. โจ
message=<message-file>โ specifies a file containing a message displayed before the boot prompt. No message is displayed while waiting for a shifting key after printing"LILO ". In the message, the FF character ([Ctrl L]) clears the local screen. This is undesirable when the menu boot loader is installed. ๐ The size of the message file is limited to 65535 bytes. The map file has to be rebuilt if the message file is changed or moved.message=andbitmap=are mutually exclusive. ๐nodevcacheโ (22.8) bestie this one turns OFF the pre-loading of the internal device cache โ. You might actually need it if your Linux distro uses weird non-standard device naming conventions, like when the first IDE disk isn't/dev/hda. it's giving "my disks have main character names" energy.nokbdefault=<name>โ (22.7.2) so if there's literally no IBM-PC keyboard present, the descriptor you name here becomes the default boot image ๐น. And heads up: if no serial interface (serial=) is in use, then anypromptkeyword andtimeoutvalue get straight-up bypassed, and default booting happens the waydelay=says. ngl the keyboard detection codes can't even tell if a newer USB keyboard is there or not ๐.noraidโ stops the automatic marking of disk volumes that are part of RAID arrays as inaccessible ๐ซ. This lets you, the user, edit thedisk=/inaccessibledeclarations into the config file yourself. And if you don't add those declarations? Duplicate Volume IDs get overwritten, which leads to confusing situations at boot-time and possibly a failed boot ๐ญ. fr fr, using this keyword is generally not necessary.nowarnโ disables the warnings about possible future dangers ๐ฎ. living dangerously, iconic of you.optionalโ the per-image optionoptional(scroll down, it's there) applies to all images.password=<password>โ the per-image optionpassword=...(also below) applies to all images. โ ๏ธ this can stop unattended booting if the default image is protected bypassword=at the default levelmandatory, which is a level higher thanrestricted. the way that's a whole vibe shift at 3am when nothing boots ๐ญpromptโ automatic booting (that's thedelaything up above) will NOT happen unless a locked or pre-stored (lilo -R) command line is present. Instead the boot loader throws up theboot:prompt and waits for you to type something before it proceeds (seetimeoutbelow) ๐ซถ. Also: unattended default image reboots are literally impossible ifpromptis set andtimeoutisn't, or if the default image is password protected at a higher level thanrestricted. no cap.raid-extra-boot=<option>โ this one only means anything for RAID1 installations ๐ง.<option>can benone,auto,mbr,mbr-only, or a comma-separated list of devices, e.g."/dev/hda,/dev/hdc6". Starting with LILO version 22.0, the boot record is normally written to the first sector of the RAID1 partition. On PARALLEL raid sets, no other boot records are needed. The default action isauto, meaning it automatically generates auxiliary boot records as needed on SKEWED raid sets.nonemeans suppress generation of all auxiliary boot records.mbr-onlysuppresses generation of a boot record on the raid device, and forces compatibility with versions of LILO earlier than version 22.0 by writing boot records to all Master Boot Records (MBRs) of all disks which have partitions in the raid set.mbris likembr-onlyexcept the boot record on the RAID partition is not suppressed. Use of an explicit list of devices forces writing of auxiliary boot records only on those devices enumerated, in addition to the boot record on the RAID1 device. Since the version 22 RAID1 codes will never automatically write a boot record on the MBR of device0x80, if such a boot record is desired, this is one way to have it written. Use ofmbris the other way to force writing to the MBR of device0x80. ๐restrictedโ the per-image password optionrestricted(yep, see below) applies to all images.serial=<parameters>โ enables control from a serial line ๐ก. The specified serial port gets initialized and the boot loader accepts input from it and from the PC's keyboard. Sending a break on the serial line is basically pressing a shift key on the console to get the boot loader's attention. โ ๏ธ All boot images should be password-protected if the serial access is less secure than access to the console โ e.g. if the line is connected to a modem. bestie. please.
The parameter string has this syntax:
<port>[,<bps>[<parity>[<bits>]]]
<port>: the number of the serial port, zero-based. Zero (0) corresponds to COM1 alias/dev/ttyS0, etc. All four ports can be used (if present).<bps>: the baud rate of the serial port. Supported rates:110,150,300,600,1200,2400(default),4800,9600, plus the extended rates19200,38400, and57600(56000). The rate115200is allowed, but may not work with all COMx port hardware ๐ฌ.<parity>: the parity used on the serial line. The boot loader ignores input parity and strips the 8th bit. Upper or lower case characters describe the parity:"n"for no parity,"e"for even parity and"o"for odd parity.<bits>: the number of bits in a character. Only7and8bits are supported. Default is8if parity is"none",7if parity is"even"or"odd".
If serial is set, the value of delay is automatically raised to 20 โจ.
Example: "serial=0,2400n8" initializes COM1 with the default parameters.
single-keyโ this option says boot images or'other's are selected and launched with a single keystroke โจ๏ธ. Selection is based on the first character of each name, which must be unique. โ ๏ธ Do NOT use this with the menu or bitmap user interface (install=). it's giving "pick one aesthetic, not both".static-BIOS-codesโ makes the boot installer and boot loader bypass the use of Volume-ID information and revert to the mode of operation of versions of LILO from 22.4 backward ๐ฐ๏ธ. With Volume-ID booting (22.5 and later), the BIOS codes of disks are determined at boot time, not install time; so they may get switched around, either by adding or removing disk(s) from the hardware configuration, or by using a BIOS menu to select the boot device.
With this option in play, the BIOS codes of disks MUST be correctly specified at install time โ either guessed correctly by LILO (which often fails on mixed IDE/SCSI systems), or explicitly specified with 'disk=/dev/XXX bios=0xYY' statements. The use of this option precludes any activity which may switch around the BIOS codes assigned to particular disk devices, as noted above.
In general, this option should never be used, except as a bug workaround. ๐ periodt.
suppress-boot-time-BIOS-dataโ this global option suppresses the boot-time real mode collection of BIOS data on systems which hang on certain BIOS calls ๐ง. It's equivalent to using the boot-time switch'nobd'.
โ ๏ธ This option defeats the disk volume recognition and BIOS device code detection features of LILO on systems with more than one disk. So using it produces a strong cautionary message, which cannot be suppressed. not even with nowarn. it said what it said.
timeout=<tsecs>โ sets a timeout (in tenths of a second) for keyboard input at theboot:prompt โณ."timeout"only has meaning if"prompt"is mentioned. If no key is pressed for the specified time, the default image is automatically booted. The default timeout is infinite.unattendedโ (22.6) alters how the"timeout"parameter works, in a way that's genuinely useful on noisy serial lines ๐. Each typed (or noise) character restarts the"timeout"timer, and a timeout will always boot the default descriptor, even if noise characters have appeared on the input line. obsessed, honestly.verbose=<number>โ turns on lots of progress reporting ๐ข. Higher numbers give more verbose output. If-vis additionally specified on the lilo command line, the level is increased accordingly. The maximum verbosity level is5.vmdefault=<name>โ the named boot image is used as the default boot if booting in"virtual"mode with a virtual monitor, such as VMware(tm) ๐ฅ๏ธ. So a real mode boot and a virtual mode boot can be made to have different default boot images. lowkey genius.
Additionally, the kernel configuration parameters append, ramdisk, read-only, read-write, root and vga can be set in the global options section ๐. They're used as defaults if they aren't specified in the configuration sections of the respective kernel images.
๐ธ PER-IMAGE SECTION ๐ธ
A per-image section starts with either a line
image=<pathname>
to indicate a file or device containing the boot image of a Linux kernel ๐ง, or a line
other=<device>
to indicate an arbitrary system to boot ๐.
In the former case, if an image line specifies booting from a device, then you have to indicate the range of sectors to be mapped using
range=<start>-<end>
range=<start>+<nsec>
range=<sector>
In the third case, 'nsec=1' is assumed. โจ
โจ KERNEL OPTIONS (image=) โจ
Okay bestie, so if the image you're booting is a Linux kernel ๐ง, you can hand it command line parameters. Yes literally passing notes to your kernel. Iconic.
addappend=<string> ๐
This string's kernel parameters get concatenated onto whatever parameter(s) came from an append= option (scroll down, she's right there). The addappend string must be wrapped in double quotes, no exceptions.
The usual vibe: your global append= sets parameters that every single kernel shares (it lives in the global section of the config), and then addappend= adds local parameter(s) to one individual image. Think of it as the group chat message plus your personal little add-on. ๐
Heads up:addappendcan only be used once per"image="section. One and done.
And if your string is a super long line? You can split it across more lines using \ as the last character of a line, like this:
addappend="noapic acpi=off pci=usepirqmask \
pnpbios=off pnpacpi=off noisapnp"
append=<string> โจ
Appends the options you list to the parameter line that gets passed to the kernel. This is the classic move for hardware parameters that can't be fully auto-detected, or for stuff where probing is lowkey dangerous ๐.
Multiple kernel parameters are separated by a blank space, and the string must be in double quotes. A local append= sitting inside an image= section overrides any global append= from the global section of the config file. And like its bestie above, append can only be used once per "image=" section. If you wanna concatenate parameter strings, use "addappend=" instead. ๐
Example:
append="mem=96M hd=576,64,32 console=ttyS1,9600"
Long line? Same deal โ split it with \ as the last character. See the addappend example above. ๐ฆ
initrd=<name> ๐ธ
Specifies the initial ramdisk image to load alongside the kernel. That image holds the modules you need at boot time โ network and scsi drivers and such. Go read the man pages for mkinitrd(8) if you want the full tea. โ
literal=<string> ๐
Like append, but it removes all other options (yes, including the setting of the root device). literal overrides every append and addappend option. And because vital options can get yeeted unintentionally with literal, this option cannot be set in the global options section. Nope. Not allowed. ๐ซ
ramdisk=<size> ๐
This one sets the size of the optional RAM disk (e.g. "4096k"). A value of zero means no RAM disk gets created at all. And if you just... omit this variable entirely? Then the RAM disk size that's configured into the boot image gets used. Default behavior, we love her. ๐
read-only ๐ง
Says the root file system should be mounted read-only. It can be specified as a global option. Typically the system startup procedure re-mounts the root file system read-write later on (like, after fsck'ing it). So it's read-only... for now. ๐
read-write ๐ฅ
Says the root file system should be mounted read-write. It can be specified as a global option. That's it, that's the whole thing. โจ
root=<root-device> ๐
This specifies the device that should be mounted as root. It can be specified as a global option.
If you use the special name current, the root device gets set to the device on which the root file system is currently mounted. And if the root has been changed with -r, then the respective device is used. If the variable root is omitted entirely, the root device setting contained in the running kernel image is used.
โ ๏ธ Warning: This can induce to an unbootable system! Not a vibe. Be careful, bestie. ๐ญ
You can also specify the root filesystem with a LABEL= or UUID= directive, just like in /etc/fstab. In that case, the argument to root= must be enclosed in quotation marks, so you don't get a syntax error on the second equal sign. Like so:
root="LABEL=MyDisk"
root="UUID=5472fd8e-9089-4256-bcaa-ceab4f01a439"
Note: the command line root= parameter that gets passed to the kernel will be: 'root=LABEL=MyDisk' โ i.e., without the quotation marks. And if the root= parameter is passed from the boot time boot: prompt, no quotes are used at all. The quotes are only there to satisfy the requirements of the boot-installer parser, which treats an equal sign as an operator. The kernel command line parser is very much simpler, and must not see any quotation marks. Simply stated: only use the quotation marks within /etc/lilo.conf. Periodt. ๐
vga=<mode> ๐
This specifies the VGA text mode that should be selected when booting. It can be specified as a global option. The following values are recognized (case is ignored, she's chill like that):
normalโ select normal 80x25 text mode.extended(orext) โ select 80x50 text mode.askโ stop and ask for user input (at boot time).<number>โ use the corresponding text mode (you can specify the number in decimal, or in hex with the usual'0x'convention). Wanna see a list of available modes? Boot withvga=askand press[Enter]. ๐ซถ
And if this variable is omitted, the VGA mode setting contained in the kernel image is used. (Which is set at compile time using the SVGA_MODE variable in the kernel Makefile, and can later be changed with the rdev(8) program.) ๐
๐ ALTERNATE SYSTEM (other=) ๐
Bestie, other= is your girl for booting stuff that is not Linux. The other = <device> line points at the boot sector of some alternate system sitting on a device or disk partition โ like DOS on, say, /dev/hda2, or a floppy on /dev/fd0. ๐ฆ
When you're booting another system, these are the options you can use:
loader=<chain-loader>โ This tells LILO which chain loader to use. You can also set it globally. If you don't,chainis the default. This chain loader passes partition and drive info inside the boot sector it loads only to DOS on FAT12 or FAT16, and Windows on FAT16 or FAT32. (see alsotable=<letter>below). โจtable=<device>โ This one says which device holds the partition table. If you skip this variable, the boot loader will just pass default partition info to the OS it boots. (Some OSes have their own ways of figuring out which partition they came from. E.g., MS-DOS usually stores the geometry of the boot disk or partition in its boot sector.) Heads up:/sbin/lilomust be re-run if a partition table mapped referenced withtablegets modified. ๐changeโ This keyword opens a section that describes how primary partition IDs get changed, and how primary partitions are activated and deactivated. If you don't includechange, change rules are generated as though you'd written theautomatickeyword. And if you writechangeall by itself, with no rules after it, it will suppress automatic change-rules. For example:
other=/dev/hda2
label=dos
table=/dev/hda
change
automatic
partition=/dev/hda1
set=DOS12_hidden
deactivate
partition=/dev/hda2
set=DOS16_big_normal
activate
So this says: when primary partition /dev/hda2 is booted, automatic change-rules will be in effect; plus, partition 1, a DOS12 partition, will be set hidden, and deactivated. Also, partition 2 will be set normal, and activated. Activation sets the boot-flag in the partition table. The automatic keyword may conflict with default change rules, so those set= lines above might be redundant. ๐ญ
boot-as=<bios>โ This option (LILO version 22.5.1) tells you which BIOS device code must be assigned to the specified drive so that the"other="operating system can boot. If the chain loader notices that another BIOS device code is assigned to this disk, it will dynamically swap the assigned device code with the specified device code. โจ
This option is easier to specify than "map-drive=" and more general than "master-boot" because any device code can be specified. Unlike "map-drive=", the decision about whether to swap device codes happens at boot time, not install time. That's a win on systems where the BIOS shows a boot menu of devices and maps disks to devices in different ways depending on the BIOS boot selection. ๐
You can set this as a global option, and then it applies to all "other=" sections unless you override it with a specific "master-boot" option. If you're going to set either "boot-as=" or "master-boot" globally, it's better to set "master-boot" as the global option because it won't interfere with floppy disk BIOS device codes; then use "boot-as=" as a local option to override "master-boot" whenever you need to. ๐
master-bootโ This flag (LILO version 22.5) is for a DOS/Windows or other system that will only boot from BIOS device0x80(the"C:"drive) or BIOS device0(theA:drive). When you use this flag, if the drive isn't assigned device code0x80or0by the BIOS, then the chain loader will dynamically swap the device code actually assigned with device code0x80or0to make this drive look like the first hard or floppy drive,"C:"or"A:". ๐
This flag is easier to use than "map-drive=" (see below), and it's preferred if all you need is simple forcing of device code 0x80. It's also more general, because the need to swap BIOS device codes is figured out dynamically at boot-time, not at boot install-time like with "map-drive=". It's slightly more powerful than "boot-as=" because the device code that gets assigned, 0 or 0x80, is determined dynamically. ๐ฅ
You can set this as a global option, and then it applies to all "other=" sections unless you override it with a specific "boot-as=" option.
map-drive=<num>โ This maps BIOS calls for the specified drive to the device code specified on the next line asto=<num>. It's useful for booting operating systems like DOS from the second hard drive. The following swaps theC:andD:drives:
map-drive=0x80
to=0x81
map-drive=0x81
to=0x80
This option is largely rendered obsolete by "boot-as=", which came in with LILO version 22.5. ๐
unsafeโ This says: do not access the boot sector at map creation time. It disables some sanity checks, including a partition table check. If the boot sector is on a fixed-format floppy disk device, usingUNSAFEavoids needing to put a readable disk into the drive when you run the map installer. If the boot sector is on a hard drive, the BIOS device code of the drive will have to be specified explicitly with"disk=/dev/XXXX bios=0x8X inaccessible"in the configuration file.unsafeandtable(explicit or implicit) are mutually incompatible. ๐จ
๐ COMMON DESCRIPTOR OPTIONS (image= & other=) ๐
In both the image= and other= cases, these options apply. Periodt.
bypassโ No password is required to boot this image. This is how you say the global password does not apply to thisimage=orother=. Seepassword=below. ๐ซถlabel=<name>โ The boot loader uses the main file name (without its path) of each image specification to identify that image. You can use a different name by setting the variablelabel. โจalias=<name>โ Want a second name for the same entry? Just specify an alias. ๐bmp-retainโ The bitmap graphic (install=bmp) is retained when control is passed to the loaded kernel image, orother=bootloader; i.e., the screen is not blanked to alphanumeric mode before starting the kernel. This feature is considered EXPERIMENTAL, for those users working with startup splash screens. ๐fallback=<command-line>โ This specifies a string that is stored as the default command line if the current image is booted. Super useful when you're experimenting with kernels that might crash before you can interact with the system. If you use the fallback option, the next reboot (e.g. triggered by a manual reset or by a watchdog timer) will load a different (supposedly stable) kernel. The command line stored by the fallback mechanism is cleared by removing or changing the default command line with the-Roption, which should be a part of the boot startup scripts. ๐ฆlockโ (See above.) ๐optionalโ Omit the image if it's not available at map creation time. It may be specified as a global option. This is useful for specifying test kernels that are not always present. ๐password=<password>โ Protect theimage=orother=with a password (or passphrase). It may be specified as a global option. The interpretation of thepassword=setting is modified by the wordsmandatory,restricted, andbypass(see below). You can put the password in the config-file (less secure) or enter it when the boot loader is installed. To request interactive entry of the password, it should be specified:password="". Passwords entered interactively are not required to be entered again if the boot installer is re-run. They are cached, in hashed form, in a companion file to the config-file, default name:/etc/lilo.conf.crc. If the config-file is updated, a warning message will be issued telling you to re-runlilo -pto force re-creation of the password cache file. ๐mandatoryโ A password is required to boot this image. This is the default. May be used on a singleimage=orother=to override a different global setting. ๐nokbdisableโ (22.7.2) The specified descriptor is not bootable if the IBM-PC keyboard is not present. This option is really only useful if the"serial="boot terminal is in use. With no keyboard (and no serial terminal) attached, selecting a boot descriptor other than the default is impossible. Seenokbdefaultabove. โจ๏ธrestrictedโ A password is only required to boot the image if kernel parameters are specified on the command line (e.g.'single'). May be used on a singleimage=orother=to override a different global setting. ๐vmwarnโ If booting under a virtual monitor such as VMware(tm), the image with this label will cause a cautionary warning to be issued at boot time, and user intervention will be required to continue or to abort the boot process. โ ๏ธvmdisableโ If booting under a virtual monitor, the image with this label will not be displayed as a boot option. The image is only bootable in real mode. Seevmdefaultabove. ๐
๐ SEE ALSO ๐
lilo(8), mkinitrd(8), mknod(1), mkrescue(8), rdev(8).
Okay bestie, that's the whole LILO.CONF(5) page, dated June 2013, and it ate. Periodt. ๐โจ
๐ฆ where this page comes from
- ubuntu jammy: lilo 1:24.2-5.1 ยท BSD-3-Clause
- Copyright 1992-1998 Werner Almesberger
- Copyright 1999-2005 John Coffman
- Copyright 2009-2011 Joachim Wiedorn
- ๐ girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms