From 7e04216c28d5b4d3bdfc88b1ccc8a0dfd148bb06 Mon Sep 17 00:00:00 2001 From: nwhitehorn Date: Tue, 22 Mar 2011 01:14:53 +0000 Subject: Use labels to find release media instead of hard-coded device paths. This makes booting more reliable (and working at all on USB sticks). While here, move responsibility for setting up fstab into the various platform mk-*.sh scripts. Suggested by: many --- release/Makefile | 2 -- release/amd64/make-memstick.sh | 23 +++++++++-------------- release/amd64/mkisoimages.sh | 3 +++ release/i386/make-memstick.sh | 23 +++++++++-------------- release/i386/mkisoimages.sh | 3 +++ release/ia64/mkisoimages.sh | 2 ++ release/powerpc/mkisoimages.sh | 3 +++ release/sparc64/mkisoimages.sh | 2 ++ 8 files changed, 31 insertions(+), 30 deletions(-) (limited to 'release') diff --git a/release/Makefile b/release/Makefile index 828328d..4201ae2 100644 --- a/release/Makefile +++ b/release/Makefile @@ -127,9 +127,7 @@ system: packagesystem touch ${.OBJDIR}/${.TARGET} release.iso: system - echo kernel_options=\"-C\" > ${.OBJDIR}/release/boot/loader.conf sh ${.CURDIR}/${TARGET}/mkisoimages.sh -b FreeBSD_Install ${.OBJDIR}/release.iso ${.OBJDIR}/release - rm ${.OBJDIR}/release/boot/loader.conf memstick: system sh ${.CURDIR}/${TARGET}/make-memstick.sh ${.OBJDIR}/release ${.OBJDIR}/memstick diff --git a/release/amd64/make-memstick.sh b/release/amd64/make-memstick.sh index 18f9cf1..42f56f7 100755 --- a/release/amd64/make-memstick.sh +++ b/release/amd64/make-memstick.sh @@ -32,12 +32,14 @@ if [ -e ${2} ]; then exit 1 fi +echo '/dev/gpt/FreeBSD_Install / ufs rw,noatime 1 1' > ${1}/etc/fstab rm -f ${tempfile} -makefs ${tempfile} ${1} +makefs -B little ${tempfile} ${1} if [ $? -ne 0 ]; then echo "makefs failed" exit 1 fi +rm ${1}/etc/fstab # # Use $BLOCKSIZE for transfers to improve efficiency. When calculating @@ -46,7 +48,7 @@ fi # filesize=`stat -f "%z" ${tempfile}` -blocks=$(($filesize / ${BLOCKSIZE} + 2)) +blocks=$(($filesize / ${BLOCKSIZE} + 256)) dd if=/dev/zero of=${2} bs=${BLOCKSIZE} count=${blocks} if [ $? -ne 0 ]; then echo "creation of image file failed" @@ -59,19 +61,12 @@ if [ $? -ne 0 ]; then exit 1 fi -fdisk -BIq /dev/${unit} -if [ $? -ne 0 ]; then - echo "fdisk failed" - exit 1 -fi - -bsdlabel -B -w /dev/${unit} -if [ $? -ne 0 ]; then - echo "bsdlabel failed" - exit 1 -fi +gpart create -s GPT ${unit} +gpart add -t freebsd-boot -s 64K ${unit} +gpart bootcode -b ${1}/boot/pmbr -p ${1}/boot/gptboot -i 1 ${unit} +gpart add -t freebsd-ufs -l FreeBSD_Install ${unit} -dd if=${tempfile} of=/dev/${unit}a bs=$BLOCKSIZE conv=sync +dd if=${tempfile} of=/dev/${unit}p2 bs=$BLOCKSIZE conv=sync if [ $? -ne 0 ]; then echo "copying filesystem into image file failed" exit 1 diff --git a/release/amd64/mkisoimages.sh b/release/amd64/mkisoimages.sh index a538d5b..c8c1986 100644 --- a/release/amd64/mkisoimages.sh +++ b/release/amd64/mkisoimages.sh @@ -54,4 +54,7 @@ fi LABEL=$1; shift NAME=$1; shift +echo "/dev/iso9660/$LABEL / cd9660 ro 0 0" > $1/etc/fstab mkisofs $bootable -r -J -V $LABEL -publisher "$publisher" -o $NAME $* +rm $1/etc/fstab + diff --git a/release/i386/make-memstick.sh b/release/i386/make-memstick.sh index 18f9cf1..42f56f7 100755 --- a/release/i386/make-memstick.sh +++ b/release/i386/make-memstick.sh @@ -32,12 +32,14 @@ if [ -e ${2} ]; then exit 1 fi +echo '/dev/gpt/FreeBSD_Install / ufs rw,noatime 1 1' > ${1}/etc/fstab rm -f ${tempfile} -makefs ${tempfile} ${1} +makefs -B little ${tempfile} ${1} if [ $? -ne 0 ]; then echo "makefs failed" exit 1 fi +rm ${1}/etc/fstab # # Use $BLOCKSIZE for transfers to improve efficiency. When calculating @@ -46,7 +48,7 @@ fi # filesize=`stat -f "%z" ${tempfile}` -blocks=$(($filesize / ${BLOCKSIZE} + 2)) +blocks=$(($filesize / ${BLOCKSIZE} + 256)) dd if=/dev/zero of=${2} bs=${BLOCKSIZE} count=${blocks} if [ $? -ne 0 ]; then echo "creation of image file failed" @@ -59,19 +61,12 @@ if [ $? -ne 0 ]; then exit 1 fi -fdisk -BIq /dev/${unit} -if [ $? -ne 0 ]; then - echo "fdisk failed" - exit 1 -fi - -bsdlabel -B -w /dev/${unit} -if [ $? -ne 0 ]; then - echo "bsdlabel failed" - exit 1 -fi +gpart create -s GPT ${unit} +gpart add -t freebsd-boot -s 64K ${unit} +gpart bootcode -b ${1}/boot/pmbr -p ${1}/boot/gptboot -i 1 ${unit} +gpart add -t freebsd-ufs -l FreeBSD_Install ${unit} -dd if=${tempfile} of=/dev/${unit}a bs=$BLOCKSIZE conv=sync +dd if=${tempfile} of=/dev/${unit}p2 bs=$BLOCKSIZE conv=sync if [ $? -ne 0 ]; then echo "copying filesystem into image file failed" exit 1 diff --git a/release/i386/mkisoimages.sh b/release/i386/mkisoimages.sh index 9bb3dbc..d5570dc 100644 --- a/release/i386/mkisoimages.sh +++ b/release/i386/mkisoimages.sh @@ -57,4 +57,7 @@ fi LABEL=$1; shift NAME=$1; shift +echo "/dev/iso9660/$LABEL / cd9660 ro 0 0" > $1/etc/fstab mkisofs $bootable -r -J -V $LABEL -publisher "$publisher" -o $NAME $* +rm $1/etc/fstab + diff --git a/release/ia64/mkisoimages.sh b/release/ia64/mkisoimages.sh index 192228b..edb4bc3 100644 --- a/release/ia64/mkisoimages.sh +++ b/release/ia64/mkisoimages.sh @@ -91,6 +91,8 @@ fi publisher="The FreeBSD Project. http://www.freebsd.org/" +echo "/dev/iso9660/$LABEL / cd9660 ro 0 0" > $1/etc/fstab $MKISOFS $BOOTOPTS -r -J -V $LABEL -publisher "$publisher" -o $NAME $BASE $* rm -f $BASE/$EFIPART +rm $1/etc/fstab exit 0 diff --git a/release/powerpc/mkisoimages.sh b/release/powerpc/mkisoimages.sh index e381af9..72136c6 100644 --- a/release/powerpc/mkisoimages.sh +++ b/release/powerpc/mkisoimages.sh @@ -54,4 +54,7 @@ fi LABEL=$1; shift NAME=$1; shift +echo "/dev/iso9660/$LABEL / cd9660 ro 0 0" > $1/etc/fstab mkisofs $bootable -l -r -part -no-desktop -V $LABEL -o $NAME $* +rm $1/etc/fstab + diff --git a/release/sparc64/mkisoimages.sh b/release/sparc64/mkisoimages.sh index 333cf1b..c2937cb 100644 --- a/release/sparc64/mkisoimages.sh +++ b/release/sparc64/mkisoimages.sh @@ -66,5 +66,7 @@ fi LABEL=$1; shift NAME=$1; shift +echo "/dev/iso9660/$LABEL / cd9660 ro 0 0" > $1/etc/fstab mkisofs $bootable -r -J -V $LABEL -publisher "$publisher" -o $NAME $* +rm $1/etc/fstab rm -f ${IMG} -- cgit v1.1