[SoaS] /dev/live, /mnt/live, LiveOS/home.img unavailable in Fedora-17

Frederick Grose fgrose at gmail.com
Mon Apr 30 00:32:24 EDT 2012


On Thu, Mar 29, 2012 at 8:51 PM, Frederick Grose <fgrose at gmail.com> wrote:

> On Mon, Mar 26, 2012 at 12:02 PM, Frederick Grose <fgrose at gmail.com>wrote:
>
>> Please note that the current Fedora-17-Beta-TC2-Live images lack
>> some traditional Live CD/USB features.
>>
>> See this bug report.
>> https://bugzilla.redhat.com/show_bug.cgi?id=740280
>>
>> /dev/live was a link to the installation partition on the Live USB, such
>> as /dev/sdc1,
>> or /dev/sr0 on a Live CD/DVD.
>>
>> How would a script determine this partition without human input?
>>
>> /mnt/live was a convenient mounting of the installation partition
>> filesystem.
>> It allowed easy access to pre-existing content on the Live USB device or
>> to
>> the /LiveOS and /syslinux directories.
>>
>> The --home-size-mb NNN option of livecd-iso-to-disk produced a
>> /LiveOS/home.img
>> filesystem for the liveuser's home directory.
>>
>> This feature made possible the --encrypted-home option, which would
>> secure the privacy of a user directory on a Live USB system.
>>
>> The home.img filesystem was also read/write/delete without consuming the
>> LiveOS overlay.  This is important for non-short-term Live USB deployments,
>> such as Sugar on a Stick, where overlay exhaustion can be a significant
>> problem.
>>
>> Is there a workaround for these (missing) features?
>>
>>        --Fred
>>
>
> This patch restores the lost features:
>
> commit 1580cddaea504efd68c5e10fee70e09d7e81d86b
> Author: Frederick Grose <fgrose at sugarlabs.org>
> Date:   Thu Mar 29 16:27:30 2012 -0400
>
>     Mount live device on /mnt/live, link it to /dev/live
>
>     This enables the mounting of /LiveOS/home.img, if present.
>
> diff --git a/fedora-live-base.ks b/fedora-live-base.ks
> index 0b14fec..0cf0fb2 100644
> --- a/fedora-live-base.ks
> +++ b/fedora-live-base.ks
> @@ -88,10 +88,22 @@ touch /.liveimg-configured
>  # Make sure we don't mangle the hardware clock on shutdown
>  ln -sf /dev/null /etc/systemd/system/hwclock-save.service
>
> +findmount() {
> +    local info=()
> +    while read -a info; do
> +        if [[ ${info[4]} == $1 ]]; then
> +            echo ${info[8]}
> +            break;
> +        fi
> +        done < /proc/self/mountinfo
> +}
> +
>  # mount live image
> -if [ -b \`readlink -f /dev/live\` ]; then
> +livedev=$(findmount /run/initramfs/live)
> +if [[ -b $livedev ]]; then
>     mkdir -p /mnt/live
> -   mount -o ro /dev/live /mnt/live 2>/dev/null || mount /dev/live
> /mnt/live
> +   mount -o ro $livedev /mnt/live 2>/dev/null || mount $livedev /mnt/live
> +   ln -s $livedev /dev/live
>  fi
>
>  livedir="LiveOS"
> @@ -220,7 +232,7 @@ if strstr "\`cat /proc/cmdline\`" CDLABEL= ; then
>  # io errors due to not being able to get files...
>  #cat /sbin/halt > /dev/null
>  #cat /sbin/reboot > /dev/null
> -#/usr/sbin/eject -p -m \$(readlink -f /dev/live) >/dev/null 2>&1
> +#/usr/sbin/eject -p -m \$livedev >/dev/null 2>&1
>  #echo "Please remove the CD from your drive and press Enter to finish
> restarting"
>  #read -t 30 < /dev/console
>  FOE
>

With Fedora-17.TC2-x86_64-Live-Desktop.iso we have
/run/initramfs/livedev as a symlink to the block device for the source
partition &
/run/initramfs/live as the mount point for that filesystem.

This substitute patch enables the mounting of home.img and swap.img filesystems
with the substitute paths:

(Tested as applied to /etc/rc.d/init.d/livesys on an installed Live USB.)


commit e2a04b06093fcea1b0c6ecfc59847adc08d08137
Author: Frederick Grose <fgrose at sugarlabs.org>
Date:   Mon Apr 30 00:03:02 2012 -0400

    Substitute /run/initramfs/live for /mnt/live.

    This is needed to enable mounting of home.img and swap.img in
    Fedora 17 LiveOS installations.

diff --git a/fedora-live-base.ks b/fedora-live-base.ks
index 0b14fec..54df915 100644
--- a/fedora-live-base.ks
+++ b/fedora-live-base.ks
@@ -88,12 +88,6 @@ touch /.liveimg-configured
 # Make sure we don't mangle the hardware clock on shutdown
 ln -sf /dev/null /etc/systemd/system/hwclock-save.service

-# mount live image
-if [ -b \`readlink -f /dev/live\` ]; then
-   mkdir -p /mnt/live
-   mount -o ro /dev/live /mnt/live 2>/dev/null || mount /dev/live /mnt/live
-fi
-
 livedir="LiveOS"
 for arg in \`cat /proc/cmdline\` ; do
   if [ "\${arg##live_dir=}" != "\${arg}" ]; then
@@ -109,8 +103,9 @@ if ! strstr "\`cat /proc/cmdline\`" noswap && [ -n
"\$swaps" ] ; then
     action "Enabling swap partition \$s" swapon \$s
   done
 fi
-if ! strstr "\`cat /proc/cmdline\`" noswap && [ -f
/mnt/live/\${livedir}/swap.img ] ; then
-  action "Enabling swap file" swapon /mnt/live/\${livedir}/swap.img
+if ! strstr "$(cat /proc/cmdline)" noswap &&
+    [[ -f /run/initramfs/live/${livedir}/swap.img ]] ; then
+  action "Enabling swap file" swapon
/run/initramfs/live/${livedir}/swap.img
 fi

 mountPersistentHome() {
@@ -125,8 +120,8 @@ mountPersistentHome() {
     mountopts="-t jffs2"
   elif [ ! -b "\$homedev" ]; then
     loopdev=\`losetup -f\`
-    if [ "\${homedev##/mnt/live}" != "\${homedev}" ]; then
-      action "Remounting live store r/w" mount -o remount,rw /mnt/live
+    if [[ ${homedev##/run/initramfs/live} != ${homedev} ]]; then
+      action "Remounting live store r/w" mount -o remount,rw
/run/initramfs/live
     fi
     losetup \$loopdev \$homedev
     homedev=\$loopdev
@@ -160,8 +155,8 @@ findPersistentHome() {

 if strstr "\`cat /proc/cmdline\`" persistenthome= ; then
   findPersistentHome
-elif [ -e /mnt/live/\${livedir}/home.img ]; then
-  homedev=/mnt/live/\${livedir}/home.img
+elif [[ -e /run/initramfs/live/${livedir}/home.img ]]; then
+  homedev=/run/initramfs/live/${livedir}/home.img
 fi

 # if we have a persistent /home, then we want to go ahead and mount it
@@ -220,7 +215,7 @@ if strstr "\`cat /proc/cmdline\`" CDLABEL= ; then
 # io errors due to not being able to get files...
 #cat /sbin/halt > /dev/null
 #cat /sbin/reboot > /dev/null
-#/usr/sbin/eject -p -m \$(readlink -f /dev/live) >/dev/null 2>&1
+#/usr/sbin/eject -p -m \$(readlink -f /run/initramfs/livedev) >/dev/null
2>&1
 #echo "Please remove the CD from your drive and press Enter to finish
restarting"
 #read -t 30 < /dev/console
 FOE
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.sugarlabs.org/archive/soas/attachments/20120430/49ef5994/attachment.html>


More information about the SoaS mailing list