On Wed 08 Jul 2020 at 18:07:05 (+1000), Andrew McGlashan wrote:
> On 8/7/20 3:35 pm, Andrei POPESCU wrote:
> > On Mi, 08 iul 20, 02:35:09, Andrew McGlashan wrote:
> >> On 8/7/20 2:11 am, Michael Stone wrote:
> >>>
> >>> The short answer is that there simply isn't a good reason to do this
> >>> on a modern system, and there is no volunteer to donate the enormous
> >>> amount of effort required to make
> >>> something work for which there isn't a good justification for
> >>> expending that effort. There should be no flamewar, if someone wants
> >>> the situation to change they simply need to be
> >>> the person who puts in all the work.
> >>
> >> Just doing dist-upgrade with a perfectly acceptable file system
> >> previously is no reason why it should break.
> >
> > Debian supports upgrading of most packages between releases.
> >
> > It provides no guarantees about hardware, partitioning schemes,
> > partition sizes, file systems, etc.
I'm not going to suggest that this is proof, but the Release Notes for
buster still carry the warning that one should make sure any /usr
partition has been remounted rw if necessary.
> > I was under the impression that LVM is used in particular for its
> > flexibility in adjusting your partitions. What prevents you from merging
> > '/' and '/usr'?
>
> Yes, that might be the best fix; but I didn't expect it to be necessary.
I haven't seen anything in the Release Notes suggesting that it is necessary.
> On 8/7/20 9:40 am, David Wright wrote:
> >> The mentioned intramfs config file has a strange note about it being
> >> "dangerous" to enable activate all logical volumes, why?!?!?!
> > A reference to the specific file would help. I see no mention here.
>
> Line 35 of /usr/share/initramfs-tools/scripts/local-top/lvm2 (see below) that
> mentions the risk:
>
> Also see the attached email that I sent to the Devuan DNG list for more
> reference.
>
> Below is the file I changed, added line numbered as 63.
>
> # cat -n /usr/share/initramfs-tools/scripts/local-top/lvm2
> 1 #!/bin/sh
> 2
> 3 PREREQ="mdadm mdrun multipath"
> 4
> 5 prereqs()
> 6 {
> 7 echo "$PREREQ"
> 8 }
> 9
> 10 case $1 in
> 11 # get pre-requisites
> 12 prereqs)
> 13 prereqs
> 14 exit 0
> 15 ;;
> 16 esac
> 17
> 18 if [ ! -e /sbin/lvm ]; then
> 19 exit 0
> 20 fi
> 21
> 22 lvchange_activate() {
> 23 lvm lvchange -aay -y --sysinit --ignoreskippedcluster
> "$@"
> 24 }
> 25
> 26 activate() {
> 27 local dev="$1"
> 28
> 29 # Make sure that we have a non-empty argument
> 30 if [ -z "$dev" ]; then
> 31 return 1
> 32 fi
> 33
> 34 case "$dev" in
> 35 # Take care of lilo boot arg, risky activating of all vg
> 36 fe[0-9]*)
> 37 lvchange_activate
> 38 exit 0
> 39 ;;
> 40 # FIXME: check major
> 41 /dev/root)
> 42 lvchange_activate
> 43 exit 0
> 44 ;;
> 45
> 46 /dev/mapper/*)
> 47 eval $(dmsetup splitname --nameprefixes
> --noheadings --rows "${dev#/dev/mapper/}")
> 48 if [ "$DM_VG_NAME" ] && [ "$DM_LV_NAME" ]; then
> 49 lvchange_activate
> "$DM_VG_NAME/$DM_LV_NAME"
> 50 fi
> 51 ;;
> 52
> 53 /dev/*/*)
> 54 # Could be /dev/VG/LV; use lvs to check
> 55 if lvm lvs -- "$dev" >/dev/null 2>&1; then
> 56 lvchange_activate "$dev"
> 57 fi
> 58 ;;
> 59 esac
> 60 }
> 61
> 62 activate "$ROOT"
> 63 activate "/dev/mapper/vg0-usr"
> 64 activate "$resume"
> 65
> 66 exit 0
>
> A line for /usr is in /etc/fstab using it's UUID ... same as root is
> referenced by UUID (both are in the same lvm2 volume group).
Well, this could be your problem. The jessie Release Notes say:
--✄--------
4.6.2 Changes to root and /usr filesystem mounting and checking
initramfs-tools will now also run fsck on the root filesystem before
mounting it. If the chosen init program is systemd and there is a
separate /usr filesystem, it will also fsck and mount /usr.
• If /usr is a separate filesystem on a RAID device and the
INITRDSTART setting in /etc/default/mdadm is not ’all’, you
will need to change it to include that device.
• If /usr is a separate filesystem on an LVM logical volume, and
the line for /usr in /etc/fstab specifies the device by UUID or
LABEL, you must change this line to specify the device using
the format /dev/mapper/VG-LV or /dev/VG/LV.
• It is no longer possible to bind-mount the /usr filesystem.
--✄--------
> NB: If /usr wasn't being used with lvm2, then this problem might not have
> surfaced and it probably would not have been a problem if the whole VG was
> activated instead of just the
> root file system because the UUID would have been "known or attainable" from
> the logical volumes.
> Date: Tue, 7 Jul 2020 02:00:38 +1000
> From: Andrew McGlashan via Dng <[email protected]>
> Subject: [DNG] Upgrade problem [ ascii -> beowulf ] failed to boot, left
> at initramfs shell -- with fix and query
>
> I had another "simple" server upgrade from Devuan Ascii to Devuan Beowulf,
> these are the details and my work around for the problem.
>
> There was nothing particularly special about this server, it doesn't use
> encrypted file systems; it started out life as a Debian Wheezy installation,
> migrated to Devuan Jessie and
So perhaps you didn't see Debian's Release Notes.
> later to Devuan Ascii and now Beowulf.
>
> The server has /boot on it's own RAID1 partition with another RAID1 volume
> for the rest of the disk being an LVM2 volume group having a number of
> logical volumes for root, swap,
> /usr/, /var/, /home/ and more.
>
> After the dist-upgrade, it failed to boot and remained at the ministrants
> shell environment after having complained about not being able to find the
> /usr file system via it's UUID.
>
> It had another error as well which was fixed by allocating 25% to RUNSIZE
> variable (up from 10%) in /etc/initramfs-tools/initramfs.conf
>
> - it was unable to find "rm" when running the boot up scripts before
> dumping itself to the initramfs shell.
>
> Once at the initramfs prompt after fixing the first problem, I was able to do
> the following:
>
> (initramfs) lvm
>
> lvm> vgchange -ay
>
> lvm> exit
>
> (initramfs) exit
>
> And then the server would continue to boot properly.
>
> _The second fix, which I consider to be "clunky", was to adjust the
> /usr/share/initramfs-tools/scripts/local-top/lvm2 file, adding in a line near
> the bottom as highlighted_
>
> activate "$ROOT"
> *activate "/dev/mapper/vg0-usr"*
> activate "$resume"
>
> Then I rebuilt the initramfs in the usual way.
>
> update-initramfs -u -k all
>
> The original lvm2 script specifically only activated the root file system
> (/dev/mapper/vg0-root), even though /usr (/dev/mapper/vg0-usr) was in the
> exact same volume group as a
> separate file system, thus stopping boot from succeeding as expected.
>
> Other volumes come online in due course okay.
>
> All was good with subsequent reboots.
>
> Now, cludge or clunky, this was required because the /usr file system was
> [and continues to be] separate to the root file system and the initramfs only
> cared to enable the root
> file system, leaving all other logical volumes as being "NOT AVAILABLE",
> including /usr which was definitely required!
>
> Have I fixed this appropriately, or should I some how fix it another way?
The Release Notes for stretch are below. I have no idea what Devuan's
equivalent looks like.
--✄--------
5.1.1. Late mounting of /usr is no longer supported
Note
This section only applies to systems using a custom kernel, where
/usr is on a separate mount point from /. If you use the kernel
packages provided by Debian, you are unaffected by this issue.
Mounting of /usr using only tools found in / is no longer
supported. This has only worked for a few specific configurations
in the past, and now they are explicitly unsupported.
This means that for stretch all systems where /usr is a separate
partition need to use an initramfs generator that will mount /
usr. All initramfs generators in stretch do so.
--✄--------
Cheers,
David.