From b6871cf68a0b32f191d864aac34e6622970a828a Mon Sep 17 00:00:00 2001 From: Stephen Hemminger Date: Mon, 2 May 2011 11:30:53 -0700 Subject: Adjust root partition offset based on disk size On tiny disks, then it doesn't make sense to waste space by offsetting root partition. On big disks, it doesn't hurt and it allows for running on SSD. --- scripts/install-system | 11 +++++++++-- scripts/install/install-get-partition | 17 ++++++++++++----- 2 files changed, 21 insertions(+), 7 deletions(-) diff --git a/scripts/install-system b/scripts/install-system index 4d712ee7..278e77dc 100755 --- a/scripts/install-system +++ b/scripts/install-system @@ -77,8 +77,8 @@ PARTITION='' # default file system type ROOT_FSTYPE="ext3" -# start of root partition (0% is magic to tell parted to align) -ROOT_OFFSET="0%" +# start of root partition (64 sectors == 32K bytes) +ROOT_OFFSET="64S" # Process ID of this script for the lame marketing spinner SPID=$$ @@ -1267,6 +1267,13 @@ setup_method_auto() { while [ $ROOT_MIN -gt $ROOT_PARTITION_SIZE ]; do # Get the size of the drive size=$(get_drive_size $INSTALL_DRIVE) + + # If drive is big, leave more space 512K bytes (1024 sectors) + # this is better for SSD + if (( $size > 10000 )); then + ROOT_OFFSET="1024S" + fi + echo -n "How big of a root partition should I create? ($ROOT_MIN"MB" - $size"MB") [$size]MB: " response=$(get_response "$size") # TODO: need to have better error checking on this value diff --git a/scripts/install/install-get-partition b/scripts/install/install-get-partition index debb2eaa..b15092a6 100755 --- a/scripts/install/install-get-partition +++ b/scripts/install/install-get-partition @@ -34,8 +34,8 @@ PARTITION='' # default file system type ROOT_FSTYPE='ext3' -# start of root partition (0% is magic to tell parted to align) -ROOT_OFFSET="0%" +# default start of root partition +ROOT_OFFSET="64S" warn_of_dire_consequences () { # Give the user a requisite warning that we are about to nuke their drive @@ -713,11 +713,18 @@ create_partitions() { fi } -# sets ROOT_FSTYPE based on disk size +# adjust root filesystem based on disk size set_root_fstype () { local drv=$1 - # always use ext3 for stability - ROOT_FSTYPE=ext3 + local sz=$(get_drive_size "$drv") + + # if disk is small, then don't waste space aligning + # otherwise align on 512K boundary for SSD etc + if (( $sz < 10000 )); then + ROOT_OFFSET="64S" + else + ROOT_OFFSET="1024S" + fi } # ask for user input on the parted and skip setup methods -- cgit v1.2.3