Score:0

dpkg: error processing package linux-image-4.15.0-175-generic (/boot/grub/menu.lst not found)

eg flag

I have this issue on Ubuntu 18.04 Server, probably because /boot/grub/menu.lst doesn't exist:

root@myserver:~# apt install -f
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following packages were automatically installed and are no longer required:
  liblua5.1-0 libyajl2
Use 'apt autoremove' to remove them.
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
1 not fully installed or removed.
After this operation, 0 B of additional disk space will be used.
Setting up linux-image-4.15.0-175-generic (4.15.0-175.184) ...
Processing triggers for linux-image-4.15.0-175-generic (4.15.0-175.184) ...
/etc/kernel/postinst.d/initramfs-tools:
update-initramfs: Generating /boot/initrd.img-4.15.0-175-generic
W: initramfs-tools configuration sets RESUME=/dev/mapper/vg-lv_swap
W: but no matching swap device is available.
I: The initramfs will attempt to resume from /dev/vda2
I: (UUID=4c30643f-055d-4ad7-babc-b2a6b8ac3138)
I: Set the RESUME variable to override this.
/etc/kernel/postinst.d/x-grub-legacy-ec2:
Searching for GRUB installation directory ... found: /boot/grub
Searching for default file ... found: /boot/grub/default
Testing for an existing GRUB menu.lst file ... 

Could not find /boot/grub/menu.lst file. Would you like /boot/grub/menu.lst gene
rated for you? (y/N) /usr/sbin/update-grub-legacy-ec2: line 1101: read: read err
or: 0: Bad file descriptor
run-parts: /etc/kernel/postinst.d/x-grub-legacy-ec2 exited with return code 1
dpkg: error processing package linux-image-4.15.0-175-generic (--configure):
 installed linux-image-4.15.0-175-generic package post-installation script subpr
ocess returned error exit status 1
Errors were encountered while processing:
 linux-image-4.15.0-175-generic
E: Sub-process /usr/bin/dpkg returned an error code (1)
root@myserver:~# locate menu.lst
/boot/grub.bak/menu.lst_backup_by_grub2_prerm
/boot/grub.bak/menu.lst~
/var/lib/ucf/cache/:run:grub:menu.lst
root@myserver:~# cat /var/lib/ucf/cache/:run:grub:menu.lst
## ## End Default Options ##

title       Ubuntu 18.04.6 LTS, kernel 4.15.0-173-generic
root        (hd0)
kernel      /vmlinuz-4.15.0-173-generic root=/dev/mapper/vg-lv_root ro console=hvc0 
initrd      /initrd.img-4.15.0-173-generic

title       Ubuntu 18.04.6 LTS, kernel 4.15.0-173-generic (recovery mode)
root        (hd0)
kernel      /vmlinuz-4.15.0-173-generic root=/dev/mapper/vg-lv_root ro  single
initrd      /initrd.img-4.15.0-173-generic

### END DEBIAN AUTOMAGIC KERNELS LIST
root@myserver:~# 

and:

root@myserver:~# df -h
Filesystem      Size  Used Avail Use% Mounted on
udev            461M     0  461M   0% /dev
tmpfs            99M  776K   98M   1% /run
/dev/vda1        23G  5.3G   17G  25% /
tmpfs           493M     0  493M   0% /dev/shm
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs           493M     0  493M   0% /sys/fs/cgroup
/dev/vdb1       147G   52G   88G  38% /var/www/html/video
tmpfs            99M     0   99M   0% /run/user/0
root@myserver:~# uname -a
Linux myserver.com 4.15.0-173-generic #182-Ubuntu SMP Fri Mar 18 15:53:46 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux

Any idea? Thank you

Nikita Kipriyanov avatar
za flag
Is `/boot` on the different filesystem and is it mounted? Also, is this a physical/virtual machine or, probably, a container?
Francesco Galgani avatar
eg flag
As additional info, I migrated this server from a machine to another and used `grub-repair` to restore Grub. It boots correctly, but `menu.lst` is missing.
Francesco Galgani avatar
eg flag
@NikitaKipriyanov No, `/boot` is in the same file system. It's a virtual machine in a VPS.
Francesco Galgani avatar
eg flag
I just updated the question adding the output of `df -f` and `uname -a`
Nikita Kipriyanov avatar
za flag
Does it currently boot via grub (legacy) or grub2?
Francesco Galgani avatar
eg flag
The output of `grub-install -V` is `grub-install (GRUB) 2.02-2ubuntu8.23`
Nikita Kipriyanov avatar
za flag
So you actually use grub2 but the system tries to update grub legacy. This is the cause. Check which package owns `/etc/kernel/postinst.d/x-grub-legacy-ec2` and remove it. Also try to reinstall grub2. I mean, first make backups and prepare recovery strategy, of course.
Francesco Galgani avatar
eg flag
@NikitaKipriyanov Thank you for your suggestions, however I solved in a different way, as I reported in my answer.
Score:0
eg flag

