xref: /onnv-gate/usr/src/grub/grub-0.97/docs/grub.info-4 (revision 8044:b3af80bbf173)
1*8044SWilliam.Kucharski@Sun.COMThis is grub.info, produced by makeinfo version 4.0 from grub.texi.
2*8044SWilliam.Kucharski@Sun.COM
3*8044SWilliam.Kucharski@Sun.COMINFO-DIR-SECTION Kernel
4*8044SWilliam.Kucharski@Sun.COMSTART-INFO-DIR-ENTRY
5*8044SWilliam.Kucharski@Sun.COM* GRUB: (grub).                 The GRand Unified Bootloader
6*8044SWilliam.Kucharski@Sun.COM* grub-install: (grub)Invoking grub-install.    Install GRUB on your drive
7*8044SWilliam.Kucharski@Sun.COM* grub-md5-crypt: (grub)Invoking grub-md5-crypt.        Encrypt a password
8*8044SWilliam.Kucharski@Sun.COM                                                        in MD5 format
9*8044SWilliam.Kucharski@Sun.COM* grub-terminfo: (grub)Invoking grub-terminfo.  Generate a terminfo
10*8044SWilliam.Kucharski@Sun.COM                                                command from a
11*8044SWilliam.Kucharski@Sun.COM                                                terminfo name
12*8044SWilliam.Kucharski@Sun.COM* grub-set-default: (grub)Invoking grub-set-default.    Set a default boot
13*8044SWilliam.Kucharski@Sun.COM                                                        entry
14*8044SWilliam.Kucharski@Sun.COM* mbchk: (grub)Invoking mbchk.  Check for the format of a Multiboot kernel
15*8044SWilliam.Kucharski@Sun.COMEND-INFO-DIR-ENTRY
16*8044SWilliam.Kucharski@Sun.COM
17*8044SWilliam.Kucharski@Sun.COM   Copyright (C) 1999,2000,2001,2002,2004 Free Software Foundation, Inc.
18*8044SWilliam.Kucharski@Sun.COM
19*8044SWilliam.Kucharski@Sun.COM   Permission is granted to make and distribute verbatim copies of this
20*8044SWilliam.Kucharski@Sun.COMmanual provided the copyright notice and this permission notice are
21*8044SWilliam.Kucharski@Sun.COMpreserved on all copies.
22*8044SWilliam.Kucharski@Sun.COM
23*8044SWilliam.Kucharski@Sun.COM   Permission is granted to copy and distribute modified versions of
24*8044SWilliam.Kucharski@Sun.COMthis manual under the conditions for verbatim copying, provided also
25*8044SWilliam.Kucharski@Sun.COMthat the entire resulting derived work is distributed under the terms
26*8044SWilliam.Kucharski@Sun.COMof a permission notice identical to this one.
27*8044SWilliam.Kucharski@Sun.COM
28*8044SWilliam.Kucharski@Sun.COM   Permission is granted to copy and distribute translations of this
29*8044SWilliam.Kucharski@Sun.COMmanual into another language, under the above conditions for modified
30*8044SWilliam.Kucharski@Sun.COMversions.
31*8044SWilliam.Kucharski@Sun.COM
32*8044SWilliam.Kucharski@Sun.COM
33*8044SWilliam.Kucharski@Sun.COMFile: grub.info,  Node: Bootstrap tricks,  Next: I/O ports detection,  Prev: Command interface,  Up: Internals
34*8044SWilliam.Kucharski@Sun.COM
35*8044SWilliam.Kucharski@Sun.COMThe bootstrap mechanism used in GRUB
36*8044SWilliam.Kucharski@Sun.COM====================================
37*8044SWilliam.Kucharski@Sun.COM
38*8044SWilliam.Kucharski@Sun.COM   The disk space can be used in a boot loader is very restricted
39*8044SWilliam.Kucharski@Sun.COMbecause a MBR (*note MBR::) is only 512 bytes but it also contains a
40*8044SWilliam.Kucharski@Sun.COMpartition table (*note Partition table::) and a BPB. So the question is
41*8044SWilliam.Kucharski@Sun.COMhow to make a boot loader code enough small to be fit in a MBR.
42*8044SWilliam.Kucharski@Sun.COM
43*8044SWilliam.Kucharski@Sun.COM   However, GRUB is a very large program, so we break GRUB into 2 (or 3)
44*8044SWilliam.Kucharski@Sun.COMdistinct components, "Stage 1" and "Stage 2" (and optionally "Stage
45*8044SWilliam.Kucharski@Sun.COM1.5"). *Note Memory map::, for more information.
46*8044SWilliam.Kucharski@Sun.COM
47*8044SWilliam.Kucharski@Sun.COM   We embed Stage 1 in a MBR or in the boot sector of a partition, and
48*8044SWilliam.Kucharski@Sun.COMplace Stage 2 in a filesystem. The optional Stage 1.5 can be installed
49*8044SWilliam.Kucharski@Sun.COMin a filesystem, in the "boot loader" area in a FFS or a ReiserFS, and
50*8044SWilliam.Kucharski@Sun.COMin the sectors right after a MBR, because Stage 1.5 is enough small and
51*8044SWilliam.Kucharski@Sun.COMthe sectors right after a MBR is normally an unused region. The size of
52*8044SWilliam.Kucharski@Sun.COMthis region is the number of sectors per head minus 1.
53*8044SWilliam.Kucharski@Sun.COM
54*8044SWilliam.Kucharski@Sun.COM   Thus, all Stage1 must do is just load Stage2 or Stage1.5. But even if
55*8044SWilliam.Kucharski@Sun.COMStage 1 needs not to support the user interface or the filesystem
56*8044SWilliam.Kucharski@Sun.COMinterface, it is impossible to make Stage 1 less than 400 bytes, because
57*8044SWilliam.Kucharski@Sun.COMGRUB should support both the CHS mode and the LBA mode (*note Low-level
58*8044SWilliam.Kucharski@Sun.COMdisk I/O::).
59*8044SWilliam.Kucharski@Sun.COM
60*8044SWilliam.Kucharski@Sun.COM   The solution used by GRUB is that Stage 1 loads only the first
61*8044SWilliam.Kucharski@Sun.COMsector of Stage 2 (or Stage 1.5) and Stage 2 itself loads the rest. The
62*8044SWilliam.Kucharski@Sun.COMflow of Stage 1 is:
63*8044SWilliam.Kucharski@Sun.COM
64*8044SWilliam.Kucharski@Sun.COM  1. Initialize the system briefly.
65*8044SWilliam.Kucharski@Sun.COM
66*8044SWilliam.Kucharski@Sun.COM  2. Detect the geometry and the accessing mode of the "loading drive".
67*8044SWilliam.Kucharski@Sun.COM
68*8044SWilliam.Kucharski@Sun.COM  3. Load the first sector of Stage 2.
69*8044SWilliam.Kucharski@Sun.COM
70*8044SWilliam.Kucharski@Sun.COM  4. Jump to the starting address of the Stage 2.
71*8044SWilliam.Kucharski@Sun.COM
72*8044SWilliam.Kucharski@Sun.COM   The flow of Stage 2 (and Stage 1.5) is:
73*8044SWilliam.Kucharski@Sun.COM
74*8044SWilliam.Kucharski@Sun.COM  1. Load the rest of itself to the real starting address, that is, the
75*8044SWilliam.Kucharski@Sun.COM     starting address plus 512 bytes. The block lists are stored in the
76*8044SWilliam.Kucharski@Sun.COM     last part of the first sector.
77*8044SWilliam.Kucharski@Sun.COM
78*8044SWilliam.Kucharski@Sun.COM  2. Long jump to the real starting address.
79*8044SWilliam.Kucharski@Sun.COM
80*8044SWilliam.Kucharski@Sun.COM   Note that Stage 2 (or Stage 1.5) does not probe the geometry or the
81*8044SWilliam.Kucharski@Sun.COMaccessing mode of the "loading drive", since Stage 1 has already probed
82*8044SWilliam.Kucharski@Sun.COMthem.
83*8044SWilliam.Kucharski@Sun.COM
84*8044SWilliam.Kucharski@Sun.COM
85*8044SWilliam.Kucharski@Sun.COMFile: grub.info,  Node: I/O ports detection,  Next: Memory detection,  Prev: Bootstrap tricks,  Up: Internals
86*8044SWilliam.Kucharski@Sun.COM
87*8044SWilliam.Kucharski@Sun.COMHow to probe I/O ports used by INT 13H
88*8044SWilliam.Kucharski@Sun.COM======================================
89*8044SWilliam.Kucharski@Sun.COM
90*8044SWilliam.Kucharski@Sun.COM   FIXME: I will write this chapter after implementing the new
91*8044SWilliam.Kucharski@Sun.COMtechnique.
92*8044SWilliam.Kucharski@Sun.COM
93*8044SWilliam.Kucharski@Sun.COM
94*8044SWilliam.Kucharski@Sun.COMFile: grub.info,  Node: Memory detection,  Next: Low-level disk I/O,  Prev: I/O ports detection,  Up: Internals
95*8044SWilliam.Kucharski@Sun.COM
96*8044SWilliam.Kucharski@Sun.COMHow to detect all installed RAM
97*8044SWilliam.Kucharski@Sun.COM===============================
98*8044SWilliam.Kucharski@Sun.COM
99*8044SWilliam.Kucharski@Sun.COM   FIXME: I doubt if Erich didn't write this chapter only himself
100*8044SWilliam.Kucharski@Sun.COMwholly, so I will rewrite this chapter.
101*8044SWilliam.Kucharski@Sun.COM
102*8044SWilliam.Kucharski@Sun.COM
103*8044SWilliam.Kucharski@Sun.COMFile: grub.info,  Node: Low-level disk I/O,  Next: MBR,  Prev: Memory detection,  Up: Internals
104*8044SWilliam.Kucharski@Sun.COM
105*8044SWilliam.Kucharski@Sun.COMINT 13H disk I/O interrupts
106*8044SWilliam.Kucharski@Sun.COM===========================
107*8044SWilliam.Kucharski@Sun.COM
108*8044SWilliam.Kucharski@Sun.COM   FIXME: I'm not sure where some part of the original chapter is
109*8044SWilliam.Kucharski@Sun.COMderived, so I will rewrite this chapter.
110*8044SWilliam.Kucharski@Sun.COM
111*8044SWilliam.Kucharski@Sun.COM
112*8044SWilliam.Kucharski@Sun.COMFile: grub.info,  Node: MBR,  Next: Partition table,  Prev: Low-level disk I/O,  Up: Internals
113*8044SWilliam.Kucharski@Sun.COM
114*8044SWilliam.Kucharski@Sun.COMThe structure of Master Boot Record
115*8044SWilliam.Kucharski@Sun.COM===================================
116*8044SWilliam.Kucharski@Sun.COM
117*8044SWilliam.Kucharski@Sun.COM   FIXME: Likewise.
118*8044SWilliam.Kucharski@Sun.COM
119*8044SWilliam.Kucharski@Sun.COM
120*8044SWilliam.Kucharski@Sun.COMFile: grub.info,  Node: Partition table,  Next: Submitting patches,  Prev: MBR,  Up: Internals
121*8044SWilliam.Kucharski@Sun.COM
122*8044SWilliam.Kucharski@Sun.COMThe format of partition tables
123*8044SWilliam.Kucharski@Sun.COM==============================
124*8044SWilliam.Kucharski@Sun.COM
125*8044SWilliam.Kucharski@Sun.COM   FIXME: Probably the original chapter is derived from "How It Works",
126*8044SWilliam.Kucharski@Sun.COMso I will rewrite this chapter.
127*8044SWilliam.Kucharski@Sun.COM
128*8044SWilliam.Kucharski@Sun.COM
129*8044SWilliam.Kucharski@Sun.COMFile: grub.info,  Node: Submitting patches,  Prev: Partition table,  Up: Internals
130*8044SWilliam.Kucharski@Sun.COM
131*8044SWilliam.Kucharski@Sun.COMWhere and how you should send patches
132*8044SWilliam.Kucharski@Sun.COM=====================================
133*8044SWilliam.Kucharski@Sun.COM
134*8044SWilliam.Kucharski@Sun.COM   When you write patches for GRUB, please send them to the mailing list
135*8044SWilliam.Kucharski@Sun.COM<bug-grub@gnu.org>. Here is the list of items of which you should take
136*8044SWilliam.Kucharski@Sun.COMcare:
137*8044SWilliam.Kucharski@Sun.COM
138*8044SWilliam.Kucharski@Sun.COM   * Please make your patch as small as possible. Generally, it is not
139*8044SWilliam.Kucharski@Sun.COM     a good thing to make one big patch which changes many things.
140*8044SWilliam.Kucharski@Sun.COM     Instead, segregate features and produce many patches.
141*8044SWilliam.Kucharski@Sun.COM
142*8044SWilliam.Kucharski@Sun.COM   * Use as late code as possible, for the original code. The CVS
143*8044SWilliam.Kucharski@Sun.COM     repository always has the current version (*note Obtaining and
144*8044SWilliam.Kucharski@Sun.COM     Building GRUB::).
145*8044SWilliam.Kucharski@Sun.COM
146*8044SWilliam.Kucharski@Sun.COM   * Write ChangeLog entries. *Note Change Logs: (standards)Change
147*8044SWilliam.Kucharski@Sun.COM     Logs, if you don't know how to write ChangeLog.
148*8044SWilliam.Kucharski@Sun.COM
149*8044SWilliam.Kucharski@Sun.COM   * Make patches in unified diff format. `diff -urN' is appropriate in
150*8044SWilliam.Kucharski@Sun.COM     most cases.
151*8044SWilliam.Kucharski@Sun.COM
152*8044SWilliam.Kucharski@Sun.COM   * Don't make patches reversely. Reverse patches are difficult to
153*8044SWilliam.Kucharski@Sun.COM     read and use.
154*8044SWilliam.Kucharski@Sun.COM
155*8044SWilliam.Kucharski@Sun.COM   * Be careful enough of the license term and the copyright. Because
156*8044SWilliam.Kucharski@Sun.COM     GRUB is under GNU General Public License, you may not steal code
157*8044SWilliam.Kucharski@Sun.COM     from software whose license is incompatible against GPL. And, if
158*8044SWilliam.Kucharski@Sun.COM     you copy code written by others, you must not ignore their
159*8044SWilliam.Kucharski@Sun.COM     copyrights. Feel free to ask GRUB maintainers, whenever you are
160*8044SWilliam.Kucharski@Sun.COM     not sure what you should do.
161*8044SWilliam.Kucharski@Sun.COM
162*8044SWilliam.Kucharski@Sun.COM   * If your patch is too large to send in e-mail, put it at somewhere
163*8044SWilliam.Kucharski@Sun.COM     we can see. Usually, you shouldn't send e-mail over 20K.
164*8044SWilliam.Kucharski@Sun.COM
165*8044SWilliam.Kucharski@Sun.COM
166*8044SWilliam.Kucharski@Sun.COMFile: grub.info,  Node: Index,  Prev: Internals,  Up: Top
167*8044SWilliam.Kucharski@Sun.COM
168*8044SWilliam.Kucharski@Sun.COMIndex
169*8044SWilliam.Kucharski@Sun.COM*****
170*8044SWilliam.Kucharski@Sun.COM
171*8044SWilliam.Kucharski@Sun.COM* Menu:
172*8044SWilliam.Kucharski@Sun.COM
173*8044SWilliam.Kucharski@Sun.COM* blocklist:                             blocklist.
174*8044SWilliam.Kucharski@Sun.COM* boot:                                  boot.
175*8044SWilliam.Kucharski@Sun.COM* bootp:                                 bootp.
176*8044SWilliam.Kucharski@Sun.COM* cat:                                   cat.
177*8044SWilliam.Kucharski@Sun.COM* chainloader:                           chainloader.
178*8044SWilliam.Kucharski@Sun.COM* cmp:                                   cmp.
179*8044SWilliam.Kucharski@Sun.COM* color:                                 color.
180*8044SWilliam.Kucharski@Sun.COM* configfile:                            configfile.
181*8044SWilliam.Kucharski@Sun.COM* current_drive:                         Filesystem interface.
182*8044SWilliam.Kucharski@Sun.COM* current_partition:                     Filesystem interface.
183*8044SWilliam.Kucharski@Sun.COM* current_slice:                         Filesystem interface.
184*8044SWilliam.Kucharski@Sun.COM* debug:                                 debug.
185*8044SWilliam.Kucharski@Sun.COM* default:                               default.
186*8044SWilliam.Kucharski@Sun.COM* device:                                device.
187*8044SWilliam.Kucharski@Sun.COM* devread:                               Filesystem interface.
188*8044SWilliam.Kucharski@Sun.COM* dhcp:                                  dhcp.
189*8044SWilliam.Kucharski@Sun.COM* disk_read_func:                        Filesystem interface.
190*8044SWilliam.Kucharski@Sun.COM* displayapm:                            displayapm.
191*8044SWilliam.Kucharski@Sun.COM* displaymem:                            displaymem.
192*8044SWilliam.Kucharski@Sun.COM* embed:                                 embed.
193*8044SWilliam.Kucharski@Sun.COM* fallback:                              fallback.
194*8044SWilliam.Kucharski@Sun.COM* filemax:                               Filesystem interface.
195*8044SWilliam.Kucharski@Sun.COM* filepos:                               Filesystem interface.
196*8044SWilliam.Kucharski@Sun.COM* find:                                  find.
197*8044SWilliam.Kucharski@Sun.COM* fstest:                                fstest.
198*8044SWilliam.Kucharski@Sun.COM* FSYS_BUF:                              Filesystem interface.
199*8044SWilliam.Kucharski@Sun.COM* geometry:                              geometry.
200*8044SWilliam.Kucharski@Sun.COM* grub_read:                             Filesystem interface.
201*8044SWilliam.Kucharski@Sun.COM* halt:                                  halt.
202*8044SWilliam.Kucharski@Sun.COM* help:                                  help.
203*8044SWilliam.Kucharski@Sun.COM* hiddenmenu:                            hiddenmenu.
204*8044SWilliam.Kucharski@Sun.COM* hide:                                  hide.
205*8044SWilliam.Kucharski@Sun.COM* ifconfig:                              ifconfig.
206*8044SWilliam.Kucharski@Sun.COM* impsprobe:                             impsprobe.
207*8044SWilliam.Kucharski@Sun.COM* initrd:                                initrd.
208*8044SWilliam.Kucharski@Sun.COM* install:                               install.
209*8044SWilliam.Kucharski@Sun.COM* ioprobe:                               ioprobe.
210*8044SWilliam.Kucharski@Sun.COM* kernel:                                kernel.
211*8044SWilliam.Kucharski@Sun.COM* lock:                                  lock.
212*8044SWilliam.Kucharski@Sun.COM* makeactive:                            makeactive.
213*8044SWilliam.Kucharski@Sun.COM* map:                                   map.
214*8044SWilliam.Kucharski@Sun.COM* md5crypt:                              md5crypt.
215*8044SWilliam.Kucharski@Sun.COM* module:                                module.
216*8044SWilliam.Kucharski@Sun.COM* modulenounzip:                         modulenounzip.
217*8044SWilliam.Kucharski@Sun.COM* pager:                                 pager.
218*8044SWilliam.Kucharski@Sun.COM* part_length:                           Filesystem interface.
219*8044SWilliam.Kucharski@Sun.COM* part_start:                            Filesystem interface.
220*8044SWilliam.Kucharski@Sun.COM* partnew:                               partnew.
221*8044SWilliam.Kucharski@Sun.COM* parttype:                              parttype.
222*8044SWilliam.Kucharski@Sun.COM* password:                              password.
223*8044SWilliam.Kucharski@Sun.COM* pause:                                 pause.
224*8044SWilliam.Kucharski@Sun.COM* print_a_completion:                    Filesystem interface.
225*8044SWilliam.Kucharski@Sun.COM* print_possibilities:                   Filesystem interface.
226*8044SWilliam.Kucharski@Sun.COM* quit:                                  quit.
227*8044SWilliam.Kucharski@Sun.COM* rarp:                                  rarp.
228*8044SWilliam.Kucharski@Sun.COM* read:                                  read.
229*8044SWilliam.Kucharski@Sun.COM* reboot:                                reboot.
230*8044SWilliam.Kucharski@Sun.COM* root:                                  root.
231*8044SWilliam.Kucharski@Sun.COM* rootnoverify:                          rootnoverify.
232*8044SWilliam.Kucharski@Sun.COM* saved_drive:                           Filesystem interface.
233*8044SWilliam.Kucharski@Sun.COM* saved_partition:                       Filesystem interface.
234*8044SWilliam.Kucharski@Sun.COM* savedefault:                           savedefault.
235*8044SWilliam.Kucharski@Sun.COM* serial:                                serial.
236*8044SWilliam.Kucharski@Sun.COM* setkey:                                setkey.
237*8044SWilliam.Kucharski@Sun.COM* setup:                                 setup.
238*8044SWilliam.Kucharski@Sun.COM* terminal:                              terminal.
239*8044SWilliam.Kucharski@Sun.COM* terminfo:                              terminfo.
240*8044SWilliam.Kucharski@Sun.COM* testload:                              testload.
241*8044SWilliam.Kucharski@Sun.COM* testvbe:                               testvbe.
242*8044SWilliam.Kucharski@Sun.COM* tftpserver:                            tftpserver.
243*8044SWilliam.Kucharski@Sun.COM* timeout:                               timeout.
244*8044SWilliam.Kucharski@Sun.COM* title:                                 title.
245*8044SWilliam.Kucharski@Sun.COM* unhide:                                unhide.
246*8044SWilliam.Kucharski@Sun.COM* uppermem:                              uppermem.
247*8044SWilliam.Kucharski@Sun.COM* vbeprobe:                              vbeprobe.
248*8044SWilliam.Kucharski@Sun.COM
249*8044SWilliam.Kucharski@Sun.COM
250