From owner-freebsd-bugs@FreeBSD.ORG Fri Feb 11 15:10:10 2011 Return-Path: Delivered-To: freebsd-bugs@hub.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 28FB51065675 for ; Fri, 11 Feb 2011 15:10:10 +0000 (UTC) (envelope-from gnats@FreeBSD.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2001:4f8:fff6::28]) by mx1.freebsd.org (Postfix) with ESMTP id DEC678FC20 for ; Fri, 11 Feb 2011 15:10:09 +0000 (UTC) Received: from freefall.freebsd.org (localhost [127.0.0.1]) by freefall.freebsd.org (8.14.4/8.14.4) with ESMTP id p1BFA9hv073786 for ; Fri, 11 Feb 2011 15:10:09 GMT (envelope-from gnats@freefall.freebsd.org) Received: (from gnats@localhost) by freefall.freebsd.org (8.14.4/8.14.4/Submit) id p1BFA92F073785; Fri, 11 Feb 2011 15:10:09 GMT (envelope-from gnats) Resent-Date: Fri, 11 Feb 2011 15:10:09 GMT Resent-Message-Id: <201102111510.p1BFA92F073785@freefall.freebsd.org> Resent-From: FreeBSD-gnats-submit@FreeBSD.org (GNATS Filer) Resent-To: freebsd-bugs@FreeBSD.org Resent-Reply-To: FreeBSD-gnats-submit@FreeBSD.org, Kris Moore Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 9993C1065673 for ; Fri, 11 Feb 2011 15:06:56 +0000 (UTC) (envelope-from nobody@FreeBSD.org) Received: from red.freebsd.org (red.freebsd.org [IPv6:2001:4f8:fff6::22]) by mx1.freebsd.org (Postfix) with ESMTP id 7CDA98FC0A for ; Fri, 11 Feb 2011 15:06:56 +0000 (UTC) Received: from red.freebsd.org (localhost [127.0.0.1]) by red.freebsd.org (8.14.4/8.14.4) with ESMTP id p1BF6ujR037565 for ; Fri, 11 Feb 2011 15:06:56 GMT (envelope-from nobody@red.freebsd.org) Received: (from nobody@localhost) by red.freebsd.org (8.14.4/8.14.4/Submit) id p1BF6uWl037564; Fri, 11 Feb 2011 15:06:56 GMT (envelope-from nobody) Message-Id: <201102111506.p1BF6uWl037564@red.freebsd.org> Date: Fri, 11 Feb 2011 15:06:56 GMT From: Kris Moore To: freebsd-gnats-submit@FreeBSD.org X-Send-Pr-Version: www-3.1 Cc: Subject: bin/154684: bin: usr.sbin/pc-sysinstall - Improvements for pc-sysinstall to create GPT and other types of partitions X-BeenThere: freebsd-bugs@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Bug reports List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 11 Feb 2011 15:10:10 -0000 >Number: 154684 >Category: bin >Synopsis: bin: usr.sbin/pc-sysinstall - Improvements for pc-sysinstall to create GPT and other types of partitions >Confidential: no >Severity: non-critical >Priority: low >Responsible: freebsd-bugs >State: open >Quarter: >Keywords: >Date-Required: >Class: update >Submitter-Id: current-users >Arrival-Date: Fri Feb 11 15:10:09 UTC 2011 >Closed-Date: >Last-Modified: >Originator: Kris Moore >Release: 9.0-Current >Organization: PC-BSD / iXsystems >Environment: FreeBSD 9.0-CURRENT >Description: The included patch adds support to pc-sysinstall's create-part feature, to create non MBR type partitions, such as GPT and others. >How-To-Repeat: >Fix: Patch attached with submission follows: diff -ruN usr.sbin/pc-sysinstall/backend-partmanager/create-part.sh usr.sbin/pc-sysinstall/backend-partmanager/create-part.sh --- usr.sbin/pc-sysinstall/backend-partmanager/create-part.sh 2011-01-27 10:26:03.659375118 -0500 +++ usr.sbin/pc-sysinstall/backend-partmanager/create-part.sh 2011-01-27 11:48:40.178393624 -0500 @@ -25,7 +25,7 @@ # # $FreeBSD$ -# Query a disk for partitions and display them +# Create partitions on a target disk ############################# . ${PROGDIR}/backend/functions.sh @@ -47,46 +47,40 @@ DISK="${1}" MB="${2}" +TYPE="${3}" +STARTBLOCK="${4}" TOTALBLOCKS="`expr $MB \* 2048`" +# If no TYPE specified, default to MBR +if [ -z "$TYPE" ] ; then TYPE="mbr" ; fi -# Lets figure out what number this slice will be -LASTSLICE="`fdisk -s /dev/${DISK} 2>/dev/null | grep -v ${DISK} | grep ':' | tail -n 1 | cut -d ':' -f 1 | tr -s '\t' ' ' | tr -d ' '`" +# Lets figure out what number this partition will be +LASTSLICE="`gpart show $DISK | grep -v -e $DISK -e '\- free \-' -e '^$' | tail -1 | tr -s ' ' | cut -d ' ' -f 4`" if [ -z "${LASTSLICE}" ] ; then LASTSLICE="1" else LASTSLICE="`expr $LASTSLICE + 1`" fi -if [ ${LASTSLICE} -gt "4" ] ; then - echo "Error: FreeBSD MBR setups can only have a max of 4 slices" - exit 1 -fi - - SLICENUM="${LASTSLICE}" -# Lets get the starting block -if [ "${SLICENUM}" = "1" ] ; then - STARTBLOCK="63" -else - # Lets figure out where the prior slice ends - checkslice="`expr ${SLICENUM} - 1`" - - # Get starting block of this slice - fdisk -s /dev/${DISK} | grep -v "${DISK}:" | grep "${checkslice}:" | tr -s " " >${TMPDIR}/pfdisk - pstartblock="`cat ${TMPDIR}/pfdisk | cut -d ' ' -f 3`" - psize="`cat ${TMPDIR}/pfdisk | cut -d ' ' -f 4`" - STARTBLOCK="`expr ${pstartblock} + ${psize}`" +# Set a 4k Aligned start block if none specified +if [ "${SLICENUM}" = "1" -a -z "$STARTBLOCK" ] ; then + STARTBLOCK="2016" fi -# If this is an empty disk, see if we need to create a new MBR scheme for it +# If this is an empty disk, see if we need to create a new scheme for it gpart show ${DISK} >/dev/null 2>/dev/null if [ "$?" != "0" -a "${SLICENUM}" = "1" ] ; then - gpart create -s mbr ${DISK} + gpart create -s ${TYPE} ${DISK} +fi + +# If we have a starting block, use it +if [ -z "$STARTBLOCK" ] ; then + sBLOCK="-b $STARTBLOCK" fi -gpart add -b ${STARTBLOCK} -s ${TOTALBLOCKS} -t freebsd -i ${SLICENUM} ${DISK} +gpart add ${sBLOCK} -s ${TOTALBLOCKS} -t freebsd -i ${SLICENUM} ${DISK} exit "$?" diff -ruN usr.sbin/pc-sysinstall/pc-sysinstall/pc-sysinstall.sh usr.sbin/pc-sysinstall/pc-sysinstall/pc-sysinstall.sh --- usr.sbin/pc-sysinstall/pc-sysinstall/pc-sysinstall.sh 2011-01-27 10:26:03.709380520 -0500 +++ usr.sbin/pc-sysinstall/pc-sysinstall/pc-sysinstall.sh 2011-01-27 11:49:10.371138733 -0500 @@ -125,7 +125,7 @@ ;; # The user is wanting to create a new partition - create-part) ${PARTMANAGERDIR}/create-part.sh "${2}" "${3}" + create-part) ${PARTMANAGERDIR}/create-part.sh "${2}" "${3}" "${4}" "${5}" ;; # The user is wanting to delete an existing partition >Release-Note: >Audit-Trail: >Unformatted: