1352
1442
The embedded configuration file may not contain menu entries directly, but
1353
1443
may only read them from elsewhere using @command{configfile}.
1357
@section Graphical menu themes
1445
@node Theme file format
1446
@chapter Theme file format
1447
@section Introduction
1448
The GRUB graphical menu supports themes that can customize the layout and
1449
appearance of the GRUB boot menu. The theme is configured through a plain
1450
text file that specifies the layout of the various GUI components (including
1451
the boot menu, timeout progress bar, and text messages) as well as the
1452
appearance using colors, fonts, and images. Example is available in docs/example_theme.txt
1454
@section Theme Elements
1457
Colors can be specified in several ways:
1460
@item HTML-style ``#RRGGBB'' or ``#RGB'' format, where *R*, *G*, and *B* are hexadecimal digits (e.g., ``#8899FF'')
1461
@item as comma-separated decimal RGB values (e.g., ``128, 128, 255'')
1462
@item with ``SVG 1.0 color names'' (e.g., ``cornflowerblue'') which must be specified in lowercase.
1465
The fonts GRUB uses ``PFF2 font format'' bitmap fonts. Fonts are specified
1466
with full font names. Currently there is no
1467
provision for a preference list of fonts, or deriving one font from another.
1468
Fonts are loaded with the ``loadfont'' command in GRUB. To see the list of
1469
loaded fonts, execute the ``lsfonts'' command. If there are too many fonts to
1470
fit on screen, do ``set pager=1'' before executing ``lsfonts''.
1473
@subsection Progress Bar
1475
@float Figure, Pixmap-styled progress bar
1476
@c @image{Theme_progress_bar,,,,.png}
1479
@float Figure, Plain progress bar, drawn with solid color.
1480
@c @image{Theme_progress_bar_filled,,,,.png}
1483
Progress bars are used to display the remaining time before GRUB boots the
1484
default menu entry. To create a progress bar that will display the remaining
1485
time before automatic boot, simply create a ``progress_bar'' component with
1486
the id ``__timeout__''. This indicates to GRUB that the progress bar should
1487
be updated as time passes, and it should be made invisible if the countdown to
1488
automatic boot is interrupted by the user.
1490
Progress bars may optionally have text displayed on them. This is controlled
1491
through the ``show_text'' property, which can be set to either ``true'' or
1492
``false'' to control whether text is displayed. When GRUB is counting down to
1493
automatic boot, the text informs the user of the number of seconds remaining.
1496
@subsection Circular Progress Indicator
1498
@c @image{Theme_circular_progress,,,,.png}
1500
The circular progress indicator functions similarly to the progress bar. When
1501
given an id of ``__timeout__'', GRUB updates the circular progress indicator's
1502
value to indicate the time remaining. For the circular progress indicator,
1503
there are two images used to render it: the *center* image, and the *tick*
1504
image. The center image is rendered in the center of the component, while the
1505
tick image is used to render each mark along the circumference of the
1511
Text labels can be placed on the boot screen. The font, color, and horizontal
1512
alignment can be specified for labels. If a label is given the id
1513
``__timeout__'', then the ``text'' property for that label is also updated
1514
with a message informing the user of the number of seconds remaining until
1515
automatic boot. This is useful in case you want the text displayed somewhere
1516
else instead of directly on the progress bar.
1519
@subsection Boot Menu
1521
@c @image{Theme_boot_menu,,,,.png}
1523
The boot menu where GRUB displays the menu entries from the ``grub.cfg'' file.
1524
It is a list of items, where each item has a title and an optional icon. The
1525
icon is selected based on the *classes* specified for the menu entry. If
1526
there is a PNG file named ``myclass.png'' in the ``grub/themes/icons''
1527
directory, it will be displayed for items which have the class *myclass*. The
1528
boot menu can be customized in several ways, such as the font and color used
1529
for the menu entry title, and by specifying styled boxes for the menu itself
1530
and for the selected item highlight.
1533
@subsection Styled Boxes
1535
One of the most important features for customizing the layout is the use of
1536
*styled boxes*. A styled box is composed of 9 rectangular (and potentially
1537
empty) regions, which are used to seamlessly draw the styled box on screen:
1539
@multitable @columnfractions 0.3 0.3 0.3
1540
@item Northwest (nw) @tab North (n) @tab Northeast (ne)
1541
@item West (w) @tab Center (c) @tab East (e)
1542
@item Southwest (sw) @tab South (s) @tab Southeast (se)
1545
To support any size of box on screen, the center slice and the slices for the
1546
top, bottom, and sides are all scaled to the correct size for the component on
1547
screen, using the following rules:
1550
@item The edge slices (north, south, east, and west) are scaled in the direction of the edge they are adjacent to. For instance, the west slice is scaled vertically.
1551
@item The corner slices (northwest, northeast, southeast, and southwest) are not scaled.
1552
@item The center slice is scaled to fill the remaining space in the middle.
1555
As an example of how an image might be sliced up, consider the styled box
1556
used for a terminal view.
1558
@float Figure, An example of the slices (in red) used for a terminal window. This drawing was created and sliced in Inkscape_, as the next section explains.
1559
@c @image{Box_slice_example_terminal,,,,.png}
1562
@subsection Creating Styled Box Images
1564
The Inkscape_ scalable vector graphics editor is a very useful tool for
1565
creating styled box images. One process that works well for slicing a drawing
1566
into the necessary image slices is:
1569
@item Create or open the drawing you'd like use.
1570
@item Create a new layer on the top of the layer stack. Make it visible. Select this layer as the current layer.
1571
@item Draw 9 rectangles on your drawing where you'd like the slices to be. Clear the fill option, and set the stroke to 1 pixel wide solid stroke. The corners of the slices must meet precisely; if it is off by a single pixel, it will probably be evident when the styled box is rendered in the GRUB menu. You should probably go to File | Document Properties | Grids and enable a grid or create a guide (click on one of the rulers next to the drawing and drag over the drawing; release the mouse button to place the guide) to help place the rectangles precisely.
1572
@item Right click on the center slice rectangle and choose Object Properties. Change the "Id" to ``slice_c`` and click Set. Repeat this for the remaining 8 rectangles, giving them Id values of ``slice_n``, ``slice_ne``, ``slice_e``, and so on according to the location.
1573
@item Save the drawing.
1574
@item Select all the slice rectangles. With the slice layer selected, you can simply press Ctrl+A to select all rectangles. The status bar should indicate that 9 rectangles are selected.
1575
@item Click the layer hide icon for the slice layer in the layer palette. The rectangles will remain selected, even though they are hidden.
1576
@item Choose File | Export Bitmap and check the *Batch export 9 selected objects* box. Make sure that *Hide all except selected* is unchecked. click *Export*. This will create PNG files in the same directory as the drawing, named after the slices. These can now be used for a styled box in a GRUB theme.
1579
@section Theme File Manual
1581
The theme file is a plain text file. Lines that begin with ``#`` are ignored
1582
and considered comments. (Note: This may not be the case if the previous line
1583
ended where a value was expected.)
1585
The theme file contains two types of statements:
1587
@item Global properties.
1588
@item Component construction.
1591
@subsection Global Properties
1595
Global properties are specified with the simple format:
1598
@item name2: "value which may contain spaces"
1602
In this example, name3 is assigned a color value.
1605
@subsection Global Property List
1607
@multitable @columnfractions 0.3 0.6
1608
@item title-text @tab Specifies the text to display at the top center of the screen as a title.
1609
@item title-font @tab Defines the font used for the title message at the top of the screen.
1610
@item title-color @tab Defines the color of the title message.
1611
@item message-font @tab Defines the font used for messages, such as when GRUB is unable to automatically boot an entry.
1612
@item message-color @tab Defines the color of the message text.
1613
@item message-bg-color @tab Defines the background color of the message text area.
1614
@item desktop-image @tab Specifies the image to use as the background. It will be scaled to fit the screen size.
1615
@item desktop-color @tab Specifies the color for the background if *desktop-image* is not specified.
1616
@item terminal-box @tab Specifies the file name pattern for the styled box slices used for the command line terminal window. For example, ``terminal-box: terminal_*.png'' will use the images ``terminal_c.png`` as the center area, ``terminal_n.png`` as the north (top) edge, ``terminal_nw.png`` as the northwest (upper left) corner, and so on. If the image for any slice is not found, it will simply be left empty.
1620
@subsection Component Construction
1622
Greater customizability comes is provided by components. A tree of components
1623
forms the user interface. *Containers* are components that can contain other
1624
components, and there is always a single root component which is an instance
1625
of a *canvas* container.
1627
Components are created in the theme file by prefixing the type of component
1630
@code{ + label @{ text="GRUB" font="aqui 11" color="#8FF" @} }
1632
properties of a component are specified as "name = value" (whitespace
1633
surrounding tokens is optional and is ignored) where *value* may be:
1635
@item a single word (e.g., ``align = center``, ``color = #FF8080``),
1636
@item a quoted string (e.g., ``text = "Hello, World!"``), or
1637
@item a tuple (e.g., ``preferred_size = (120, 80)``).
1640
@subsection Component List
1642
The following is a list of the components and the properties they support.
1646
A label displays a line of text.
1649
@multitable @columnfractions 0.2 0.7
1650
@item text @tab The text to display.
1651
@item font @tab The font to use for text display.
1652
@item color @tab The color of the text.
1653
@item align @tab The horizontal alignment of the text within the component. Options are ``left``, ``center``, and ``right``.
1657
A component that displays an image. The image is scaled to fit the
1658
component, although the preferred size defaults to the image's original
1659
size unless the ``preferred_size`` property is explicitly set.
1663
@multitable @columnfractions 0.2 0.7
1664
@item file @tab The full path to the image file to load.
1668
Displays a horizontally oriented progress bar. It can be rendered using
1669
simple solid filled rectangles, or using a pair of pixmap styled boxes.
1673
@multitable @columnfractions 0.2 0.7
1674
@item fg_color @tab The foreground color for plain solid color rendering.
1675
@item bg_color @tab The background color for plain solid color rendering.
1676
@item border_color @tab The border color for plain solid color rendering.
1677
@item text_color @tab The text color.
1678
@item show_text @tab Boolean value indicating whether or not text should be displayed on the progress bar. If set to *false*, then no text will be displayed on the bar. If set to any other value, text will be displayed on the bar.
1679
@item bar_style @tab The styled box specification for the frame of the progress bar. Example: ``progress_frame_*.png``
1680
@item highlight_style @tab The styled box specification for the highlighted region of the progress bar. This box will be used to paint just the highlighted region of the bar, and will be increased in size as the bar nears completion. Example: ``progress_hl_*.png``.
1681
@item text @tab The text to display on the progress bar. If the progress bar's ID is set to ``__timeout__``, then GRUB will updated this property with an informative message as the timeout approaches.
1682
@item value @tab The progress bar current value. Normally not set manually.
1683
@item start @tab The progress bar start value. Normally not set manually.
1684
@item end @tab The progress bar end value. Normally not set manually.
1687
@item circular_progress
1688
Displays a circular progress indicator. The appearance of this component
1689
is determined by two images: the *center* image and the *tick* image. The
1690
center image is generally larger and will be drawn in the center of the
1691
component. Around the circumference of a circle within the component, the
1692
tick image will be drawn a certain number of times, depending on the
1693
properties of the component.
1697
@multitable @columnfractions 0.3 0.6
1699
@tab The file name of the image to draw in the center of the component.
1701
@tab The file name of the image to draw for the tick marks.
1703
@tab The number of ticks that make up a full circle.
1704
@item ticks_disappear
1705
@tab Boolean value indicating whether tick marks should progressively appear,
1706
or progressively disappear as *value* approaches *end*. Specify
1707
``true`` or ``false``.
1709
@tab The progress indicator current value. Normally not set manually.
1711
@tab The progress indicator start value. Normally not set manually.
1713
@tab The progress indicator end value. Normally not set manually.
1716
Displays the GRUB boot menu. It allows selecting items and executing them.
1720
@multitable @columnfractions 0.4 0.5
1722
@tab The font to use for the menu item titles.
1723
@item selected_item_font
1724
@tab The font to use for the selected menu item, or ``inherit`` (the default)
1725
to use ``item_font`` for the selected menu item as well.
1727
@tab The color to use for the menu item titles.
1728
@item selected_item_color
1729
@tab The color to use for the selected menu item, or ``inherit`` (the default)
1730
to use ``item_color`` for the selected menu item as well.
1732
@tab The width of menu item icons. Icons are scaled to the specified size.
1734
@tab The height of menu item icons.
1736
@tab The height of each menu item in pixels.
1738
@tab The amount of space in pixels to leave on each side of the menu item
1740
@item item_icon_space
1741
@tab The space between an item's icon and the title text, in pixels.
1743
@tab The amount of space to leave between menu items, in pixels.
1744
@item menu_pixmap_style
1745
@tab The image file pattern for the menu frame styled box.
1746
Example: ``menu_*.png`` (this will use images such as ``menu_c.png``,
1747
``menu_w.png``, `menu_nw.png``, etc.)
1748
@item selected_item_pixmap_style
1749
@tab The image file pattern for the selected item highlight styled box.
1751
@tab Boolean value indicating whether the scroll bar should be drawn if the
1752
frame and thumb styled boxes are configured.
1753
@item scrollbar_frame
1754
@tab The image file pattern for the entire scroll bar.
1755
Example: ``scrollbar_*.png``
1756
@item scrollbar_thumb
1757
@tab The image file pattern for the scroll bar thumb (the part of the scroll
1758
bar that moves as scrolling occurs).
1759
Example: ``scrollbar_thumb_*.png``
1760
@item max_items_shown
1761
@tab The maximum number of items to show on the menu. If there are more than
1762
*max_items_shown* items in the menu, the list will scroll to make all
1767
Canvas is a container that allows manual placement of components within it.
1768
It does not alter the positions of its child components. It assigns all
1769
child components their preferred sizes.
1772
The *hbox* container lays out its children from left to right, giving each
1773
one its preferred width. The height of each child is set to the maximum of
1774
the preferred heights of all children.
1777
The *vbox* container lays out its children from top to bottom, giving each
1778
one its preferred height. The width of each child is set to the maximum of
1779
the preferred widths of all children.
1783
@subsection Common properties
1785
The following properties are supported by all components:
1788
The distance from the left border of container to left border of the object in either of three formats:
1789
@multitable @columnfractions 0.2 0.7
1790
@item x @tab Value in pixels
1791
@item p% @tab Percentage
1792
@item p%+x @tab mixture of both
1795
The distance from the left border of container to left border of the object in same format.
1797
The width of object in same format.
1799
The height of object in same format.
1801
The identifier for the component. This can be any arbitrary string.
1802
The ID can be used by scripts to refer to various components in the GUI
1803
component tree. Currently, there is one special ID value that GRUB
1806
@multitable @columnfractions 0.2 0.7
1807
@item ``__timeout__`` @tab Any component with this ID will have its *text*, *start*, *end*, *value*, and *visible* properties set by GRUB when it is counting down to an automatic boot of the default menu entry.
3065
@deffn Command sendkey @
3066
[@option{--num}|@option{--caps}|@option{--scroll}|@option{--insert}|@
3067
@option{--pause}|@option{--left-shift}|@option{--right-shift}|@
3068
@option{--sysrq}|@option{--numkey}|@option{--capskey}|@option{--scrollkey}|@
3069
@option{--insertkey}|@option{--left-alt}|@option{--right-alt}|@
3070
@option{--left-ctrl}|@option{--right-ctrl} @
3071
@samp{on}|@samp{off}]@dots{} @
3074
Insert keystrokes into the keyboard buffer when booting. Sometimes an
3075
operating system or chainloaded boot loader requires particular keys to be
3076
pressed: for example, one might need to press a particular key to enter
3077
"safe mode", or when chainloading another boot loader one might send
3078
keystrokes to it to navigate its menu.
3080
You may provide up to 16 keystrokes (the length of the BIOS keyboard
3081
buffer). Keystroke names may be upper-case or lower-case letters, digits,
3082
or taken from the following table:
3084
@c Please keep this table in the same order as in
3085
@c commands/i386/pc/sendkey.c, for ease of maintenance.
3086
@c Exception: The function and numeric keys are sorted, for aesthetics.
3088
@multitable @columnfractions .4 .5
3089
@headitem Name @tab Key
3090
@item escape @tab Escape
3093
@item numbersign @tab #
3095
@item percent @tab %
3097
@item ampersand @tab &
3098
@item asterisk @tab *
3099
@item parenleft @tab (
3100
@item parenright @tab )
3102
@item underscore @tab _
3105
@item backspace @tab Backspace
3107
@item bracketleft @tab [
3108
@item braceleft @tab @{
3109
@item bracketright @tab ]
3110
@item braceright @tab @}
3111
@item enter @tab Enter
3112
@item control @tab press and release Control
3113
@item semicolon @tab ;
3116
@item doublequote @tab "
3117
@item backquote @tab `
3119
@item shift @tab press and release left Shift
3120
@item backslash @tab \
3125
@item greater @tab >
3127
@item question @tab ?
3128
@item rshift @tab press and release right Shift
3129
@item alt @tab press and release Alt
3130
@item space @tab space bar
3131
@item capslock @tab Caps Lock
3144
@item num1 @tab 1 (numeric keypad)
3145
@item num2 @tab 2 (numeric keypad)
3146
@item num3 @tab 3 (numeric keypad)
3147
@item num4 @tab 4 (numeric keypad)
3148
@item num5 @tab 5 (numeric keypad)
3149
@item num6 @tab 6 (numeric keypad)
3150
@item num7 @tab 7 (numeric keypad)
3151
@item num8 @tab 8 (numeric keypad)
3152
@item num9 @tab 9 (numeric keypad)
3153
@item num0 @tab 0 (numeric keypad)
3154
@item numperiod @tab . (numeric keypad)
3155
@item numend @tab End (numeric keypad)
3156
@item numdown @tab Down (numeric keypad)
3157
@item numpgdown @tab Page Down (numeric keypad)
3158
@item numleft @tab Left (numeric keypad)
3159
@item numcenter @tab 5 with Num Lock inactive (numeric keypad)
3160
@item numright @tab Right (numeric keypad)
3161
@item numhome @tab Home (numeric keypad)
3162
@item numup @tab Up (numeric keypad)
3163
@item numpgup @tab Page Up (numeric keypad)
3164
@item numinsert @tab Insert (numeric keypad)
3165
@item numdelete @tab Delete (numeric keypad)
3166
@item numasterisk @tab * (numeric keypad)
3167
@item numminus @tab - (numeric keypad)
3168
@item numplus @tab + (numeric keypad)
3169
@item numslash @tab / (numeric keypad)
3170
@item numenter @tab Enter (numeric keypad)
3171
@item delete @tab Delete
3172
@item insert @tab Insert
3173
@item home @tab Home
3175
@item pgdown @tab Page Down
3176
@item pgup @tab Page Up
3177
@item down @tab Down
3179
@item left @tab Left
3180
@item right @tab Right
3183
As well as keystrokes, the @command{sendkey} command takes various options
3184
that affect the BIOS keyboard status flags. These options take an @samp{on}
3185
or @samp{off} parameter, specifying that the corresponding status flag be
3186
set or unset; omitting the option for a given status flag will leave that
3187
flag at its initial state at boot. The @option{--num}, @option{--caps},
3188
@option{--scroll}, and @option{--insert} options emulate setting the
3189
corresponding mode, while the @option{--numkey}, @option{--capskey},
3190
@option{--scrollkey}, and @option{--insertkey} options emulate pressing and
3191
holding the corresponding key. The other status flag options are
3194
If the @option{--no-led} option is given, the status flag options will have
3195
no effect on keyboard LEDs.
3197
If the @command{sendkey} command is given multiple times, then only the last
3198
invocation has any effect.
3200
Since @command{sendkey} manipulates the BIOS keyboard buffer, it may cause
3201
hangs, reboots, or other misbehaviour on some systems. If the operating
3202
system or boot loader that runs after GRUB uses its own keyboard driver
3203
rather than the BIOS keyboard functions, then @command{sendkey} will have no
3206
This command is only available on PC BIOS systems.
2608
3211
@subsection set
3300
@node Supported kernels
3301
@chapter Supported boot targets
3303
X86 support is summarised in the following table. ``Yes'' means that the kernel works on the given platform, ``crashes'' means an early kernel crash which we hope will be fixed by concerned kernel developers. ``no'' means GRUB doesn't load the given kernel on a given platform. ``headless'' means that the kernel works but lacks console drivers (you can still use serial or network console). In case of ``no'' and ``crashes'' the reason is given in footnote.
3304
@multitable @columnfractions .50 .22 .22
3305
@item @tab BIOS @tab Coreboot
3306
@item BIOS chainloading @tab yes @tab no (1)
3307
@item NTLDR @tab yes @tab no (1)
3308
@item FreeBSD bootloader @tab yes @tab crashes (1)
3309
@item 32-bit kFreeBSD @tab yes @tab crashes (2,6)
3310
@item 64-bit kFreeBSD @tab yes @tab crashes (2,6)
3311
@item 32-bit kNetBSD @tab yes @tab crashes (1)
3312
@item 64-bit kNetBSD @tab yes @tab crashes (2)
3313
@item 32-bit kOpenBSD @tab yes @tab yes
3314
@item 64-bit kOpenBSD @tab yes @tab yes
3315
@item Multiboot @tab yes @tab yes
3316
@item Multiboot2 @tab yes @tab yes
3317
@item 32-bit Linux (legacy protocol) @tab yes @tab no (1)
3318
@item 64-bit Linux (legacy protocol) @tab yes @tab no (1)
3319
@item 32-bit Linux (modern protocol) @tab yes @tab yes
3320
@item 64-bit Linux (modern protocol) @tab yes @tab yes
3321
@item 32-bit XNU @tab yes @tab ?
3322
@item 64-bit XNU @tab yes @tab ?
3323
@item 32-bit EFI chainloader @tab no (3) @tab no (3)
3324
@item 64-bit EFI chainloader @tab no (3) @tab no (3)
3325
@item Appleloader @tab no (3) @tab no (3)
3328
@multitable @columnfractions .50 .22 .22
3329
@item @tab Multiboot @tab Qemu
3330
@item BIOS chainloading @tab no (1) @tab no (1)
3331
@item NTLDR @tab no (1) @tab no (1)
3332
@item FreeBSD bootloader @tab crashes (1) @tab crashes (1)
3333
@item 32-bit kFreeBSD @tab crashes (6) @tab crashes (6)
3334
@item 64-bit kFreeBSD @tab crashes (6) @tab crashes (6)
3335
@item 32-bit kNetBSD @tab crashes (1) @tab crashes (1)
3336
@item 64-bit kNetBSD @tab yes @tab yes
3337
@item 32-bit kOpenBSD @tab yes @tab yes
3338
@item 64-bit kOpenBSD @tab yes @tab yes
3339
@item Multiboot @tab yes @tab yes
3340
@item Multiboot2 @tab yes @tab yes
3341
@item 32-bit Linux (legacy protocol) @tab no (1) @tab no (1)
3342
@item 64-bit Linux (legacy protocol) @tab no (1) @tab no (1)
3343
@item 32-bit Linux (modern protocol) @tab yes @tab yes
3344
@item 64-bit Linux (modern protocol) @tab yes @tab yes
3345
@item 32-bit XNU @tab ? @tab ?
3346
@item 64-bit XNU @tab ? @tab ?
3347
@item 32-bit EFI chainloader @tab no (3) @tab no (3)
3348
@item 64-bit EFI chainloader @tab no (3) @tab no (3)
3349
@item Appleloader @tab no (3) @tab no (3)
3352
@multitable @columnfractions .50 .22 .22
3353
@item @tab 32-bit EFI @tab 64-bit EFI
3354
@item BIOS chainloading @tab no (1) @tab no (1)
3355
@item NTLDR @tab no (1) @tab no (1)
3356
@item FreeBSD bootloader @tab crashes (1) @tab crashes (1)
3357
@item 32-bit kFreeBSD @tab headless @tab headless
3358
@item 64-bit kFreeBSD @tab headless @tab headless
3359
@item 32-bit kNetBSD @tab crashes (1) @tab crashes (1)
3360
@item 64-bit kNetBSD @tab yes @tab yes
3361
@item 32-bit kOpenBSD @tab headless @tab headless
3362
@item 64-bit kOpenBSD @tab headless @tab headless
3363
@item Multiboot @tab yes @tab yes
3364
@item Multiboot2 @tab yes @tab yes
3365
@item 32-bit Linux (legacy protocol) @tab no (1) @tab no (1)
3366
@item 64-bit Linux (legacy protocol) @tab no (1) @tab no (1)
3367
@item 32-bit Linux (modern protocol) @tab yes @tab yes
3368
@item 64-bit Linux (modern protocol) @tab yes @tab yes
3369
@item 32-bit XNU @tab yes @tab yes
3370
@item 64-bit XNU @tab yes (5) @tab yes
3371
@item 32-bit EFI chainloader @tab yes @tab no (4)
3372
@item 64-bit EFI chainloader @tab no (4) @tab yes
3373
@item Appleloader @tab yes @tab yes
3376
@multitable @columnfractions .50 .22 .22
3378
@item BIOS chainloading @tab no (1)
3379
@item NTLDR @tab no (1)
3380
@item FreeBSD bootloader @tab crashes (1)
3381
@item 32-bit kFreeBSD @tab crashes (6)
3382
@item 64-bit kFreeBSD @tab crashes (6)
3383
@item 32-bit kNetBSD @tab crashes (1)
3384
@item 64-bit kNetBSD @tab ?
3385
@item 32-bit kOpenBSD @tab ?
3386
@item 64-bit kOpenBSD @tab ?
3387
@item Multiboot @tab ?
3388
@item Multiboot2 @tab ?
3389
@item 32-bit Linux (legacy protocol) @tab no (1)
3390
@item 64-bit Linux (legacy protocol) @tab no (1)
3391
@item 32-bit Linux (modern protocol) @tab ?
3392
@item 64-bit Linux (modern protocol) @tab ?
3393
@item 32-bit XNU @tab ?
3394
@item 64-bit XNU @tab ?
3395
@item 32-bit EFI chainloader @tab no (3)
3396
@item 64-bit EFI chainloader @tab no (3)
3397
@item Appleloader @tab no (3)
3402
@item Crashes because the memory at 0x0-0x1000 isn't available
3404
@item 32-bit and 64-bit EFI have different structures and work in different CPU modes so it's not possible to chainload 32-bit bootloader on 64-bit platform and vice-versa
3405
@item Some modules may need to be disabled
3409
PowerPC and Sparc ports support only Linux. MIPS port supports Linux and multiboot2.
3413
As you have seen in previous chapter the support matrix is pretty big and some of the configurations are only rarely used. To ensure the quality bootchecks are available for all x86 targets except EFI chainloader, Appleloader and XNU. All x86 platforms have bootcheck facility except ieee1275. Multiboot, multiboot2, BIOS chainloader, ntldr and freebsd-bootloader boot targets are tested only with a fake kernel images. Only Linux is tested among the payloads using Linux protocols.
3415
Following variables must be defined:
3417
@multitable @columnfractions .30 .65
3418
@item GRUB_PAYLOADS_DIR @tab directory containing the required kernels
3419
@item GRUB_CBFSTOOL @tab cbfstoll from Coreboot package (for coreboot platform only)
3420
@item GRUB_COREBOOT_ROM @tab empty Coreboot ROM
3421
@item GRUB_QEMU_OPTS @tab additional options to be supplied to QEMU
3426
@multitable @columnfractions .40 .55
3427
@item kfreebsd_env.i386 @tab 32-bit kFreeBSD device hints
3428
@item kfreebsd.i386 @tab 32-bit FreeBSD kernel image
3429
@item kfreebsd.x86_64, kfreebsd_env.x86_64 @tab same from 64-bit kFreeBSD
3430
@item knetbsd.i386 @tab 32-bit NetBSD kernel image
3431
@item knetbsd.miniroot.i386 @tab 32-bit kNetBSD miniroot.kmod.
3432
@item knetbsd.x86_64, knetbsd.miniroot.x86_64 @tab same from 64-bit kNetBSD
3433
@item kopenbsd.i386 @tab 32-bit OpenBSD kernel bsd.rd image
3434
@item kopenbsd.x86_64 @tab same from 64-bit kOpenBSD
3435
@item linux.i386 @tab 32-bit Linux
3436
@item linux.x86_64 @tab 64-bit Linux
2697
3439
@node Troubleshooting
2698
3440
@chapter Error messages produced by GRUB