In a GRUB configuration file, it’s very common to see

chainloader +1

The meaning of +1 is often obscure. For a long time it was misinterpreted as the next bootloader. But this is not very true.

Here is what GRUB Manual says about the chainloader command:

Command: chainloader [--force] file

Load file as a chain-loader. Like any other file loaded by the filesystem code, it can use the blocklist notation (see Block list syntax) to grab the first sector of the current partition with ‘+1’. …

Therefore +1 actually has a block list syntax, on which the GRUB Manual says:

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:


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 (see 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)’.

Therefore +1 actually means: The block list starting at offset 0 with length 1 on GRUB’s root device. This simply means the first block, which is the MBR of the root device. Normally the code in MBR is loaded by BIOS directly. However, in this case BIOS loads GRUB, which in turn loads the code in MBR, thus forming a chain. This is why it’s called a chainloader.