I solved in the following way.

Firstly, I got the partitions' UUIDs:

# blkid
/dev/vda1: UUID="1c698c6b-ace0-4021-8cf9-4c0ee7d5364e" TYPE="ext4" PARTUUID="55d1a726-01"
/dev/vda2: LABEL="swap" UUID="4c30643f-055d-4ad7-babc-b2a6b8ac3138" TYPE="swap" PARTUUID="55d1a726-02"
/dev/vdb1: LABEL="video" UUID="60b104ef-36ea-440f-806d-e9f71cff8732" TYPE="ext4" PARTUUID="c075fe69-01"
/dev/loop0: TYPE="squashfs"
/dev/loop1: TYPE="squashfs"
/dev/loop2: TYPE="squashfs"
/dev/loop4: TYPE="squashfs"

and checked the /boot directory:

# ls /boot
config-4.15.0-173-generic  initrd.img-4.15.0-173-generic  vmlinuz-4.15.0-173-generic
config-4.15.0-175-generic  initrd.img-4.15.0-175-generic  vmlinuz-4.15.0-175-generic
grub                       System.map-4.15.0-173-generic
grub.bak                   System.map-4.15.0-175-generic

I used that info to recreate manually the menu.lst (copying the default commented code from another machine):

# menu.lst - See: grub(8), info grub, update-grub(8)
#            grub-install(8), grub-floppy(8),
#            grub-md5-crypt, /usr/share/doc/grub
#            and /usr/share/doc/grub-legacy-doc/.

## default num
# Set the default entry to the entry number NUM. Numbering starts from 0, and
# the entry number 0 is the default if the command is not used.
#
# You can specify 'saved' instead of a number. In this case, the default entry
# is the entry saved with the command 'savedefault'.
# WARNING: If you are using dmraid do not use 'savedefault' or your
# array will desync and will not let you boot your system.
default     0

## timeout sec
# Set a timeout, in SEC seconds, before automatically booting the default entry
# (normally the first entry defined).
# on ec2, with no console access, there is no reason for a timeout.  set to 0.
timeout     0

## hiddenmenu
# Hides the menu by default (press ESC to see the menu)
hiddenmenu

# Pretty colours
#color cyan/blue white/blue

## password ['--md5'] passwd
# If used in the first section of a menu file, disable all interactive editing
# control (menu entry editor and command-line)  and entries protected by the
# command 'lock'
# e.g. password topsecret
#      password --md5 $1$gLhU0/$aW78kHK1QfV3P2b2znUoe/
# password topsecret

#
# examples
#
# title     Windows 95/98/NT/2000
# root      (hd0,0)
# makeactive
# chainloader   +1
#
# title     Linux
# root      (hd0,1)
# kernel    /vmlinuz root=/dev/hda2 ro
#

#
# Put static boot stanzas before and/or after AUTOMAGIC KERNEL LIST

### BEGIN AUTOMAGIC KERNELS LIST
## lines between the AUTOMAGIC KERNELS LIST markers will be modified
## by the debian update-grub script except for the default options below

## DO NOT UNCOMMENT THEM, Just edit them to your needs

## ## Start Default Options ##
## default kernel options
## default kernel options for automagic boot options
## If you want special options for specific kernels use kopt_x_y_z
## where x.y.z is kernel version. Minor versions can be omitted.
## e.g. kopt=root=/dev/hda1 ro
##      kopt_2_6_8=root=/dev/hdc1 ro
##      kopt_2_6_8_2_686=root=/dev/hdc2 ro
# kopt=root=/dev/mapper/vg-lv_root ro

## default grub root device
## e.g. groot=(hd0)
# groot=(hd0)

## should update-grub create alternative automagic boot options
## e.g. alternative=true
##      alternative=false
# alternative=true

## should update-grub lock alternative automagic boot options
## e.g. lockalternative=true
##      lockalternative=false
# lockalternative=false

## additional options to use with the default boot option, but not with the
## alternatives
## e.g. defoptions=vga=791 resume=/dev/hda5
# defoptions=console=hvc0

