growfs (273955) | growfs (284009) |
---|---|
1#!/bin/sh 2# 3# Copyright 2014 John-Mark Gurney 4# All rights reserved. 5# 6# Redistribution and use in source and binary forms, with or without 7# modification, are permitted provided that the following conditions 8# are met: --- 10 unchanged lines hidden (view full) --- 19# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 20# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 21# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 22# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 23# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 24# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 25# SUCH DAMAGE. 26# | 1#!/bin/sh 2# 3# Copyright 2014 John-Mark Gurney 4# All rights reserved. 5# 6# Redistribution and use in source and binary forms, with or without 7# modification, are permitted provided that the following conditions 8# are met: --- 10 unchanged lines hidden (view full) --- 19# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 20# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 21# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 22# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 23# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 24# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 25# SUCH DAMAGE. 26# |
27# $FreeBSD: head/etc/rc.d/growfs 273955 2014-11-02 00:11:25Z jmg $ | 27# $FreeBSD: stable/10/etc/rc.d/growfs 284009 2015-06-05 00:46:49Z cperciva $ |
28# 29 30# PROVIDE: growfs 31# BEFORE: sysctl 32# KEYWORD: firstboot 33 34# This allows us to distribute a image 35# and have it work on essentially any size drive. 36# 37# TODO: Figure out where this should really be ordered. | 28# 29 30# PROVIDE: growfs 31# BEFORE: sysctl 32# KEYWORD: firstboot 33 34# This allows us to distribute a image 35# and have it work on essentially any size drive. 36# 37# TODO: Figure out where this should really be ordered. |
38# I suspect it should go just after fsck but before mountcritlocal 39# but it's hard to tell for sure because of the bug described 40# below. | 38# I suspect it should go just after fsck but before mountcritlocal. |
41# 42 43. /etc/rc.subr 44 45name="growfs" 46start_cmd="growfs_start" 47stop_cmd=":" 48rcvar="growfs_enable" 49 50growfs_start () 51{ | 39# 40 41. /etc/rc.subr 42 43name="growfs" 44start_cmd="growfs_start" 45stop_cmd=":" 46rcvar="growfs_enable" 47 48growfs_start () 49{ |
52 echo "Growing root partition to fill device" 53 rootdev=$(df / | tail -n 1 | awk '{ sub("/dev/", "", $1); print $1 }') 54 if [ x"$rootdev" = x"${rootdev%/*}" ]; then 55 # raw device 56 rawdev="$rootdev" 57 else 58 rawdev=$(glabel status | awk '$1 == "'"$rootdev"'" { print $3 }') 59 if [ x"$rawdev" = x"" ]; then 60 echo "Can't figure out device for: $rootdev" 61 return | 50 echo "Growing root partition to fill device" 51 rootdev=$(df / | tail -n 1 | awk '{ sub("/dev/", "", $1); print $1 }') 52 if [ x"$rootdev" = x"${rootdev%/*}" ]; then 53 # raw device 54 rawdev="$rootdev" 55 else 56 rawdev=$(glabel status | awk '$1 == "'"$rootdev"'" { print $3 }') 57 if [ x"$rawdev" = x"" ]; then 58 echo "Can't figure out device for: $rootdev" 59 return 60 fi |
62 fi | 61 fi |
63 fi | |
64 | 62 |
65 sysctl -b kern.geom.conftxt | awk ' | 63 sysctl -b kern.geom.conftxt | awk ' |
66{ 67 lvl=$1 68 device[lvl] = $3 69 type[lvl] = $2 70 idx[lvl] = $7 71 parttype[lvl] = $13 72 if (dev == $3) { 73 for (i = 1; i <= lvl; i++) { --- 12 unchanged lines hidden (view full) --- 86 } 87 for (i = 1; i <= lvl; i++) { 88 if (cmd[i]) 89 system(cmd[i]) 90 } 91 exit 0 92 } 93}' dev="$rawdev" | 64{ 65 lvl=$1 66 device[lvl] = $3 67 type[lvl] = $2 68 idx[lvl] = $7 69 parttype[lvl] = $13 70 if (dev == $3) { 71 for (i = 1; i <= lvl; i++) { --- 12 unchanged lines hidden (view full) --- 84 } 85 for (i = 1; i <= lvl; i++) { 86 if (cmd[i]) 87 system(cmd[i]) 88 } 89 exit 0 90 } 91}' dev="$rawdev" |
94 growfs -y /dev/"$rootdev" | 92 growfs -y /dev/"$rootdev" |
95} 96 97load_rc_config $name 98run_rc_command "$1" | 93} 94 95load_rc_config $name 96run_rc_command "$1" |