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>

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

[-- Attachment #1 --]
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:
> 
>> After looking in the /root/updatep2 script I realized that it cannot
>> work when NANO_LABEL parameter
>> is set when building the NanoBSD image.
> 
> 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’ve fixed exactly this problem yesterday to make booting from a USB thumb drive, and embedded CF card using the same image work.
> 
> If you could test them, I’d be more than happy to commit them.

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

Nick Hibma
nick@van-laarhoven.org


[-- Attachment #2 --]
#!/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}

[-- Attachment #3 --]
#!/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}
help

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