[PATCH openbmc 3/7] obmc-initfs: use varables for paths and mount arguments

Andrew Jeffery andrew at aj.id.au
Tue Feb 9 11:46:35 AEDT 2016


On Sat, 2016-02-06 at 18:00 -0600, OpenBMC Patches wrote:
> From: Milton Miller <miltonm at us.ibm.com>
> 
> Create variables for all mount parameters and paths related to
> the read-only and read-write mounts, including fs type, full
> device name, and options.  Reorder mount arguments to always
> place options last.
> 
> Also add variables for update save directory and real init.
> 
> This allows easy testing of a file systems by changing a few
> parameters including making the rofs an image in ram.
> 
> Signed-off-by: Milton Miller <miltonm at us.ibm.com>
> ---
>  .../obmc-phosphor-initfs/files/obmc-init.sh        | 22 ++++++++++--
> ---
>  .../obmc-phosphor-initfs/files/obmc-update.sh      | 32 ++++++++++++
> ----------
>  2 files changed, 33 insertions(+), 21 deletions(-)
> 
> diff --git a/meta-phosphor/common/recipes-phosphor/obmc-phosphor-initfs/files/obmc-init.sh b/meta-phosphor/common/recipes-phosphor/obmc-phosphor-initfs/files/obmc-init.sh
> index f0d8522..0109925 100644
> --- a/meta-phosphor/common/recipes-phosphor/obmc-phosphor-initfs/files/obmc-init.sh
> +++ b/meta-phosphor/common/recipes-phosphor/obmc-phosphor-initfs/files/obmc-init.sh
> @@ -1,12 +1,13 @@
>  #!/bin/sh
>  
> +fslist="proc sys dev run"
>  rodir=run/initramfs/ro
>  rwdir=run/initramfs/rw
>  upper=$rwdir/cow
>  work=$rwdir/work
>  
>  cd /
> -mkdir -p sys proc dev run
> +mkdir -p $fslist
>  mount dev dev -tdevtmpfs
>  mount sys sys -tsysfs
>  mount proc proc -tproc
> @@ -39,13 +40,20 @@ fi
>  rofs=$(findmtd rofs)
>  rwfs=$(findmtd rwfs)
>  
> +rodev=/dev/mtdblock${rofs#mtd}
> +rwdev=/dev/mtdblock${rwfs#mtd}
> +
>  rofst=squashfs
>  rwfst=ext4
> +roopts=ro
> +rwopts=rw
> +
> +init=/sbin/init
>  
>  echo rofs = $rofs $rofst   rwfs = $rwfs $rwfst
>  
>  if grep -w debug-init-sh /proc/cmdline ||
> -	! mount -o rw /dev/mtdblock${rwfs#mtd} $rwdir -t $rwfst
> +	! mount $rwdev $rwdir -t $rwfst -o $rwopts
>  then
>  	echo Please mount the rw file system on $rwdir from this
> shell
>  	while ! sulogin && ! test -f /takeover
> @@ -61,7 +69,7 @@ then
>  	exec /bin/sh
>  fi
>  
> -mount -o ro /dev/mtdblock${rofs#mtd} $rodir -t $rofst
> +mount $rodev $rodir -t $rofst -o $roopts
>  
>  rm -rf $work
>  mkdir -p $upper
> @@ -69,17 +77,17 @@ mkdir -p $work
>  
>  mount -t overlay -o lowerdir=$rodir,upperdir=$upper,workdir=$work
> cow /root
>  
> -if ! chroot /root /bin/sh -c "test -x /sbin/init -a -s /sbin/init"
> +if ! chroot /root /bin/sh -c "test -x '$init' -a -s '$init'"
>  then
>  	echo "Change Root test failed!  Invoking emergency shell."
>  	PS1=rescue#\  sulogin
>  fi
>  
> -for f in sys dev proc run
> +for f in $fslist
>  do
>  	mount --move $f root/$f
>  done
>  
> -# switch_root /root /sbin/init
> -exec chroot /root /sbin/init
> +# switch_root /root $init
> +exec chroot /root $init
>  
> diff --git a/meta-phosphor/common/recipes-phosphor/obmc-phosphor
> -initfs/files/obmc-update.sh b/meta-phosphor/common/recipes
> -phosphor/obmc-phosphor-initfs/files/obmc-update.sh
> index f83b1ad..ec4a769 100755
> --- a/meta-phosphor/common/recipes-phosphor/obmc-phosphor
> -initfs/files/obmc-update.sh
> +++ b/meta-phosphor/common/recipes-phosphor/obmc-phosphor
> -initfs/files/obmc-update.sh
> @@ -35,30 +35,35 @@ findmtd() {
>  	echo $m
>  }
>  
> -rofs=$(findmtd rofs)
>  rwfs=$(findmtd rwfs)
>  
> -rofst=squahsfs
> +rwdev=/dev/mtdblock${rwfs#mtd}
>  rwfst=ext4
> +rwopts=rw
> +rorwopts=ro${rwopts#rw}
> +
> +rwdir=rw
> +upper=$rwdir/cow
> +save=save/${upper##*/}
>  
>  if test -n "$rwfs" && test -s whitelist
>  then
>  
> -	mkdir -p rw
> -	mount /dev/mtdblock${rwfs#mtd} rw -oro -t $rwfst
> +	mkdir -p $rwdir
> +	mount $rwdev $rwdir -t $rwfst -o $rorwopts
>  
>  	while read f
>  	do
> -		if ! test -e rw/cow/$f
> +		if ! test -e $upper/$f
>  		then
>  			continue
>  		fi
> -		d="save/cow/$f"
> +		d="$save/$f"
>  		mkdir -p "${d%/*}"
> -		cp -rp rw/cow/$f "${d%/*}/"
> +		cp -rp $upper/$f "${d%/*}/"
>  	done < whitelist
>  
> -	umount rw
> +	umount $rwdir
>  fi
>  
>  image=/run/initramfs/image-
> @@ -67,7 +72,7 @@ do
>  	m=$(findmtd ${f#$image})
>  	if test -z "$m"
>  	then
> -		echo 1>&2  "Unable to find mtd partiton for $f"
> +		echo 1>&2  "Unable to find mtd partiton for
> ${f##*/}."
>  		exec /bin/sh
>  	fi
>  done
> @@ -80,12 +85,11 @@ do
>  	flashcp -v $f /dev/$m
>  done
>  
> -
> -if test -d save/cow
> +if test -d $save
>  then
> -	mount /dev/mtdblock${rwfs#mtd} rw -o rw -t $rwfst
> -	cp -rp save/cow/. rw/cow/
> -	umount rw
> +	mount $rwdev rw -t $rwfst -o rw

Shouldn't this be as below in line with the stated aim of the patch
(use of variables for mount parameters)?

	mount $rwdev $rwdir -t $rwfst -o $rwopts

> +	cp -rp $save/. $upper/
> +	umount $rwdir
>  fi
>  
>  # Execute the command systemd told us to ...


More information about the openbmc mailing list