[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#738707: linux-image-3.12-1-amd64: Failed to symbolic-link /boot/initrd.img-3.12-1-amd64 to initrd.img.



Control: tag -1 patch

On Thu, 2014-02-13 at 08:30 +0100, Philipp Marek wrote:
> > Can you provide the full strace output,
> Last time I filtered by "symlink", and now it doesn't happen anymore.
> 
> Oh, wait - after "umount" and "apt-get --reinstall" I get the message 
> again.

The symlinks are in the root directory, to files in the /boot directory.
So long as your /boot directory is not mounted, both symlinks are
broken.  However, as soon the package is unpacked, the /vmlinuz link
works again.

The postinst script tries to repair the /vmlinuz and /initrd.img
symlinks if they don't exist.  But it does so before calling the hook
scripts that will build the initramfs, and its test for existence
actually tests what the symlink *points to*.  So it decides that
the /initrd.img symlink does not exist, and needs to be recreated.

I can easily reproduce this:

(sid:amd64)root:/# apt-get install linux-image-3.12-1-amd64
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following extra packages will be installed:
  cpio initramfs-tools klibc-utils kmod libklibc libkmod2 libprocps3 libudev1
  libuuid-perl linux-base procps udev
Suggested packages:
  libarchive1 bash-completion linux-doc-3.12 debian-kernel-handbook grub-pc
  extlinux lilo
Recommended packages:
  busybox busybox-initramfs busybox-static firmware-linux-free psmisc
The following NEW packages will be installed:
  cpio initramfs-tools klibc-utils kmod libklibc libkmod2 libprocps3 libudev1
  libuuid-perl linux-base linux-image-3.12-1-amd64 procps udev
0 upgraded, 13 newly installed, 0 to remove and 30 not upgraded.
Need to get 30.4 MB/31.5 MB of archives.
After this operation, 148 MB of additional disk space will be used.
Do you want to continue? [Y/n] 
[...]
Setting up initramfs-tools (0.115) ...
update-initramfs: deferring update (trigger activated)
Setting up linux-image-3.12-1-amd64 (3.12.9-1) ...
/etc/kernel/postinst.d/initramfs-tools:
update-initramfs: Generating /boot/initrd.img-3.12-1-amd64
Processing triggers for libc-bin (2.17-97) ...
Processing triggers for initramfs-tools (0.115) ...
update-initramfs: Generating /boot/initrd.img-3.12-1-amd64
(sid:amd64)root:/# rm /boot/initrd.img-3.12-1-amd64 
(sid:amd64)root:/# apt-get install --reinstall linux-image-3.12-1-amd64
Reading package lists... Done
Building dependency tree       
Reading state information... Done
0 upgraded, 0 newly installed, 1 reinstalled, 0 to remove and 30 not upgraded.
Need to get 0 B/29.6 MB of archives.
After this operation, 0 B of additional disk space will be used.
debconf: delaying package configuration, since apt-utils is not installed
(Reading database ... 15359 files and directories currently installed.)
Preparing to unpack .../linux-image-3.12-1-amd64_3.12.9-1_amd64.deb ...
Unpacking linux-image-3.12-1-amd64 (3.12.9-1) over (3.12.9-1) ...
Setting up linux-image-3.12-1-amd64 (3.12.9-1) ...
Failed to symbolic-link /boot/initrd.img-3.12-1-amd64 to initrd.img.
dpkg: error processing package linux-image-3.12-1-amd64 (--configure):
 subprocess installed post-installation script returned error exit status 17
Errors were encountered while processing:
 linux-image-3.12-1-amd64
E: Sub-process /usr/bin/dpkg returned an error code (1)
(sid:amd64)root:/# 

This patch (applied in /var/lib/dpkg/info) fixed it for me:

--- linux-image-3.12-1-amd64.postinst
+++ linux-image-3.12-1-amd64.postinst
@@ -537,13 +537,17 @@
   }
 }
 else {
-  if (! -e "$kimage") {
+  lstat($kimage);
+  if (! -e _) {
     handle_missing_link($kimage, $image_dest, "$kimage-$version", 
                         $realimageloc);
   }
-  if ($initrd && ! -e "initrd.img") {
-    handle_missing_link("initrd.img", $image_dest, "initrd.img-$version",
-			$realimageloc);
+  if ($initrd) {
+    lstat("initrd.img");
+    if (! -e _) {
+      handle_missing_link("initrd.img", $image_dest, "initrd.img-$version",
+			  $realimageloc);
+    }
   }
 }
 
--- END --

I'll apply the corresponding patch to the source.

Ben.

-- 
Ben Hutchings
The world is coming to an end.	Please log off.

Attachment: signature.asc
Description: This is a digitally signed message part


Reply to: