Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 28 Nov 2013 11:00:52 +0100
From:      Nick Hibma <nick@van-laarhoven.org>
To:        Ilya Bakulin <webmaster@kibab.com>
Cc:        "freebsd-embedded@freebsd.org" <freebsd-embedded@freebsd.org>
Subject:   Re: NanoBSD update scripts are broken when using disk labels
Message-ID:  <330D2CBB-9A54-487D-B780-1936E8F58B74@van-laarhoven.org>
In-Reply-To: <4615AB4C-9DA5-4475-BFB6-68964B4CFC0A@van-laarhoven.org>
References:  <52926BE0.8050003@kibab.com> <4615AB4C-9DA5-4475-BFB6-68964B4CFC0A@van-laarhoven.org>

next in thread | previous in thread | raw e-mail | index | archive | help

--Apple-Mail=_E662584A-B864-41AE-A2CB-42CB72BF2E6F
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain;
	charset=windows-1252

On 28 Nov 2013, at 09:49, Nick Hibma <nick@van-laarhoven.org> wrote:

> On 24 Nov 2013, at 22:13, Ilya Bakulin <webmaster@kibab.com> wrote:
>=20
>> After looking in the /root/updatep2 script I realized that it cannot
>> work when NANO_LABEL parameter
>> is set when building the NanoBSD image.
>=20
> The problem is that you need the device, not the UFS label to update =
the active partition. Attached the fixed updatep1 and updatep2 scripts. =
I=92ve fixed exactly this problem yesterday to make booting from a USB =
thumb drive, and embedded CF card using the same image work.
>=20
> If you could test them, I=92d be more than happy to commit them.

The dev=3D line was incorrect in the scripts I provided. Try the =
attached files instead.

Nick Hibma
nick@van-laarhoven.org


--Apple-Mail=_E662584A-B864-41AE-A2CB-42CB72BF2E6F
Content-Disposition: attachment;
	filename=updatep1
Content-Type: application/octet-stream;
	x-unix-mode=0644;
	name="updatep1"
Content-Transfer-Encoding: 7bit

#!/bin/sh
#
# Copyright (c) 2004-2005 Poul-Henning Kamp.
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
# are met:
# 1. Redistributions of source code must retain the above copyright
#    notice, this list of conditions and the following disclaimer.
# 2. Redistributions in binary form must reproduce the above copyright
#    notice, this list of conditions and the following disclaimer in the
#    documentation and/or other materials provided with the distribution.
#
# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
# ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
# SUCH DAMAGE.
#
# $FreeBSD: head/tools/tools/nanobsd/Files/root/updatep1 205584 2010-03-24 11:21:33Z phk $
#
# Script to update partition 1 on a NanoBSD system.
#
# usage:
#	ssh somewhere cat image.s1 | sh updatep1
#

set -e

. /etc/nanobsd.conf

if mount | grep ${NANO_DRIVE}s1 > /dev/null ; then
	echo "You are running partition 1 already"
	echo "you probably want to use 'updatep2' instead"
	exit 1
fi

dev=$NANO_DRIVE
test -n "$NANO_LABEL" \
	&& dev=$(glabel status -s | grep $NANO_DRIVE | awk '{gsub("s[0-9]a?$",""); print $3; exit 0}')

# Blow away old system.
dd if=/dev/zero of=/dev/${dev}s1 bs=1m count=1 > /dev/null 2>&1

# Copy in new system
dd of=/dev/${dev}s1 obs=64k

# Check that it worked
fsck_ffs -n /dev/${NANO_DRIVE}s1a

gpart set -a active -i 1 ${dev}

--Apple-Mail=_E662584A-B864-41AE-A2CB-42CB72BF2E6F
Content-Disposition: attachment;
	filename=updatep2
Content-Type: application/octet-stream;
	x-unix-mode=0644;
	name="updatep2"
Content-Transfer-Encoding: 7bit

#!/bin/sh
#
# Copyright (c) 2004-2005 Poul-Henning Kamp.
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
# are met:
# 1. Redistributions of source code must retain the above copyright
#    notice, this list of conditions and the following disclaimer.
# 2. Redistributions in binary form must reproduce the above copyright
#    notice, this list of conditions and the following disclaimer in the
#    documentation and/or other materials provided with the distribution.
#
# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
# ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
# SUCH DAMAGE.
#
# $FreeBSD: head/tools/tools/nanobsd/Files/root/updatep2 205584 2010-03-24 11:21:33Z phk $
#
# Script to update partition 2 on a NanoBSD system.
#
# usage:
#	ssh somewhere cat image.s1 | sh updatep2
#

set -e

. /etc/nanobsd.conf

if mount | grep ${NANO_DRIVE}s2 > /dev/null ; then
	echo "You are running partition 2 already"
	echo "you probably want to use 'updatep1' instead"
	exit 1
fi

dev=$NANO_DRIVE
test -n "$NANO_LABEL" \
	&& dev=$(glabel status -s | grep $NANO_DRIVE | awk '{gsub("s[0-9]a?$",""); print $3; exit 0}')

# Blow away old system.
dd if=/dev/zero of=/dev/${dev}s2 bs=1m count=1 > /dev/null 2>&1

# Copy in new system
dd of=/dev/${dev}s2 obs=64k

# Check that it worked
fsck_ffs -n /dev/${NANO_DRIVE}s2a

# Update the /etc/fstab
trap "umount /mnt" 1 2 15 EXIT
mount /dev/${NANO_DRIVE}s2a /mnt
sed -i "" "s/${NANO_DRIVE}s1/${NANO_DRIVE}s2/" /mnt/conf/base/etc/fstab
sed -i "" "s/${NANO_DRIVE}s1/${NANO_DRIVE}s2/" /mnt/etc/fstab
umount /mnt
trap 1 2 15 EXIT
gpart set -a active -i 2 ${dev}

--Apple-Mail=_E662584A-B864-41AE-A2CB-42CB72BF2E6F--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?330D2CBB-9A54-487D-B780-1936E8F58B74>