]> git.ipfire.org Git - ipfire-2.x.git/commitdiff
flash-image: add automatic resizing /var partition at first boot.
authorArne Fitzenreiter <arne_f@ipfire.org>
Fri, 20 Jan 2012 07:02:31 +0000 (08:02 +0100)
committerArne Fitzenreiter <arne_f@ipfire.org>
Fri, 20 Jan 2012 07:02:31 +0000 (08:02 +0100)
config/rootfiles/common/armv5tel/initscripts
config/rootfiles/common/i586/initscripts
lfs/flash-images
src/initscripts/init.d/fsresize [new file with mode: 0644]
src/initscripts/init.d/partresize [new file with mode: 0644]

index 22a7c1391b7ff649f83ebd4ccfa4c36ba6aded98..a7f0fed35114fdb5bcf5f77daa0a4c995b5fbfe7 100644 (file)
@@ -93,6 +93,8 @@ etc/rc.d/init.d/networking/red.up/99-pakfire-update
 etc/rc.d/init.d/ntp
 #etc/rc.d/init.d/nut
 #etc/rc.d/init.d/openvmtools
+etc/rc.d/init.d/partresize
+etc/rc.d/init.d/fsresize
 #etc/rc.d/init.d/portmap
 #etc/rc.d/init.d/postfix
 #etc/rc.d/init.d/pound
index 65fa0cd510aeb30951c6ccce4ac4bb08036f68a5..91e33081aaffbfde6c56437a5125bcababa3995e 100644 (file)
@@ -94,6 +94,8 @@ etc/rc.d/init.d/networking/red.up/99-pakfire-update
 etc/rc.d/init.d/ntp
 #etc/rc.d/init.d/nut
 #etc/rc.d/init.d/openvmtools
+etc/rc.d/init.d/partresize
+etc/rc.d/init.d/fsresize
 #etc/rc.d/init.d/portmap
 #etc/rc.d/init.d/postfix
 #etc/rc.d/init.d/pound
index 7888423b671378d36b74c144d9f8a74adbdd4aef..0b07704b10c1598f7879ffad84990a7c0fefa0dc 100644 (file)
@@ -111,6 +111,11 @@ ifneq "$(MACHINE_TYPE)" "arm"
        sed -i -e "s|ROOT|UUID=$$(blkid -sUUID $(IMGroot) | cut -d'"' -f2)|g" $(MNThdd)/boot/grub/grub.conf
        ln -s grub.conf $(MNThdd)/boot/grub/menu.lst
 
+       # Setup symlink for partresize at first boot...
+       ln -sf ../init.d/partresize $(MNThdd)/etc/rc.d/rcsysinit.d/S25partresize
+       # Setup symlink for fsresize at second boot...
+       ln -sf ../init.d/fsresize $(MNThdd)/etc/rc.d/rcsysinit.d/S26fsresize
+
        # Copy grub files manually
        cp -f $(MNThdd)/usr/share/grub/i386-pc/* $(MNThdd)/boot/grub/
 endif
@@ -123,12 +128,18 @@ endif
        umount $(MNThdd)/var
        umount $(MNThdd)
 
-       # zerofree the ext3 images to get better compression
+       # zerofree the ext2 images to get better compression
 ifneq "$(MACHINE_TYPE)" "arm"
        zerofree $(IMGboot)
+       -fsck.ext2 -f -y $(IMGboot)
+       fsck.ext2 -f -y $(IMGboot)
 endif
        zerofree $(IMGroot)
+       -fsck.ext2 -f -y  $(IMGroot)
+       fsck.ext2 -f -y  $(IMGroot)
        zerofree $(IMGvar)
+       -fsck.ext2 -f -y  $(IMGvar)
+       fsck.ext2 -f -y  $(IMGvar)
 
        # Cat to an image
        cat $(IMGpart) $(IMGboot) $(IMGroot) $(IMGvar) > $(IMGinst)
@@ -175,9 +186,15 @@ endif
        # zerofree the ext3 images to get better compression
 ifneq "$(MACHINE_TYPE)" "arm"
        zerofree $(IMGboot)
+       -fsck.ext2 -f -y  $(IMGboot)
+       fsck.ext2 -f -y  $(IMGboot)
 endif
        zerofree $(IMGroot)
+       -fsck.ext2 -f -y  $(IMGroot)
+       fsck.ext2 -f -y  $(IMGroot)
        zerofree $(IMGvar)
+       -fsck.ext2 -f -y  $(IMGvar)
+       fsck.ext2 -f -y  $(IMGvar)
 
        # Cat to an image
        cat $(IMGpart) $(IMGboot) $(IMGroot) $(IMGvar) > $(IMGinsts)
diff --git a/src/initscripts/init.d/fsresize b/src/initscripts/init.d/fsresize
new file mode 100644 (file)
index 0000000..b1af720
--- /dev/null
@@ -0,0 +1,46 @@
+#!/bin/sh
+########################################################################
+# Begin $rc_base/init.d/fsresize
+#
+# Description : Resize the /var filesystem
+#
+# Authors     : Arne Fitzenreiter - arne_f@ipfire.org
+#
+# Version     : 1.00
+#
+# Notes       :
+#
+########################################################################
+
+. /etc/sysconfig/rc
+. ${rc_functions}
+
+case "${1}" in
+       start)
+               boot_mesg "Autoresize /var partition to use the whole drive ..."
+
+               # Ensure that / is writeable
+               mount
+
+               # Detect device
+               ROOT=`mount | grep -m1 " / " | cut -d" " -f1`;
+               DRV=${ROOT::`expr length $ROOT`-1}
+               boot_mesg " * check filesystem on ${DRV}4 before resize ..."
+               fsck -f ${DRV}4
+
+               boot_mesg " * resize ${DRV}4 ..."
+               resize2fs -p ${DRV}4
+               evaluate_retval
+
+               # Erase symlink, it should run only once
+               rm -f /etc/rc.d/rcsysinit.d/S26fsresize
+
+               exit 0;
+               ;;
+       *)
+               echo "Usage: ${0} {start}"
+               exit 1
+               ;;
+esac
+
+# End $rc_base/init.d/26fsresize
diff --git a/src/initscripts/init.d/partresize b/src/initscripts/init.d/partresize
new file mode 100644 (file)
index 0000000..9c9a609
--- /dev/null
@@ -0,0 +1,45 @@
+#!/bin/sh
+########################################################################
+# Begin $rc_base/init.d/partresize
+#
+# Description : Resize the /var partition to the drivesize
+#
+# Authors     : Arne Fitzenreiter - arne_f@ipfire.org
+#
+# Version     : 1.00
+#
+# Notes       :
+#
+########################################################################
+
+. /etc/sysconfig/rc
+. ${rc_functions}
+
+case "${1}" in
+       start)
+
+               # Ensure that / is writeable
+               mount -o remount,rw /
+
+               # Detect device
+               ROOT=`mount | grep -m1 " / " | cut -d" " -f1`;
+               DRV=${ROOT::`expr length $ROOT`-1}
+
+               boot_mesg "Change Partition 4 to all free space ..."
+               echo -e 'd\n4\nn\np\n4\n\n\nw\nq\n' | fdisk ${DRV}
+
+               # Erase symlink, it should run only once
+               rm -f /etc/rc.d/rcsysinit.d/S25partresize
+
+               boot_mesg "Rebooting ..."
+               reboot -f
+
+               ;;
+       *)
+               echo "Usage: ${0} {start}"
+               exit 1
+               ;;
+esac
+
+# End $rc_base/init.d/partresize
+