Adding my FAI config space into git repo
This commit is contained in:
commit
921401a0b1
13
class/DEBIAN.var
Normal file
13
class/DEBIAN.var
Normal file
@ -0,0 +1,13 @@
|
||||
release=buster
|
||||
apt_cdn=http://deb.debian.org
|
||||
security_cdn=http://security.debian.org
|
||||
|
||||
CONSOLEFONT=
|
||||
KEYMAP=us-latin1
|
||||
|
||||
# if you have enough RAM (>2GB) you may want to enable this line. It
|
||||
# also puts /var/cache into a ramdisk.
|
||||
#FAI_RAMDISKS="$target/var/lib/dpkg $target/var/cache"
|
||||
|
||||
# if you want to use the faiserver as APT proxy
|
||||
#APTPROXY=http://faiserver:3142
|
8
debconf/DEBIAN
Normal file
8
debconf/DEBIAN
Normal file
@ -0,0 +1,8 @@
|
||||
locales locales/default_environment_locale select en_US.UTF-8
|
||||
locales locales/locales_to_be_generated multiselect en_US.UTF-8 UTF-8
|
||||
keyboard-configuration keyboard-configuration/modelcode string pc105
|
||||
keyboard-configuration keyboard-configuration/xkb-keymap select us
|
||||
keyboard-configuration keyboard-configuration/variant select USA
|
||||
keyboard-configuration keyboard-configuration/model select Generic 105-key (Intl) PC
|
||||
keyboard-configuration keyboard-configuration/layoutcode string us
|
||||
keyboard-configuration keyboard-configuration/optionscode string ctrl:nocaps,terminate:ctrl_alt_bksp
|
11
hooks/mountdisks.DEFAULT
Executable file
11
hooks/mountdisks.DEFAULT
Executable file
@ -0,0 +1,11 @@
|
||||
#! /bin/bash
|
||||
|
||||
# stop resync of soft raid
|
||||
# why though?
|
||||
# FAI SUCKS
|
||||
if [ $do_init_tasks -eq 1 ]; then
|
||||
if grep -q active /proc/mdstat 2>/dev/null; then
|
||||
echo "frozen" | tee /sys/block/md*/md/sync_action >/dev/null
|
||||
fi
|
||||
fi
|
||||
exit 0
|
216
hooks/savelog.LAST.sh
Executable file
216
hooks/savelog.LAST.sh
Executable file
@ -0,0 +1,216 @@
|
||||
#! /bin/bash
|
||||
|
||||
# parse all log files for error messages
|
||||
# print errors and warnings found to error.log
|
||||
# WARNING: This will only work with english error messages!
|
||||
|
||||
errfile=$LOGDIR/error.log
|
||||
|
||||
# Define grep patterns. Do not start or end with an empty line!
|
||||
globalerrorpatterns="error
|
||||
fail
|
||||
warn
|
||||
bad
|
||||
bad
|
||||
no space
|
||||
syntax
|
||||
Couldn't stat
|
||||
Cannot access
|
||||
conflict
|
||||
is bigger than the limit
|
||||
did not exist
|
||||
non existent
|
||||
not found
|
||||
couldn't
|
||||
can't
|
||||
E: Sorry, broken packages
|
||||
^E:
|
||||
operator expected
|
||||
ambiguous redirect
|
||||
No previous regular expression
|
||||
No such
|
||||
Device or resource busy
|
||||
unknown option
|
||||
[a-z]\+\.log:E:
|
||||
No candidate version found
|
||||
segfault
|
||||
Couldn't find any package whose name or description matched
|
||||
cannot create
|
||||
The following packages have unmet dependencies"
|
||||
|
||||
globalignorepatterns="[a-z]\+\.log:#
|
||||
Error: Driver 'pcspkr' is already registered, aborting
|
||||
: bytes packets errors dropped
|
||||
:+ error=0
|
||||
:+ trap error=
|
||||
task_error_func=
|
||||
STOP_ON_ERROR=
|
||||
courier-webadmin
|
||||
plugins-bad
|
||||
Enabling conf localized-error-pages
|
||||
ibwebadmin
|
||||
kernel-patch-badram
|
||||
kolab-webadmin
|
||||
kolabadmin
|
||||
gstreamer.\+-plugins-really-bad
|
||||
liberrors.so
|
||||
liberrors-samba
|
||||
libsamba-errors
|
||||
gsambad
|
||||
libad
|
||||
libtest-nowarnings-perl
|
||||
libtest-warn-perl
|
||||
libclass-errorhandler-perl
|
||||
zope-ploneerrorreporting
|
||||
libroxen-errormessage
|
||||
liberror-perl
|
||||
libgpg-error-dev
|
||||
libgpg-error0
|
||||
Opts:.\+errors=remount
|
||||
[RT]X packets:
|
||||
WARNING: unexpected IO-APIC
|
||||
warned about = ( )
|
||||
daemon.warn
|
||||
kern.warn
|
||||
rw,errors=
|
||||
Expect some cache
|
||||
no error
|
||||
failmsg
|
||||
RPC call returned error 101
|
||||
deverror.out
|
||||
(floppy), sector 0
|
||||
mount version older than kernel
|
||||
Can't locate module
|
||||
Warning only .\+MB will be used.
|
||||
hostname: Host name lookup failure
|
||||
I can't tell the difference.
|
||||
warning, not much extra random data, consider using the -rand option
|
||||
confC._FILE
|
||||
Warning: 3 database(s) sources
|
||||
were not found, (but were created)
|
||||
removing exim
|
||||
The home dir you specified already exists.
|
||||
No Rule for /usr/lib/ispell/default.hash.
|
||||
/usr/sbin/update-fonts-.\+: warning: absolute path
|
||||
hostname: Unknown server error
|
||||
EXT2-fs warning: checktime reached
|
||||
RPC: sendmsg returned error 101
|
||||
can't print them to stdout. Define these classes
|
||||
warning: downgrading
|
||||
suppress emacs errors
|
||||
echo Error:
|
||||
Can't open dependencies file
|
||||
documents in /usr/doc are no longer supported
|
||||
if you have both a SCSI and an IDE CD-ROM
|
||||
Warning: /proc/ide/hd?/settings interface is obsolete, and will be removed soon
|
||||
Monitoring disabled
|
||||
Error: only one processor found.
|
||||
Error Recovery Strategy:
|
||||
sector 0 does not have an
|
||||
syslogin_perform_logout: logout() returned an error
|
||||
grub is not in an XFS filesystem.
|
||||
grub-install: line 374:
|
||||
grub-probe: error: Cannot open \`/boot/grub/device.map'
|
||||
is harmless
|
||||
not updating .\+ font directory data.
|
||||
register_serial(): autoconfig failed
|
||||
Fontconfig error: Cannot load default config file
|
||||
asking for cache data failed
|
||||
However, I can not read the target:
|
||||
Warning: The partition table looks like it was made
|
||||
task_error=0
|
||||
task_local_error=0
|
||||
^info: Trying to set
|
||||
warning: /usr/lib/X11/fonts
|
||||
can't read /etc/udev/rules.d/z25_persistent-net.rules
|
||||
/cow': No such file or directory
|
||||
Dummy start-stop-daemon called
|
||||
X: bytes packets errors
|
||||
ACPI Error
|
||||
ACPI Warning
|
||||
AE_NOT_FOUND
|
||||
conflicts with ACPI region
|
||||
cannot stat \`/etc/modprobe.d/\*.conf'
|
||||
cdrom: open failed.
|
||||
libgpg-error
|
||||
process \`kudzu' used the deprecated sysctl system call
|
||||
PM: Resume from disk failed
|
||||
JBD: barrier-based sync failed
|
||||
aufs: module is from the staging directory, the quality is unknown
|
||||
warning: linuxlogo stop runlevel arguments (none) do not match
|
||||
insserv: warning: script .\+ missing LSB tags and overrides
|
||||
live-premount.\+ If this fails
|
||||
cannot read table of mounted file systems
|
||||
error: no alternatives for
|
||||
ERST: Error Record Serialization Table (ERST) support is initialized
|
||||
ERST: Table is not found
|
||||
HEST: Table not found
|
||||
failed to stat /dev/pts
|
||||
Failed to connect to socket /var/run/dbus/system_bus_socket
|
||||
fail to add MMCONFIG information
|
||||
can't initialize iptables table
|
||||
can't initialize ip6tables table
|
||||
Authentication warning overridden
|
||||
41-warning.sh
|
||||
PCCT header not found
|
||||
Download is performed unsandboxed as root as file
|
||||
update-alternatives: warning: skip creation of
|
||||
loop: module verification failed: signature
|
||||
Warning: apt-key output should not be parsed
|
||||
WARNING: Failed to connect to lvmetad. Falling back to device scanning
|
||||
Warning: The home dir /var/lib/usbmux you specified
|
||||
diff: /var/lib/apparmor/profiles/.apparmor.md5sums: No such file or directory
|
||||
error reporting disabled
|
||||
Enabling Firmware First mode for corrected errors
|
||||
errors: 0
|
||||
0 errors
|
||||
Memory Error Correction:
|
||||
Memory Controller 0 - Channel . Error
|
||||
IIO RAS/Control Status/Global Errors
|
||||
__stack_chk_fail
|
||||
grub.cfg.new: Directory nonexistent
|
||||
can't derive routing for PCI INT A
|
||||
failed to load isci/isci_firmware.bin
|
||||
Direct firmware load for isci/isci_firmware.bin failed with error
|
||||
Loading user firmware failed, using default values
|
||||
stunnel4 you specified can't be accessed: No such file or directory
|
||||
install-docs --verbose --check file_name' may give more details about the above errors
|
||||
cannot open '/etc/ssl/certs/java/cacerts' for reading: No such file or directory
|
||||
update-rc.d: warning: start and stop actions are no longer supported"
|
||||
|
||||
# add pattern on some conditions
|
||||
if [ -n $FAI_ALLOW_UNSIGNED ] ; then
|
||||
globalignorepatterns="$globalignorepatterns
|
||||
WARNING: untrusted versions
|
||||
WARNING: The following packages cannot be authenticated
|
||||
Ignoring these trust violations"
|
||||
fi
|
||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
# Here you can define your own patterns. Put one pattern in a line,
|
||||
# do not create empty lines.
|
||||
myerrorpatterns="X_X-X_XX"
|
||||
myignorepatterns="X_X-X_XX"
|
||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
# The main routine
|
||||
errorpatterns="$globalerrorpatterns
|
||||
$myerrorpatterns"
|
||||
ignorepatterns="$globalignorepatterns
|
||||
$myignorepatterns"
|
||||
|
||||
cd $LOGDIR || exit 3
|
||||
if [ -s $errfile ]; then
|
||||
echo "Errorfile already exists. Aborting." >&2
|
||||
exit
|
||||
fi
|
||||
|
||||
grep -i "$errorpatterns" *.log | grep -vi "$ignorepatterns" > $errfile
|
||||
if [ X$verbose = X1 ]; then
|
||||
egrep -v '^software.log:' $errfile > $LOGDIR/tempfile
|
||||
mv $LOGDIR/tempfile $errfile
|
||||
fi
|
||||
|
||||
if [ -s $errfile ]; then
|
||||
echo "ERRORS found in log files. See $errfile" >&2
|
||||
else
|
||||
echo "Congratulations! No errors found in log files."
|
||||
fi
|
10
hooks/setup.DEFAULT.sh
Executable file
10
hooks/setup.DEFAULT.sh
Executable file
@ -0,0 +1,10 @@
|
||||
#! /bin/bash
|
||||
|
||||
# use short hostname instead of FQDN
|
||||
# otherwise it gets fucked up
|
||||
# FAI doesn't start
|
||||
# FAI SUCKS
|
||||
export HOSTNAME=${HOSTNAME%%.*}
|
||||
if [ $do_init_tasks -eq 1 ]; then
|
||||
echo $HOSTNAME > /proc/sys/kernel/hostname
|
||||
fi
|
34
package_config/DEBIAN
Normal file
34
package_config/DEBIAN
Normal file
@ -0,0 +1,34 @@
|
||||
PACKAGES install-norec
|
||||
# only installs bare minimum needed for ansible to work
|
||||
openssh-client
|
||||
openssh-server
|
||||
time
|
||||
procinfo
|
||||
locales
|
||||
console-setup
|
||||
kbd
|
||||
sudo
|
||||
python
|
||||
|
||||
PACKAGES install I386
|
||||
linux-image-686-pae
|
||||
memtest86+
|
||||
|
||||
PACKAGES install CHROOT
|
||||
linux-image-686-pae-
|
||||
linux-image-amd64-
|
||||
|
||||
PACKAGES install AMD64
|
||||
linux-image-amd64
|
||||
memtest86+
|
||||
|
||||
PACKAGES install ARM64
|
||||
grub-efi-arm64
|
||||
linux-image-arm64
|
||||
|
||||
PACKAGES install GRUB_PC
|
||||
grub-pc
|
||||
|
||||
PACKAGES install GRUB_EFI_CRYPTO
|
||||
grub-efi
|
||||
|
BIN
package_config/DEBIAN.gpg
Normal file
BIN
package_config/DEBIAN.gpg
Normal file
Binary file not shown.
5
package_config/LVM_LUKS_RAID
Normal file
5
package_config/LVM_LUKS_RAID
Normal file
@ -0,0 +1,5 @@
|
||||
PACKAGES install
|
||||
mdadm
|
||||
lvm2
|
||||
cryptsetup
|
||||
|
8
scripts/DEBIAN/10-rootpw
Executable file
8
scripts/DEBIAN/10-rootpw
Executable file
@ -0,0 +1,8 @@
|
||||
#! /bin/bash
|
||||
|
||||
error=0; trap 'error=$(($?>$error?$?:$error))' ERR # save maximum error code
|
||||
|
||||
$ROOTCMD usermod -L root
|
||||
|
||||
exit $error
|
||||
|
22
scripts/DEBIAN/20-capabilities
Executable file
22
scripts/DEBIAN/20-capabilities
Executable file
@ -0,0 +1,22 @@
|
||||
#!/bin/bash
|
||||
#
|
||||
# Capabilities get lost when creating the fai base.tar.xz image.
|
||||
# Restore them here.
|
||||
#
|
||||
|
||||
set -e
|
||||
|
||||
if [ ! -x $target/sbin/setcap ] ; then
|
||||
exit 0
|
||||
fi
|
||||
|
||||
for FILE in /bin/ping /bin/ping6 /usr/bin/fping /usr/bin/fping6; do
|
||||
if [ -x $target/$FILE -a ! -h $target/$FILE ] ; then
|
||||
if $ROOTCMD /sbin/setcap cap_net_raw+ep $FILE; then
|
||||
echo "Setcap worked! $FILE is not suid!"
|
||||
fi
|
||||
fi
|
||||
done
|
||||
if [ -x $target/usr/bin/systemd-detect-virt ] ; then
|
||||
$ROOTCMD /sbin/setcap cap_dac_override,cap_sys_ptrace+ep /usr/bin/systemd-detect-virt
|
||||
fi
|
118
scripts/DEBIAN/30-interface
Executable file
118
scripts/DEBIAN/30-interface
Executable file
@ -0,0 +1,118 @@
|
||||
#! /bin/bash
|
||||
|
||||
netplan_yaml() {
|
||||
# network configuration using ubuntu's netplan.io
|
||||
local IFNAME="$1"
|
||||
local METHOD="$2"
|
||||
echo "Generating netplan configuration for $IFNAME ($METHOD)" >&2
|
||||
echo "# generated by FAI"
|
||||
echo "network:"
|
||||
echo " version: 2"
|
||||
echo " renderer: $RENDERER"
|
||||
case "$RENDERER" in
|
||||
networkd)
|
||||
echo " ethernets:"
|
||||
echo " $IFNAME:"
|
||||
case "$METHOD" in
|
||||
dhcp)
|
||||
echo " dhcp4: true"
|
||||
;;
|
||||
static)
|
||||
echo " addresses: [$CIDR]"
|
||||
echo " gateway4: $GATEWAYS_1"
|
||||
echo " nameservers:"
|
||||
echo " search: [$DOMAIN]"
|
||||
echo " addresses: [${DNSSRVS// /, }]"
|
||||
;;
|
||||
esac
|
||||
esac
|
||||
}
|
||||
|
||||
iface_stanza() {
|
||||
# classic network configuration using /etc/network/interfaces
|
||||
local IFNAME="$1"
|
||||
local METHOD="$2"
|
||||
echo "Generating interface configuration for $IFNAME ($METHOD)" >&2
|
||||
echo "# generated by FAI"
|
||||
echo "auto $IFNAME"
|
||||
echo "iface $IFNAME inet $METHOD"
|
||||
case "$METHOD" in
|
||||
static)
|
||||
echo " address $IPADDR"
|
||||
echo " netmask $NETMASK"
|
||||
echo " broadcast $BROADCAST"
|
||||
echo " gateway $GATEWAYS"
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
newnicnames() {
|
||||
|
||||
# determine predictable network names only for stretch and above
|
||||
|
||||
[ $do_init_tasks -eq 0 ] && return
|
||||
[ -z "$NIC1" ] && return
|
||||
ver=$($ROOTCMD dpkg-query --showformat='${Version}' --show udev)
|
||||
if dpkg --compare-versions $ver lt 220-7; then
|
||||
return
|
||||
fi
|
||||
|
||||
|
||||
fields="ID_NET_NAME_FROM_DATABASE ID_NET_NAME_ONBOARD ID_NET_NAME_SLOT ID_NET_NAME_PATH"
|
||||
for field in $fields; do
|
||||
name=$(udevadm info /sys/class/net/$NIC1 | sed -rn "s/^E: $field=(.+)/\1/p")
|
||||
if [[ $name ]]; then
|
||||
NIC1=$name
|
||||
break
|
||||
fi
|
||||
done
|
||||
if [[ ! $name ]]; then
|
||||
echo "$0: error: could not find systemd predictable network name. Using $NIC1."
|
||||
fi
|
||||
}
|
||||
|
||||
if [ -z "$NIC1" ]; then
|
||||
echo "WARNING: \$NIC1 is not defined. Cannot add ethernet to /etc/network/interfaces."
|
||||
fi
|
||||
CIDR=$(ip -o -f inet addr show $NIC1 | awk '{print $4}')
|
||||
newnicnames
|
||||
|
||||
case "$FAI_ACTION" in
|
||||
install|dirinstall)
|
||||
ifclass DHCPC && METHOD=dhcp || METHOD=static
|
||||
ifclass XORG && RENDERER=NetworkManager || RENDERER=networkd
|
||||
|
||||
if [ -d $target/etc/netplan ]; then
|
||||
# Ubuntu >= 17.10 with netplan.io
|
||||
if [ -n "$NIC1" ]; then
|
||||
netplan_yaml $NIC1 $METHOD > $target/etc/netplan/01-${NIC1}.yaml
|
||||
fi
|
||||
elif [ -d $target/etc/network/interfaces.d ]; then
|
||||
# ifupdown >= 0.7.41 (Debian >= 8, Ubuntu >= 14.04)
|
||||
iface_stanza lo loopback > $target/etc/network/interfaces.d/lo
|
||||
|
||||
if [ -n "$NIC1" -a ! -f $target/etc/NetworkManager/NetworkManager.conf ]; then
|
||||
iface_stanza $NIC1 $METHOD > $target/etc/network/interfaces.d/$NIC1
|
||||
fi
|
||||
else
|
||||
(
|
||||
iface_stanza lo loopback
|
||||
iface_stanza $NIC1 $METHOD
|
||||
) > $target/etc/network/interfaces
|
||||
fi
|
||||
|
||||
if ! ifclass DHCPC ; then
|
||||
[ -n "$NETWORK" ] && echo "localnet $NETWORK" > $target/etc/networks
|
||||
if [ ! -L $target/etc/resolv.conf -a -e /etc/resolv.conf ]; then
|
||||
cp -p /etc/resolv.conf $target/etc
|
||||
fi
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
|
||||
# here fcopy is mostly used, when installing a client for running in a
|
||||
# different subnet than during the installation
|
||||
fcopy -iM /etc/resolv.conf
|
||||
fcopy -iM /etc/network/interfaces /etc/networks
|
||||
|
||||
exit $error
|
39
scripts/DEBIAN/40-misc
Executable file
39
scripts/DEBIAN/40-misc
Executable file
@ -0,0 +1,39 @@
|
||||
#! /bin/bash
|
||||
|
||||
# (c) Thomas Lange, 2001-2016, lange@debian.org
|
||||
# (c) Michael Goetze, 2010-2011, mgoetze@mgoetze.net
|
||||
|
||||
error=0; trap 'error=$(($?>$error?$?:$error))' ERR # save maximum error code
|
||||
|
||||
echo $TIMEZONE > $target/etc/timezone
|
||||
if [ -L $target/etc/localtime ]; then
|
||||
ln -sf /usr/share/zoneinfo/${TIMEZONE} $target/etc/localtime
|
||||
else
|
||||
cp -f /usr/share/zoneinfo/${TIMEZONE} $target/etc/localtime
|
||||
fi
|
||||
|
||||
hostname -s > $target/etc/hostname
|
||||
|
||||
if [ ! -e $target/etc/adjtime ]; then
|
||||
printf "0.0 0 0.0\n0\nUTC\n" > $target/etc/adjtime
|
||||
fi
|
||||
if [ "$UTC" = "yes" ]; then
|
||||
sed -i -e 's:^LOCAL$:UTC:' $target/etc/adjtime
|
||||
else
|
||||
sed -i -e 's:^UTC$:LOCAL:' $target/etc/adjtime
|
||||
fi
|
||||
|
||||
# make sure a machine-id exists
|
||||
if [ ! -f $target/etc/machine-id ]; then
|
||||
> $target/etc/machine-id
|
||||
fi
|
||||
# recreate machine-id if the file is empty
|
||||
if [ X"$(stat -c '%s' $target/etc/machine-id 2>/dev/null)" = X0 -a -f /bin/systemd-machine-id-setup ]; then
|
||||
$ROOTCMD systemd-machine-id-setup
|
||||
fi
|
||||
|
||||
ln -fs /proc/mounts $target/etc/mtab
|
||||
|
||||
rm -f $target/etc/dpkg/dpkg.cfg.d/fai $target/etc/dpkg/dpkg.cfg.d/unsafe-io
|
||||
|
||||
exit $error
|
74
scripts/GRUB_EFI_CRYPTO/10-setup
Executable file
74
scripts/GRUB_EFI_CRYPTO/10-setup
Executable file
@ -0,0 +1,74 @@
|
||||
#! /bin/bash
|
||||
# support for GRUB version 2
|
||||
|
||||
error=0; trap 'error=$(($?>$error?$?:$error))' ERR # save maximum error code
|
||||
|
||||
# This script assumes that the disk has a GPT partition table and
|
||||
# that the extended system partition (ESP) is mounted on /boot/efi.
|
||||
# When building a disk image, we don't change the NVRAM to point at
|
||||
# the boot image we made available, because the disk image is likely
|
||||
# not installed on the current system. As a result, we force
|
||||
# installation into the removable media paths as well as the standard
|
||||
# debian path.
|
||||
|
||||
set -a
|
||||
|
||||
# do not set up grub during dirinstall
|
||||
if [ "$FAI_ACTION" = "dirinstall" ] ; then
|
||||
exit 0
|
||||
fi
|
||||
# during softupdate use this file
|
||||
[ -r $LOGDIR/disk_var.sh ] && . $LOGDIR/disk_var.sh
|
||||
|
||||
if [ -z "$BOOT_DEVICE" ]; then
|
||||
exit 189
|
||||
fi
|
||||
|
||||
# disable os-prober because of #788062
|
||||
echo "GRUB_DISABLE_OS_PROBER" >> /etc/default/grub
|
||||
|
||||
# enable cryptodisk
|
||||
echo "GRUB_ENABLE_CRYPTODISK=y" >> $target/etc/default/grub.d/crypto.cfg
|
||||
|
||||
# skip the rest, if not an initial installation
|
||||
if [ $FAI_ACTION != "install" ]; then
|
||||
$ROOTCMD update-grub
|
||||
exit $error
|
||||
fi
|
||||
|
||||
GROOT=$($ROOTCMD grub-probe -tdrive -d $BOOT_DEVICE)
|
||||
|
||||
# handle /boot in lvm-on-md
|
||||
_bdev=$(readlink -f $BOOT_DEVICE)
|
||||
if [ "${_bdev%%-*}" = "/dev/dm" ]; then
|
||||
BOOT_DEVICE=$( lvs --noheadings -o devices $BOOT_DEVICE | sed -e 's/^*\([^(]*\)(.*$/\1/' )
|
||||
fi
|
||||
|
||||
# override this, it doesn't work correctly for lvm on luks on raid
|
||||
BOOT_DEVICE="/dev/md0"
|
||||
|
||||
# Check if RAID is used for the boot device
|
||||
if [[ $BOOT_DEVICE =~ '/dev/md' ]]; then
|
||||
raiddev=${BOOT_DEVICE#/dev/}
|
||||
# install grub on all members of RAID
|
||||
for device in `LC_ALL=C perl -ne 'if(/^'$raiddev'\s.+raid\d+\s(.+)/){ $_=$1; s/\d+\[\d+\]//g; print }' /proc/mdstat`; do
|
||||
echo Install grub on /dev/$device
|
||||
$ROOTCMD grub-install --no-floppy --force-extra-removable "/dev/$device"
|
||||
done
|
||||
|
||||
elif [[ $BOOT_DEVICE =~ '/dev/loop' ]]; then
|
||||
# do not update vmram when using a loop device
|
||||
$ROOTCMD grub-install --no-floppy --force-extra-removable --modules=part_gpt --no-nvram $BOOT_DEVICE
|
||||
if [ $? -eq 0 ]; then
|
||||
echo "Grub installed on hostdisk $BOOT_DEVICE"
|
||||
fi
|
||||
|
||||
else
|
||||
$ROOTCMD grub-install --no-floppy --modules=part_gpt "$GROOT"
|
||||
if [ $? -eq 0 ]; then
|
||||
echo "Grub installed on $BOOT_DEVICE = $GROOT"
|
||||
fi
|
||||
fi
|
||||
$ROOTCMD update-grub
|
||||
|
||||
exit $error
|
20
scripts/SETUP_USER/10-setup-user
Executable file
20
scripts/SETUP_USER/10-setup-user
Executable file
@ -0,0 +1,20 @@
|
||||
#! /bin/bash
|
||||
|
||||
# (c) Thomas Lange, 2001-2017, lange@debian.org
|
||||
|
||||
error=0; trap 'error=$(($?>$error?$?:$error))' ERR # save maximum error code
|
||||
|
||||
echo "SETUP USER: $username";
|
||||
|
||||
# add additional user account
|
||||
if [ -n "$username" ]; then
|
||||
if ! $ROOTCMD getent passwd $username ; then
|
||||
$ROOTCMD adduser --disabled-login --gecos "$username user" $username
|
||||
$ROOTCMD usermod -p "$USERPW" $username
|
||||
userdir=$($ROOTCMD getent passwd "$username" | cut -d: -f6 )
|
||||
|
||||
for g in $groups; do
|
||||
$ROOTCMD adduser $username $g
|
||||
done
|
||||
fi
|
||||
fi
|
3
scripts/SETUP_USER/20-setup-sudo
Executable file
3
scripts/SETUP_USER/20-setup-sudo
Executable file
@ -0,0 +1,3 @@
|
||||
#!/bin/sh
|
||||
echo "$username ALL=(ALL:ALL) NOPASSWD: ALL" >> /target/etc/sudoers.d/user_nopasswd
|
||||
|
4
scripts/SETUP_USER/30-authorized_keys
Executable file
4
scripts/SETUP_USER/30-authorized_keys
Executable file
@ -0,0 +1,4 @@
|
||||
#!/bin/sh
|
||||
mkdir $target/home/$username/.ssh;
|
||||
echo "$SSHKEY" > $target/home/$username/.ssh/authorized_keys;
|
||||
|
Loading…
Reference in New Issue
Block a user