Xorriso complaining about symlinks while creating Debian pressed ISO

Posted on

Problem :

I’m following the steps to create a Debian preseed ISO here: https://wiki.debian.org/DebianInstaller/Preseed/EditIso. It advises using xorriso to create the final ISO image for EFI systems as instructed here: https://wiki.debian.org/RepackBootableISO

The command I derived from this page is as follows:

xorriso 
    -as mkisofs 
    -r 
    -V "Debian 10.6.0 amd64 n preseed" 
    -o "${out}" 
    -R 
    -J 
    -joliet-long 
    -cache-inodes 
    -isohybrid-mbr "isohdpfx.bin" 
    -b isolinux/isolinux.bin 
    -c isolinux/boot.cat 
    -boot-load-size 4 
    -boot-info-table 
    -no-emul-boot 
    -eltorito-alt-boot 
    -e boot/grub/efi.img 
    -no-emul-boot 
    -isohybrid-gpt-basdat 
    -isohybrid-apm-hfsplus 
    ISO_FILES_DIRECTORY

This command generates warnings about symlinks, especially about firmware files. This makes me think that the final ISO is not a faithful reproduction of the ISO with the preseed file included.

GNU xorriso 1.5.2 : RockRidge filesystem manipulator, libburnia project.

Drive current: -outdev 'stdio:debian-10.6.0-amd64-netinst-preseed-20201030120440.iso'
Media current: stdio file, overwriteable
Media status : is blank
Media summary: 0 sessions, 0 data blocks, 0 data, 1267g free
xorriso : WARNING : -volid text problematic as automatic mount point name
xorriso : WARNING : -volid text does not comply to ISO 9660 / ECMA 119 rules
xorriso : NOTE : -as mkisofs: Ignored option '-cache-inodes'
Added to ISO image: directory '/'='ISO_FILES_DIRECTORY'
xorriso : UPDATE :    1561 files added in 1 seconds
xorriso : UPDATE :    1561 files added in 1 seconds
xorriso : NOTE : Copying to System Area: 432 bytes from file 'isohdpfx.bin'
libisofs: WARNING : Cannot add /debian to Joliet tree. Symlinks can only be added to a Rock Ridge tree.
libisofs: WARNING : Cannot add /dists/stable to Joliet tree. Symlinks can only be added to a Rock Ridge tree.
libisofs: WARNING : Cannot add /doc/FAQ/html/basic-defs.html to Joliet tree. Symlinks can only be added to a Rock Ridge tree.
libisofs: WARNING : Cannot add /doc/FAQ/html/choosing.html to Joliet tree. Symlinks can only be added to a Rock Ridge tree.
libisofs: WARNING : Cannot add /doc/FAQ/html/compatibility.html to Joliet tree. Symlinks can only be added to a Rock Ridge tree.
libisofs: WARNING : Cannot add /doc/FAQ/html/contributing.html to Joliet tree. Symlinks can only be added to a Rock Ridge tree.
libisofs: WARNING : Cannot add /doc/FAQ/html/customizing.html to Joliet tree. Symlinks can only be added to a Rock Ridge tree.
libisofs: WARNING : Cannot add /doc/FAQ/html/faqinfo.html to Joliet tree. Symlinks can only be added to a Rock Ridge tree.
libisofs: WARNING : Cannot add /doc/FAQ/html/ftparchives.html to Joliet tree. Symlinks can only be added to a Rock Ridge tree.
libisofs: WARNING : Cannot add /doc/FAQ/html/getting-debian.html to Joliet tree. Symlinks can only be added to a Rock Ridge tree.
libisofs: WARNING : Cannot add /doc/FAQ/html/index.html to Joliet tree. Symlinks can only be added to a Rock Ridge tree.
libisofs: WARNING : Cannot add /doc/FAQ/html/kernel.html to Joliet tree. Symlinks can only be added to a Rock Ridge tree.
libisofs: WARNING : Cannot add /doc/FAQ/html/nextrelease.html to Joliet tree. Symlinks can only be added to a Rock Ridge tree.
libisofs: WARNING : Cannot add /doc/FAQ/html/pkg-basics.html to Joliet tree. Symlinks can only be added to a Rock Ridge tree.
libisofs: WARNING : Cannot add /doc/FAQ/html/pkgtools.html to Joliet tree. Symlinks can only be added to a Rock Ridge tree.
libisofs: WARNING : Cannot add /doc/FAQ/html/redistributing.html to Joliet tree. Symlinks can only be added to a Rock Ridge tree.
libisofs: WARNING : Cannot add /doc/FAQ/html/software.html to Joliet tree. Symlinks can only be added to a Rock Ridge tree.
libisofs: WARNING : Cannot add /doc/FAQ/html/support.html to Joliet tree. Symlinks can only be added to a Rock Ridge tree.
libisofs: WARNING : Cannot add /doc/FAQ/html/uptodate.html to Joliet tree. Symlinks can only be added to a Rock Ridge tree.
libisofs: WARNING : Cannot add /firmware/firmware-linux-free_3.4_all.deb to Joliet tree. Symlinks can only be added to a Rock Ridge tree.
xorriso : UPDATE :  11.40% done
xorriso : UPDATE : Thank you for being patient. Working since 1 seconds.
ISO image produced: 179712 sectors
Written to medium : 179712 sectors at LBA 0
Writing to 'stdio:debian-10.6.0-amd64-netinst-preseed-20201030120440.iso' completed successfully.

In particular, the last warning about the firmware file makes me nervous. Can someone please advise what I can do to make xorriso do the right thing?

Solution :

The standard ISO 9660 format has very limited support for most kinds of objects. For example, file names are limited to the 8.3 format and no permissions can be stored.

However, there are a variety of extensions to this format that can provide better support for modern operating systems. One of them, Rock Ridge, provides Unix file name and permission support; xorriso enables it by default. Another major format, Joliet, is defined by Microsoft, and includes Unicode file names. The third format is HFS-hybrid, which was used for extensions with Apple.

In your case, you’re writing Rock Ridge (because you haven’t turned it off) and Joliet. This warning is telling you that Joliet doesn’t support symlinks. You’re still writing Rock Ridge format as well, which your bootable Debian system will use in preference, so your symlinks should remain accessible. However, if you put this image in a Windows machine, your symlinks will be missing, which is unavoidable.

Since your bootable Debian system is probably going to work just fine, I wouldn’t worry about this too much.

Leave a Reply

Your email address will not be published.