## should update-grub lock old automagic boot options
## e.g. lockold=false
##      lockold=true
# lockold=false

## Xen hypervisor options to use with the default Xen boot option
# xenhopt=

## Xen Linux kernel options to use with the default Xen boot option
# xenkopt=console=tty0

## altoption boot targets option
## multiple altoptions lines are allowed
## e.g. altoptions=(extra menu suffix) extra boot options
##      altoptions=(recovery) single
# altoptions=(recovery mode) single

## controls how many kernels should be put into the menu.lst
## only counts the first occurence of a kernel, not the
## alternative kernel options
## e.g. howmany=all
##      howmany=7
# howmany=all

## specify if running in Xen domU or have grub detect automatically
## update-grub will ignore non-xen kernels when running in domU and vice versa
## e.g. indomU=detect
##      indomU=true
##      indomU=false
# indomU=true

## should update-grub create memtest86 boot option
## e.g. memtest86=true
##      memtest86=false
# memtest86=true

## should update-grub adjust the value of the default booted system
## can be true or false
# updatedefaultentry=false

## should update-grub add savedefault to the default options
## can be true or false
# savedefault=false

## ## End Default Options ##

title       Ubuntu 18.04.6 LTS, kernel 4.15.0-173-generic
root        (hd0)
kernel      /boot/vmlinuz-4.15.0-173-generic root=UUID=1c698c6b-ace0-4021-8cf9-4c0ee7d5364e ro console=hvc0 
initrd      /boot/initrd.img-4.15.0-173-generic

title       Ubuntu 18.04.6 LTS, kernel 4.15.0-173-generic (recovery mode)
root        (hd0)
kernel      /boot/vmlinuz-4.15.0-173-generic root=UUID=1c698c6b-ace0-4021-8cf9-4c0ee7d5364e ro  single
initrd      /boot/initrd.img-4.15.0-173-generic


### END DEBIAN AUTOMAGIC KERNELS LIST

Then I rebooted, and finally:

# apt install -f
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following packages were automatically installed and are no longer required:
  liblua5.1-0 libyajl2
Use 'apt autoremove' to remove them.
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
1 not fully installed or removed.
After this operation, 0 B of additional disk space will be used.
Setting up linux-image-4.15.0-175-generic (4.15.0-175.184) ...
Processing triggers for linux-image-4.15.0-175-generic (4.15.0-175.184) ...
/etc/kernel/postinst.d/initramfs-tools:
update-initramfs: Generating /boot/initrd.img-4.15.0-175-generic
W: initramfs-tools configuration sets RESUME=/dev/mapper/vg-lv_swap
W: but no matching swap device is available.
I: The initramfs will attempt to resume from /dev/vda2
I: (UUID=4c30643f-055d-4ad7-babc-b2a6b8ac3138)
I: Set the RESUME variable to override this.
/etc/kernel/postinst.d/x-grub-legacy-ec2:
Searching for GRUB installation directory ... found: /boot/grub
Searching for default file ... found: /boot/grub/default
Testing for an existing GRUB menu.lst file ... found: /boot/grub/menu.lst
Searching for splash image ... none found, skipping ...
Found kernel: /boot/vmlinuz-4.15.0-173-generic
Replacing config file /run/grub/menu.lst with new version
Found kernel: /boot/vmlinuz-4.15.0-175-generic
Found kernel: /boot/vmlinuz-4.15.0-173-generic
Replacing config file /run/grub/menu.lst with new version
Updating /boot/grub/menu.lst ... done

/etc/kernel/postinst.d/zz-update-grub:
Sourcing file `/etc/default/grub'
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-4.15.0-175-generic
Found initrd image: /boot/initrd.img-4.15.0-175-generic
Found linux image: /boot/vmlinuz-4.15.0-173-generic
Found initrd image: /boot/initrd.img-4.15.0-173-generic
done
W: APT had planned for dpkg to do more than it reported back (0 vs 4).
   Affected packages: linux-image-4.15.0-175-generic:amd64

During the installation process, I selected: new menu.lst

At the end, I rebooted again and the new kernel was loaded correctly.

mangohost

Post an answer

Most people don’t grasp that asking a lot of questions unlocks learning and improves interpersonal bonding. In Alison’s studies, for example, though people could accurately recall how many questions had been asked in their conversations, they didn’t intuit the link between questions and liking. Across four studies, in which participants were engaged in conversations themselves or read transcripts of others’ conversations, people tended not to realize that question asking would influence—or had influenced—the level of amity between the conversationalists.