[syslinux] Module Versioning

Pete Batard pete at akeo.ie
Mon Mar 7 06:00:51 PST 2016


On 2016.03.06 23:25, Shao Miller via Syslinux wrote:
> Having typed that, perhaps we could discuss your (or Rufus') specific
> needs, in parallel?

I think that is probably worthwhile, as I wouldn't mind having a second 
opinion from Syslinux developers on whether my current ISO -> USB 
conversion process could be improved.

> Do I understand correctly that the primary
> challenges with Syslinux versions come from the fact that you are taking
> some Syslinux pieces from an .ISO and hoping to implement them on a USB
> disk?  If so, what is it that leads you to the need to download
> corresponding COMBOOT32 modules for a particular Syslinux?  Are they not
> in the ISO?

It's probably best to use a real-life example for that, so, since I was 
talking about tails before, I'm going to use the tails-i386-2.0.1.iso to 
illustrate what I'm currently doing in Rufus. I'll skip the EFI part of 
tails (that uses grub/EFI) to talk only about the BIOS/Syslinux part.

If you look at the /isolinux/ directory from that ISO (the content of 
which you can also see in the attached log), you see that it contains an 
'isolinux.bin', along with an 'isolinux.cfg' as well as a set of 
modules, including 'ldlinux.c32', 'vesamenu.c32' and so on. Also, if you 
look at the content of 'isolinux.bin' on that ISO, you'll see that it 
identifies itself as "ISOLINUX 6.03 20150819", which presumably means 
that it's the official 6.03 Syslinux release (as that was released in 
October 2014), with possibly a few custom patches added, or at the very 
least, the version string customized to say YYYYMMDD. I have to say I 
haven't really tried to look at how tails are compiling the Syslinux 
binaries they use, but one thing I know is that even if they are using a 
pre-release, the only version you'll get from a tails 'isolinux.bin' is 
"major.minor YYYYMMDD", with no explicit mention of the pre level 
(unlike what is the case with the official Syslinux pre binaries).

Now, as you probably expect, the first thing Rufus does to convert an 
ISO to USB is extract all the files from that ISO, using the same 
directory structure, onto a FAT32 formatted USB.

Obviously, 'isolinux.bin', which I understand is the part that the 
El-Torito image calls, that loads the main 'ldlinux.c32' module, and 
then processes the config file and loading of additional modules, is 
designed for CD boot only and cannot be reused for USB-HDD boot 
purposes, which is what we need.

So, one thing Rufus will need to do is find a "replacement" part, that 
serves the same purpose as 'isolinux.bin', but that is compatible with 
USB-HDD boot. And as far as I know, the only replacement we can use here 
is 'ldlinux.sys', which, since we cannot get it from the ISO, we have to 
get from somewhere else.

So, one way of doing that, is embed the required 'ldlinux.sys' in Rufus, 
which we actually do for the 6.03 release. Then, if as part of your 
ISO->USB conversion process you install both this embedded 'ldlinux.sys' 
along with the Syslinux MBR, you may expect your USB to boot.

The one last thing required at that stage is create a 'syslinux.cfg' on 
the root of your drive, that calls on 'isolinux/isolinux.cfg', as follows:

---------------------------------------------------------------------
DEFAULT loadconfig

LABEL loadconfig
   CONFIG /isolinux/isolinux.cfg
   APPEND /isolinux/
---------------------------------------------------------------------

So, installing an 'ldlinux.sys' and creating a new config file (if 
required) is the essence of what Rufus does when converting an Isolinux 
bootable image to a Syslinux bootable USB drive.


*HOWEVER*, this only works provided the 'ldlinux.sys' we install is 
compatible with the 'ldlinux.c32' and the other modules that are present 
on the ISO, which as I mentioned previously, is not something that is 
expected hold true between different major.minor versions of Syslinux, 
or even between the same major.minor, but different pre versions of 
Syslinux, and this is where versioning comes into play...

That is because, as far as I know, and ever since the 5.x branch, 
'ldlinux.sys' and 'ldlinux.c32' are set to form a close binary system, 
and aren't really designed for "mix-n-match". So (and this is what we 
empirically found out with tails) trying to use a 6.03-pre19 
'ldlinux.sys' with a 6.03-pre1 'ldlinux.c32' module will produce an 
error for instance. And even if 'ldlinux.c32' was to work, there's no 
guarantee that other modules will...

