Ubuntu-18.04
dpkg: 錯誤處理包 linux-image-4.15.0-175-generic (/boot/grub/menu.lst not found)
我在 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
最後,我再次重新啟動並正確載入了新核心。