** Description changed:

  ==== Begin SRU Template ===
- [Impact] 
+ [Impact]
  Squashfs images published by Ubuntu on http://cloud-images.ubuntu.com
  end in '.squashfs' and on http://images.maas.io/ephemeral-v3/
  the files are named 'squashfs'.
  
  When you boot an initramfs with rooturl it would automatically
  determine/assume that content is squashfs if it ended in
  '.squash' or '.squashfs'.
  
  The filter was just too strict and would thus not match
-   http://images.maas.io/ephemeral-v3/..../squashfs
+   http://images.maas.io/ephemeral-v3/..../squashfs
  
  That meant a usage would have to re-publish the url.
  
  [Test Case]
- Base this off of test case in bug 1711760
+ ## setup system to build maas images
+ $ sudo apt-get install -qy --no-install-recommends bzr
+ $ bzr branch lp:maas-images
+ $ cd maas-images
+ $ ./system-setup
  
- [Regression Potential] 
+ ## download the reference squashfs images.
+ $ arch=amd64
+ $ burl=http://cloud-images.ubuntu.com/
+ # download reference squashfs images
+ $ for rel in xenial zesty artful; do
+      file=../$rel-server-cloudimg-$arch.squashfs
+      [ -f "$file" ] && continue
+      wget "$burl/$rel/current/$file" -O "$file.tmp" && mv "$file.tmp" "$file";
+   done
+ 
+ ## build maas image output.  This creates a squashfs image and 
kernel/initramfs
+ ## files that have the updated packages inside.
+ ## It does take a while to run, and lots of cpu and IO.
+ ## You can reduce the kernels built by commenting out 'lowlatency' and 'edge'
+ ## kernels:
+ ##  sed -i -e '/^[ ].*\(lowlatency\|edge\)/s/^/#/' conf/meph-v3.yaml
+ # either set 'proposed' or add the repo via M2E_ADD_REPOS
+ $ proposed="--proposed"
+ $ export M2E_ADD_REPOS=ppa:smoser/cloud-initramfs-tools
+ $ for rel in xenial zesty artful; do
+   img=../$rel-server-cloudimg-$arch.squashfs
+   PATH=$PWD/bin:$PATH ./bin/meph2-build $proposed --config=conf/meph-v3.yaml \
+         $arch $rel $(date +"%Y%m%d") $img ../$rel.d/ 2>&1 |
+         tee ../$rel.log
+   done
+ 
+ ## After running, you will have files like:
+ $ find xenial.d/xenial -type f | sort
+ xenial.d/xenial/amd64/20171221/ga-16.04/generic/boot-initrd
+ xenial.d/xenial/amd64/20171221/ga-16.04/generic/boot-kernel
+ xenial.d/xenial/amd64/20171221/hwe-16.04/generic/boot-initrd
+ xenial.d/xenial/amd64/20171221/hwe-16.04/generic/boot-kernel
+ xenial.d/xenial/amd64/20171221/squashfs
+ xenial.d/xenial/amd64/20171221/squashfs.manifest
+ 
+ ## You can verify in the $rel.log files you have 'Setting up cloud-initramfs-'
+ $ grep '^Setting up overlayroot' xenial.log
+ Setting up overlayroot (0.27ubuntu1.5~ppa16.04.1) ...
+ 
+ 
+ ## Now download the test-boot script, provide it a directory and
+ ## the squashfs, kernel, initramfs
+ 
+ $ ./test-boot test-x xenial.d/xenial/amd64/20171221/squashfs \
+     xenial.d/xenial/amd64/20171221/ga-16.04/generic/boot-kernel \
+     xenial.d/xenial/amd64/20171221/ga-16.04/generic/boot-initrd
+ 
+ $ r=zesty; ./test-boot work.d $r.d/*/amd64/*/squashfs 
$r.d/*/amd64/*/ga-*/generic/boot-kernel $r.d/*/amd64/*/ga-*/generic/boot-initrd
+ Now, do:
+   cd work.d
+   ./boot
+ 
+ 
+ ## Running ./boot will serve the squashfs image over http, and then
+ ## boot the kernel and initrd with a kernel command line of
+ ##    root=http://<url>/squashfs
+ ## and
+ ##    ds=nocloud-net;seedfrom=http://10.0.2.2:9999/
+ ## which will the read the 'user-data' and 'meta-data' files in that dir.
+ ##
+ ## The result is that you can log in with 'ubuntu' and 'passw0rd'
+ 
+ ## Then collect some information
+ # you'll see the 'LABEL=' entry is commented out.
+ $ cat /etc/fstab
+ # local-fs.target should be fine
+ $ systemctl status local-fs.target --no-pager
+ # just for record
+ $ cat /proc/cmdline
+ 
+ [Regression Potential]
  Very low.
  If a url does not match, rooturl would just complain and do nothing.
  This just extends the things that match.
  
  [Other Info]
  This does seem to be low importance.  In fact it is, but its jsut part
  of syncing cloud-initramfs-tools across xenial, artful, zesty with bionic.
  
  ==== End SRU Template ===
  
  The code that automatically determines a squashfs url is just to strict.
  You can explicitly declare it as squash with:
     root=squashfs:http://<>/...
  but currently the automatic matching requires it to end in .squashfs or 
.squash.
  
  This doesn't match urls like
    <url>/squashfs
    <url>/my-squash
  
  which are as obviously squashfs urls as others.

** Attachment added: "test-squashfs-boot: script to boot a squashfs, kernel and 
initrd with overlayroot"
   
https://bugs.launchpad.net/cloud-initramfs-tools/+bug/1728048/+attachment/5025774/+files/test-squashfs-boot

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

Title:
  squashfs url matching is too strict

To manage notifications about this bug go to:
https://bugs.launchpad.net/cloud-initramfs-tools/+bug/1728048/+subscriptions

-- 
ubuntu-bugs mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to