117 lines
4.5 KiB
Text
117 lines
4.5 KiB
Text
13 Filesystem syntax and semantics
|
|
**********************************
|
|
|
|
GRUB uses a special syntax for specifying disk drives which can be
|
|
accessed by BIOS. Because of BIOS limitations, GRUB cannot distinguish
|
|
between IDE, ESDI, SCSI, or others. You must know yourself which BIOS
|
|
device is equivalent to which OS device. Normally, that will be clear
|
|
if you see the files in a device or use the command 'search' (*note
|
|
search::).
|
|
|
|
13.1 How to specify devices
|
|
===========================
|
|
|
|
The device syntax is like this:
|
|
|
|
(DEVICE[,PARTMAP-NAME1PART-NUM1[,PARTMAP-NAME2PART-NUM2[,...]]])
|
|
|
|
'[]' means the parameter is optional. DEVICE depends on the disk
|
|
driver in use. BIOS and EFI disks use either 'fd' or 'hd' followed by a
|
|
digit, like 'fd0', or 'cd'. AHCI, PATA (ata), crypto, USB use the name
|
|
of driver followed by a number. Memdisk and host are limited to one
|
|
disk and so it's refered just by driver name. RAID (md), ofdisk
|
|
(ieee1275 and nand), LVM (lvm), LDM, virtio (vdsk) and arcdisk (arc) use
|
|
intrinsic name of disk prefixed by driver name. Additionally just
|
|
"nand" refers to the disk aliased as "nand". Conflicts are solved by
|
|
suffixing a number if necessarry. Commas need to be escaped. Loopback
|
|
uses whatever name specified to 'loopback' command. Hostdisk uses names
|
|
specified in device.map as long as it's of the form [fhc]d[0-9]* or
|
|
hostdisk/<OS DEVICE>. For crypto and RAID (md) additionally you can use
|
|
the syntax <driver name>uuid/<uuid>. For LVM additionally you can use
|
|
the syntax lvmid/<volume-group-uuid>/<volume-uuid>.
|
|
|
|
(fd0)
|
|
(hd0)
|
|
(cd)
|
|
(ahci0)
|
|
(ata0)
|
|
(crypto0)
|
|
(usb0)
|
|
(cryptouuid/123456789abcdef0123456789abcdef0)
|
|
(mduuid/123456789abcdef0123456789abcdef0)
|
|
(lvm/system-root)
|
|
(lvmid/F1ikgD-2RES-306G-il9M-7iwa-4NKW-EbV1NV/eLGuCQ-L4Ka-XUgR-sjtJ-ffch-bajr-fCNfz5)
|
|
(md/myraid)
|
|
(md/0)
|
|
(ieee1275/disk2)
|
|
(ieee1275//pci@1f\,0/ide@d/disk@2)
|
|
(nand)
|
|
(memdisk)
|
|
(host)
|
|
(myloop)
|
|
(hostdisk//dev/sda)
|
|
|
|
PART-NUM represents the partition number of DEVICE, starting from
|
|
one. PARTNAME is optional but is recommended since disk may have
|
|
several top-level partmaps. Specifying third and later component you
|
|
can access to subpartitions.
|
|
|
|
The syntax '(hd0)' represents using the entire disk (or the MBR when
|
|
installing GRUB), while the syntax '(hd0,1)' represents using the first
|
|
partition of the disk (or the boot sector of the partition when
|
|
installing GRUB).
|
|
|
|
(hd0,msdos1)
|
|
(hd0,msdos1,msdos5)
|
|
(hd0,msdos1,bsd3)
|
|
(hd0,netbsd1)
|
|
(hd0,gpt1)
|
|
(hd0,1,3)
|
|
|
|
If you enabled the network support, the special drives
|
|
'(PROTOCOL[,SERVER])' are also available. Supported protocols are
|
|
'http' and 'tftp'. If SERVER is omitted, value of environment variable
|
|
'net_default_server' is used. Before using the network drive, you must
|
|
initialize the network. *Note Network::, for more information.
|
|
|
|
If you boot GRUB from a CD-ROM, '(cd)' is available. *Note Making a
|
|
GRUB bootable CD-ROM::, for details.
|
|
|
|
13.2 How to specify files
|
|
=========================
|
|
|
|
There are two ways to specify files, by "absolute file name" and by
|
|
"block list".
|
|
|
|
An absolute file name resembles a Unix absolute file name, using '/'
|
|
for the directory separator (not '\' as in DOS). One example is
|
|
'(hd0,1)/boot/grub/grub.cfg'. This means the file '/boot/grub/grub.cfg'
|
|
in the first partition of the first hard disk. If you omit the device
|
|
name in an absolute file name, GRUB uses GRUB's "root device"
|
|
implicitly. So if you set the root device to, say, '(hd1,1)' by the
|
|
command 'set root=(hd1,1)' (*note set::), then '/boot/kernel' is the
|
|
same as '(hd1,1)/boot/kernel'.
|
|
|
|
On ZFS filesystem the first path component must be
|
|
VOLUME'@'[SNAPSHOT]. So '/rootvol@snap-129/boot/grub/grub.cfg' refers
|
|
to file '/boot/grub/grub.cfg' in snapshot of volume 'rootvol' with name
|
|
'snap-129'. Trailing '@' after volume name is mandatory even if
|
|
snapshot name is omitted.
|
|
|
|
13.3 How to specify block lists
|
|
===============================
|
|
|
|
A block list is used for specifying a file that doesn't appear in the
|
|
filesystem, like a chainloader. The syntax is
|
|
'[OFFSET]+LENGTH[,[OFFSET]+LENGTH]...'. Here is an example:
|
|
|
|
0+100,200+1,300+300
|
|
|
|
This represents that GRUB should read blocks 0 through 99, block 200,
|
|
and blocks 300 through 599. If you omit an offset, then GRUB assumes
|
|
the offset is zero.
|
|
|
|
Like the file name syntax (*note File name syntax::), if a blocklist
|
|
does not contain a device name, then GRUB uses GRUB's "root device". So
|
|
'(hd0,2)+1' is the same as '+1' when the root device is '(hd0,2)'.
|
|
|