Difference between revisions of "Comboot/chain.c32"
m (Update some available options.) |
m (Improve text formatting.) |
||
Line 5: | Line 5: | ||
All options as available in chain.c32 of Syslinux 3.85 (with some updates introduced in later versions): | All options as available in chain.c32 of Syslinux 3.85 (with some updates introduced in later versions): | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | '''Usage:''' | |
− | + | <pre> | |
− | + | chain.c32 hd<disk#> [<partition>] [options] | |
− | + | chain.c32 fd<disk#> [options] | |
− | + | chain.c32 mbr:<id> [<partition>] [options] | |
− | + | chain.c32 boot [<partition>] [options] | |
− | + | chain.c32 fs [options] | |
− | + | chain.c32 label=<label> [options] | |
− | + | chain.c32 guid=<label> [options] | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
</pre> | </pre> | ||
+ | {| border="0" cellpadding="10" cellspacing="0" bgcolor="#f9f9f9" width="100%" style="padding: 1em; border: 1px dashed darkgray;" | ||
+ | |+ <code>chain.c32 options:</code> | ||
+ | |- | ||
+ | |style="white-space: nowrap; color: #f9f9f9; "| <code> 1234567890123456789 </code> <!-- THIS ROW SETS COLUMN1 WIDTH --> | ||
+ | | | ||
+ | |- valign="top" | ||
+ | | <code> file=<loader> </code> | ||
+ | | <code> load file, instead of boot sector </code> | ||
+ | |- valign="top" | ||
+ | | <code> isolinux=<loader> </code> | ||
+ | | <code> load another version of ISOLINUX </code> | ||
+ | |- valign="top" | ||
+ | | <code> ntldr=<loader> </code> | ||
+ | | <code> load Windows' NTLDR, SETUPLDR.BIN or BOOTMGR, or GRLDR </code> | ||
+ | |- valign="top" | ||
+ | | <code> cmldr=<loader> </code> | ||
+ | | <code> load Recovery Console of Windows NT/2K/XP </code> | ||
+ | |- valign="top" | ||
+ | | <code> freedos=<loader> </code> | ||
+ | | <code> load FreeDOS kernel.sys </code> | ||
+ | |- valign="top" | ||
+ | | <code> msdos=<loader> </code> | ||
+ | | <code> load MS-DOS (2.xx to 6.xx) io.sys </code> | ||
+ | |- valign="top" | ||
+ | | <code> pcdos=<loader> </code> | ||
+ | | <code> load PC-DOS ibmbio.com </code> | ||
+ | |- valign="top" | ||
+ | | <code> reactos=<loader> </code> | ||
+ | | <code> load ReactOS freeldr </code> | ||
+ | |- valign="top" | ||
+ | | <code> grub=<loader> [grubcfg=<config>] </code> | ||
+ | | <code> load grub legacy stage2 </code> | ||
+ | |- valign="top" | ||
+ | | <code> seg=<segment> </code> | ||
+ | | <code> jump to <seg>:0000 instead of 0000:7C00 </code> | ||
+ | |- valign="top" | ||
+ | | <code> swap </code> | ||
+ | | <code> swap drive numbers, if bootdisk is not fd0/hd0 </code> | ||
+ | |- valign="top" | ||
+ | | <code> hide </code> | ||
+ | | <code> hide primary partitions, except selected partition </code> | ||
+ | |- valign="top" | ||
+ | | <code> sethidden </code> | ||
+ | | <code> set the FAT/NTFS hidden sectors field </code> | ||
+ | |} | ||
Revision as of 17:00, 7 September 2012
chain.c32 is a COM32 module for Syslinux. It can chainload MBRs, partition boot sectors, Windows bootloaders (ntldr, setupldr.bin and bootmgr), MS-DOS and PC-DOS io.sys, Freedos kernel.sys, isolinux.bin (only from ISOLINUX), grldr of grub4dos or a bootsector saved to a file. It can also swap BIOS drive numbers or hide partitions.
All options as available in chain.c32 of Syslinux 3.85 (with some updates introduced in later versions):
Usage:
chain.c32 hd<disk#> [<partition>] [options] chain.c32 fd<disk#> [options] chain.c32 mbr:<id> [<partition>] [options] chain.c32 boot [<partition>] [options] chain.c32 fs [options] chain.c32 label=<label> [options] chain.c32 guid=<label> [options]
1234567890123456789
|
|
file=<loader>
|
load file, instead of boot sector
|
isolinux=<loader>
|
load another version of ISOLINUX
|
ntldr=<loader>
|
load Windows' NTLDR, SETUPLDR.BIN or BOOTMGR, or GRLDR
|
cmldr=<loader>
|
load Recovery Console of Windows NT/2K/XP
|
freedos=<loader>
|
load FreeDOS kernel.sys
|
msdos=<loader>
|
load MS-DOS (2.xx to 6.xx) io.sys
|
pcdos=<loader>
|
load PC-DOS ibmbio.com
|
reactos=<loader>
|
load ReactOS freeldr
|
grub=<loader> [grubcfg=<config>]
|
load grub legacy stage2
|
seg=<segment>
|
jump to <seg>:0000 instead of 0000:7C00
|
swap
|
swap drive numbers, if bootdisk is not fd0/hd0
|
hide
|
hide primary partitions, except selected partition
|
sethidden
|
set the FAT/NTFS hidden sectors field
|
Contents
Numbering of Drives and Partitions
Drive numbering
Hard drive numbering starts at 0:
- hd0 : first hard drive (as seen by the BIOS)
- hd1 : second hard drive
- hd2 : third hard drive
- ...
Floppy drive numbering starts at 0:
- fd0 : first floppy drive
- fd1 : second floppy drive
The drive from which Syslinux is booted can be referred to with the parameter:
- boot
The drive and partition from which Syslinux is booted can be referred to with the parameter:
- fs
Find partition by uuid or label in all GPT partitions on all available drives:
- label=label
- guid=guid
Note that label and guid works only on GPT partition tables, it is not filesystem but partition label and uuid.
Partition numbering
Partition numbers (short):
- 0 : MBR (default.)
- 1-4 : primary partitions
- 5 and higher : logical partitions
Partition numbers (long):
- 0 : MBR (default)
- 1 : first primary partition
- 2 : second primary partition
- 3 : third primary partition
- 4 : fourth primary partition
- 5 : first logical partition
- 6 : second logical partition
- 7 : third logical partition
- 8 : fourth logical partition
- 9 : fifth logical partition
- 10 : sixth logical partition
- 11 : seventh logical partition
- 12 : eighths logical partition
- ...
Examples
UI menu.c32 LABEL boot_hd0 MENU LABEL Boot from first hard drive COM32 chain.c32 APPEND hd0 LABEL boot_hd1 MENU LABEL Boot from second hard drive COM32 chain.c32 APPEND hd1 LABEL boot_fd0 MENU LABEL Boot from first floppy drive COM32 chain.c32 APPEND fd0 LABEL boot_syslinux_drive MENU LABEL Boot the drive from which Syslinux is booted (hard drive or floppy drive) COM32 chain.c32 APPEND boot LABEL boot_syslinux_filesystem MENU LABEL Boot the filesystem from which Syslinux is booted (partition in hard drive or floppy drive) COM32 chain.c32 APPEND fs LABEL boot_hd2_2 MENU LABEL Boot second primary partition from thirth hard drive COM32 chain.c32 APPEND hd2 2 LABEL boot_hd1_5 MENU LABEL Boot first logical partition from second hard drive COM32 chain.c32 APPEND hd1 5 LABEL boot_hd3_0 MENU LABEL Boot MBR of fourth hard drive (same as "APPEND hd3") COM32 chain.c32 APPEND hd3 0 LABEL boot_part_win7fs MENU LABEL Boot ntld from GPT partition labelled "win7fs" COM32 chain.c32 APPEND label=win7fs ntldr=/bootmgr
mbr:
The mbr: syntax means search all the hard disks until one with a specific MBR serial number (bytes 440-443) is found.
You can get the MBR serial number, by running the following command (change /dev/sda to the correct device):
$ hexdump -s 440 -n 4 -e '"0x%08x\n"' /dev/sda 0x0ec8694c
Or by running:
$ fdisk -l /dev/sda ... Disk identifier: 0x0ec8694c
Example:
LABEL mbr_serial COM32 chain.c32 APPEND mbr:0x0ec8694c
Options
file=<loader>
- loads the file <loader> **from the SYSLINUX filesystem** instead of loading the boot sector.
seg=<segment>
- loads at and jumps to <seg>:0000 instead of 0000:7C00.
isolinux=<loader>
- Chainload another version/build of the ISOLINUX bootloader and patch the loader with appropriate parameters in memory. This avoids the need for the -eltorito-alt-boot parameter of mkisofs, when you want more than one ISOLINUX per CD/DVD.
ntldr=<loader>
- equivalent to seg=0x2000 file=<loader> sethidden, used with WinNT's loaders
- Example loaders: NTLDR (XP, 2003), BOOTMGR (Vista, 2008, 7), GRLDR (Grub4DOS).
- See: HowTos & Linux and Windows deployment
cmldr=<loader>
- used with Recovery Console of Windows NT/2K/XP. same as ntldr=<loader> & "cmdcons\0" written to the system name field in the bootsector.
freedos=<loader>
- equivalent to seg=0x60 file=<loader> sethidden, used with FreeDOS kernel.sys.
msdos=<loader>
- equivalent to seg=0x70 file=<loader> sethidden, used with MS-DOS (v.2.xx to 6.xx)' io.sys.
pcdos=<loader>
- equivalent to seg=0x70 file=<loader> sethidden, used with PC-DOS' ibmbio.com.
reactos=<loader>
- equivalent to seg=0:0x8000:0x8100 file=<loader> setbpb nohand, used with ReactOS' freeldr. Add 'save' option so to store corrected BPB values. Supported since Syslinux v.4.05.
grub=<loader> [grubcfg=<config>]
- equivalent to seg=0x800::0x200 file=<loader> nohand nosect grub, used with grub legacy's stage2, performing additional corrections on the file in memory. Optionally, an alternate config file can be specified through the 'grubcfg=' option. Supported since Syslinux v.4.02.
swap
- if the disk is not fd0/hd0, install a BIOS stub which swaps the drive numbers.
hide
- change type of primary partitions with IDs 01, 04, 06, 07, 0b, 0c, or 0e to 1x, except for the selected partition, which is converted the other way.
sethidden
- update the "hidden sectors" (partition offset) field in a FAT/NTFS boot sector.