[Bug 1613260] Re: update-grub (grub-mkconfig) includes all kernels in boot, regardless whether version is in /lib/modules

Peter Passchier solusos at passchier.net
Mon Dec 5 15:56:45 UTC 2016


I'm not building any kernels here. I am sharing the boot partition with
various sorts of LUKS encrypted root partitions.

I understand now why it is totally fine to run your system with all
kinds of kernels & initrds. It just works.

I also have a patch for 30_os-prober that fixes things. (It has more
problems, sometimes it has the wrong root-partition, and os-prober has
various ways of collecting information about the systems to include for
booting with grub (including parsing grub.cfg itself, which doesn't work
so well when all these different root systems actually share the same
grub.cfg). The way that works well for me is also enumerating the
kernels based on the presence of the matching version in /lib/modules.
But again, you could boot any root partition from any kernel, as I
learned.

In am not sure anymore why I wouldn't want to..?! It is sometimes handy
to have the modules there, especially if you use dkms build systems or
do other building.

-- 
You received this bug notification because you are a member of Ubuntu
Foundations Bugs, which is subscribed to grub2 in Ubuntu.
https://bugs.launchpad.net/bugs/1613260

Title:
  update-grub (grub-mkconfig) includes all kernels in boot, regardless
  whether version is in /lib/modules

Status in grub2 package in Ubuntu:
  Won't Fix

Bug description:
  All kernels/initrds in /boot are included, also if they would never
  work. Below is a patch that fixes this.

  1. Ubuntu 16.04.1 LTS (but it has always been like this)
  2. grub-common 2.02~beta2-36ubuntu3.2
  3. Only the kernels/initrds that have a version that is installed are listed on grub-mkconfig
  4. All kernels/initrds in /boot are enumerated

  
  --- 10_linux    2016-08-14 11:19:24.037604092 +0700
  +++ /etc/grub.d/10_linux        2016-08-14 18:13:53.714595280 +0700
  @@ -289,6 +289,12 @@
     rel_dirname=`make_system_path_relative_to_its_root $dirname`
     version=`echo $basename | sed -e "s,^[^0-9]*-,,g"`
     alt_version=`echo $version | sed -e "s,\.old$,,g"`
  +  ## Only if version is in /lib/modules
  +       if [ "x$(echo /lib/modules/* |grep $version)" = "x" ]
  +  then
  +    list=`echo $list | tr ' ' '\n' | grep -vx $linux | tr '\n' ' '`
  +    continue
  +  fi
     linux_root_device_thisversion="${LINUX_ROOT_DEVICE}"
   
     initrd=

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/grub2/+bug/1613260/+subscriptions



More information about the foundations-bugs mailing list