Bug#891747: debian-cd: parse_isolinux can't handle appended kernel params containing the substring "kernel"
Package: debian-cd
Version: 3.1.20
Severity: normal
Tags: patch
* What led up to the situation?
Trying to build a debian install cd with a backported kernel, see
https://lists.debian.org/debian-user/2018/02/msg01364.html
* What exactly did you do (or not do) that was effective (or
ineffective)?
When using simple-cdd and having a prfile named blahblahblahkernel or something
similar it generate isolinux files sucs as
label install
menu label ^Install
kernel /install.amd/vmlinuz
append preseed/file=/cdrom/simple-cdd/default.preseed simple-
cdd/profiles=stretch-bpokernel vga=788 initrd=/install.amd/initrd.gz --- quiet
parse_isolinux and the offending regex near the bottom
(https://salsa.debian.org/images-team/debian-
cd/blob/master/tools/boot/stretch/parse_isolinux#L237) end up targeting "kernel
vga=788 initrd=/install.amd/initrd.gz --- quiet" instead of "kernel
/install.amd/vmlinuz"
* What was the outcome of this action?
You end up with broken grub.conf entries that look like:
menuentry --hotkey=i 'Install' {
set background_color=black
linux vga=788 initrd=/install.amd/initrd.gz --- quiet
initrd
}
Here's my patch that fixes it:
diff --git a/tools/boot/stretch/parse_isolinux
b/tools/boot/stretch/parse_isolinux
index a15e52d..a8b057b 100755
--- a/tools/boot/stretch/parse_isolinux
+++ b/tools/boot/stretch/parse_isolinux
@@ -234,8 +234,8 @@ foreach my $line(@lines) {
$menu{"label"} = $1;
} elsif ($line =~ /menu default/ && $in_kernel) {
$kernel{"default"} = 1;
- } elsif ($line =~ /kernel (.*)$/ && $in_kernel) {
- $kernel{"kernel"} = $1;
+ } elsif ($line =~ /^(\s+)?kernel(.*)/ && $in_kernel) {
+ $kernel{"kernel"} = $2;
} elsif ($line =~ /append (.*)$/ && $in_kernel) {
$kernel{"append"} = $1;
} else {
-- System Information:
Debian Release: 9.3
APT prefers stable-updates
APT policy: (500, 'stable-updates'), (500, 'stable')
Architecture: amd64 (x86_64)
Kernel: Linux 4.9.0-3-amd64 (SMP w/8 CPU cores)
Locale: LANG=en_GB.UTF-8, LC_CTYPE=en_GB.UTF-8 (charmap=UTF-8), LANGUAGE=en_GB.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash
Init: systemd (via /run/systemd/system)
Versions of packages debian-cd depends on:
ii apt 1.4.8
ii bc 1.06.95-9+b3
ii bzip2 1.0.6-8.1
ii cpp 4:6.3.0-4
ii curl 7.52.1-5+deb9u4
ii dctrl-tools [grep-dctrl] 2.24-2+b1
ii dpkg-dev 1.18.24
ii genisoimage 9:1.1.11-3+b2
pn libcompress-zlib-perl <none>
pn libdigest-md5-perl <none>
ii libdpkg-perl 1.18.24
ii libperl5.24 [libdigest-sha-perl] 5.24.1-3+deb9u2
ii lynx 2.8.9dev11-1
ii lynx-cur 2.8.9dev11-1
ii make 4.1-9.1
ii perl 5.24.1-3+deb9u2
ii tofrodos 1.7.13+ds-2
ii xorriso 1.4.6-1+b1
Versions of packages debian-cd recommends:
ii dosfstools 4.1-1
ii hfsutils 3.2.6-13+b1
ii isolinux 3:6.03+dfsg-14.1+deb9u1
ii mtools 4.0.18-2+b1
ii netpbm 2:10.0-15.3+b2
ii syslinux-common 3:6.03+dfsg-14.1+deb9u1
ii syslinux-utils 3:6.03+dfsg-14.1+deb9u1
ii wget 1.18-5+deb9u1
debian-cd suggests no packages.
-- no debconf information
-- debsums errors found:
debsums: changed file /usr/share/debian-cd/tools/boot/stretch/parse_isolinux (from debian-cd package)
Reply to: