[Bug 1849730] Re: [live-usb-persistent] second partition as casper-rw problem

Andrey de Oliveira crazy2010 at yahoo.com
Fri Oct 25 14:49:14 UTC 2019


*** This bug is a duplicate of bug 1489855 ***
    https://bugs.launchpad.net/bugs/1489855

** Description changed:

  Hi!
  
  I identified a problem for creating persistent live usb sticks when
  using a second partition for 'casper-rw'.
  
  Environment:
  On the usb stick I created two partitions:
  - The first partition (/dev/sda1) is vfat which is used for the live-filesystem (filesystem.squashfs).
  - The second partition (/dev/sda2) is ext4 and labeled 'casper-rw' which is used for persistence.
  
  cat /proc/cmdline
  BOOT_IMAGE=(hd0,msdos1)/casper/vmlinuz file=/preseed/lubuntu.seed boot=casper quiet splash persistent ignore_uuid ---
  
  Error in initramfs (casper.log) while boot:
  mount: mounting /cow on /root failed: Invalid argument
  overlay mount failed
  
- Tested versions (Lubuntu): 
+ Tested versions (Lubuntu):
  Lubuntu 18.04 (LTS) - Package casper/now 1.394 amd64
- Lubuntu 19.10 - Pacakge casper/eoan 1.427 amd64
  
  Bug:
  I found a bug in find_cow_device() function of casper-helpers script from initram that is responsible for this.
  
  When the setup_unionfs() function of the casper script invokes the
  find_cow_device() function, the live filesystem  partition that was
  mounted in the mountroot() function is unmounted every time the function
  tries to search for a persistent file, making it impossible to boot.
  
  When a casper-rw file exists and is used, the problem just doesn't
  happen because the partition is mounted and busy, so you can't unmount
  it.
  
  To correct the problem, I have included a check to not unmount the
  partition if it is the live-filesystem partition. In that case, just
  return it to read-only.
  
- My fix for casper-helpers script in  Lubuntu 19.10 'casper/eoan 1.427
- amd64' package:
- 
- /usr/share/initramfs-tools/scripts# diff -u casper-helpers casper-helpers.fix
- --- casper-helpers      2019-10-14 12:29:05.000000000 -0300
- +++ casper-helpers.fix  2019-10-24 17:09:42.635313048 -0300
- @@ -247,8 +247,10 @@
-                  if [ -e "${cow_backing}/${pers_fpath}" ]; then
-                      echo $(setup_loop "${cow_backing}/${pers_fpath}" "loop" "/sys/block/loop*")
-                      return 0
- -                else
- +                elif [ ${cow_backing} != ${livefs_root} ]; then
-                      umount ${cow_backing}
- +                else
- +                        try_mount "${devname}" "${cow_backing}" "ro"
-                  fi
-              fi
-          done
- ---CUT HERE---
- 
  My fix for casper-helpers script in  Lubuntu 18.04 (LTS) 'casper/now
  1.394 amd64' package:
  
  /usr/share/initramfs-tools/scripts# diff -u casper-helpers casper-helpers.fix
  --- casper-helpers       2019-10-24 11:29:58.735085568 -0300
  +++ casper-helpers.fix 2019-10-24 16:53:19.375302075 -0300
  @@ -223,8 +223,10 @@
-                  if [ -e "${cow_backing_mp}/${pers_fpath}" ]; then
-                      echo $(setup_loop "${cow_backing_mp}/${pers_fpath}" "loop" "/sys/block/loop*")
-                      return 0
+                  if [ -e "${cow_backing_mp}/${pers_fpath}" ]; then
+                      echo $(setup_loop "${cow_backing_mp}/${pers_fpath}" "loop" "/sys/block/loop*")
+                      return 0
  -                else
  +                elif [ ${cow_backing_mp} != ${livefs_root} ]; then
-                      umount ${cow_backing_mp}
+                      umount ${cow_backing_mp}
  +               else
  +                       try_mount "${devname}" "${cow_backing}" "ro"
-                  fi
-              fi
-          done
+                  fi
+              fi
+          done
  ---CUT HERE---

-- 
You received this bug notification because you are a member of Ubuntu
Foundations Bugs, which is subscribed to casper in Ubuntu.
https://bugs.launchpad.net/bugs/1849730

Title:
  [live-usb-persistent] second partition as casper-rw problem

Status in casper package in Ubuntu:
  New

Bug description:
  Hi!

  I identified a problem for creating persistent live usb sticks when
  using a second partition for 'casper-rw'.

  Environment:
  On the usb stick I created two partitions:
  - The first partition (/dev/sda1) is vfat which is used for the live-filesystem (filesystem.squashfs).
  - The second partition (/dev/sda2) is ext4 and labeled 'casper-rw' which is used for persistence.

  cat /proc/cmdline
  BOOT_IMAGE=(hd0,msdos1)/casper/vmlinuz file=/preseed/lubuntu.seed boot=casper quiet splash persistent ignore_uuid ---

  Error in initramfs (casper.log) while boot:
  mount: mounting /cow on /root failed: Invalid argument
  overlay mount failed

  Tested versions (Lubuntu):
  Lubuntu 18.04 (LTS) - Package casper/now 1.394 amd64

  Bug:
  I found a bug in find_cow_device() function of casper-helpers script from initram that is responsible for this.

  When the setup_unionfs() function of the casper script invokes the
  find_cow_device() function, the live filesystem  partition that was
  mounted in the mountroot() function is unmounted every time the
  function tries to search for a persistent file, making it impossible
  to boot.

  When a casper-rw file exists and is used, the problem just doesn't
  happen because the partition is mounted and busy, so you can't unmount
  it.

  To correct the problem, I have included a check to not unmount the
  partition if it is the live-filesystem partition. In that case, just
  return it to read-only.

  My fix for casper-helpers script in  Lubuntu 18.04 (LTS) 'casper/now
  1.394 amd64' package:

  /usr/share/initramfs-tools/scripts# diff -u casper-helpers casper-helpers.fix
  --- casper-helpers       2019-10-24 11:29:58.735085568 -0300
  +++ casper-helpers.fix 2019-10-24 16:53:19.375302075 -0300
  @@ -223,8 +223,10 @@
                   if [ -e "${cow_backing_mp}/${pers_fpath}" ]; then
                       echo $(setup_loop "${cow_backing_mp}/${pers_fpath}" "loop" "/sys/block/loop*")
                       return 0
  -                else
  +                elif [ ${cow_backing_mp} != ${livefs_root} ]; then
                       umount ${cow_backing_mp}
  +               else
  +                       try_mount "${devname}" "${cow_backing}" "ro"
                   fi
               fi
           done
  ---CUT HERE---

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/casper/+bug/1849730/+subscriptions



More information about the foundations-bugs mailing list