projects
/
grml-debootstrap.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
remove 'umount -a' in bailout()
[grml-debootstrap.git]
/
grml-debootstrap
diff --git
a/grml-debootstrap
b/grml-debootstrap
index
2e386bf
..
f9b5ebb
100755
(executable)
--- a/
grml-debootstrap
+++ b/
grml-debootstrap
@@
-11,7
+11,7
@@
set -e # exit on any error
# variables {{{
PN="$(basename $0)"
# variables {{{
PN="$(basename $0)"
-VERSION='0.3
4
'
+VERSION='0.3
8
'
MNTPOINT="/mnt/debootstrap.$$"
# inside the chroot system locales might not be available, so use minimum:
MNTPOINT="/mnt/debootstrap.$$"
# inside the chroot system locales might not be available, so use minimum:
@@
-49,6
+49,7
@@
Bootstrap options:
--nodebootstrap Skip debootstrap, only do configuration to the target.
--grub <device> Target for grub installation. Usage example: /dev/sda
--arch <arch> Architecture to use. Currently only i386 is supported.
--nodebootstrap Skip debootstrap, only do configuration to the target.
--grub <device> Target for grub installation. Usage example: /dev/sda
--arch <arch> Architecture to use. Currently only i386 is supported.
+ --filesystem <fs> Filesystem that should be used when target is a partition.
--insecure Do not download and check Release file signatures.
Configuration options:
--insecure Do not download and check Release file signatures.
Configuration options:
@@
-58,6
+59,8
@@
Configuration options:
-d, --confdir <path> Place of config files for debootstrap, defaults
to /etc/debootstrap
--packages <file> Install packages defined in specified list file.
-d, --confdir <path> Place of config files for debootstrap, defaults
to /etc/debootstrap
--packages <file> Install packages defined in specified list file.
+ --nopackages Skip installation of packages defined in
+ /etc/debootstrap/packages
--debconf <file> Pre-seed packages using specified pre-seed db file.
--keep_src_list Do not overwrite user provided apt sources.list.
--hostname <name> Hostname of Debian system.
--debconf <file> Pre-seed packages using specified pre-seed db file.
--keep_src_list Do not overwrite user provided apt sources.list.
--hostname <name> Hostname of Debian system.
@@
-90,16
+93,9
@@
check4progs debootstrap dialog || exit 1
check4root || exit 1
# }}}
check4root || exit 1
# }}}
-# source configuration file {{{
+# source
main
configuration file {{{
if [ -r /etc/debootstrap/config ] ; then
if [ -r /etc/debootstrap/config ] ; then
- if [ -n "$CONFIGFILE" ] ; then
- einfo "Using config file $CONFIGFILE."
- if ! . "$CONFIGFILE" ; then
- eerror "Error reading config file $CONFIGFILE" ; eend 1 ; exit 1
- fi
- else
- . /etc/debootstrap/config
- fi
+ . /etc/debootstrap/config
fi
# }}}
fi
# }}}
@@
-139,7
+135,9
@@
fi
[ "$_opt_debopt" ] && DEBOOTSTRAP_OPT=$_opt_debopt
[ "$_opt_interactive" ] && INTERACTIVE=1
[ "$_opt_config" ] && CONFIGFILE=$_opt_config
[ "$_opt_debopt" ] && DEBOOTSTRAP_OPT=$_opt_debopt
[ "$_opt_interactive" ] && INTERACTIVE=1
[ "$_opt_config" ] && CONFIGFILE=$_opt_config
+[ "$_opt_filesystem" ] && MKFS="mkfs.$_opt_filesystem"
[ "$_opt_packages_set" ] && PACKAGES='yes'
[ "$_opt_packages_set" ] && PACKAGES='yes'
+[ "$_opt_nopackages" ] && PACKAGES=''
[ "$_opt_debconf_set" ] && DEBCONF='yes'
[ "$_opt_scripts_set" ] && SCRIPTS='yes'
[ "$_opt_pre_scripts_set" ] && PRE_SCRIPTS='yes'
[ "$_opt_debconf_set" ] && DEBCONF='yes'
[ "$_opt_scripts_set" ] && SCRIPTS='yes'
[ "$_opt_pre_scripts_set" ] && PRE_SCRIPTS='yes'
@@
-167,6
+165,15
@@
fi
}
# }}}
}
# }}}
+# source specified configuration file {{{
+if [ -n "$CONFIGFILE" ] ; then
+ einfo "Reading specified config file $CONFIGFILE."
+ if ! . "$CONFIGFILE" ; then
+ eerror "Error reading config file $CONFIGFILE" ; eend 1 ; exit 1
+ fi
+fi
+# }}}
+
# backwards compability checks {{{
if [ -n "$GROOT" ] ; then
echo "Error: you seem to have \$GROOT configured." >&2
# backwards compability checks {{{
if [ -n "$GROOT" ] ; then
echo "Error: you seem to have \$GROOT configured." >&2
@@
-207,7
+214,7
@@
prompt_for_target()
fi
PARTITION_LIST=$(for i in $(echo $AVAILABLE_PARTITIONS) ; do
fi
PARTITION_LIST=$(for i in $(echo $AVAILABLE_PARTITIONS) ; do
- echo "$i $(
vol_id --typ
e $i 2>/dev/null || echo [no_filesystem_yet])"
+ echo "$i $(
blkid -s TYPE -o valu
e $i 2>/dev/null || echo [no_filesystem_yet])"
done)
TARGET=$(dialog --title "$PN" --single-quoted --stdout \
done)
TARGET=$(dialog --title "$PN" --single-quoted --stdout \
@@
-347,7
+354,7
@@
prompt_for_mirror()
MIRROR="$(dialog --stdout --title "${PN}" --inputbox \
"Please enter Debian mirror you would like to use for installing packages." \
0 0 $MIRROR)"
MIRROR="$(dialog --stdout --title "${PN}" --inputbox \
"Please enter Debian mirror you would like to use for installing packages." \
0 0 $MIRROR)"
- else # CH
ROOT_VARIABLES
== local
+ else # CH
OOSE_MIRROR
== local
[ -n "$ISO" ] || ISO='/mnt/mirror'
ISO="$(dialog --stdout --title "${PN}" --inputbox \
"Please enter directory name you would like to use for installing packages." \
[ -n "$ISO" ] || ISO='/mnt/mirror'
ISO="$(dialog --stdout --title "${PN}" --inputbox \
"Please enter directory name you would like to use for installing packages." \
@@
-388,7
+395,7
@@
AVAILABLE_PARTITIONS=$(LANG=C fdisk -l 2>/dev/null | \
gawk -v num=0 -v ORS=' ' '/^\/dev\// {print $1}')
[ -n "$AVAILABLE_PARTITIONS" ] || echo "FIXME: no partitions available?"
PARTITION_LIST=$(for i in $(echo $AVAILABLE_PARTITIONS) ; do
gawk -v num=0 -v ORS=' ' '/^\/dev\// {print $1}')
[ -n "$AVAILABLE_PARTITIONS" ] || echo "FIXME: no partitions available?"
PARTITION_LIST=$(for i in $(echo $AVAILABLE_PARTITIONS) ; do
- echo "$i $(
vol_id --typ
e $i 2>/dev/null || echo [no_filesystem_yet]) off"
+ echo "$i $(
blkid -s TYPE -o valu
e $i 2>/dev/null || echo [no_filesystem_yet]) off"
done)
dialog --title "$PN" --separate-output \
done)
dialog --title "$PN" --separate-output \
@@
-406,7
+413,7
@@
ERRORFILE=$(mktemp)
set +e
# TODO: better error handling?
yes | mdadm --create "${TARGET}" --level="${RAIDLEVEL}" \
set +e
# TODO: better error handling?
yes | mdadm --create "${TARGET}" --level="${RAIDLEVEL}" \
- --raid-devices="${NUM_PARTITIONS}" ${SELECTED_PARTITIONS}
1
>/dev/null 2>$ERRORFILE
+ --raid-devices="${NUM_PARTITIONS}" ${SELECTED_PARTITIONS} >/dev/null 2>$ERRORFILE
RC=$?
set -e
RC=$?
set -e
@@
-636,18
+643,18
@@
bailout(){
# make sure nothing is left inside chroot so we can unmount it
[ -x "$MNTPOINT"/etc/init.d/ssh ] && "$MNTPOINT"/etc/init.d/ssh stop
[ -x "$MNTPOINT"/etc/init.d/mdadm ] && "$MNTPOINT"/etc/init.d/mdadm stop
# make sure nothing is left inside chroot so we can unmount it
[ -x "$MNTPOINT"/etc/init.d/ssh ] && "$MNTPOINT"/etc/init.d/ssh stop
[ -x "$MNTPOINT"/etc/init.d/mdadm ] && "$MNTPOINT"/etc/init.d/mdadm stop
- # ugly, but make sure we really don't leav anything (/proc /proc is intended)
- for ARG in /sys
-a
/proc /proc ; do
- [ -x "$MNTPOINT"/bin/umount ] && chroot "$MNTPOINT" umount $ARG
1
>/dev/null 2>&1 || true
+ # ugly, but make sure we really don't leav
e
anything (/proc /proc is intended)
+ for ARG in /sys /proc /proc ; do
+ [ -x "$MNTPOINT"/bin/umount ] && chroot "$MNTPOINT" umount $ARG >/dev/null 2>&1 || true
done
done
- umount "$MNTPOINT"/dev
1
>/dev/null 2>&1 || true
+ umount "$MNTPOINT"/dev >/dev/null 2>&1 || true
- [ -d "$MNTPOINT/$ISODIR" ] && umount "$MNTPOINT/$ISODIR"
1
>/dev/null 2>&1 || true
+ [ -d "$MNTPOINT/$ISODIR" ] && umount "$MNTPOINT/$ISODIR" >/dev/null 2>&1 || true
if [ -n "$DIRECTORY" ] ; then
einfo "Not unmounting $MNTPOINT as you requested me to install into a directory of your own choice." ; eend 0
else
if [ -n "$DIRECTORY" ] ; then
einfo "Not unmounting $MNTPOINT as you requested me to install into a directory of your own choice." ; eend 0
else
- einfo "Unmounting $MNTPOINT"
; umount "$MNTPOINT" ; eend $?
+ einfo "Unmounting $MNTPOINT" ; umount "$MNTPOINT" ; eend $?
fi
if [ -n "$STAGES" ] ; then
fi
if [ -n "$STAGES" ] ; then
@@
-700,7
+707,11
@@
mkfs() {
# make sure /dev/disk/by-uuid/... is up2date, otherwise grub
# will fail to detect the uuid in the chroot
# make sure /dev/disk/by-uuid/... is up2date, otherwise grub
# will fail to detect the uuid in the chroot
- blockdev --rereadpt "${TARGET%%[0-9]*}"
+ if echo "$TARGET" | grep -q "/dev/md" ; then
+ blockdev --rereadpt "${TARGET}"
+ else
+ blockdev --rereadpt "${TARGET%%[0-9]*}"
+ fi
# give the system 2 seconds, otherwise we might run into
# race conditions :-/
sleep 2
# give the system 2 seconds, otherwise we might run into
# race conditions :-/
sleep 2
@@
-717,7
+728,7
@@
mkfs() {
# modify filesystem settings {{{
tunefs() {
# modify filesystem settings {{{
tunefs() {
- if [ -n "$TUNE2FS" ] ; then
+ if [ -n "$TUNE2FS" ]
&& echo "$MKFS" | grep -q "mkfs.ext"
; then
einfo "Disabling automatic filesystem check on $TARGET via tune2fs"
$TUNE2FS $TARGET
eend $?
einfo "Disabling automatic filesystem check on $TARGET via tune2fs"
$TUNE2FS $TARGET
eend $?
@@
-793,6
+804,7
@@
preparechroot() {
[ -n "$ROOTPASSWORD" ] && echo "ROOTPASSWORD=$ROOTPASSWORD" >> $CHROOT_VARIABLES
[ -n "$TARGET" ] && echo "TARGET=$TARGET" >> $CHROOT_VARIABLES
[ -n "$TARGET_UUID" ] && echo "TARGET_UUID=$TARGET_UUID" >> $CHROOT_VARIABLES
[ -n "$ROOTPASSWORD" ] && echo "ROOTPASSWORD=$ROOTPASSWORD" >> $CHROOT_VARIABLES
[ -n "$TARGET" ] && echo "TARGET=$TARGET" >> $CHROOT_VARIABLES
[ -n "$TARGET_UUID" ] && echo "TARGET_UUID=$TARGET_UUID" >> $CHROOT_VARIABLES
+ [ -n "$RM_APTCACHE" ] && echo "RM_APTCACHE=$RM_APTCACHE" >> $CHROOT_VARIABLES
cp $VERBOSE $CONFFILES/chroot-script $MNTPOINT/bin/chroot-script
chmod 755 $MNTPOINT/bin/chroot-script
cp $VERBOSE $CONFFILES/chroot-script $MNTPOINT/bin/chroot-script
chmod 755 $MNTPOINT/bin/chroot-script
@@
-860,6
+872,11
@@
preparechroot() {
cp $VERBOSE /etc/network/interfaces $MNTPOINT/etc/network/interfaces
fi
cp $VERBOSE /etc/network/interfaces $MNTPOINT/etc/network/interfaces
fi
+ # install config file providing some example entries
+ if [ -r /etc/network/interfaces.examples -a ! -r "$MNTPOINT/etc/network/interfaces.examples" ] ; then
+ cp /etc/network/interfaces.examples "$MNTPOINT/etc/network/interfaces.examples"
+ fi
+
eend 0
}
# }}}
eend 0
}
# }}}