Ubuntu-18.04

dpkg: 錯誤處理包 linux-image-4.15.0-175-generic (/boot/grub/menu.lst not found)

  • April 1, 2022

我在 Ubuntu 18.04 伺服器上有這個問題,可能是因為/boot/grub/menu.lst不存在:

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:~# 

和:

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

任何的想法?謝謝

我通過以下方式解決了。

首先,我得到了分區的 UUID:

# 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"

並檢查了/boot目錄:

# 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

我使用該資訊手動重新創建menu.lst(從另一台機器複製預設註釋程式碼):

# 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

然後我重新啟動,最後:

# 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

在安裝過程中,我選擇了: 新菜單.lst

最後,我再次重新啟動並正確載入了新核心。

引用自:https://serverfault.com/questions/1097549