--hostname <name> Hostname of Debian system.
--nopassword Do not prompt for the root password.
--password <pwd> Use specified password as password for user root.
+ --sshcopyid Use locally available public keys to authorise root login on the target system.
--bootappend <line> Add specified appendline to kernel whilst booting.
--chroot-scripts <d> Execute chroot scripts from specified directory.
--pre-scripts <dir> Execute scripts from specified directory (before chroot-scripts).
# }}}
# cmdline handling {{{
- CMDLINE_OPTS=mirror:,iso:,release:,target:,mntpoint:,debopt:,defaultinterfaces,interactive,nodebootstrap,nointerfaces,nokernel,nopackages,filesystem:,config:,confdir:,packages:,chroot-scripts:,scripts:,post-scripts:,pre-scripts:,debconf:,vm,vmfile,vmsize:,keep_src_list,hostname:,password:,nopassword,grmlrepos,backportrepos,bootappend:,grub:,efi:,arch:,insecure,verbose,help,version,force,debug,contrib,non-free,remove-configs
+ CMDLINE_OPTS=mirror:,iso:,release:,target:,mntpoint:,debopt:,defaultinterfaces,interactive,nodebootstrap,nointerfaces,nokernel,nopackages,filesystem:,config:,confdir:,packages:,chroot-scripts:,scripts:,post-scripts:,pre-scripts:,debconf:,vm,vmfile,vmsize:,keep_src_list,hostname:,password:,nopassword,grmlrepos,backportrepos,bootappend:,grub:,efi:,arch:,insecure,verbose,help,version,force,debug,contrib,non-free,remove-configs,sshcopyid
_opt_temp=$(getopt --name grml-debootstrap -o +m:i:r:t:p:c:d:vhV --long \
$CMDLINE_OPTS -- "$@")
--nopassword) # Skip password dialog
_opt_nopassword=T
;;
+ --sshcopyid) # Use locally available public keys to authorise root login on the target system
+ _opt_sshcopyid=T
+ ;;
--grmlrepos) # Enable Grml repository
_opt_grmlrepos=T
;;
[ "$_opt_defaultinterfaces" ] && USE_DEFAULT_INTERFACES="true"
[ "$_opt_nointerfaces" ] && NOINTERFACES="true"
[ "$_opt_nokernel" ] && NOKERNEL="true"
+ [ "$_opt_sshcopyid" ] && SSHCOPYID="true"
[ "$_opt_bootappend" ] && BOOT_APPEND=$_opt_bootappend
[ "$_opt_grub" ] && GRUB=$_opt_grub
[ "$_opt_efi" ] && EFI=$_opt_efi
iface eth0 inet dhcp
"
+ # add dhcp setting for Predictable Network Interface Names
+ if [ -x /bin/udevadm ]; then
+ for interface in $(udevadm info -e | sed -n -e 's/E: ID_NET_NAME_PATH=\([^$*]\)/\1/p'); do
+ DEFAULT_INTERFACES="${DEFAULT_INTERFACES}
+allow-hotplug ${interface}
+iface ${interface} inet dhcp
+"
+ done
+ fi
+
if [ -n "$NOINTERFACES" ] ; then
einfo "Not installing /etc/network/interfaces as requested via --nointerfaces option" ; eend 0
elif [ -n "$USE_DEFAULT_INTERFACES" ] ; then
cp /etc/network/interfaces.examples "$MNTPOINT/etc/network/interfaces.examples"
fi
+ if [ -n "${SSHCOPYID}" ] ; then
+ ssh-add -L > /dev/null 2>&1 ; RC=$?
+ if [ $RC -eq 0 ] ; then
+ einfo "Use locally available public keys to authorise root login on the target system as requested via --sshcopyid option."
+ mkdir "${MNTPOINT}"/root/.ssh
+ chmod 0700 "${MNTPOINT}"/root/.ssh
+ ssh-add -L > "${MNTPOINT}"/root/.ssh/authorized_keys
+ eend 0
+ else
+ ewarn "Could not open a connection to your authentication agent or the agent has no identites."
+ eend $?
+ fi
+ fi
+
if [ -d /run/udev ] ; then
einfo "Setting up bind-mount /run/udev"
mkdir -p "${MNTPOINT}"/run/udev
*--defaultinterfaces*::
- Install a default /etc/network/interfaces file (enabling DHCP for eth0)
+ Install a default /etc/network/interfaces file (enabling DHCP for all local
+ Ethernet, WLAN and WWAN interfaces using predictable network interface names
+ and using eth0 as tradtition interface name for backward compatibility)
instead of taking over config from host system.
+ This option is automatically enabled when using --vm or --vmfile.
*--efi* _device_::
*--nointerfaces*::
Do not copy /etc/network/interfaces from host system to the target.
- This option is automatically enabled when using --vm or --vmfile.
*--nokernel*::
Delete grml-debootstrap configuration files (/etc/debootstrap/*) from installed
system. Useful for reproducible builds or if you don't want to leak information.
+ *--sshcopyid*::
+
+ Use locally available public keys to authorise root login on the target system.
+ Similar to ssh-copy-id(1) (without the -i option) it checks if `ssh-add -L`
+ provides any output, and if so those keys are appended to
+ _/root/.ssh/authorized_keys_ (creating the file and directory (with mode 0700)).
+
*-t*, *--target* _target_::
Target partition (/dev/...) or directory (anything else without /dev at the
partitioned.
This allows deployment of a Virtual Machine. The options needs to be
combined with the --target option.
+ This option automatically enables the --defaultinterfaces option.
Usage example: --vm --target /dev/mapper/your-vm-disk
*--vmfile*::
partition/block device or directory. This allows deployment of a Virtual
Machine. The options needs to be combined with the --target option
('qemu-img create -f raw ...' is executed on the specified target).
+ This option automatically enables the --defaultinterfaces option.
Usage example: --vmfile --target /mnt/sda1/qemu.img
*--vmsize* _size_::
the provided arguments for the command line options. Please be careful and check
docs and /etc/debootstrap/config for further information.
+Networking
+----------
+
+By default (that is, if none of the options *--nointerfaces*,
+*--defaultinterfaces*, *--vmfile* or *--vm* are given) /etc/network/interfaces
+will be copied from the host to the target system.
+
Usage examples
---------------