summaryrefslogtreecommitdiff
path: root/user/lilo/partuuid.patch
diff options
context:
space:
mode:
Diffstat (limited to 'user/lilo/partuuid.patch')
-rw-r--r--user/lilo/partuuid.patch65
1 files changed, 65 insertions, 0 deletions
diff --git a/user/lilo/partuuid.patch b/user/lilo/partuuid.patch
new file mode 100644
index 000000000..a1a4fcc10
--- /dev/null
+++ b/user/lilo/partuuid.patch
@@ -0,0 +1,65 @@
+Enable usage of PARTUUID if /etc/fstab uses it for the root filesystem.
+While we're here, make the generated labels for the kernel choices more
+descriptive as well.
+
+--- lilo-24.2/src/bsect.c 2011-06-22 02:09:44.000000000 -0500
++++ lilo-24.2/src/bsect.c 2020-03-19 07:59:59.819990912 -0500
+@@ -1098,6 +1098,9 @@ if (image) { /* long section specific to
+ else if (strlen(root)>5 && !strncmp(root,"UUID=",5)) {
+ sprintf(strchr(options,0),"root=%s ", root);
+ }
++ else if (strlen(root)>9 && !strncmp(root,"PARTUUID=",9)) {
++ sprintf(strchr(options,0),"root=%s ", root);
++ }
+ else {
+ sprintf(strchr(options,0),"root=%x ",dev_number(root));
+ }
+--- lilo-24.2/scripts/liloconfig 2015-11-21 18:00:21.000000000 -0600
++++ lilo-24.2/scripts/liloconfig 2020-03-19 14:36:22.710002318 -0500
+@@ -217,11 +218,12 @@ sub convert_root_device {
+ $found = 0;
+ }
+ }
+- elsif ($rootpart =~ /^UUID/ or $rootpart =~ /^LABEL/) {
++ elsif ($rootpart =~ /^(PART)?UUID/ or $rootpart =~ /^LABEL/) {
+ $root_link = $rootpart;
+ $root_link =~ s{\"}{}g;
+ $root_link =~ s{^LABEL=}{/dev/disk/by-label/};
+ $root_link =~ s{^UUID=}{/dev/disk/by-uuid/};
++ $root_link =~ s{^PARTUUID=}{/dev/disk/by-partuuid/};
+
+ if (-l $root_link) {
+ $root_id = $rootpart;
+@@ -610,6 +610,7 @@ sub write_image_config {
+ my $initrd2;
+ my $nr;
+ my $nr2;
++ my $label;
+
+ # append to new lilo.conf
+ open(MYFH_NEW, ">> $liloconfnew") or die "Cannot open file: $!";
+@@ -627,18 +628,16 @@ sub write_image_config {
+ $initrd2 = $initrd;
+ $initrd2 =~ s/\.img//;
+ $nr2 = $nr + 1;
++ $label = $image;
++ $label =~ s@/boot/vmlinuz-@@;
++ $label =~ s/-[^-]*$//;
++ $label = substr $label, 0, 15;
+
+ print MYFH_NEW 'image = ' . $image . "\n";
+ if($opt_v) { print 'image = ' . $image . "\n"; }
+
+- if ($nr == 0) {
+- print MYFH_NEW "\t" . 'label = "Linux"' . "\n";
+- if($opt_v) { print "\t" . 'label = "Linux"' . "\n"; }
+- }
+- elsif ($nr == 1) {
+- print MYFH_NEW "\t" . 'label = "Linux Old"' . "\n";
+- if($opt_v) { print "\t" . 'label = "Linux Old"' . "\n"; }
+- }
++ print MYFH_NEW "\t" . "label = \"$label\"" . "\n";
++ if($opt_v) { print "\t" . "label = \"$label\"" . "\n"; }
+
+ print MYFH_NEW "\t" . 'read-only' . "\n";
+ if($opt_v) { print "\t" . 'read-only' . "\n"; }