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)'.
 | |
| 
 |