One solution to avoid that would be to embed in Rufus all possible .c32 
modules from Syslinux, alongside with the 'ldlinux.sys' version we have, 
and replace them on the USB. This is not very realistic however (the 
application size would explode, and as more version of Syslinux get 
releases, we'd have more modules to embed), meaning that, instead of 
trying to provide our own modules, we should try to find a way to 
identify an 'ldlinux.sys' binary that matches the version (including the 
pre level) of the Isolinux that is present on the ISO, and provide that.

Considering that we already have a server, and the ability to download 
files from it from within Rufus, getting an 'ldlinux.sys' shouldn't be 
too much of an issue. So the problem is with making sure we pick the 
right binary.

Now, as far as I could see, the .c32 modules are compressed and, until 
fairly recently (which means that this wasn't the case when I was 
devising this solution), there was no decompression support in Rufus. So 
this means that, unless there's a specific _uncompressed_ location in 
the .c32 modules (preferably 'ldlinux.c32' since that's the one that 
should always be present) where we can fetch a full Syslinux version 
(including the pre #), we'll need to process the one uncompressed binary 
we have at our disposal that contains a version, and that is 'isolinux.bin'.

When using official binaries/unmodified source, this version will be set 
to something like "ISOLINUX 6.03 2014-10-06" (release) or "ISOLINUX 6.03 
pre20" (pre). So this is what we'll use in Rufus to identify the 
matching version of the 'ldlinux.sys' we should fetch, and in parallel, 
we make sure that we create a set of matching /syslinux-6.03/2014-10-06/ 
and syslinux-6.03/pre20/ on our server, with the relevant 'ldlinux.sys' 
binaries.

Or, to be more precise, the way the download actually works is as follows:
1. Split the version we got from 'isolinux.bin' in 2 parts: 
'<major>.<minor>' and '<additional>'
2. Look for a "/syslinux-<major>.<minor>/<additional>/ldlinux.sys" file 
on the server.
3. If this file exists, use that.
4. If the file doesn't exists (404), fallback one directory up to look 
for a "/syslinux-<major>.<minor>/ldlinux.sys" file and use that.
(NB: We also download the .bss we use through same process, just in case)

The benefits of doing it this way are that:
1. We can effortlessly become compatible with yet-to-be-released 
versions of Syslinux, by installing the new files on the server, on 
release day.
2. There's a reasonable chance that even if someone modifies the 
additional version part, we'll manage to download a compatible version, 
as they're likely to use a release or latest pre, and the fallback 
should either pick the release or most recent pre.
3. We can use symbolic links to address corner cases we know of or that 
are reported to us.

With regards to #3, this is useful in the case of the '20131220' extra 
version that was used on the tails 1.1 ISO, as, at the time, the most 
recent 6.03 pre was pre19, whereas the version used by tails was closer 
to pre1 (since pre2 was released after 20131220). After having found 
that the 6.03-pre19 'ldlinux.sys' fallback binary from our server was 
incompatible with tails 1.1, all that was needed to make it work was 
create a 20131220 symbolic link that pointed to pre1 (see 
http://rufus.akeo.ie/files/syslinux-6.03/).


I know this is a pretty long overview, but I hope this gives a 
comprehensive idea of the conversion process being used by Rufus, and 
how this relates to Syslinux versioning.

I am also attaching a typical rufus.log, where you can see some of the 
elements I described above, such as the version detection:
---------------------------------------------------------------------
ISO analysis:
   Image is an ISO9660 image
   Will use '/isolinux/isolinux.cfg' for Syslinux
   Detected Syslinux version: 6.03/20150819 (from '/EFI/BOOT/isolinux.bin')
---------------------------------------------------------------------
Download of 'ldlinux.sys' (and ldlinux.bss) from the server, with fallback:
---------------------------------------------------------------------
Downloading 'ldlinux.sys' from 
http://rufus.akeo.ie/files/syslinux-6.03/20150819/ldlinux.sys
Unable to access file: 404
Extended version was not found, trying main version
Downloading 'ldlinux.sys' from 
http://rufus.akeo.ie/files/syslinux-6.03/ldlinux.sys
File length: 68599 bytes
Successfully downloaded 'ldlinux.sys'
Downloading 'ldlinux.bss' from 
http://rufus.akeo.ie/files/syslinux-6.03/20150819/ldlinux.bss
Unable to access file: 404
Extended version was not found, trying main version
Downloading 'ldlinux.bss' from 
http://rufus.akeo.ie/files/syslinux-6.03/ldlinux.bss
File length: 512 bytes
Successfully downloaded 'ldlinux.bss'
---------------------------------------------------------------------

Now, I'll be the first to reckon that there are some elements in that 
process that are rather fragile (relying on 'isolinux.bin' to provide us 
with the version, or trying to match a custom version string with a pre 
level) so it's likely that some things that could be improved. But I 
have to say this process does seem to have worked fairly well so far.

And to come back to the original topic, that deals with improving 
versioning in Syslinux, my one wish for would be to have a way to always 
locate an actual "pre" number, even if the user changed the version 
string, in an uncompressed part of an Isolinux binary (be it 
'isolinux.bin' or 'ldlinux.sys'). Or maybe that's something that's 
already possible, but that I'm not aware of...

Regards,

/Pete


PS: One thing that would be awesome for Rufus is if, in a future version 
of Syslinux, 'isolinux.bin' and 'ldlinux.sys' could be merged into a 
single binary, with a different behaviour for CD and USB-HDD boot (which 
I suppose should be doable since I expect the El-Torito initial loader 
to be able to provide some kind of parameter, that would tell this dual 
binary whether to start executing CD mode). This way, users would no 
longer have to download anything, and all Rufus (or other tools) would 
have to do when converting an ISO to USB, would be to reuse the 
'isolinux.bin' already present as an 'ldlinux.sys', and that would also 
take care of all the module incompatibility issue.
I may actually try to look into that, but this is another "if I ever 
find the time" thing...
-------------- next part --------------
Rufus version: 2.7.855
Windows version: Windows 10 64-bit (Build 10586)
Syslinux versions: 4.07/2013-07-25, 6.03/2014-10-06
Grub versions: 0.4.6a, 2.02~beta2
Locale ID: 0x0809
Found USB 3.0 device 'Kingmax Kingmax USB Device' (1687:0903)
1 device found
No volume information for drive 0x87
Disk type: Removable, Sector Size: 512 bytes
Cylinders: 3951, TracksPerCylinder: 255, SectorsPerTrack: 63
Partition type: MBR, NB Partitions: 1
Disk ID: 0x00000001
Drive does not have an x86 Master Boot Record
Partition 1:
  Type: Small FAT16 (0x04)
  Size: 30.3 GB (32505856000 bytes)
  Start Sector: 0, Boot: No, Recognized: Yes
Scanning image...
ISO analysis:
  Image is an ISO9660 image
  Will use '/isolinux/isolinux.cfg' for Syslinux
  Detected Syslinux version: 6.03/20150819 (from '/EFI/BOOT/isolinux.bin')
Disk image analysis:
  Image has an unknown Master Boot Record
  Image is a bootable disk image
ISO label: 'TAILS 2.0.1 - 20160212'
  Size: 1135089664 bytes
  Has a >64 chars filename: No
  Has Symlinks: No
  Has a >4GB file: No
  Uses Bootmgr: No
  Uses EFI: Yes
  Uses Grub 2: No
  Uses Grub4DOS: No
  Uses isolinux: Yes (6.03)
  Uses KolibriOS: No
  Uses ReactOS: No
  Uses WinPE: No
Using image: tails-i386-2.0.1.iso
Downloading 'ldlinux.sys' from http://rufus.akeo.ie/files/syslinux-6.03/20150819/ldlinux.sys
Unable to access file: 404
Extended version was not found, trying main version
Downloading 'ldlinux.sys' from http://rufus.akeo.ie/files/syslinux-6.03/ldlinux.sys
File length: 68599 bytes
Successfully downloaded 'ldlinux.sys'
Downloading 'ldlinux.bss' from http://rufus.akeo.ie/files/syslinux-6.03/20150819/ldlinux.bss
Unable to access file: 404
Extended version was not found, trying main version
Downloading 'ldlinux.bss' from http://rufus.akeo.ie/files/syslinux-6.03/ldlinux.bss
File length: 512 bytes
Successfully downloaded 'ldlinux.bss'

Format operation started
Requesting disk access...
Opened drive \\.\PHYSICALDRIVE7 for write access
No drive letter was assigned...
Will use 'F:' as volume mountpoint
No logical drive found (unpartitioned?)
Drive does not appear to be partitioned
Analyzing existing boot records...
Drive does not have an x86 Master Boot Record
Deleting partitions...
Clearing MBR/PBR/GPT structures...
Erasing 128 sectors
Partitioning (MBR)...
Waiting for logical drive to reappear...
Formatting (FAT32)...
Using cluster size: 16384 bytes
Quick format was selected
Creating file system...
Format completed.
Writing master boot record...
Drive has a Zeroed Master Boot Record
Partition is already FAT32 LBA...
Set bootable USB partition as 0x80
Using Syslinux MBR
Found volume GUID \\?\Volume{ea031c1e-408f-11e5-8318-fcaa14e7bd8e}\
Installing Syslinux 6.03...
Using existing './rufus_files/syslinux-6.03/20150819/ldlinux.sys'
Using existing './rufus_files/syslinux-6.03/20150819/ldlinux.bss'
Successfully wrote 'ldlinux.sys'
Opened drive \\?\Volume{ea031c1e-408f-11e5-8318-fcaa14e7bd8e} for write access
Successfully wrote Syslinux boot record
Successfully remounted Volume{ea031c1e-408f-11e5-8318-fcaa14e7bd8e}\ on F:\
Copying ISO files...
Extracting files...
libcdio: Found Extension: Joliet Level 3
Image is an ISO9660 image
This image will be extracted using Joliet extensions (if present)
Extracting: F:\.disk\archive_trace (1 bytes)
Extracting: F:\.disk\info (79 bytes)
Extracting: F:\EFI\BOOT\bootia32.efi (294.5 KB)
Extracting: F:\EFI\BOOT\bootx64.efi (172.4 KB)
Extracting: F:\EFI\BOOT\bootx64.png (7.1 KB)
Extracting: F:\EFI\BOOT\cat.c32 (2.3 KB)
Extracting: F:\EFI\BOOT\chain.c32 (27.8 KB)
Extracting: F:\EFI\BOOT\cmd.c32 (1.8 KB)
Extracting: F:\EFI\BOOT\cmenu.c32 (5.1 KB)
Extracting: F:\EFI\BOOT\config.c32 (2.1 KB)
Extracting: F:\EFI\BOOT\cptime.c32 (5.2 KB)
Extracting: F:\EFI\BOOT\cpu.c32 (5.5 KB)
Extracting: F:\EFI\BOOT\cpuid.c32 (2.4 KB)
Extracting: F:\EFI\BOOT\cpuidtest.c32 (3.5 KB)
Extracting: F:\EFI\BOOT\debug.c32 (2.2 KB)
Extracting: F:\EFI\BOOT\dhcp.c32 (5.3 KB)
Extracting: F:\EFI\BOOT\disk.c32 (2.7 KB)
Extracting: F:\EFI\BOOT\dmi.c32 (9.9 KB)
Extracting: F:\EFI\BOOT\dmitest.c32 (13.4 KB)
Extracting: F:\EFI\BOOT\elf.c32 (4.2 KB)
Extracting: F:\EFI\BOOT\ethersel.c32 (3.7 KB)
Extracting: F:\EFI\BOOT\f1.txt (841 bytes)
Extracting: F:\EFI\BOOT\f10.txt (728 bytes)
Extracting: F:\EFI\BOOT\f2.txt (424 bytes)
Extracting: F:\EFI\BOOT\f3.txt (597 bytes)
Extracting: F:\EFI\BOOT\f4.txt (357 bytes)
Extracting: F:\EFI\BOOT\f5.txt (807 bytes)
Extracting: F:\EFI\BOOT\f6.txt (1.1 KB)
Extracting: F:\EFI\BOOT\f7.txt (933 bytes)
Extracting: F:\EFI\BOOT\f8.txt (181 bytes)
Extracting: F:\EFI\BOOT\f9.txt (747 bytes)
Extracting: F:\EFI\BOOT\gfxboot.c32 (13.1 KB)
Extracting: F:\EFI\BOOT\gpxecmd.c32 (2.3 KB)
Extracting: F:\EFI\BOOT\grub\grub.cfg (413 bytes)
Extracting: F:\EFI\BOOT\grub\i386-efi\acpi.mod (9.8 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\adler32.mod (1.3 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\ahci.mod (15.4 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\all_video.mod (712 bytes)
Extracting: F:\EFI\BOOT\grub\i386-efi\aout.mod (1.1 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\appleldr.mod (3.1 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\archelp.mod (3.1 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\at_keyboard.mod (4.2 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\ata.mod (5.7 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\backtrace.mod (1.7 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\bfs.mod (7.4 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\bitmap.mod (2.4 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\bitmap_scale.mod (3.6 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\blocklist.mod (2.3 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\boot.mod (2.1 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\bsd.mod (29.6 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\btrfs.mod (14.5 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\bufio.mod (2.2 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\cat.mod (3.0 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\cbfs.mod (3.9 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\cbls.mod (3.6 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\cbmemc.mod (2.4 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\cbtable.mod (1.1 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\cbtime.mod (2.6 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\chain.mod (5.2 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\cmdline_cat_test.mod (3.1 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\cmp.mod (2.1 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\command.lst (3.6 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\cpio.mod (2.8 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\cpio_be.mod (2.9 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\cpuid.mod (1.8 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\crc64.mod (1.7 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\crypto.lst (936 bytes)
Extracting: F:\EFI\BOOT\grub\i386-efi\crypto.mod (5 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\cryptodisk.mod (9.9 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\cs5536.mod (3.9 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\date.mod (2.2 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\datehook.mod (1.8 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\datetime.mod (1.2 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\disk.mod (2.4 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\diskfilter.mod (10.0 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\div_test.mod (3.8 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\dm_nv.mod (1.9 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\echo.mod (2 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\efi_gop.mod (7.9 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\efi_uga.mod (4.6 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\efifwsetup.mod (1.6 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\efinet.mod (3.3 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\ehci.mod (15.5 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\elf.mod (5.2 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\eval.mod (1.5 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\exfat.mod (5.6 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\exfctest.mod (1.5 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\ext2.mod (5.7 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\extcmd.mod (4.6 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\fat.mod (5.7 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\file.mod (16.1 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\fixvideo.mod (2.0 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\font.mod (12.5 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\fs.lst (214 bytes)
Extracting: F:\EFI\BOOT\grub\i386-efi\fshelp.mod (2.6 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\gcry_arcfour.mod (1.7 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\gcry_blowfish.mod (8.0 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\gcry_camellia.mod (33.4 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\gcry_cast5.mod (16.3 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\gcry_crc.mod (3.0 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\gcry_des.mod (19 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\gcry_dsa.mod (2.4 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\gcry_idea.mod (3.0 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\gcry_md4.mod (3.2 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\gcry_md5.mod (3.8 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\gcry_rfc2268.mod (2.4 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\gcry_rijndael.mod (18.6 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\gcry_rmd160.mod (8.0 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\gcry_rsa.mod (2.1 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\gcry_seed.mod (15.1 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\gcry_serpent.mod (15.9 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\gcry_sha1.mod (7.4 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\gcry_sha256.mod (4.3 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\gcry_sha512.mod (9.2 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\gcry_tiger.mod (12.5 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\gcry_twofish.mod (36.7 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\gcry_whirlpool.mod (24.4 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\gdb.mod (24.8 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\geli.mod (5.8 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\gettext.mod (5 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\gfxmenu.mod (40.7 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\gfxterm.mod (10.0 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\gfxterm_background.mod (2.9 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\gfxterm_menu.mod (5.0 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\gptsync.mod (3.8 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\halt.mod (3.9 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\hashsum.mod (5.3 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\hdparm.mod (7.2 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\help.mod (2.6 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\hexdump.mod (3.2 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\hfs.mod (7.2 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\hfsplus.mod (7.7 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\hfspluscomp.mod (3.2 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\http.mod (5.9 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\iorw.mod (2.9 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\iso9660.mod (8.7 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\jfs.mod (6.1 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\jpeg.mod (6.2 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\keylayouts.mod (5.0 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\keystatus.mod (2 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\ldm.mod (6.6 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\legacy_password_test.mod (14.2 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\legacycfg.mod (30.3 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\linux16.mod (8 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\linuxefi.mod (6.2 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\loadbios.mod (3.1 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\loadenv.mod (6 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\loopback.mod (3.1 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\ls.mod (4.2 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\lsacpi.mod (4.8 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\lsefi.mod (3.6 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\lsefimmap.mod (2.5 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\lsefisystab.mod (2.5 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\lsmmap.mod (1.9 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\lspci.mod (4.8 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\lssal.mod (2.7 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\luks.mod (6.6 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\lvm.mod (6.9 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\lzopio.mod (8.8 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\macbless.mod (3.4 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\macho.mod (7.6 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\mdraid09.mod (2 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\mdraid09_be.mod (2.1 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\mdraid1x.mod (2 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\memdisk.mod (2.1 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\memrw.mod (2.9 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\minicmd.mod (3.5 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\minix2.mod (3.6 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\minix2_be.mod (3.8 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\minix3.mod (3.6 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\minix3_be.mod (3.7 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\minix_be.mod (3.6 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\mmap.mod (6.7 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\moddep.lst (4.7 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\morse.mod (2.4 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\mpi.mod (28.6 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\msdospart.mod (2.5 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\multiboot.mod (12 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\multiboot2.mod (13.3 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\nativedisk.mod (4.2 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\net.mod (46.9 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\newc.mod (3 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\normal.mod (117.8 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\ntfs.mod (9.9 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\ntfscomp.mod (4.4 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\odc.mod (2.9 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\offsetio.mod (1.6 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\ohci.mod (10.3 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\part_acorn.mod (1.7 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\part_amiga.mod (1.9 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\part_apple.mod (2.1 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\part_bsd.mod (2.9 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\part_dfly.mod (1.8 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\part_dvh.mod (1.5 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\part_msdos.mod (2.3 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\part_plan.mod (1.8 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\part_sun.mod (1.6 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\part_sunpc.mod (1.7 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\partmap.lst (111 bytes)
Extracting: F:\EFI\BOOT\grub\i386-efi\parttool.lst (17 bytes)
Extracting: F:\EFI\BOOT\grub\i386-efi\parttool.mod (4.9 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\password.mod (2.0 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\password_pbkdf2.mod (2.9 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\pata.mod (4.8 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\pbkdf2.mod (1.5 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\pbkdf2_test.mod (2.2 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\pcidump.mod (2.5 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\play.mod (2.5 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\png.mod (7.4 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\priority_queue.mod (1.7 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\probe.mod (2.7 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\procfs.mod (2.2 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\progress.mod (2.1 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\raid5rec.mod (1.4 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\raid6rec.mod (2.2 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\read.mod (1.5 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\reboot.mod (1.8 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\regexp.mod (52.0 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\reiserfs.mod (8.8 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\relocator.mod (17.7 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\romfs.mod (4.3 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\scsi.mod (4.7 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\serial.mod (9 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\setjmp.mod (708 bytes)
Extracting: F:\EFI\BOOT\grub\i386-efi\setjmp_test.mod (1.7 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\setpci.mod (5.3 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\signature_test.mod (6.4 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\sleep.mod (2.3 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\sleep_test.mod (2.4 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\spkmodem.mod (2.1 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\squash4.mod (7.0 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\syslinuxcfg.mod (18.1 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\terminal.lst (162 bytes)
Extracting: F:\EFI\BOOT\grub\i386-efi\terminal.mod (4.6 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\terminfo.mod (11.8 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\test.mod (5.4 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\test_blockarg.mod (1.4 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\testload.mod (2.8 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\testspeed.mod (2.4 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\tftp.mod (5.4 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\tga.mod (4.5 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\time.mod (1.6 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\tr.mod (2.5 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\trig.mod (1.7 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\true.mod (1.3 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\udf.mod (7.9 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\ufs1.mod (5.4 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\ufs1_be.mod (5.9 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\ufs2.mod (5.4 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\uhci.mod (6.7 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\usb.mod (10.5 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\usb_keyboard.mod (3.9 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\usbms.mod (6.9 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\usbserial_common.mod (2.1 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\usbserial_ftdi.mod (2.4 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\usbserial_pl2303.mod (2.7 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\usbserial_usbdebug.mod (1.6 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\usbtest.mod (3.6 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\verify.mod (11.8 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\video.lst (41 bytes)
Extracting: F:\EFI\BOOT\grub\i386-efi\video.mod (6.4 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\video_bochs.mod (5.6 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\video_cirrus.mod (5.9 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\video_colors.mod (5.6 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\video_fb.mod (21.1 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\videoinfo.mod (3.9 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\videotest.mod (4.1 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\videotest_checksum.mod (2.4 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\xfs.mod (6.3 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\xnu.mod (26.9 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\xnu_uuid.mod (2.2 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\xnu_uuid_test.mod (2.1 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\xzio.mod (16.0 KB)
Extracting: F:\EFI\BOOT\grub\i386-efi\zfscrypt.mod (5.5 KB)
Extracting: F:\EFI\BOOT\hdt.c32 (183.4 KB)
Extracting: F:\EFI\BOOT\hexdump.c32 (4.7 KB)
Extracting: F:\EFI\BOOT\host.c32 (2.6 KB)
Extracting: F:\EFI\BOOT\ifcpu.c32 (4.8 KB)
Extracting: F:\EFI\BOOT\ifcpu64.c32 (2.4 KB)
Extracting: F:\EFI\BOOT\ifmemdsk.c32 (5.6 KB)
Extracting: F:\EFI\BOOT\ifplop.c32 (2.6 KB)
Extracting: F:\EFI\BOOT\isolinux.bin (40 KB)
Extracting: F:\EFI\BOOT\isolinux.cfg (261 bytes)
Duplicated F:\EFI\BOOT\isolinux.cfg to F:\EFI\BOOT\syslinux.cfg
Extracting: F:\EFI\BOOT\kbdmap.c32 (2.4 KB)
Extracting: F:\EFI\BOOT\kontron_wdt.c32 (6.1 KB)
Extracting: F:\EFI\BOOT\ldlinux.c32 (113.9 KB)
Extracting: F:\EFI\BOOT\ldlinux.e64 (131.5 KB)
Extracting: F:\EFI\BOOT\lfs.c32 (6.9 KB)
Extracting: F:\EFI\BOOT\libcom32.c32 (193.1 KB)
Extracting: F:\EFI\BOOT\libgpl.c32 (86.8 KB)
Extracting: F:\EFI\BOOT\liblua.c32 (119 KB)
Extracting: F:\EFI\BOOT\libmenu.c32 (27.1 KB)
Extracting: F:\EFI\BOOT\libutil.c32 (24 KB)
Extracting: F:\EFI\BOOT\linux.c32 (6.0 KB)
Extracting: F:\EFI\BOOT\live.cfg (1.3 KB)
Extracting: F:\EFI\BOOT\live486.cfg (615 bytes)
Extracting: F:\EFI\BOOT\liveamd64.cfg (619 bytes)
Extracting: F:\EFI\BOOT\ls.c32 (3.8 KB)
Extracting: F:\EFI\BOOT\lua.c32 (8.6 KB)
Extracting: F:\EFI\BOOT\mboot.c32 (11.8 KB)
Extracting: F:\EFI\BOOT\meminfo.c32 (3.2 KB)
Extracting: F:\EFI\BOOT\menu.c32 (31.0 KB)
Extracting: F:\EFI\BOOT\menu.cfg (111 bytes)
Extracting: F:\EFI\BOOT\pci.c32 (4.5 KB)
Extracting: F:\EFI\BOOT\pcitest.c32 (4.4 KB)
Extracting: F:\EFI\BOOT\pmload.c32 (4.0 KB)
Extracting: F:\EFI\BOOT\poweroff.c32 (2.3 KB)
Extracting: F:\EFI\BOOT\prdhcp.c32 (3.9 KB)
Extracting: F:\EFI\BOOT\pwd.c32 (2.2 KB)
Extracting: F:\EFI\BOOT\pxechn.c32 (14.6 KB)
Extracting: F:\EFI\BOOT\reboot.c32 (1.9 KB)
Extracting: F:\EFI\BOOT\rosh.c32 (16.6 KB)
Extracting: F:\EFI\BOOT\sanboot.c32 (2.3 KB)
Extracting: F:\EFI\BOOT\sdi.c32 (3.9 KB)
Extracting: F:\EFI\BOOT\splash.png (4.1 KB)
Extracting: F:\EFI\BOOT\stdmenu.cfg (509 bytes)
Extracting: F:\EFI\BOOT\sysdump.c32 (18.5 KB)
Extracting: F:\EFI\BOOT\syslinux.c32 (10.1 KB)
Extracting: F:\EFI\BOOT\tails.cfg (219 bytes)
Extracting: F:\EFI\BOOT\vesa.c32 (4.2 KB)
Extracting: F:\EFI\BOOT\vesainfo.c32 (2.9 KB)
Extracting: F:\EFI\BOOT\vesamenu.c32 (31.6 KB)
Extracting: F:\EFI\BOOT\vpdtest.c32 (2.5 KB)
Extracting: F:\EFI\BOOT\whichsys.c32 (3.3 KB)
Extracting: F:\EFI\BOOT\zzjson.c32 (5.2 KB)
Extracting: F:\isolinux\boot.cat (2 KB)
Extracting: F:\isolinux\f1.txt (841 bytes)
Extracting: F:\isolinux\f10.txt (728 bytes)
Extracting: F:\isolinux\f2.txt (424 bytes)
Extracting: F:\isolinux\f3.txt (597 bytes)
Extracting: F:\isolinux\f4.txt (357 bytes)
Extracting: F:\isolinux\f5.txt (807 bytes)
Extracting: F:\isolinux\f6.txt (1.1 KB)
Extracting: F:\isolinux\f7.txt (933 bytes)
Extracting: F:\isolinux\f8.txt (181 bytes)
Extracting: F:\isolinux\f9.txt (747 bytes)
Extracting: F:\isolinux\ifcpu64.c32 (1.7 KB)
Extracting: F:\isolinux\isolinux.bin (40 KB)
Extracting: F:\isolinux\isolinux.cfg (261 bytes)
Extracting: F:\isolinux\ldlinux.c32 (113.9 KB)
Extracting: F:\isolinux\libcom32.c32 (178.3 KB)
Extracting: F:\isolinux\libutil.c32 (22.9 KB)
Extracting: F:\isolinux\live.cfg (1.3 KB)
Extracting: F:\isolinux\live486.cfg (615 bytes)
Extracting: F:\isolinux\liveamd64.cfg (619 bytes)
Extracting: F:\isolinux\menu.cfg (111 bytes)
Extracting: F:\isolinux\splash.png (4.1 KB)
Extracting: F:\isolinux\stdmenu.cfg (508 bytes)
Extracting: F:\isolinux\tails.cfg (219 bytes)
Extracting: F:\isolinux\vesamenu.c32 (25.6 KB)
Extracting: F:\live\Tails.module (20 bytes)
Extracting: F:\live\filesystem.packages (49.8 KB)
Extracting: F:\live\filesystem.squashfs (1 GB)
Extracting: F:\live\initrd.img (15.3 MB)
Extracting: F:\live\initrd2.img (15.5 MB)
Extracting: F:\live\vmlinuz (2.7 MB)
Extracting: F:\live\vmlinuz2 (3.0 MB)
Extracting: F:\utils\linux\syslinux (191.2 KB)
Extracting: F:\utils\mbr\mbr.bin (440 bytes)
Extracting: F:\utils\win32\syslinux.exe (238 KB)
Created: F:\syslinux.cfg
Finalizing, please wait...
Created: F:autorun.inf
Created: F:autorun.ico

Found USB 3.0 device 'Kingmax Kingmax USB Device' (1687:0903)
Using autorun.inf label for drive F: 'TAILS 2.0.1 - 20160212'
1 device found
Disk type: Removable, Sector Size: 512 bytes
Cylinders: 3951, TracksPerCylinder: 255, SectorsPerTrack: 63
Partition type: MBR, NB Partitions: 1
Disk ID: 0x003528A4
Drive has a Syslinux Master Boot Record
Partition 1:
  Type: FAT32 LBA (0x0c)
  Size: 30.3 GB (32504807424 bytes)
  Start Sector: 2048, Boot: Yes, Recognized: Yes


More information about the Syslinux mailing list