1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
|
This is grub.info, produced by makeinfo version 4.0 from grub.texi.
INFO-DIR-SECTION Kernel
START-INFO-DIR-ENTRY
* GRUB: (grub). The GRand Unified Bootloader
* grub-install: (grub)Invoking grub-install. Install GRUB on your drive
* grub-md5-crypt: (grub)Invoking grub-md5-crypt. Encrypt a password
in MD5 format
* grub-terminfo: (grub)Invoking grub-terminfo. Generate a terminfo
command from a
terminfo name
* grub-set-default: (grub)Invoking grub-set-default. Set a default boot
entry
* mbchk: (grub)Invoking mbchk. Check for the format of a Multiboot kernel
END-INFO-DIR-ENTRY
Copyright (C) 1999,2000,2001,2002,2004 Free Software Foundation, Inc.
Permission is granted to make and distribute verbatim copies of this
manual provided the copyright notice and this permission notice are
preserved on all copies.
Permission is granted to copy and distribute modified versions of
this manual under the conditions for verbatim copying, provided also
that the entire resulting derived work is distributed under the terms
of a permission notice identical to this one.
Permission is granted to copy and distribute translations of this
manual into another language, under the above conditions for modified
versions.
File: grub.info, Node: Top, Next: Introduction, Up: (dir)
GRUB manual
***********
This is the documentation of GNU GRUB, the GRand Unified Bootloader,
a flexible and powerful boot loader program for PCs.
This edition documents version 0.95.
* Menu:
* Introduction:: Capturing the spirit of GRUB
* Naming convention:: Names of your drives in GRUB
* Installation:: Installing GRUB on your drive
* Booting:: How to boot different operating systems
* Configuration:: Writing your own configuration file
* Network:: Downloading OS images from a network
* Serial terminal:: Using GRUB via a serial line
* Preset Menu:: Embedding a configuration file into GRUB
* Security:: Improving the security
* Images:: GRUB image files
* Filesystem:: Filesystem syntax and semantics
* Interface:: The menu and the command-line
* Commands:: The list of available builtin commands
* Troubleshooting:: Error messages produced by GRUB
* Invoking the grub shell:: How to use the grub shell
* Invoking grub-install:: How to use the GRUB installer
* Invoking grub-md5-crypt:: How to generate a cryptic password
* Invoking grub-terminfo:: How to generate a terminfo command
* Invoking grub-set-default:: How to set a default boot entry
* Invoking mbchk:: How to use the Multiboot checker
* Obtaining and Building GRUB:: How to obtain and build GRUB
* Reporting bugs:: Where you should send a bug report
* Future:: Some future plans on GRUB
* Internals:: Hacking GRUB
* Index::
File: grub.info, Node: Introduction, Next: Naming convention, Prev: Top, Up: Top
Introduction to GRUB
********************
* Menu:
* Overview:: What exactly GRUB is and how to use it
* History:: From maggot to house fly
* Features:: GRUB features
* Role of a boot loader:: The role of a boot loader
File: grub.info, Node: Overview, Next: History, Up: Introduction
Overview
========
Briefly, a "boot loader" is the first software program that runs when
a computer starts. It is responsible for loading and transferring
control to an operating system "kernel" software (such as Linux or GNU
Mach). The kernel, in turn, initializes the rest of the operating
system (e.g. a GNU system).
GNU GRUB is a very powerful boot loader, which can load a wide
variety of free operating systems, as well as proprietary operating
systems with chain-loading(1) (*note Overview-Footnote-1::). GRUB is
designed to address the complexity of booting a personal computer; both
the program and this manual are tightly bound to that computer platform,
although porting to other platforms may be addressed in the future.
One of the important features in GRUB is flexibility; GRUB
understands filesystems and kernel executable formats, so you can load
an arbitrary operating system the way you like, without recording the
physical position of your kernel on the disk. Thus you can load the
kernel just by specifying its file name and the drive and partition
where the kernel resides.
When booting with GRUB, you can use either a command-line interface
(*note Command-line interface::), or a menu interface (*note Menu
interface::). Using the command-line interface, you type the drive
specification and file name of the kernel manually. In the menu
interface, you just select an OS using the arrow keys. The menu is
based on a configuration file which you prepare beforehand (*note
Configuration::). While in the menu, you can switch to the command-line
mode, and vice-versa. You can even edit menu entries before using them.
In the following chapters, you will learn how to specify a drive, a
partition, and a file name (*note Naming convention::) to GRUB, how to
install GRUB on your drive (*note Installation::), and how to boot your
OSes (*note Booting::), step by step.
Besides the GRUB boot loader itself, there is a "grub shell" `grub'
(*note Invoking the grub shell::) which can be run when you are in your
operating system. It emulates the boot loader and can be used for
installing the boot loader.
File: grub.info, Node: Overview-Footnotes, Up: Overview
(1) "chain-load" is the mechanism for loading unsupported operating
systems by loading another boot loader. It is typically used for
loading DOS or Windows.
File: grub.info, Node: History, Next: Features, Prev: Overview, Up: Introduction
History of GRUB
===============
GRUB originated in 1995 when Erich Boleyn was trying to boot the GNU
Hurd with the University of Utah's Mach 4 microkernel (now known as GNU
Mach). Erich and Brian Ford designed the Multiboot Specification
(*note Multiboot Specification: (multiboot)Top.), because they were
determined not to add to the large number of mutually-incompatible PC
boot methods.
Erich then began modifying the FreeBSD boot loader so that it would
understand Multiboot. He soon realized that it would be a lot easier to
write his own boot loader from scratch than to keep working on the
FreeBSD boot loader, and so GRUB was born.
Erich added many features to GRUB, but other priorities prevented him
from keeping up with the demands of its quickly-expanding user base. In
1999, Gordon Matzigkeit and Yoshinori K. Okuji adopted GRUB as an
official GNU package, and opened its development by making the latest
sources available via anonymous CVS. *Note Obtaining and Building
GRUB::, for more information.
File: grub.info, Node: Features, Next: Role of a boot loader, Prev: History, Up: Introduction
GRUB features
=============
The primary requirement for GRUB is that it be compliant with the
"Multiboot Specification", which is described in *Note Multiboot
Specification: (multiboot)Top.
The other goals, listed in approximate order of importance, are:
* Basic functions must be straightforward for end-users.
* Rich functionality to support kernel experts and designers.
* Backward compatibility for booting FreeBSD, NetBSD, OpenBSD, and
Linux. Proprietary kernels (such as DOS, Windows NT, and OS/2) are
supported via a chain-loading function.
Except for specific compatibility modes (chain-loading and the Linux
"piggyback" format), all kernels will be started in much the same state
as in the Multiboot Specification. Only kernels loaded at 1 megabyte or
above are presently supported. Any attempt to load below that boundary
will simply result in immediate failure and an error message reporting
the problem.
In addition to the requirements above, GRUB has the following
features (note that the Multiboot Specification doesn't require all the
features that GRUB supports):
Recognize multiple executable formats
Support many of the "a.out" variants plus "ELF". Symbol tables are
also loaded.
Support non-Multiboot kernels
Support many of the various free 32-bit kernels that lack Multiboot
compliance (primarily FreeBSD, NetBSD, OpenBSD, and Linux).
Chain-loading of other boot loaders is also supported.
Load multiples modules
Fully support the Multiboot feature of loading multiple modules.
Load a configuration file
Support a human-readable text configuration file with preset boot
commands. You can also load another configuration file dynamically
and embed a preset configuration file in a GRUB image file. The
list of commands (*note Commands::) are a superset of those
supported on the command-line. An example configuration file is
provided in *Note Configuration::.
Provide a menu interface
A menu interface listing preset boot commands, with a programmable
timeout, is available. There is no fixed limit on the number of
boot entries, and the current implementation has space for several
hundred.
Have a flexible command-line interface
A fairly flexible command-line interface, accessible from the menu,
is available to edit any preset commands, or write a new boot
command set from scratch. If no configuration file is present,
GRUB drops to the command-line.
The list of commands (*note Commands::) are a subset of those
supported for configuration files. Editing commands closely
resembles the Bash command-line (*note Bash: (features)Command
Line Editing.), with <TAB>-completion of commands, devices,
partitions, and files in a directory depending on context.
Support multiple filesystem types
Support multiple filesystem types transparently, plus a useful
explicit blocklist notation. The currently supported filesystem
types are "BSD FFS", "DOS FAT16 and FAT32", "Minix fs", "Linux
ext2fs", "ReiserFS", "JFS", "XFS", and "VSTa fs". *Note
Filesystem::, for more information.
Support automatic decompression
Can decompress files which were compressed by `gzip'. This
function is both automatic and transparent to the user (i.e. all
functions operate upon the uncompressed contents of the specified
files). This greatly reduces a file size and loading time, a
particularly great benefit for floppies.(1) (*note
Features-Footnote-1::)
It is conceivable that some kernel modules should be loaded in a
compressed state, so a different module-loading command can be
specified to avoid uncompressing the modules.
Access data on any installed device
Support reading data from any or all floppies or hard disk(s)
recognized by the BIOS, independent of the setting of the root
device.
Be independent of drive geometry translations
Unlike many other boot loaders, GRUB makes the particular drive
translation irrelevant. A drive installed and running with one
translation may be converted to another translation without any
adverse effects or changes in GRUB's configuration.
Detect all installed RAM
GRUB can generally find all the installed RAM on a PC-compatible
machine. It uses an advanced BIOS query technique for finding all
memory regions. As described on the Multiboot Specification (*note
Multiboot Specification: (multiboot)Top.), not all kernels make
use of this information, but GRUB provides it for those who do.
Support Logical Block Address mode
In traditional disk calls (called "CHS mode"), there is a geometry
translation problem, that is, the BIOS cannot access over 1024
cylinders, so the accessible space is limited to at least 508 MB
and to at most 8GB. GRUB can't universally solve this problem, as
there is no standard interface used in all machines. However,
several newer machines have the new interface, Logical Block
Address ("LBA") mode. GRUB automatically detects if LBA mode is
available and uses it if available. In LBA mode, GRUB can access
the entire disk.
Support network booting
GRUB is basically a disk-based boot loader but also has network
support. You can load OS images from a network by using the "TFTP"
protocol.
Support remote terminals
To support computers with no console, GRUB provides remote terminal
support, so that you can control GRUB from a remote host. Only
serial terminal support is implemented at the moment.
File: grub.info, Node: Features-Footnotes, Up: Features
(1) There are a few pathological cases where loading a very badly
organized ELF kernel might take longer, but in practice this never
happen.
File: grub.info, Node: Role of a boot loader, Prev: Features, Up: Introduction
The role of a boot loader
=========================
The following is a quotation from Gordon Matzigkeit, a GRUB fanatic:
Some people like to acknowledge both the operating system and
kernel when they talk about their computers, so they might say
they use "GNU/Linux" or "GNU/Hurd". Other people seem to think
that the kernel is the most important part of the system, so they
like to call their GNU operating systems "Linux systems."
I, personally, believe that this is a grave injustice, because the
_boot loader_ is the most important software of all. I used to
refer to the above systems as either "LILO"(1) (*note Role of a
boot loader-Footnote-1::) or "GRUB" systems.
Unfortunately, nobody ever understood what I was talking about;
now I just use the word "GNU" as a pseudonym for GRUB.
So, if you ever hear people talking about their alleged "GNU"
systems, remember that they are actually paying homage to the best
boot loader around... GRUB!
We, the GRUB maintainers, do not (usually) encourage Gordon's level
of fanaticism, but it helps to remember that boot loaders deserve
recognition. We hope that you enjoy using GNU GRUB as much as we did
writing it.
File: grub.info, Node: Role of a boot loader-Footnotes, Up: Role of a boot loader
(1) The LInux LOader, a boot loader that everybody uses, but nobody
likes.
File: grub.info, Node: Naming convention, Next: Installation, Prev: Introduction, Up: Top
Naming convention
*****************
The device syntax used in GRUB is a wee bit different from what you
may have seen before in your operating system(s), and you need to know
it so that you can specify a drive/partition.
Look at the following examples and explanations:
(fd0)
First of all, GRUB requires that the device name be enclosed with
`(' and `)'. The `fd' part means that it is a floppy disk. The number
`0' is the drive number, which is counted from _zero_. This expression
means that GRUB will use the whole floppy disk.
(hd0,1)
Here, `hd' means it is a hard disk drive. The first integer `0'
indicates the drive number, that is, the first hard disk, while the
second integer, `1', indicates the partition number (or the PC slice
number in the BSD terminology). Once again, please note that the
partition numbers are counted from _zero_, not from one. This
expression means the second partition of the first hard disk drive. In
this case, GRUB uses one partition of the disk, instead of the whole
disk.
(hd0,4)
This specifies the first "extended partition" of the first hard disk
drive. Note that the partition numbers for extended partitions are
counted from `4', regardless of the actual number of primary partitions
on your hard disk.
(hd1,a)
This means the BSD `a' partition of the second hard disk. If you
need to specify which PC slice number should be used, use something
like this: `(hd1,0,a)'. If the PC slice number is omitted, GRUB
searches for the first PC slice which has a BSD `a' partition.
Of course, to actually access the disks or partitions with GRUB, you
need to use the device specification in a command, like `root (fd0)' or
`unhide (hd0,2)'. To help you find out which number specifies a
partition you want, the GRUB command-line (*note Command-line
interface::) options have argument completion. This means that, for
example, you only need to type
root (
followed by a <TAB>, and GRUB will display the list of drives,
partitions, or file names. So it should be quite easy to determine the
name of your target partition, even with minimal knowledge of the
syntax.
Note that GRUB does _not_ distinguish IDE from SCSI - it simply
counts the drive numbers from zero, regardless of their type. Normally,
any IDE drive number is less than any SCSI drive number, although that
is not true if you change the boot sequence by swapping IDE and SCSI
drives in your BIOS.
Now the question is, how to specify a file? Again, consider an
example:
(hd0,0)/vmlinuz
This specifies the file named `vmlinuz', found on the first
partition of the first hard disk drive. Note that the argument
completion works with file names, too.
That was easy, admit it. Now read the next chapter, to find out how
to actually install GRUB on your drive.
File: grub.info, Node: Installation, Next: Booting, Prev: Naming convention, Up: Top
Installation
************
In order to install GRUB as your boot loader, you need to first
install the GRUB system and utilities under your UNIX-like operating
system (*note Obtaining and Building GRUB::). You can do this either
from the source tarball, or as a package for your OS.
After you have done that, you need to install the boot loader on a
drive (floppy or hard disk). There are two ways of doing that - either
using the utility `grub-install' (*note Invoking grub-install::) on a
UNIX-like OS, or by running GRUB itself from a floppy. These are quite
similar, however the utility might probe a wrong BIOS drive, so you
should be careful.
Also, if you install GRUB on a UNIX-like OS, please make sure that
you have an emergency boot disk ready, so that you can rescue your
computer if, by any chance, your hard drive becomes unusable
(unbootable).
GRUB comes with boot images, which are normally put in the directory
`/usr/lib/grub/i386-pc'. If you do not use grub-install, then you need
to copy the files `stage1', `stage2', and `*stage1_5' to the directory
`/boot/grub', and run the `grub-set-default' (*note Invoking
grub-set-default::) if you intend to use `default saved' (*note
default::) in your configuration file. Hereafter, the directory where
GRUB images are initially placed (normally `/usr/lib/grub/i386-pc')
will be called the "image directory", and the directory where the boot
loader needs to find them (usually `/boot/grub') will be called the
"boot directory".
* Menu:
* Creating a GRUB boot floppy::
* Installing GRUB natively::
* Installing GRUB using grub-install::
* Making a GRUB bootable CD-ROM::
File: grub.info, Node: Creating a GRUB boot floppy, Next: Installing GRUB natively, Up: Installation
Creating a GRUB boot floppy
===========================
To create a GRUB boot floppy, you need to take the files `stage1'
and `stage2' from the image directory, and write them to the first and
the second block of the floppy disk, respectively.
*Caution:* This procedure will destroy any data currently stored on
the floppy.
On a UNIX-like operating system, that is done with the following
commands:
# cd /usr/lib/grub/i386-pc
# dd if=stage1 of=/dev/fd0 bs=512 count=1
1+0 records in
1+0 records out
# dd if=stage2 of=/dev/fd0 bs=512 seek=1
153+1 records in
153+1 records out
#
The device file name may be different. Consult the manual for your
OS.
File: grub.info, Node: Installing GRUB natively, Next: Installing GRUB using grub-install, Prev: Creating a GRUB boot floppy, Up: Installation
Installing GRUB natively
========================
*Caution:* Installing GRUB's stage1 in this manner will erase the
normal boot-sector used by an OS.
GRUB can currently boot GNU Mach, Linux, FreeBSD, NetBSD, and OpenBSD
directly, so using it on a boot sector (the first sector of a
partition) should be okay. But generally, it would be a good idea to
back up the first sector of the partition on which you are installing
GRUB's stage1. This isn't as important if you are installing GRUB on
the first sector of a hard disk, since it's easy to reinitialize it
(e.g. by running `FDISK /MBR' from DOS).
If you decide to install GRUB in the native environment, which is
definitely desirable, you'll need to create a GRUB boot disk, and
reboot your computer with it. Otherwise, see *Note Installing GRUB
using grub-install::.
Once started, GRUB will show the command-line interface (*note
Command-line interface::). First, set the GRUB's "root device"(1)
(*note Installing GRUB natively-Footnote-1::) to the partition
containing the boot directory, like this:
grub> root (hd0,0)
If you are not sure which partition actually holds this directory,
use the command `find' (*note find::), like this:
grub> find /boot/grub/stage1
This will search for the file name `/boot/grub/stage1' and show the
devices which contain the file.
Once you've set the root device correctly, run the command `setup'
(*note setup::):
grub> setup (hd0)
This command will install the GRUB boot loader on the Master Boot
Record (MBR) of the first drive. If you want to put GRUB into the boot
sector of a partition instead of putting it in the MBR, specify the
partition into which you want to install GRUB:
grub> setup (hd0,0)
If you install GRUB into a partition or a drive other than the first
one, you must chain-load GRUB from another boot loader. Refer to the
manual for the boot loader to know how to chain-load GRUB.
After using the setup command, you will boot into GRUB without the
GRUB floppy. See the chapter *Note Booting:: to find out how to boot
your operating systems from GRUB.
File: grub.info, Node: Installing GRUB natively-Footnotes, Up: Installing GRUB natively
(1) Note that GRUB's root device doesn't necessarily mean your OS's
root partition; if you need to specify a root partition for your OS,
add the argument into the command `kernel'.
File: grub.info, Node: Installing GRUB using grub-install, Next: Making a GRUB bootable CD-ROM, Prev: Installing GRUB natively, Up: Installation
Installing GRUB using grub-install
==================================
*Caution:* This procedure is definitely less safe, because there are
several ways in which your computer can become unbootable. For example,
most operating systems don't tell GRUB how to map BIOS drives to OS
devices correctly--GRUB merely "guesses" the mapping. This will succeed
in most cases, but not always. Therefore, GRUB provides you with a map
file called the "device map", which you must fix if it is wrong. *Note
Device map::, for more details.
If you still do want to install GRUB under a UNIX-like OS (such as
GNU), invoke the program `grub-install' (*note Invoking grub-install::)
as the superuser ("root").
The usage is basically very simple. You only need to specify one
argument to the program, namely, where to install the boot loader. The
argument can be either a device file (like `/dev/hda') or a partition
specified in GRUB's notation. For example, under Linux the following
will install GRUB into the MBR of the first IDE disk:
# grub-install /dev/hda
Likewise, under GNU/Hurd, this has the same effect:
# grub-install /dev/hd0
If it is the first BIOS drive, this is the same as well:
# grub-install '(hd0)'
Or you can omit the parentheses:
# grub-install hd0
But all the above examples assume that GRUB should use images under
the root directory. If you want GRUB to use images under a directory
other than the root directory, you need to specify the option
`--root-directory'. The typical usage is that you create a GRUB boot
floppy with a filesystem. Here is an example:
# mke2fs /dev/fd0
# mount -t ext2 /dev/fd0 /mnt
# grub-install --root-directory=/mnt fd0
# umount /mnt
Another example is when you have a separate boot partition which is
mounted at `/boot'. Since GRUB is a boot loader, it doesn't know
anything about mountpoints at all. Thus, you need to run `grub-install'
like this:
# grub-install --root-directory=/boot /dev/hda
By the way, as noted above, it is quite difficult to guess BIOS
drives correctly under a UNIX-like OS. Thus, `grub-install' will prompt
you to check if it could really guess the correct mappings, after the
installation. The format is defined in *Note Device map::. Please be
quite careful. If the output is wrong, it is unlikely that your
computer will be able to boot with no problem.
Note that `grub-install' is actually just a shell script and the
real task is done by the grub shell `grub' (*note Invoking the grub
shell::). Therefore, you may run `grub' directly to install GRUB,
without using `grub-install'. Don't do that, however, unless you are
very familiar with the internals of GRUB. Installing a boot loader on a
running OS may be extremely dangerous.
File: grub.info, Node: Making a GRUB bootable CD-ROM, Prev: Installing GRUB using grub-install, Up: Installation
Making a GRUB bootable CD-ROM
=============================
GRUB supports the "no emulation mode" in the El Torito
specification(1) (*note Making a GRUB bootable CD-ROM-Footnote-1::).
This means that you can use the whole CD-ROM from GRUB and you don't
have to make a floppy or hard disk image file, which can cause
compatibility problems.
For booting from a CD-ROM, GRUB uses a special Stage 2 called
`stage2_eltorito'. The only GRUB files you need to have in your
bootable CD-ROM are this `stage2_eltorito' and optionally a config file
`menu.lst'. You don't need to use `stage1' or `stage2', because El
Torito is quite different from the standard boot process.
Here is an example of procedures to make a bootable CD-ROM image.
First, make a top directory for the bootable image, say, `iso':
$ mkdir iso
Make a directory for GRUB:
$ mkdir -p iso/boot/grub
Copy the file `stage2_eltorito':
$ cp /usr/lib/grub/i386-pc/stage2_eltorito iso/boot/grub
If desired, make the config file `menu.lst' under `iso/boot/grub'
(*note Configuration::), and copy any files and directories for the
disc to the directory `iso/'.
Finally, make a ISO9660 image file like this:
$ mkisofs -R -b boot/grub/stage2_eltorito -no-emul-boot \
-boot-load-size 4 -boot-info-table -o grub.iso iso
This produces a file named `grub.iso', which then can be burned into
a CD (or a DVD). `mkisofs' has already set up the disc to boot from
the `boot/grub/stage2_eltorito' file, so there is no need to setup GRUB
on the disc. (Note that the `-boot-load-size 4' bit is required for
compatibility with the BIOS on many older machines.)
You can use the device `(cd)' to access a CD-ROM in your config
file. This is not required; GRUB automatically sets the root device to
`(cd)' when booted from a CD-ROM. It is only necessary to refer to
`(cd)' if you want to access other drives as well.
File: grub.info, Node: Making a GRUB bootable CD-ROM-Footnotes, Up: Making a GRUB bootable CD-ROM
(1) El Torito is a specification for bootable CD using BIOS
functions.
File: grub.info, Node: Booting, Next: Configuration, Prev: Installation, Up: Top
Booting
*******
GRUB can load Multiboot-compliant kernels in a consistent way, but
for some free operating systems you need to use some OS-specific magic.
* Menu:
* General boot methods:: How to boot OSes with GRUB generally
* OS-specific notes:: Notes on some operating systems
* Making your system robust:: How to make your system robust
File: grub.info, Node: General boot methods, Next: OS-specific notes, Up: Booting
How to boot operating systems
=============================
GRUB has two distinct boot methods. One of the two is to load an
operating system directly, and the other is to chain-load another boot
loader which then will load an operating system actually. Generally
speaking, the former is more desirable, because you don't need to
install or maintain other boot loaders and GRUB is flexible enough to
load an operating system from an arbitrary disk/partition. However, the
latter is sometimes required, since GRUB doesn't support all the
existing operating systems natively.
* Menu:
* Loading an operating system directly::
* Chain-loading::
File: grub.info, Node: Loading an operating system directly, Next: Chain-loading, Up: General boot methods
How to boot an OS directly with GRUB
------------------------------------
Multiboot (*note Multiboot Specification: (multiboot)Top.) is the
native format supported by GRUB. For the sake of convenience, there is
also support for Linux, FreeBSD, NetBSD and OpenBSD. If you want to
boot other operating systems, you will have to chain-load them (*note
Chain-loading::).
Generally, GRUB can boot any Multiboot-compliant OS in the following
steps:
1. Set GRUB's root device to the drive where the OS images are stored
with the command `root' (*note root::).
2. Load the kernel image with the command `kernel' (*note kernel::).
3. If you need modules, load them with the command `module' (*note
module::) or `modulenounzip' (*note modulenounzip::).
4. Run the command `boot' (*note boot::).
Linux, FreeBSD, NetBSD and OpenBSD can be booted in a similar
manner. You load a kernel image with the command `kernel' and then run
the command `boot'. If the kernel requires some parameters, just append
the parameters to `kernel', after the file name of the kernel. Also,
please refer to *Note OS-specific notes::, for information on your
OS-specific issues.
File: grub.info, Node: Chain-loading, Prev: Loading an operating system directly, Up: General boot methods
Load another boot loader to boot unsupported operating systems
--------------------------------------------------------------
If you want to boot an unsupported operating system (e.g. Windows
95), chain-load a boot loader for the operating system. Normally, the
boot loader is embedded in the "boot sector" of the partition on which
the operating system is installed.
1. Set GRUB's root device to the partition by the command
`rootnoverify' (*note rootnoverify::):
grub> rootnoverify (hd0,0)
2. Set the "active" flag in the partition using the command
`makeactive'(1) (*note Chain-loading-Footnote-1::) (*note
makeactive::):
grub> makeactive
3. Load the boot loader with the command `chainloader' (*note
chainloader::):
grub> chainloader +1
`+1' indicates that GRUB should read one sector from the start of
the partition. The complete description about this syntax can be
found in *Note Block list syntax::.
4. Run the command `boot' (*note boot::).
However, DOS and Windows have some deficiencies, so you might have to
use more complicated instructions. *Note DOS/Windows::, for more
information.
File: grub.info, Node: Chain-loading-Footnotes, Up: Chain-loading
(1) This is not necessary for most of the modern operating systems.
File: grub.info, Node: OS-specific notes, Next: Making your system robust, Prev: General boot methods, Up: Booting
Some caveats on OS-specific issues
==================================
Here, we describe some caveats on several operating systems.
* Menu:
* GNU/Hurd::
* GNU/Linux::
* FreeBSD::
* NetBSD::
* OpenBSD::
* DOS/Windows::
* SCO UnixWare::
* QNX::
File: grub.info, Node: GNU/Hurd, Next: GNU/Linux, Up: OS-specific notes
GNU/Hurd
--------
Since GNU/Hurd is Multiboot-compliant, it is easy to boot it; there
is nothing special about it. But do not forget that you have to specify
a root partition to the kernel.
1. Set GRUB's root device to the same drive as GNU/Hurd's. Probably
the command `find /boot/gnumach' or similar can help you (*note
find::).
2. Load the kernel and the module, like this:
grub> kernel /boot/gnumach root=hd0s1
grub> module /boot/serverboot
3. Run the command `boot' (*note boot::).
File: grub.info, Node: GNU/Linux, Next: FreeBSD, Prev: GNU/Hurd, Up: OS-specific notes
GNU/Linux
---------
It is relatively easy to boot GNU/Linux from GRUB, because it
somewhat resembles to boot a Multiboot-compliant OS.
1. Set GRUB's root device to the same drive as GNU/Linux's. Probably
the command `find /vmlinuz' or similar can help you (*note find::).
2. Load the kernel:
grub> kernel /vmlinuz root=/dev/hda1
If you need to specify some kernel parameters, just append them to
the command. For example, to set `vga' to `ext', do this:
grub> kernel /vmlinuz root=/dev/hda1 vga=ext
See the documentation in the Linux source tree for complete
information on the available options.
3. If you use an initrd, execute the command `initrd' (*note
initrd::) after `kernel':
grub> initrd /initrd
4. Finally, run the command `boot' (*note boot::).
*Caution:* If you use an initrd and specify the `mem=' option to the
kernel to let it use less than actual memory size, you will also have
to specify the same memory size to GRUB. To let GRUB know the size, run
the command `uppermem' _before_ loading the kernel. *Note uppermem::,
for more information.
File: grub.info, Node: FreeBSD, Next: NetBSD, Prev: GNU/Linux, Up: OS-specific notes
FreeBSD
-------
GRUB can load the kernel directly, either in ELF or a.out format. But
this is not recommended, since FreeBSD's bootstrap interface sometimes
changes heavily, so GRUB can't guarantee to pass kernel parameters
correctly.
Thus, we'd recommend loading the very flexible loader `/boot/loader'
instead. See this example:
grub> root (hd0,a)
grub> kernel /boot/loader
grub> boot
File: grub.info, Node: NetBSD, Next: OpenBSD, Prev: FreeBSD, Up: OS-specific notes
NetBSD
------
GRUB can load NetBSD a.out and ELF directly, follow these steps:
1. Set GRUB's root device with `root' (*note root::).
2. Load the kernel with `kernel' (*note kernel::). You should append
the ugly option `--type=netbsd', if you want to load an ELF
kernel, like this:
grub> kernel --type=netbsd /netbsd-elf
3. Run `boot' (*note boot::).
For now, however, GRUB doesn't allow you to pass kernel parameters,
so it may be better to chain-load it instead. For more information,
please see *Note Chain-loading::.
File: grub.info, Node: OpenBSD, Next: DOS/Windows, Prev: NetBSD, Up: OS-specific notes
OpenBSD
-------
The booting instruction is exactly the same as for NetBSD (*note
NetBSD::).
File: grub.info, Node: DOS/Windows, Next: SCO UnixWare, Prev: OpenBSD, Up: OS-specific notes
DOS/Windows
-----------
GRUB cannot boot DOS or Windows directly, so you must chain-load them
(*note Chain-loading::). However, their boot loaders have some critical
deficiencies, so it may not work to just chain-load them. To overcome
the problems, GRUB provides you with two helper functions.
If you have installed DOS (or Windows) on a non-first hard disk, you
have to use the disk swapping technique, because that OS cannot boot
from any disks but the first one. The workaround used in GRUB is the
command `map' (*note map::), like this:
grub> map (hd0) (hd1)
grub> map (hd1) (hd0)
This performs a "virtual" swap between your first and second hard
drive.
*Caution:* This is effective only if DOS (or Windows) uses BIOS to
access the swapped disks. If that OS uses a special driver for the
disks, this probably won't work.
Another problem arises if you installed more than one set of
DOS/Windows onto one disk, because they could be confused if there are
more than one primary partitions for DOS/Windows. Certainly you should
avoid doing this, but there is a solution if you do want to do so. Use
the partition hiding/unhiding technique.
If GRUB "hide"s a DOS (or Windows) partition (*note hide::), DOS (or
Windows) will ignore the partition. If GRUB "unhide"s a DOS (or
Windows) partition (*note unhide::), DOS (or Windows) will detect the
partition. Thus, if you have installed DOS (or Windows) on the first
and the second partition of the first hard disk, and you want to boot
the copy on the first partition, do the following:
grub> unhide (hd0,0)
grub> hide (hd0,1)
grub> rootnoverify (hd0,0)
grub> chainloader +1
grub> makeactive
grub> boot
File: grub.info, Node: SCO UnixWare, Next: QNX, Prev: DOS/Windows, Up: OS-specific notes
SCO UnixWare
------------
It is known that the signature in the boot loader for SCO UnixWare is
wrong, so you will have to specify the option `--force' to
`chainloader' (*note chainloader::), like this:
grub> rootnoverify (hd1,0)
grub> chainloader --force +1
grub> makeactive
grub> boot
File: grub.info, Node: QNX, Prev: SCO UnixWare, Up: OS-specific notes
QNX
---
QNX seems to use a bigger boot loader, so you need to boot it up,
like this:
grub> rootnoverify (hd1,1)
grub> chainloader +4
grub> boot
File: grub.info, Node: Making your system robust, Prev: OS-specific notes, Up: Booting
How to make your system robust
==============================
When you test a new kernel or a new OS, it is important to make sure
that your computer can boot even if the new system is unbootable. This
is crucial especially if you maintain servers or remote systems. To
accomplish this goal, you need to set up two things:
1. You must maintain a system which is always bootable. For instance,
if you test a new kernel, you need to keep a working kernel in a
different place. And, it would sometimes be very nice to even have
a complete copy of a working system in a different partition or
disk.
2. You must direct GRUB to boot a working system when the new system
fails. This is possible with the "fallback" system in GRUB.
The former requirement is very specific to each OS, so this
documentation does not cover that topic. It is better to consult some
backup tools.
So let's see the GRUB part. There are two possibilities: one of them
is quite simple but not very robust, and the other is a bit complex to
set up but probably the best solution to make sure that your system can
start as long as GRUB itself is bootable.
* Menu:
* Booting once-only::
* Booting fallback systems::
File: grub.info, Node: Booting once-only, Next: Booting fallback systems, Up: Making your system robust
Booting once-only
-----------------
You can teach GRUB to boot an entry only at next boot time. Suppose
that your have an old kernel `old_kernel' and a new kernel
`new_kernel'. You know that `old_kernel' can boot your system
correctly, and you want to test `new_kernel'.
To ensure that your system will go back to the old kernel even if the
new kernel fails (e.g. it panics), you can specify that GRUB should try
the new kernel only once and boot the old kernel after that.
First, modify your configuration file. Here is an example:
default saved # This is important!!!
timeout 10
title the old kernel
root (hd0,0)
kernel /old_kernel
savedefault
title the new kernel
root (hd0,0)
kernel /new_kernel
savedefault 0 # This is important!!!
Note that this configuration file uses `default saved' (*note
default::) at the head and `savedefault 0' (*note savedefault::) in the
entry for the new kernel. This means that GRUB boots a saved entry by
default, and booting the entry for the new kernel saves `0' as the
saved entry.
With this configuration file, after all, GRUB always tries to boot
the old kernel after it booted the new one, because `0' is the entry of
`the old kernel'.
The next step is to tell GRUB to boot the new kernel at next boot
time. For this, execute `grub-set-default' (*note Invoking
grub-set-default::):
# grub-set-default 1
This command sets the saved entry to `1', that is, to the new kernel.
This method is useful, but still not very robust, because GRUB stops
booting, if there is any error in the boot entry, such that the new
kernel has an invalid executable format. Thus, it it even better to use
the "fallback" mechanism of GRUB. Look at next subsection for this
feature.
File: grub.info, Node: Booting fallback systems, Prev: Booting once-only, Up: Making your system robust
Booting fallback systems
------------------------
GRUB supports a fallback mechanism of booting one or more other
entries if a default boot entry fails. You can specify multiple
fallback entries if you wish.
Suppose that you have three systems, `A', `B' and `C'. `A' is a
system which you want to boot by default. `B' is a backup system which
is supposed to boot safely. `C' is another backup system which is used
in case where `B' is broken.
Then you may want GRUB to boot the first system which is bootable
among `A', `B' and `C'. A configuration file can be written in this way:
default saved # This is important!!!
timeout 10
fallback 1 2 # This is important!!!
title A
root (hd0,0)
kernel /kernel
savedefault fallback # This is important!!!
title B
root (hd1,0)
kernel /kernel
savedefault fallback # This is important!!!
title C
root (hd2,0)
kernel /kernel
savedefault
Note that `default saved' (*note default::), `fallback 1 2' and
`savedefault fallback' are used. GRUB will boot a saved entry by
default and save a fallback entry as next boot entry with this
configuration.
When GRUB tries to boot `A', GRUB saves `1' as next boot entry,
because the command `fallback' specifies that `1' is the first fallback
entry. The entry `1' is `B', so GRUB will try to boot `B' at next boot
time.
Likewise, when GRUB tries to boot `B', GRUB saves `2' as next boot
entry, because `fallback' specifies `2' as next fallback entry. This
makes sure that GRUB will boot `C' after booting `B'.
It is noteworthy that GRUB uses fallback entries both when GRUB
itself fails in booting an entry and when `A' or `B' fails in starting
up your system. So this solution ensures that your system is started
even if GRUB cannot find your kernel or if your kernel panics.
However, you need to run `grub-set-default' (*note Invoking
grub-set-default::) when `A' starts correctly or you fix `A' after it
crashes, since GRUB always sets next boot entry to a fallback entry.
You should run this command in a startup script such as `rc.local' to
boot `A' by default:
# grub-set-default 0
where `0' is the number of the boot entry for the system `A'.
If you want to see what is current default entry, you can look at the
file `/boot/grub/default' (or `/grub/default' in some systems). Because
this file is plain-text, you can just `cat' this file. But it is
strongly recommended *not to modify this file directly*, because GRUB
may fail in saving a default entry in this file, if you change this
file in an unintended manner. Therefore, you should use
`grub-set-default' when you need to change the default entry.
File: grub.info, Node: Configuration, Next: Network, Prev: Booting, Up: Top
Configuration
*************
You've probably noticed that you need to type several commands to
boot your OS. There's a solution to that - GRUB provides a menu
interface (*note Menu interface::) from which you can select an item
(using arrow keys) that will do everything to boot an OS.
To enable the menu, you need a configuration file, `menu.lst' under
the boot directory. We'll analyze an example file.
The file first contains some general settings, the menu interface
related options. You can put these commands (*note Menu-specific
commands::) before any of the items (starting with `title' (*note
title::)).
#
# Sample boot menu configuration file
#
As you may have guessed, these lines are comments. Lines starting
with a hash character (`#'), and blank lines, are ignored by GRUB.
# By default, boot the first entry.
default 0
The first entry (here, counting starts with number zero, not one!)
will be the default choice.
# Boot automatically after 30 secs.
timeout 30
As the comment says, GRUB will boot automatically in 30 seconds,
unless interrupted with a keypress.
# Fallback to the second entry.
fallback 1
If, for any reason, the default entry doesn't work, fall back to the
second one (this is rarely used, for obvious reasons).
Note that the complete descriptions of these commands, which are menu
interface specific, can be found in *Note Menu-specific commands::.
Other descriptions can be found in *Note Commands::.
Now, on to the actual OS definitions. You will see that each entry
begins with a special command, `title' (*note title::), and the action
is described after it. Note that there is no command `boot' (*note
boot::) at the end of each item. That is because GRUB automatically
executes `boot' if it loads other commands successfully.
The argument for the command `title' is used to display a short
title/description of the entry in the menu. Since `title' displays the
argument as is, you can write basically anything there.
# For booting GNU/Hurd
title GNU/Hurd
root (hd0,0)
kernel /boot/gnumach.gz root=hd0s1
module /boot/serverboot.gz
This boots GNU/Hurd from the first hard disk.
# For booting GNU/Linux
title GNU/Linux
kernel (hd1,0)/vmlinuz root=/dev/hdb1
This boots GNU/Linux, but from the second hard disk.
# For booting Mach (getting kernel from floppy)
title Utah Mach4 multiboot
root (hd0,2)
pause Insert the diskette now^G!!
kernel (fd0)/boot/kernel root=hd0s3
module (fd0)/boot/bootstrap
This boots Mach with a kernel on a floppy, but the root filesystem at
hd0s3. It also contains a `pause' line (*note pause::), which will
cause GRUB to display a prompt and delay, before actually executing the
rest of the commands and booting.
# For booting FreeBSD
title FreeBSD
root (hd0,2,a)
kernel /boot/loader
This item will boot FreeBSD kernel loaded from the `a' partition of
the third PC slice of the first hard disk.
# For booting OS/2
title OS/2
root (hd0,1)
makeactive
# chainload OS/2 bootloader from the first sector
chainloader +1
# This is similar to "chainload", but loads a specific file
#chainloader /boot/chain.os2
This will boot OS/2, using a chain-loader (*note Chain-loading::).
# For booting Windows NT or Windows95
title Windows NT / Windows 95 boot menu
root (hd0,0)
makeactive
chainloader +1
# For loading DOS if Windows NT is installed
# chainload /bootsect.dos
The same as the above, but for Windows.
# For installing GRUB into the hard disk
title Install GRUB into the hard disk
root (hd0,0)
setup (hd0)
This will just (re)install GRUB onto the hard disk.
# Change the colors.
title Change the colors
color light-green/brown blink-red/blue
In the last entry, the command `color' is used (*note color::), to
change the menu colors (try it!). This command is somewhat special,
because it can be used both in the command-line and in the menu. GRUB
has several such commands, see *Note General commands::.
We hope that you now understand how to use the basic features of
GRUB. To learn more about GRUB, see the following chapters.
File: grub.info, Node: Network, Next: Serial terminal, Prev: Configuration, Up: Top
Downloading OS images from a network
************************************
Although GRUB is a disk-based boot loader, it does provide network
support. To use the network support, you need to enable at least one
network driver in the GRUB build process. For more information please
see `netboot/README.netboot' in the source distribution.
* Menu:
* General usage of network support::
* Diskless::
File: grub.info, Node: General usage of network support, Next: Diskless, Up: Network
How to set up your network
==========================
GRUB requires a file server and optionally a server that will assign
an IP address to the machine on which GRUB is running. For the former,
only TFTP is supported at the moment. The latter is either BOOTP, DHCP
or a RARP server(1) (*note General usage of network
support-Footnote-1::). It is not necessary to run both the servers on
one computer. How to configure these servers is beyond the scope of this
document, so please refer to the manuals specific to those
protocols/servers.
If you decided to use a server to assign an IP address, set up the
server and run `bootp' (*note bootp::), `dhcp' (*note dhcp::) or `rarp'
(*note rarp::) for BOOTP, DHCP or RARP, respectively. Each command will
show an assigned IP address, a netmask, an IP address for your TFTP
server and a gateway. If any of the addresses is wrong or it causes an
error, probably the configuration of your servers isn't set up properly.
Otherwise, run `ifconfig', like this:
grub> ifconfig --address=192.168.110.23 --server=192.168.110.14
You can also use `ifconfig' in conjuction with `bootp', `dhcp' or
`rarp' (e.g. to reassign the server address manually). *Note
ifconfig::, for more details.
Finally, download your OS images from your network. The network can
be accessed using the network drive `(nd)'. Everything else is very
similar to the normal instructions (*note Booting::).
Here is an example:
grub> bootp
Probing... [NE*000]
NE2000 base ...
Address: 192.168.110.23 Netmask: 255.255.255.0
Server: 192.168.110.14 Gateway: 192.168.110.1
grub> root (nd)
grub> kernel /tftproot/gnumach.gz root=sd0s1
grub> module /tftproot/serverboot.gz
grub> boot
File: grub.info, Node: General usage of network support-Footnotes, Up: General usage of network support
(1) RARP is not advised, since it cannot serve much information
|