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 <d...@lists.dyne.org> > 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.