add new option to mount cow device on nfs volume
At the moment this only works with the root volume on nfs as well. If we add a switch to configure the network early in the boot process then this option could be made available for other root mediums. This option works reliably on the latest kernel 2.6.23.1 On earlier kernels I experienced frequent oopses.
This commit is contained in:
parent
beebfa63ae
commit
bb08fc8d1e
|
@ -540,24 +540,27 @@ Set_defaults ()
|
||||||
LH_MEMTEST="${LH_MEMTEST:-memtest86+}"
|
LH_MEMTEST="${LH_MEMTEST:-memtest86+}"
|
||||||
|
|
||||||
# Setting netboot filesystem
|
# Setting netboot filesystem
|
||||||
LH_NET_FILESYSTEM="${LH_NET_FILESYSTEM:-nfs}"
|
LH_NET_ROOT_FILESYSTEM="${LH_NET_ROOT_FILESYSTEM:-nfs}"
|
||||||
|
|
||||||
# Setting netboot server path
|
# Setting netboot server path
|
||||||
if [ -z "${LH_NET_PATH}" ]
|
if [ -z "${LH_NET_ROOT_PATH}" ]
|
||||||
then
|
then
|
||||||
case "${LH_MODE}" in
|
case "${LH_MODE}" in
|
||||||
debian)
|
debian)
|
||||||
LH_NET_PATH="/srv/debian-live"
|
LH_NET_ROOT_PATH="/srv/debian-live"
|
||||||
;;
|
;;
|
||||||
|
|
||||||
debian-edu)
|
debian-edu)
|
||||||
LH_NET_PATH="/srv/debian-edu-live"
|
LH_NET_ROOT_PATH="/srv/debian-edu-live"
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Setting netboot server address
|
# Setting netboot server address
|
||||||
LH_NET_SERVER="${LH_NET_SERVER:-192.168.1.1}"
|
LH_NET_ROOT_SERVER="${LH_NET_ROOT_SERVER:-192.168.1.1}"
|
||||||
|
|
||||||
|
# Setting net cow filesystem
|
||||||
|
LH_NET_COW_FILESYSTEM="${LH_NET_COW_FILESYSTEM:-nfs}"
|
||||||
|
|
||||||
# Setting syslinux configuration file
|
# Setting syslinux configuration file
|
||||||
# LH_SYSLINUX_CFG
|
# LH_SYSLINUX_CFG
|
||||||
|
|
|
@ -178,6 +178,12 @@ then
|
||||||
LH_BOOTAPPEND_LIVE="${LH_BOOTAPPEND_LIVE} union=${LH_UNION_FILESYSTEM}"
|
LH_BOOTAPPEND_LIVE="${LH_BOOTAPPEND_LIVE} union=${LH_UNION_FILESYSTEM}"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
if [ -n "${LH_NET_COW_PATH}" ]
|
||||||
|
then
|
||||||
|
Echo_error "Net cow not yet supported on grub"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
if [ "${LH_EXPOSED_ROOT}" != "disabled" ]
|
if [ "${LH_EXPOSED_ROOT}" != "disabled" ]
|
||||||
then
|
then
|
||||||
LH_BOOTAPPEND_LIVE="${LH_BOOTAPPEND_LIVE} exposedroot"
|
LH_BOOTAPPEND_LIVE="${LH_BOOTAPPEND_LIVE} exposedroot"
|
||||||
|
|
|
@ -59,21 +59,21 @@ then
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Creating image file
|
# Creating image file
|
||||||
if [ "$(basename ${LH_NET_PATH})" = "chroot" ]
|
if [ "$(basename ${LH_NET_ROOT_PATH})" = "chroot" ]
|
||||||
then
|
then
|
||||||
mv chroot chroot.tmp
|
mv chroot chroot.tmp
|
||||||
fi
|
fi
|
||||||
|
|
||||||
mv binary "$(basename ${LH_NET_PATH})"
|
mv binary "$(basename ${LH_NET_ROOT_PATH})"
|
||||||
|
|
||||||
cd ..
|
cd ..
|
||||||
tar cfz binary-net.tar.gz "$(basename ${OLDPWD})/$(basename ${LH_NET_PATH})" "$(basename ${OLDPWD})/tftpboot"
|
tar cfz binary-net.tar.gz "$(basename ${OLDPWD})/$(basename ${LH_NET_ROOT_PATH})" "$(basename ${OLDPWD})/tftpboot"
|
||||||
mv binary-net.tar.gz "${OLDPWD}"
|
mv binary-net.tar.gz "${OLDPWD}"
|
||||||
cd "${OLDPWD}"
|
cd "${OLDPWD}"
|
||||||
|
|
||||||
mv "$(basename ${LH_NET_PATH})" binary
|
mv "$(basename ${LH_NET_ROOT_PATH})" binary
|
||||||
|
|
||||||
if [ "$(basename ${LH_NET_PATH})" = "chroot" ]
|
if [ "$(basename ${LH_NET_ROOT_PATH})" = "chroot" ]
|
||||||
then
|
then
|
||||||
mv chroot.tmp chroot
|
mv chroot.tmp chroot
|
||||||
fi
|
fi
|
||||||
|
|
|
@ -411,13 +411,13 @@ fi
|
||||||
|
|
||||||
if [ "${LH_BINARY_IMAGES}" = "net" ]
|
if [ "${LH_BINARY_IMAGES}" = "net" ]
|
||||||
then
|
then
|
||||||
case "${LH_NET_FILESYSTEM}" in
|
case "${LH_NET_ROOT_FILESYSTEM}" in
|
||||||
nfs)
|
nfs)
|
||||||
LH_BOOTAPPEND_LIVE="${LH_BOOTAPPEND_LIVE} netboot=nfs nfsroot=${LH_NET_SERVER}:${LH_NET_PATH}"
|
LH_BOOTAPPEND_LIVE="${LH_BOOTAPPEND_LIVE} netboot=nfs nfsroot=${LH_NET_ROOT_SERVER}:${LH_NET_ROOT_PATH}"
|
||||||
;;
|
;;
|
||||||
|
|
||||||
cifs)
|
cifs)
|
||||||
LH_BOOTAPPEND_LIVE="${LH_BOOTAPPEND_LIVE} netboot=cifs nfsroot=//${LH_NET_SERVER}${LH_NET_PATH}"
|
LH_BOOTAPPEND_LIVE="${LH_BOOTAPPEND_LIVE} netboot=cifs nfsroot=//${LH_NET_ROOT_SERVER}${LH_NET_ROOT_PATH}"
|
||||||
;;
|
;;
|
||||||
|
|
||||||
*)
|
*)
|
||||||
|
@ -426,12 +426,29 @@ then
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
if [ -n "${LH_NET_MOUNTOPTIONS}" ]
|
if [ -n "${LH_NET_ROOT_MOUNTOPTIONS}" ]
|
||||||
then
|
then
|
||||||
LH_BOOTAPPEND_LIVE="${LH_BOOTAPPEND_LIVE} nfsopts=${LH_NET_MOUNTOPTIONS}"
|
LH_BOOTAPPEND_LIVE="${LH_BOOTAPPEND_LIVE} nfsopts=${LH_NET_ROOT_MOUNTOPTIONS}"
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
if [ -n "${LH_NET_COW_PATH}" ]
|
||||||
|
then
|
||||||
|
case "${LH_NET_COW_FILESYSTEM}" in
|
||||||
|
nfs)
|
||||||
|
if [ -n "${LH_NET_COW_MOUNTOPTIONS}" ]
|
||||||
|
then
|
||||||
|
LH_NET_COW_MOUNTOPTIONS=",${LH_NET_COW_MOUNTOPTIONS}"
|
||||||
|
fi
|
||||||
|
LH_BOOTAPPEND_LIVE="${LH_BOOTAPPEND_LIVE} nfscow=${LH_NET_COW_SERVER}:${LH_NET_COW_PATH}${LH_NET_COW_MOUNTOPTIONS}"
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
Echo_error "Unsupported net filesystem"
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
fi
|
||||||
|
|
||||||
LH_BOOTAPPEND_LIVE="$(echo ${LH_BOOTAPPEND_LIVE} | sed -e 's/ //')"
|
LH_BOOTAPPEND_LIVE="$(echo ${LH_BOOTAPPEND_LIVE} | sed -e 's/ //')"
|
||||||
|
|
||||||
# Parameters are listed at: linux/Documentation/kernel-parameters.txt
|
# Parameters are listed at: linux/Documentation/kernel-parameters.txt
|
||||||
|
|
|
@ -186,6 +186,12 @@ then
|
||||||
LH_BOOTAPPEND_LIVE="${LH_BOOTAPPEND_LIVE} union=${LH_UNION_FILESYSTEM}"
|
LH_BOOTAPPEND_LIVE="${LH_BOOTAPPEND_LIVE} union=${LH_UNION_FILESYSTEM}"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
if [ -n "${LH_NET_COW_PATH}" ]
|
||||||
|
then
|
||||||
|
Echo_error "Net cow not yet supported on yaboot"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
if [ "${LH_EXPOSED_ROOT}" != "disabled" ]
|
if [ "${LH_EXPOSED_ROOT}" != "disabled" ]
|
||||||
then
|
then
|
||||||
LH_BOOTAPPEND_LIVE="${LH_BOOTAPPEND_LIVE} exposedroot"
|
LH_BOOTAPPEND_LIVE="${LH_BOOTAPPEND_LIVE} exposedroot"
|
||||||
|
|
|
@ -50,6 +50,10 @@ Create_lockfile .lock
|
||||||
# Removing udev mac caching rule
|
# Removing udev mac caching rule
|
||||||
Chroot "rm -f /etc/udev/rules.d/z25_persistent-net.rules"
|
Chroot "rm -f /etc/udev/rules.d/z25_persistent-net.rules"
|
||||||
|
|
||||||
|
# Blanking out fstab, so the live-initramfs will know to populate it
|
||||||
|
Chroot "rm -f /etc/fstab"
|
||||||
|
Chroot "touch /etc/fstab"
|
||||||
|
|
||||||
case "${LH_BINARY_IMAGES}" in
|
case "${LH_BINARY_IMAGES}" in
|
||||||
net)
|
net)
|
||||||
if [ ! -f chroot/usr/bin/smbmount ]
|
if [ ! -f chroot/usr/bin/smbmount ]
|
||||||
|
|
|
@ -76,10 +76,14 @@ USAGE="${PROGRAM} [--apt apt|aptitude]\n\
|
||||||
\t [--mirror-bootstrap-security URL]\n\
|
\t [--mirror-bootstrap-security URL]\n\
|
||||||
\t [--mirror-bootstrap URL]\n\
|
\t [--mirror-bootstrap URL]\n\
|
||||||
\t [--mode debian|debian-edu]\n\
|
\t [--mode debian|debian-edu]\n\
|
||||||
\t [--net-filesystem nfs|cfs]\n\
|
\t [--net-root-filesystem nfs|cfs]\n\
|
||||||
\t [--net-mountoptions OPTIONS]\n\
|
\t [--net-root-mountoptions OPTIONS]\n\
|
||||||
\t [--net-path PATH]\n\
|
\t [--net-root-path PATH]\n\
|
||||||
\t [--net-server IP|HOSTNAME]\n\
|
\t [--net-root-server IP|HOSTNAME]\n\
|
||||||
|
\t [--net-cow-filesystem nfs|cfs]\n\
|
||||||
|
\t [--net-cow-mountoptions OPTIONS]\n\
|
||||||
|
\t [--net-cow-path PATH]\n\
|
||||||
|
\t [--net-cow-server IP|HOSTNAME]\n\
|
||||||
\t [-p|--packages-lists FILE]\n\
|
\t [-p|--packages-lists FILE]\n\
|
||||||
\t [--packages PACKAGE|\"PACKAGES\"]\n\
|
\t [--packages PACKAGE|\"PACKAGES\"]\n\
|
||||||
\t [--quiet]\n\
|
\t [--quiet]\n\
|
||||||
|
@ -102,7 +106,7 @@ USAGE="${PROGRAM} [--apt apt|aptitude]\n\
|
||||||
|
|
||||||
Local_arguments ()
|
Local_arguments ()
|
||||||
{
|
{
|
||||||
ARGUMENTS="$(getopt --longoptions apt:,apt-ftp-proxy:,apt-http-proxy:,apt-pdiffs:,apt-pipeline:,apt-recommends:,apt-secure:,bootstrap:,cache:,cache-indices:,cache-packages:,cache-stages:,debconf-frontend:,debconf-nowarnings:,debconf-priority:,genisoimage:,initramfs:,losetup:,mode:,root-command:,tasksel:,includes:,templates:,architecture:,bootstrap-config:,bootstrap-flavour:,bootstrap-keyring:,distribution:,mirror-bootstrap:,mirror-bootstrap-security:,mirror-binary:,mirror-binary-security:,sections:,chroot-filesystem:,union-filesystem:,exposed-root:,hooks:,interactive:,keyring-packages:,language:,linux-flavours:,linux-packages:,packages:,packages-lists:,tasks:,security:,symlinks:,sysvinit:,binary-images:,binary-indices:,bootappend-install:,bootappend-live:,bootloader:,chroot-build:,debian-installer:,debian-installer-daily:,encryption:,grub-splash:,hostname:,iso-application:,iso-preparer:,iso-publisher:,iso-volume:,memtest:,net-filesystem:,net-mountoptions:,net-path:,net-server:,syslinux-splash:,syslinux-timeout:,username:,source:,source-images:,breakpoints,conffile:,debug,force,help,quiet,usage,verbose,version --name=${PROGRAM} --options a:f:d:m:l:k:p:b:e:s:c:huv --shell sh -- "${@}")"
|
ARGUMENTS="$(getopt --longoptions apt:,apt-ftp-proxy:,apt-http-proxy:,apt-pdiffs:,apt-pipeline:,apt-recommends:,apt-secure:,bootstrap:,cache:,cache-indices:,cache-packages:,cache-stages:,debconf-frontend:,debconf-nowarnings:,debconf-priority:,genisoimage:,initramfs:,losetup:,mode:,root-command:,tasksel:,includes:,templates:,architecture:,bootstrap-config:,bootstrap-flavour:,bootstrap-keyring:,distribution:,mirror-bootstrap:,mirror-bootstrap-security:,mirror-binary:,mirror-binary-security:,sections:,chroot-filesystem:,union-filesystem:,exposed-root:,hooks:,interactive:,keyring-packages:,language:,linux-flavours:,linux-packages:,packages:,packages-lists:,tasks:,security:,symlinks:,sysvinit:,binary-images:,binary-indices:,bootappend-install:,bootappend-live:,bootloader:,chroot-build:,debian-installer:,debian-installer-daily:,encryption:,grub-splash:,hostname:,iso-application:,iso-preparer:,iso-publisher:,iso-volume:,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:,syslinux-splash:,syslinux-timeout:,username:,source:,source-images:,breakpoints,conffile:,debug,force,help,quiet,usage,verbose,version --name=${PROGRAM} --options a:f:d:m:l:k:p:b:e:s:c:huv --shell sh -- "${@}")"
|
||||||
|
|
||||||
if [ "${?}" != "0" ]
|
if [ "${?}" != "0" ]
|
||||||
then
|
then
|
||||||
|
@ -464,23 +468,43 @@ Local_arguments ()
|
||||||
shift 2
|
shift 2
|
||||||
;;
|
;;
|
||||||
|
|
||||||
--net-filesystem)
|
--net-root-filesystem)
|
||||||
LH_NET_FILESYSTEM="${2}"
|
LH_NET_ROOT_FILESYSTEM="${2}"
|
||||||
shift 2
|
shift 2
|
||||||
;;
|
;;
|
||||||
|
|
||||||
--net-mountoptions)
|
--net-root-mountoptions)
|
||||||
LH_NET_MOUNTOPTIONS="${2}"
|
LH_NET_ROOT_MOUNTOPTIONS="${2}"
|
||||||
shift 2
|
shift 2
|
||||||
;;
|
;;
|
||||||
|
|
||||||
--net-path)
|
--net-root-path)
|
||||||
LH_NET_PATH="${2}"
|
LH_NET_ROOT_PATH="${2}"
|
||||||
shift 2
|
shift 2
|
||||||
;;
|
;;
|
||||||
|
|
||||||
--net-server)
|
--net-root-server)
|
||||||
LH_NET_SERVER="${2}"
|
LH_NET_ROOT_SERVER="${2}"
|
||||||
|
shift 2
|
||||||
|
;;
|
||||||
|
|
||||||
|
--net-cow-filesystem)
|
||||||
|
LH_NET_COW_FILESYSTEM="${2}"
|
||||||
|
shift 2
|
||||||
|
;;
|
||||||
|
|
||||||
|
--net-cow-mountoptions)
|
||||||
|
LH_NET_COW_MOUNTOPTIONS="${2}"
|
||||||
|
shift 2
|
||||||
|
;;
|
||||||
|
|
||||||
|
--net-cow-path)
|
||||||
|
LH_NET_COW_PATH="${2}"
|
||||||
|
shift 2
|
||||||
|
;;
|
||||||
|
|
||||||
|
--net-cow-server)
|
||||||
|
LH_NET_COW_SERVER="${2}"
|
||||||
shift 2
|
shift 2
|
||||||
;;
|
;;
|
||||||
|
|
||||||
|
@ -911,21 +935,37 @@ LH_ISO_VOLUME="${LH_ISO_VOLUME}"
|
||||||
# (Default: ${LH_MEMTEST})
|
# (Default: ${LH_MEMTEST})
|
||||||
LH_MEMTEST="${LH_MEMTEST}"
|
LH_MEMTEST="${LH_MEMTEST}"
|
||||||
|
|
||||||
# \$LH_NET_FILESYSTEM: set netboot filesystem
|
# \$LH_NET_ROOT_FILESYSTEM: set netboot filesystem
|
||||||
# (Default: ${LH_NET_FILESYSTEM})
|
# (Default: ${LH_NET_ROOT_FILESYSTEM})
|
||||||
LH_NET_FILESYSTEM="${LH_NET_FILESYSTEM}"
|
LH_NET_ROOT_FILESYSTEM="${LH_NET_ROOT_FILESYSTEM}"
|
||||||
|
|
||||||
# \$LH_NET_MOUNTOPTIONS: set nfsopts
|
# \$LH_NET_ROOT_MOUNTOPTIONS: set nfsopts
|
||||||
# (Default: empty)
|
# (Default: empty)
|
||||||
LH_NET_MOUNTOPTIONS="${LH_NET_MOUNTOPTIONS}"
|
LH_NET_ROOT_MOUNTOPTIONS="${LH_NET_ROOT_MOUNTOPTIONS}"
|
||||||
|
|
||||||
# \$LH_NET_PATH: set netboot server directory
|
# \$LH_NET_ROOT_PATH: set netboot server directory
|
||||||
# (Default: ${LH_NET_PATH})
|
# (Default: ${LH_NET_ROOT_PATH})
|
||||||
LH_NET_PATH="${LH_NET_PATH}"
|
LH_NET_ROOT_PATH="${LH_NET_ROOT_PATH}"
|
||||||
|
|
||||||
# \$LH_NET_SERVER: set netboot server address
|
# \$LH_NET_ROOT_SERVER: set netboot server address
|
||||||
# (Default: ${LH_NET_SERVER})
|
# (Default: ${LH_NET_ROOT_SERVER})
|
||||||
LH_NET_SERVER="${LH_NET_SERVER}"
|
LH_NET_ROOT_SERVER="${LH_NET_ROOT_SERVER}"
|
||||||
|
|
||||||
|
# \$LH_NET_COW_FILESYSTEM: set net client cow filesystem
|
||||||
|
# (Default: ${LH_NET_COW_FILESYSTEM})
|
||||||
|
LH_NET_COW_FILESYSTEM="${LH_NET_COW_FILESYSTEM}"
|
||||||
|
|
||||||
|
# \$LH_NET_COW_MOUNTOPTIONS: set cow mount options
|
||||||
|
# (Default: empty)
|
||||||
|
LH_NET_COW_MOUNTOPTIONS="${LH_NET_COW_MOUNTOPTIONS}"
|
||||||
|
|
||||||
|
# \$LH_NET_COW_PATH: set cow directory
|
||||||
|
# (Default: ${LH_NET_COW_PATH})
|
||||||
|
LH_NET_COW_PATH="${LH_NET_COW_PATH}"
|
||||||
|
|
||||||
|
# \$LH_NET_COW_SERVER: set cow server
|
||||||
|
# (Default: ${LH_NET_COW_SERVER})
|
||||||
|
LH_NET_COW_SERVER="${LH_NET_COW_SERVER}"
|
||||||
|
|
||||||
# \$LH_SYSLINUX_SPLASH: set custom syslinux splash
|
# \$LH_SYSLINUX_SPLASH: set custom syslinux splash
|
||||||
# (Default: empty)
|
# (Default: empty)
|
||||||
|
|
|
@ -113,13 +113,32 @@ Here is the complete list of available options for lh_config.
|
||||||
|
|
||||||
.IP "\fB\-\-mode\fR debian|debian\-edu" 4
|
.IP "\fB\-\-mode\fR debian|debian\-edu" 4
|
||||||
|
|
||||||
.IP "\fB\-\-net\-filesystem\fR nfs|cfs" 4
|
.IP "\fB\-\-net\-root\-filesystem\fR nfs|cfs" 4
|
||||||
|
|
||||||
.IP "\fB\-\-net\-mountoptions\fR \fIOPTION\fR|""\fIOPTIONS\fR""" 4
|
.IP "\fB\-\-net\-root\-mountoptions\fR \fIOPTION\fR|""\fIOPTIONS\fR""" 4
|
||||||
|
|
||||||
.IP "\fB\-\-net\-path\fR \fIPATH\fR" 4
|
.IP "\fB\-\-net\-root\-path\fR \fIPATH\fR" 4
|
||||||
|
|
||||||
.IP "\fB\-\-net\\-server\fR \fIIP\fR|\fIHOSTNAME\fR" 4
|
.IP "\fB\-\-net\-root\\-server\fR \fIIP\fR|\fIHOSTNAME\fR" 4
|
||||||
|
|
||||||
|
.IP "\fB\-\-net\-cow\-filesystem\fR nfs" 4
|
||||||
|
|
||||||
|
.IP "\fB\-\-net\-cow\-mountoptions\fR \fIOPTION\fR|""\fIOPTIONS\fR""" 4
|
||||||
|
|
||||||
|
.IP "\fB\-\-net\-cow\-path\fR \fIPATH\fR" 4
|
||||||
|
Specify path to client writable filesystem. Anywhere that
|
||||||
|
.BI "client_mac_address"
|
||||||
|
is specified in the path live-initramfs
|
||||||
|
will substitute the MAC address of the client delimited with hyphens.
|
||||||
|
.RS
|
||||||
|
.TP
|
||||||
|
EXAMPLE:
|
||||||
|
/export/hosts/client_mac_address
|
||||||
|
.br
|
||||||
|
/export/hosts/52-54-00-12-34-56
|
||||||
|
.RE
|
||||||
|
|
||||||
|
.IP "\fB\-\-net\-cow\\-server\fR \fIIP\fR|\fIHOSTNAME\fR" 4
|
||||||
|
|
||||||
.IP "\fB\-p|\-\-packages\-lists\fR \fIFILE\fR" 4
|
.IP "\fB\-p|\-\-packages\-lists\fR \fIFILE\fR" 4
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue