[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#629637: add option to create swap file in image



Package: live-build
Version: 3.0~a18-1
Severity: wishlist
Tags: patch
User: ubuntu-devel@lists.ubuntu.com
Usertags: origin-ubuntu ubuntu-patch oneiric

livecd-rootfs has a facility to create an empty swap file on ext2/ext3
images, which Ubuntu's boot scripts then deal with using or deleting as
appropriate at the first boot.  Apparently this cuts three minutes off
the boot time of our preinstalled (jasper-based) images on ARM.

This seems like a sufficiently useful facility (at least relative to
ext2/ext3 images) that it would be nice to have it as options rather
than hooks.  Patch attached.

Thanks,

-- 
Colin Watson                                       [cjwatson@ubuntu.com]
>From 5ae2040d7c8470d7488993e0069d827e56aa8be5 Mon Sep 17 00:00:00 2001
From: Colin Watson <cjwatson@canonical.com>
Date: Wed, 8 Jun 2011 11:30:29 +0100
Subject: [PATCH] Add --swap-file-path and --swap-file-size options.

---
 functions/defaults.sh         |    3 +++
 manpages/en/lb_config.1       |    4 ++++
 scripts/build/lb_chroot_hacks |    5 +++++
 scripts/build/lb_config       |   22 +++++++++++++++++++++-
 4 files changed, 33 insertions(+), 1 deletions(-)

diff --git a/functions/defaults.sh b/functions/defaults.sh
index e26f1ac..7c9d288 100755
--- a/functions/defaults.sh
+++ b/functions/defaults.sh
@@ -1102,6 +1102,9 @@ Set_defaults ()
 			;;
 	esac
 
+	# Setting swap file
+	LB_SWAP_FILE_SIZE="${LB_SWAP_FILE_SIZE:-512}"
+
 	## config/source
 
 	# Setting source option
diff --git a/manpages/en/lb_config.1 b/manpages/en/lb_config.1
index f1204b0..9e2f858 100644
--- a/manpages/en/lb_config.1
+++ b/manpages/en/lb_config.1
@@ -474,6 +474,10 @@ defines if the security repositories specified in the security mirror options sh
 defines if a corresponding source image to the binary image should be build. By default this is false because most people do not require this and would require to download quite a few source packages. However, once you start distributing your live image, you should make sure you build it with a source image alongside.
 .IP "\-s|\fB\-\-source\-images\fR iso|net|tar|usb\-hdd" 4
 defines the image type for the source image. Default is tar.
+.IP "\fB\-\-swap\-file\-path\fR \fIPATH\fR" 4
+defines the path to a swap file to create in the binary image. Default is not to create a swap file.
+.IP "\fB\-\-swap\-file\-size\fR \fIMB\fR" 4
+defines what size in megabytes the swap file should be, if one is to be created. Default is 512MB.
 .IP "\fB\-\-syslinux\-splash\fR \fIFILE\fR" 4
 defines the file of the syslinux splash graphic that should be used instead of the default one.
 .IP "\fB\-\-syslinux\-timeout\fR \fISECONDS\fR" 4
diff --git a/scripts/build/lb_chroot_hacks b/scripts/build/lb_chroot_hacks
index bbb39ce..f9e11dd 100755
--- a/scripts/build/lb_chroot_hacks
+++ b/scripts/build/lb_chroot_hacks
@@ -314,6 +314,11 @@ then
 	ln -s /proc/mounts chroot/etc/mtab
 fi
 
+if [ "${LB_SWAP_FILE_PATH}" ]; then
+	dd if=/dev/zero of="chroot/${LB_SWAP_FILE_PATH}" bs=1024k count="${LB_SWAP_FILE_SIZE}"
+	mkswap "chroot/${LB_SWAP_FILE_PATH}"
+fi
+
 # Show popular warnings
 if [ -e chroot/etc/init.d/resolvconf ]
 then
diff --git a/scripts/build/lb_config b/scripts/build/lb_config
index 2f49557..f129255 100755
--- a/scripts/build/lb_config
+++ b/scripts/build/lb_config
@@ -135,6 +135,8 @@ USAGE="${PROGRAM}   [--apt apt|aptitude]\n\
 \t    [--security true|false]\n\
 \t    [--source true|false]\n\
 \t    [-s|--source-images iso|net|tar|usb-hdd]\n\
+\t    [--swap-file-path PATH]\n\
+\t    [--swap-file-size MB]\n\
 \t    [--syslinux-theme THEME_SUFFIX]\n\
 \t    [--tasksel apt|aptitude|tasksel]\n\
 \t    [--tasks TASK|\"TASKS\"]\n\
@@ -166,7 +168,7 @@ Local_arguments ()
 		grub-splash:,hostname:,isohybrid-options:,iso-application:,iso-preparer:,iso-publisher:,
 		iso-volume:,jffs2-eraseblock:,memtest:,net-root-filesystem:,net-root-mountoptions:,
 		net-root-path:,net-root-server:,net-cow-filesystem:,net-cow-mountoptions:,net-cow-path:,
-		net-cow-server:,net-tarball:,syslinux-theme:,
+		net-cow-server:,net-tarball:,swap-file-path:,swap-file-size:,syslinux-theme:,
 		username:,win32-loader:,source:,source-images:,breakpoints,conffile:,debug,force,
 		help,ignore-system-defaults,quiet,usage,verbose,version"
 	# Remove spaces added by indentation
@@ -754,6 +756,16 @@ Local_arguments ()
 				shift 2
 				;;
 
+			--swap-file-path)
+				LB_SWAP_FILE_PATH="${2}"
+				shift 2
+				;;
+
+			--swap-file-size)
+				LB_SWAP_FILE_SIZE="${2}"
+				shift 2
+				;;
+
 			--syslinux-theme)
 				LB_SYSLINUX_THEME="${2}"
 				shift 2
@@ -1375,6 +1387,14 @@ LB_NET_COW_SERVER="${LB_NET_COW_SERVER}"
 # (Default: ${LB_NET_TARBALL})
 LB_NET_TARBALL="${LB_NET_TARBALL}"
 
+# \$LB_SWAP_FILE_PATH: set swap file path
+# (Default: ${LB_SWAP_FILE_PATH})
+LB_SWAP_FILE_PATH="${LB_SWAP_FILE_PATH}"
+
+# \$LB_SWAP_FILE_SIZE: set swap file size
+# (Default: ${LB_SWAP_FILE_SIZE})
+LB_SWAP_FILE_SIZE="${LB_SWAP_FILE_SIZE}"
+
 # \$LB_SYSLINUX_THEME: set syslinux theme package
 # (Default: ${LB_SYSLINUX_THEME})
 LB_SYSLINUX_THEME="${LB_SYSLINUX_THEME}"
-- 
1.7.5.3


Reply to: