xorriso : FAILURE : Not a known command

Thomas Schmitt scdbackup at gmx.net
Wed May 31 11:46:04 CEST 2017


Hi,

i am now pondering over function grub2_mkisofs in Grub.pm (lacking
much experience with Perl, i fear).

Do i get it right that this code looks for the shell script variant
of grub-mkrescue and prepares for having xorriso re-start mkisofs
emulation after it was ended by the "--" part of "--$opt -f" ?

  my $opt = '';
  open(A, $fp) && do {
    $opt = " -as mkisofs" if <A> =~ /^#! +\/.+sh/;
    close A;
  };
  my $cmd = "$mkr --output=\"$isofilename\" $dir ".
            join(' ', @morefiles)." --$opt -f";

If the script is detected, then grub-mkrescue will get arguments
equivalent to this pseudo shellcode:

   --output="$isofilename" "$dir" -- -as mkisofs -f

whereas the binary grub-mkrescue gets

   --output="$isofilename" "$dir" -- -f

which is wrong in case of the modern released binary version.


Although i really do not like the gesture "-- -as mkisofs", this would be
the place to test for the modern released binary and to treat it like the
old shell script variant.


My proposal is nevertheless to issue "--" only for the intermediate
incompatible binary version. I.e. something like

  my $opt = '--';
  open(A, $fp) && do {
    $opt = "" if <A> =~ /^#! +\/.+sh/;
    close A;
  };

  # >>> test for modern released binary version and if so: $opt = ""

  my $cmd = "$mkr --output=\"$isofilename\" $dir ".
            join(' ', @morefiles)." $opt -f";

or

  my $opt = ''

  # >>> test for intermediate unreleased binary version and if so: $opt = "--"

  my $cmd = "$mkr --output=\"$isofilename\" $dir ".
            join(' ', @morefiles)." $opt -f";

Testing for the unreleased version might be more reliable, because this
one is not supposed to change its signatures any more.


I understand that the programmer of Grub.pm expected grub-mkrescue to
go on with its incompatible CLI change, whereas GRUB developers decided
to rather fix the unintended incompatibility before next release.
This release has happened meanwile. So _now_ the behavior is supposed
to be stable and deviations are to be considered bugs.


Have a nice day :)

Thomas





More information about the l4-hackers mailing list