Bug#785343: linux-image-4.0.0-1-686-pae: /@/initrd.img not found, due to the symlink /initrd.img having an absolute target

2015-05-15 Thread Ben Hutchings
On Fri, 2015-05-15 at 05:24 +0200, Guilhem Moulin wrote:
 On Fri, 15 May 2015 at 03:57:35 +0100, Ben Hutchings wrote:
  GRUB knows how to do this properly, so you're just making things
  difficult for yourself.
 
 Since there is always a risk of bricking the board when flashing the
 BIOS chip, I don't want to add a hook add flash it whenever I upgrade
 the kernel.
[...]

Why would you need to flash the whole chip?  Isn't the configuration in
its own flash partition?

Ben.

-- 
Ben Hutchings
It is impossible to make anything foolproof because fools are so ingenious.


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


Bug#785343: linux-image-4.0.0-1-686-pae: /@/initrd.img not found, due to the symlink /initrd.img having an absolute target

2015-05-15 Thread Guilhem Moulin
On Fri, 15 May 2015 at 13:47:59 +0100, Ben Hutchings wrote:
 On Fri, 2015-05-15 at 05:24 +0200, Guilhem Moulin wrote:
 On Fri, 15 May 2015 at 03:57:35 +0100, Ben Hutchings wrote:
 GRUB knows how to do this properly, so you're just making things
 difficult for yourself.
 
 Since there is always a risk of bricking the board when flashing the
 BIOS chip, I don't want to add a hook add flash it whenever I upgrade
 the kernel.
 [...]
 
 Why would you need to flash the whole chip?  Isn't the configuration in
 its own flash partition?

Not that I know of.  At the moment the format doesn't allow “support
multiple CBFSes per firmware image” [0].  My current way of upgrading
the grub.cf is to replace the grub.cfg in the ROM, then flash the whole
chip [1]:

cbfstool libreboot.rom remove -n grub.cfg
cbfstool libreboot.rom add -t raw -n grub.cfg -f grub.cfg
flashrom -p internal -w libreboot.rom

And using flashrom on the go makes me sweaty ;-)  As the coreboot wiki
says: “Disadvantages: more risky if you have no way to recover ”.

-- 
Guilhem.

[0] http://www.coreboot.org/CBFS#FMAP
[1] http://www.coreboot.org/GRUB2#combining_with_coreboot


signature.asc
Description: Digital signature


Bug#785343: linux-image-4.0.0-1-686-pae: /@/initrd.img not found, due to the symlink /initrd.img having an absolute target

2015-05-14 Thread Guilhem Moulin
Package: src:linux
Version: 4.0.2-1
Severity: important

Dear Maintainer,

I have the following — probably not so common — configuration:
- libreboot BIOS (a deblobed coreboot) with a GRUB2 payload
- root is BTRFS, with rootflags=subvol=@

Since I don't want to flash a new payload onto the BIOS chip at each
kernel upgrade, I'm using the following static grub.cfg:

linux  /@/vmlinuz root=UUID=[…] rootflags=subvol=@ resume=UUID=[…] ro
initrd /@/initrd.img

This used to work great until 3.16.0.  However my system no longer boots
since the 4.0.0 upgrade, due to the symlink /initrd.img now having an
absolute target: since GRUB doesn't understand BTRFS subvolumes, it
needs to be pointed to /@/boot/initrd.img-4.0.0-1-686-pae somehow.

Of course the quickfix on my side is to edit the GRUB script to load
‘initrd /@/boot/initrd.img-4.0.0-1-686-pae’ instead, but it would be
nice to make /initrd.img's target relative again in the post-install
script (/vmlinuz doesn't have this problem by the way).

Cheers,
-- 
Guilhem.


-- Package-specific info:
** Version:
Linux version 4.0.0-1-686-pae (debian-ker...@lists.debian.org) (gcc version 
4.9.2 (Debian 4.9.2-16) ) #1 SMP Debian 4.0.2-1 (2015-05-11)

** Command line:
BOOT_IMAGE=/@/vmlinuz root=UUID=a17c2310-b308-4dd0-8cef-a7f8ca750081 
rootflags=subvol=@ resume=UUID=102accd9-30dd-4081-8a7f-a1310ad9a1ee ro

** Not tainted

-- System Information:
Debian Release: stretch/sid
  APT prefers unstable
  APT policy: (500, 'unstable'), (1, 'experimental')
Architecture: i386 (i686)

Kernel: Linux 4.0.0-1-686-pae (SMP w/2 CPU cores)
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash
Init: systemd (via /run/systemd/system)

-- debconf information excluded


signature.asc
Description: Digital signature


Bug#785343: linux-image-4.0.0-1-686-pae: /@/initrd.img not found, due to the symlink /initrd.img having an absolute target

2015-05-14 Thread Ben Hutchings
Control: severity -1 minor

No, this is not really that important.  I consider these symlinks to be
a convenience for stupid old boot loaders that are now largely
unmaintained.

On Fri, 2015-05-15 at 03:57 +0200, Guilhem Moulin wrote:
 Package: src:linux
 Version: 4.0.2-1
 Severity: important
 
 Dear Maintainer,
 
 I have the following — probably not so common — configuration:
 - libreboot BIOS (a deblobed coreboot) with a GRUB2 payload
 - root is BTRFS, with rootflags=subvol=@
 
 Since I don't want to flash a new payload onto the BIOS chip at each
 kernel upgrade, I'm using the following static grub.cfg:
 
 linux  /@/vmlinuz root=UUID=[…] rootflags=subvol=@ resume=UUID=[…] ro
 initrd /@/initrd.img

GRUB knows how to do this properly, so you're just making things
difficult for yourself.

 This used to work great until 3.16.0.  However my system no longer boots
 since the 4.0.0 upgrade, due to the symlink /initrd.img now having an
 absolute target: since GRUB doesn't understand BTRFS subvolumes, it
 needs to be pointed to /@/boot/initrd.img-4.0.0-1-686-pae somehow.
 
 Of course the quickfix on my side is to edit the GRUB script to load
 ‘initrd /@/boot/initrd.img-4.0.0-1-686-pae’ instead, but it would be
 nice to make /initrd.img's target relative again in the post-install
 script (/vmlinuz doesn't have this problem by the way).

I think the problem you're seeing is that the postinst script creates
relative symlinks only if the target file already exists.  This is
always true for the kernel image, but it is generally not true for the
initramfs image.  (It would be true on upgrade but in this case we only
create the symlink if it is missing or broken.)

It looks like this regressed when we moved initramfs generation from
explicit invocation to a generic kernel postinst hook.  That happened
between squeeze and wheezy.

Ben.

-- 
Ben Hutchings
It is impossible to make anything foolproof because fools are so ingenious.


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


Bug#785343: linux-image-4.0.0-1-686-pae: /@/initrd.img not found, due to the symlink /initrd.img having an absolute target

2015-05-14 Thread Guilhem Moulin
On Fri, 15 May 2015 at 03:57:35 +0100, Ben Hutchings wrote:
 GRUB knows how to do this properly, so you're just making things
 difficult for yourself.

Since there is always a risk of bricking the board when flashing the
BIOS chip, I don't want to add a hook add flash it whenever I upgrade
the kernel.  And in case you meant I could make GRUB reads its config
file on disk, this unfortunately doesn't apply here since it's fully
encrypted (including /boot; decryption takes place in GRUB).

-- 
Guilhem.


signature.asc
Description: Digital signature