Difference between revisions of "ISOLINUX"

From Syslinux Wiki
Jump to: navigation, search
(Wiki formatting. Minor rewording. Add resources' links.)
m (Add Category "ISOLINUX". Wiki formatting. Update links.)
 
Line 1: Line 1:
 +
[[Category:ISOLINUX]]
 
== What is ISOLINUX? ==
 
== What is ISOLINUX? ==
 
ISOLINUX is a boot loader for Linux/i386 that operates off  
 
ISOLINUX is a boot loader for Linux/i386 that operates off  
Line 10: Line 11:
 
--> (distributed with [http://cdrecord.org cdrecord]&nbsp;1.9&nbsp;), <!--
 
--> (distributed with [http://cdrecord.org cdrecord]&nbsp;1.9&nbsp;), <!--
 
--> but 1.12 might work as well (not tested). <!--
 
--> but 1.12 might work as well (not tested). <!--
--> Binary versions for Windows can be found on the web. <!--
+
--> Binary versions for Windows can be found on the web.<!--
--> <!--
+
--><!--
-->  
+
-->  
* [[Download]] Syslinux <!--
+
* [[Download]] Syslinux<!--
--> <!--
+
--><!--
-->  
+
-->  
* Create a directory called "CD_root". This is the ISO image master file tree <!--
+
* Create a directory called "CD_root". This is the ISO image master file tree<!--
--> <!--
+
--><!--
-->  
+
-->  
** Copy all files you want to have on the CD into this directory <!--
+
** Copy all files you want to have on the CD into this directory<!--
--> <!--
+
--><!--
-->  
+
-->  
* Create a directory called "<tt>isolinux</tt>" underneath the directory "CD_root" <!--
+
* Create a directory called "<tt>isolinux</tt>" underneath the directory "CD_root"<!--
--> <!--
+
--><!--
-->  
+
-->  
** Copy "<tt>[bios/]core/isolinux.bin</tt>" from the Syslinux archive <!--
+
** Copy "<tt>[bios/]core/isolinux.bin</tt>" from the Syslinux archive<!--
--> <!--
+
--><!--
-->  
+
-->  
 
** {{V|5.00+}}For version 5.00 or newer, also copy <!--
 
** {{V|5.00+}}For version 5.00 or newer, also copy <!--
--> {{nowrap|1="<tt>[bios/]com32/elflink/ldlinux/[[Library_modules|ldlinux.c32]]</tt>"}} <!--
+
--> {{nowrap|1="<tt>[bios/]com32/elflink/ldlinux/<!--
--> from the Syslinux archive <!--
+
-->[[Library_modules|ldlinux.c32]]</tt>"}} <!--
--> <!--
+
--> from the Syslinux archive<!--
-->  
+
--><!--
** Create "[[#Path_resolution|isolinux.cfg]]" (see [[isolinux.cfg|example]]) <!--
+
-->  
--> <!--
+
** Create "[[#Path_resolution|isolinux.cfg]]" (see [[isolinux.cfg|example]])<!--
-->  
+
--><!--
* Create directories "images" and "kernel" underneath the directory "CD_root" <!--
+
-->  
--> <!--
+
* Create directories "images" and "kernel" underneath the directory "CD_root"<!--
-->  
+
--><!--
** Copy any floppy images you want to boot into "images" <!--
+
-->  
--> <!--
+
** Copy any floppy images you want to boot into "images"<!--
-->  
+
--><!--
** Copy "<tt>[bios/]memdisk/memdisk</tt>" from the Syslinux archive into "kernel" <!--
+
-->  
--> <!--
+
** Copy "<tt>[bios/]memdisk/memdisk</tt>" from the Syslinux archive into "kernel"<!--
-->  
+
--><!--
* Use the following command to create your ISO image: <!--
+
-->  
--> <!--
+
* Use the following command to create your ISO image: <!--
-->  
+
--><!--
 +
-->  
 
{|
 
{|
 
|
 
|
Line 66: Line 68:
 
--> <sup><small>&#91;[[#lnote1|1]]&#93;</small></sup>, <!--
 
--> <sup><small>&#91;[[#lnote1|1]]&#93;</small></sup>, <!--
 
--> or Joliet filenames. <!--
 
--> or Joliet filenames. <!--
--> It can still be used on a disc that uses Rock Ridge and/or Joliet extensions, of course. <!--
+
--> It can still be used on a disc <!--
 +
--> that uses Rock Ridge and/or Joliet extensions, <!--
 +
--> of course. <!--
 
--> Under Linux, you can verify the plain filenames by mounting with <!--
 
--> Under Linux, you can verify the plain filenames by mounting with <!--
--> the {{nowrap|1="<code>-o norock,nojoliet</code>"}} option of the mount command.   <!--
+
--> the {{nowrap|1="<code>-o norock,nojoliet</code>"}} <!--
--> <!--
+
--> option of the mount command.<!--
-->  
+
--><!--
 +
-->  
 
* supports ''long'' (level 2) ISO 9660 plain filenames, <!--
 
* supports ''long'' (level 2) ISO 9660 plain filenames, <!--
--> so if compatibility with {{nowrap|short-names-only}} operating systems like {{nowrap|MS-DOS}} <!--
+
--> so if compatibility with <!--
 +
--> {{nowrap|short-names-only}} operating systems like {{nowrap|MS-DOS}} <!--
 
--> is not an issue, you can use the "<tt>-l</tt>" or <!--
 
--> is not an issue, you can use the "<tt>-l</tt>" or <!--
 
--> {{nowrap|"<code>-iso-level 2</code>"}} option of <!--
 
--> {{nowrap|"<code>-iso-level 2</code>"}} option of <!--
--> mkisofs to generate long (up to 31 characters) plain filenames.   <!--
+
--> mkisofs to generate long (up to 31 characters) plain filenames.<!--
--> <!--
+
--><!--
-->  
+
-->  
 
* '''does not support''' discontiguous files, interleaved mode, <!--
 
* '''does not support''' discontiguous files, interleaved mode, <!--
 
--> or logical block and sector sizes other than 2048&nbsp;bytes. <!--
 
--> or logical block and sector sizes other than 2048&nbsp;bytes. <!--
--> This should normally not be a problem. <!--
+
--> This should normally not be a problem.<!--
--> <!--
+
--><!--
-->  
+
-->  
  
By default, ISOLINUX is built in two versions; one of them with extra debugging messages enabled.  
+
By default, ISOLINUX is built in two versions;  
 +
one of them with extra debugging messages enabled.  
 
If you are having problems with ISOLINUX,  
 
If you are having problems with ISOLINUX,  
 
please try out the debugging version {{nowrap|(<tt>isolinux-debug.bin</tt>)}}  
 
please try out the debugging version {{nowrap|(<tt>isolinux-debug.bin</tt>)}}  
Line 97: Line 104:
 
ISOLINUX resolves pathnames in the following way:
 
ISOLINUX resolves pathnames in the following way:
 
* A pathname consists of names separated by slashes, Unix-style.  
 
* A pathname consists of names separated by slashes, Unix-style.  
* A leading slash means it searches from the root directory of the ISO9660 filesystem; <!--
+
* A leading slash means <!--
 +
--> it searches from the root directory of the ISO9660 filesystem; <!--
 
--> otherwise the search is performed from the isolinux directory <!--
 
--> otherwise the search is performed from the isolinux directory <!--
 
--> (think of this as the "current [[working directory]]").  
 
--> (think of this as the "current [[working directory]]").  
Line 133: Line 141:
 
to go from ISOLINUX to SYSLINUX  
 
to go from ISOLINUX to SYSLINUX  
 
(e.g. to put the content of a bootable ISO image onto a SYSLINUX USB drive):<br />
 
(e.g. to put the content of a bootable ISO image onto a SYSLINUX USB drive):<br />
<!-- Do not use "pre" tags for the following paragraph / command -->
+
<!-- Do not use "pre" tags for the following paragraph / command  
<!-- as "pre" does not parse wiki markup -->
+
--><!-- as "pre" does not parse wiki markup -->
 
{|
 
{|
 
|
 
|
Line 150: Line 158:
 
Instead, MEMDISK is suggested for this purpose.)
 
Instead, MEMDISK is suggested for this purpose.)
  
{{V|1.65-4.04}}Starting in version {{nowrap|1=1.65<sup><small>[up to 4.04]</small></sup>,}}  
+
{{V|1.65-4.04}}Starting in version  
 +
{{nowrap|1=1.65<sup><small>[up to 4.04]</small></sup>,}}  
 
ISOLINUX supports booting disk images of other operating systems.  
 
ISOLINUX supports booting disk images of other operating systems.  
 
However, this feature depends on BIOS functionality which is apparently  
 
However, this feature depends on BIOS functionality which is apparently  
Line 194: Line 203:
 
(and some others around the same time)  
 
(and some others around the same time)  
 
from the SYSLINUX mailing list for some tips:  
 
from the SYSLINUX mailing list for some tips:  
http://www.zytor.com/pipermail/syslinux/2002-October/001135.html  
+
http://www.syslinux.org/archives/2002-October/001135.html
 +
<!-- http://www.zytor.com/pipermail/syslinux/2002-October/001135.html -->
  
 
== What to do when nothing works... ==
 
== What to do when nothing works... ==
Unfortunately, in what seems to be par for the course when dealing with contemporary BIOSes,  
+
Unfortunately,  
there are still a fair number of (mostly older) systems on which ISOLINUX simply will not work.  
+
in what seems to be par for the course when dealing with contemporary BIOSes,  
On those systems, you may want to try [http://btmgr.sourceforge.net/ Smart BootManager],  
+
there are still a fair number of (mostly older) systems  
 +
on which ISOLINUX simply will not work.  
 +
On those systems, you may want to try [http://btmgr.sf.net/ Smart BootManager],  
 
a boot floppy which contains a standalone El Torito stack.
 
a boot floppy which contains a standalone El Torito stack.
  
 
== Resources ==
 
== Resources ==
* [http://download.intel.com/support/motherboards/desktop/sb/specscdrom.pdf “El Torito” Bootable CD-ROM Format Specification]
+
* [https://web.archive.org/web/20080218195330/http://download.intel.com/support/motherboards/desktop/sb/specscdrom.pdf <!--
* [http://littlesvr.ca/isomaster/eltoritosuppl.php EL Torito Specification Supplement] from Andrew Smith.
+
-->“El Torito” Bootable CD-ROM Format Specification] (archived)<!--
* [https://www.ecma-international.org/publications/standards/Ecma-119-arch.htm ECMA-119], also approved as ISO 9660.
+
--><!--
* https://en.wikipedia.org/wiki/ISO_9660  
+
--><!-- Size: 74514 bytes, MD5: 4990872a2dfb2500efa556c3416ad709
 +
--><!--
 +
--><!-- https://web.archive.org/web/20030308015351/http://www.phoenix.com/resources/specs-cdrom.pdf
 +
--><!-- https://web.archive.org/web/20100215150606/http://www.phoenix.com/docs/specscdrom.pdf
 +
--><!-- Original sites:
 +
--><!--  “El Torito” Bootable CD-ROM Format Specification
 +
--><!-- * http://download.intel.com/support/motherboards/desktop/sb/specscdrom.pdf
 +
--><!-- * http://www.phoenix.com/resources/specs-cdrom.pdf
 +
--><!-- * http://www.phoenix.com/docs/specscdrom.pdf
 +
--><!--
 +
--><!-- Other alternatives:
 +
--><!-- * https://www.intel.com/content/dam/support/us/en/documents/motherboards/desktop/sb/specscdrom.pdf
 +
--><!--  Bootable CD-ROM Format Specification
 +
--><!--  Version 1.0, January 25, 1995,
 +
--><!--  Phoenix Technologies Ltd., and International Business Machines Corporation
 +
--><!--
 +
--><!--  Size: 51276 bytes, MD5: 120c1953052ee2559d3202f0aca75432
 +
--><!--  Same content as the original.
 +
-->
 +
* [http://littlesvr.ca/isomaster/eltoritosuppl.php <!--
 +
-->EL Torito Specification Supplement] <!--
 +
-->from Andrew Smith.
 +
* [https://www.ecma-international.org/publications/standards/Ecma-119-arch.htm <!--
 +
-->ECMA-119], <!--
 +
-->also approved as ISO 9660.
 +
* https://en.wikipedia.org/wiki/ISO_9660 <!--
 +
--><!-- http://wiki.osdev.org/ISO_9660
 +
--><!-- http://wiki.osdev.org/El-Torito
 +
-->
 +
* [http://www.gnu.org/software/xorriso/man_1_xorrisofs.html man 1 xorrisofs] <!--
 +
--> Manual of xorriso's emulation of mkisofs.
 +
* [http://www.gnu.org/software/xorriso/man_1_xorriso.html man 1 xorriso] <!--
 +
--> Manual of xorriso.
 +
* [http://schilytools.sf.net/man/man8/mkisofs.8.html man 8 mkisofs] <!--
 +
--> Manual of mkisofs, development version.<!--
 +
--><!--
 +
--><!-- * [http://cdrtools.sf.net/private/man/cdrecord/mkisofs.8.html --><!--
 +
--><!--man 8 mkisofs] --><!--
 +
--><!-- Manual of mkisofs, development version. --><!--
 +
--><!-- * [http://cdrtools.sf.net/private/man/cdrtools-3.01axx/mkisofs.8.html --><!--
 +
--><!--Manpage of mkisofs-3.01axx] --><!--
 +
--><!-- Development version 3.01axx; just for reference. --><!--
 +
--><!-- * [http://cdrtools.sf.net/private/man/mkisofs-2.0.html --><!--
 +
--><!--Manpage of mkisofs-2.0] --><!--
 +
--><!-- Old version; just for reference. --><!--
 +
--><!-- * [http://cdrtools.sf.net/private/man/mkhybrid-1.12.1.html --><!--
 +
--><!--Manpage of mkhybrid-1.12.1] --><!--
 +
--><!-- Old version; just for reference. --><!--
 +
--><!--
 +
-->
  
 
== Notes ==
 
== Notes ==

Latest revision as of 06:31, 10 October 2020

What is ISOLINUX?

ISOLINUX is a boot loader for Linux/i386 that operates off ISO 9660/El Torito CD-ROMs in "no emulation" mode. This avoids the need to create an "emulation disk image" with limited space (for "floppy emulation") or compatibility problems (for "hard disk emulation").

How Can I Make a Bootable CD With ISOLINUX?

  • Make sure you have a recent-enough version of mkisofs or equivalent. Regarding mkisofs, version 1.13 or newer is recommended (distributed with cdrecord 1.9 ), but 1.12 might work as well (not tested). Binary versions for Windows can be found on the web.
  • Download Syslinux
  • Create a directory called "CD_root". This is the ISO image master file tree
    • Copy all files you want to have on the CD into this directory
  • Create a directory called "isolinux" underneath the directory "CD_root"
    • Copy "[bios/]core/isolinux.bin" from the Syslinux archive
    • [5.00+] For version 5.00 or newer, also copy "[bios/]com32/elflink/ldlinux/ldlinux.c32" from the Syslinux archive
    • Create "isolinux.cfg" (see example)
  • Create directories "images" and "kernel" underneath the directory "CD_root"
    • Copy any floppy images you want to boot into "images"
    • Copy "[bios/]memdisk/memdisk" from the Syslinux archive into "kernel"
  • Use the following command to create your ISO image:
mkisofs -o output.iso \
   -b isolinux/isolinux.bin -c isolinux/boot.cat \
   -no-emul-boot -boot-load-size 4 -boot-info-table \
   CD_root

The file boot.cat will be automatically created.

Notes about building

ISOLINUX:

  • only uses plain ISO 9660 filenames, i.e. it does not support Rock Ridge [1], or Joliet filenames. It can still be used on a disc that uses Rock Ridge and/or Joliet extensions, of course. Under Linux, you can verify the plain filenames by mounting with the "-o norock,nojoliet" option of the mount command.
  • supports long (level 2) ISO 9660 plain filenames, so if compatibility with short-names-only operating systems like MS-DOS is not an issue, you can use the "-l" or "-iso-level 2" option of mkisofs to generate long (up to 31 characters) plain filenames.
  • does not support discontiguous files, interleaved mode, or logical block and sector sizes other than 2048 bytes. This should normally not be a problem.

By default, ISOLINUX is built in two versions; one of them with extra debugging messages enabled. If you are having problems with ISOLINUX, please try out the debugging version (isolinux-debug.bin) and report the results.

Isohybrid

Although disk storage devices are usually booted via SYSLINUX, there is an isohybrid feature, which makes the ISO bootable from such devices (e.g. USB stick), in addition to DVD.

Path resolution

ISOLINUX resolves pathnames in the following way:

  • A pathname consists of names separated by slashes, Unix-style.
  • A leading slash means it searches from the root directory of the ISO9660 filesystem; otherwise the search is performed from the isolinux directory (think of this as the "current working directory").
  • The maximum length of any pathname is 255 characters.

Support for relative notation directory paths using dots (periods), such as "." and "..", was initially introduced in version 4.02 and improved in 4.06.

ISOLINUX will search for the config file directory in the order /boot/isolinux, /isolinux, /.

[-3.86] The first directory that exists is used, even if it contains no files. Therefore, please make sure that these directories do not exist if you don't want ISOLINUX to use them.

[4.02+] ISOLINUX will also search for the config file in the respective SYSLINUX directories, and will search for either isolinux.cfg or syslinux.cfg files. The "/[boot/]isolinux/" directories and the isolinux.cfg file will take precedence over their respective syslinux alternatives when using ISOLINUX to boot. In other words, "/[boot/]syslinux/" and syslinux.cfg are now generic terms and valid when booting with ISOLINUX.

See also "Working directory", "Configuration location and name" and Syslinux configuration file.

Tip:
Since [4.06+] , locating the bootloader files under the "/[boot/]syslinux/" directory (instead of using the "/[boot/]isolinux/" directory) can simplify the procedure to go from ISOLINUX to SYSLINUX (e.g. to put the content of a bootable ISO image onto a SYSLINUX USB drive):

mkisofs -o output.iso \
  -b syslinux/isolinux.bin -c syslinux/boot.cat \
  -no-emul-boot -boot-load-size 4 -boot-info-table \
  CD_root

Can I boot other operating systems with ISOLINUX?

( Note: In Syslinux 4.05, the ".img" support has been removed from ISOLINUX. Instead, MEMDISK is suggested for this purpose.)

[1.65-4.04] Starting in version 1.65[up to 4.04], ISOLINUX supports booting disk images of other operating systems. However, this feature depends on BIOS functionality which is apparently broken in a very large number of BIOSes. Therefore, this may not work on any particular system. No direct workaround is possible; if you find that it doesn't work, please complain to your vendor and indicate that "BIOS INT 13h AX=4C00h fails". Note that you can use MEMDISK as a recommended alternative; MEMDISK is not affected by this problem, but limits the size of the disk images, since it has to load them into memory.

To boot DOS, or other real-mode operating systems (protected-mode operating systems may or may not work correctly) using ISOLINUX, you need to prepare a disk image (usually a floppy image, but a hard disk image can be used on most systems) with the relevant operating system. This file should be included on the CD-ROM in the /isolinux/ (or /syslinux/) directory, and have an ".img" extension. The ".img" extension does not have to be specified on the command line, but has to be explicitly specified if used in a kernel statement in isolinux.cfg.

For a floppy image, the size of the image should be exactly one of the following:

 1,222,800 bytes   1200K floppy (standard 5.25") 
 1,474,560 bytes   1440K floppy (standard 3.5") 
 2,949,120 bytes   2880K floppy (enhanced 3.5") 

Any other size is assumed to be a hard disk image. In order to work on as many systems as possible, a hard disk image should have exactly one partition, marked active, that covers the entire size of the disk image file. Even so, hard disk images are not supported on all BIOSes.

ISOLINUX and Windows install disks

ISOLINUX supports the use of so-called "CD-ROM boot sectors", which are used primarily by Microsoft Windows NT (including 2000 and XP). "CD-ROM boot sectors" need to end in the extension ".bin". Some people have used this together with Windows install disks to create Windows/Linux combination install CDs.

Please see the following message (and some others around the same time) from the SYSLINUX mailing list for some tips: http://www.syslinux.org/archives/2002-October/001135.html

What to do when nothing works...

Unfortunately, in what seems to be par for the course when dealing with contemporary BIOSes, there are still a fair number of (mostly older) systems on which ISOLINUX simply will not work. On those systems, you may want to try Smart BootManager, a boot floppy which contains a standalone El Torito stack.

Resources

Notes

  • 1. ^ [6.03+] ISOLINUX supports Rock Ridge (too) since version 6.03.