]> rtime.felk.cvut.cz Git - novaboot.git/blobdiff - novaboot
Update changelog for 20210126a release
[novaboot.git] / novaboot
index 4830f51f76e84e424a452424e05293fd9cbb773c..cf98db3f394f313f73d30586b4aa7baf82c2fac2 100755 (executable)
--- a/novaboot
+++ b/novaboot
@@ -412,6 +412,7 @@ while (!$skip_reading && ($_ = <>)) {
            push @$generated, {filename => $1, command => $3};
            return "$1$2";
        }
+       s/\s*$//;               # Strip trailing whitespace
        return $_;
     }
     if (s/^load *//) {         # Load line
@@ -1026,11 +1027,17 @@ if (defined $iso_image) {
     if (-f '/usr/lib/ISOLINUX/isolinux.bin') {
        # Newer ISOLINUX version
        @files = qw(/usr/lib/ISOLINUX/isolinux.bin /usr/lib/syslinux/modules/bios/mboot.c32 /usr/lib/syslinux/modules/bios/libcom32.c32 /usr/lib/syslinux/modules/bios/menu.c32 /usr/lib/syslinux/modules/bios/ldlinux.c32);
-    } else {
+    } elsif (-f '/usr/lib/syslinux/isolinux.bin') {
        # Older ISOLINUX version
        @files = qw(/usr/lib/syslinux/isolinux.bin /usr/lib/syslinux/mboot.c32 /usr/lib/syslinux/menu.c32);
+    } else {
+       # NixOS and maybe others
+       my $syslinux = `which syslinux` || die "Cannot find syslinux";
+       chomp $syslinux;
+       $syslinux =~ s,/bin/syslinux$,,;
+       @files = ("$syslinux/share/syslinux/isolinux.bin", "$syslinux/share/syslinux/mboot.c32", "$syslinux/share/syslinux/libcom32.c32", "$syslinux/share/syslinux/menu.c32", "$syslinux/share/syslinux/ldlinux.c32");
     }
-    system_verbose("cp @files isolinux");
+    system_verbose("cp @files isolinux && chmod +w isolinux/*");
     open(my $fh, ">isolinux/isolinux.cfg");
     if ($#scripts) {
        print $fh "TIMEOUT 50\n";
@@ -1299,7 +1306,7 @@ if ($interaction && defined $exp) {
     print STDERR "novaboot: Serial line interaction (press $interrupt to interrupt)...\n";
     $exp->log_stdout(1);
     if (@exiton) {
-       $exp->expect($exiton_timeout, @expect_raw, @exiton) || die("exiton: " . ($! || "timeout"));
+       $exp->expect($exiton_timeout, @exiton, @expect_raw) || die("exiton: " . ($! || "timeout"));
     } else {
        my @inputs = ($exp);
        my $infile = new IO::File;
@@ -1385,7 +1392,7 @@ options. Understanding all these options is not always needed,
 depending on the used setup. The L<figure from the doc directory
 |https://github.com/wentasah/novaboot/blob/master/doc/typical-setups.svg>
 shows different setups that vary in how much effort is needed
-configure novaboot for them. The setups are:
+to configure novaboot for them. The setups are:
 
 =over 3