better error handling and german keyboard layout as default
This commit is contained in:
parent
4f8c0bd73d
commit
65b5cf2b07
|
@ -1,16 +1,19 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
|
source $(dirname $0)/defaults.conf
|
||||||
source ${WORKDIR}/mklive.conf
|
source ${WORKDIR}/mklive.conf
|
||||||
source $(dirname $0)/functions.sh
|
source $(dirname $0)/functions.sh
|
||||||
|
|
||||||
echo "Build live"
|
set -e
|
||||||
|
|
||||||
|
einfo "Bootstraping live system"
|
||||||
|
|
||||||
BUILD_TIME=$(date +%Y-%m-%dT%H:%M)
|
BUILD_TIME=$(date +%Y-%m-%dT%H:%M)
|
||||||
CHROOT=${WORKDIR}/chroot
|
CHROOT=${WORKDIR}/chroot
|
||||||
|
|
||||||
startstage bootstrap
|
startstage bootstrap
|
||||||
#bootstrap basic system
|
#bootstrap basic system
|
||||||
[ -d $CHROOT ] || debootstrap --components=main,restricted,universe,multiverse --variant=$DIST_VARIANT --arch=$ARCH $DIST_RELEASE $CHROOT $DIST_MIRROR
|
[ -d $CHROOT ] && einfo "Skipping 'debootstrap' as chrootdir is already present" || debootstrap --components=main,restricted,universe,multiverse --variant=$DIST_VARIANT --arch=$ARCH $DIST_RELEASE $CHROOT $DIST_MIRROR
|
||||||
|
|
||||||
#prepair chroot
|
#prepair chroot
|
||||||
mount -t proc proc $CHROOT/proc/
|
mount -t proc proc $CHROOT/proc/
|
||||||
|
@ -18,22 +21,24 @@ mount -t sysfs sys $CHROOT/sys/
|
||||||
mount -o bind /dev $CHROOT/dev/
|
mount -o bind /dev $CHROOT/dev/
|
||||||
|
|
||||||
#install locales
|
#install locales
|
||||||
if [ ! -e $STAGEDIR/_locales ]; then
|
if ! checkstage bootstrap_locales; then
|
||||||
|
einfo " installing locales"
|
||||||
chroot $CHROOT apt -y install locales
|
chroot $CHROOT apt -y install locales
|
||||||
echo "de_DE.UTF-8 UTF-8" >> $CHROOT/etc/locale.gen
|
echo "de_DE.UTF-8 UTF-8" >> $CHROOT/etc/locale.gen
|
||||||
echo "en_US.UTF-8 UTF-8" >> $CHROOT/etc/locale.gen
|
echo "en_US.UTF-8 UTF-8" >> $CHROOT/etc/locale.gen
|
||||||
chroot $CHROOT locale-gen
|
chroot $CHROOT locale-gen
|
||||||
echo "done" > $STAGEDIR/_locales
|
endstage bootstrap_locales
|
||||||
fi
|
fi
|
||||||
|
|
||||||
#install systemd
|
#install systemd
|
||||||
chroot $CHROOT apt -y install systemd
|
checkstage bootstrap_systemd || chroot $CHROOT apt -y install systemd && endstage bootstrap_systemd
|
||||||
|
|
||||||
#install live-boot
|
#install live-boot
|
||||||
chroot $CHROOT apt-get -y install live-boot
|
checkstage bootstrap_liveboot || chroot $CHROOT apt-get -y install live-boot && endstage bootstrap_liveboot
|
||||||
|
|
||||||
DEFAULT_PACKAGES=console-setup
|
|
||||||
|
|
||||||
|
|
||||||
|
DEFAULT_PACKAGES="console-setup language-pack-de"
|
||||||
#install additional packages
|
#install additional packages
|
||||||
if [ -n "${PACKAGES}" ]; then
|
if [ -n "${PACKAGES}" ]; then
|
||||||
DEBIAN_FRONTEND=noninteractive DEBCONF_NONINTERACTIVE_SEEN=true \
|
DEBIAN_FRONTEND=noninteractive DEBCONF_NONINTERACTIVE_SEEN=true \
|
||||||
|
@ -44,13 +49,13 @@ echo "LANG=de_DE.UTF-8" >> $CHROOT/etc/default/locale
|
||||||
|
|
||||||
|
|
||||||
if [ "${LIVE_AUTOLOGIN}" == "true" ]; then
|
if [ "${LIVE_AUTOLOGIN}" == "true" ]; then
|
||||||
|
einfo "Autologin is enabled"
|
||||||
requiredir "$CHROOT/etc/systemd/system/getty@tty1.service.d/"
|
requiredir "$CHROOT/etc/systemd/system/getty@tty1.service.d/"
|
||||||
cat > "$CHROOT/etc/systemd/system/getty@tty1.service.d/override.conf" << EOF
|
cat > "$CHROOT/etc/systemd/system/getty@tty1.service.d/override.conf" << EOF
|
||||||
[Service]
|
[Service]
|
||||||
ExecStart=
|
ExecStart=
|
||||||
ExecStart=-/sbin/agetty --autologin root --noclear %I \$TERM
|
ExecStart=-/sbin/agetty --autologin root --noclear %I \$TERM
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
#set the rootpw
|
#set the rootpw
|
||||||
|
@ -65,10 +70,11 @@ do
|
||||||
[ -f ${CHROOT}/etc/update-motd.d/$f ] && rm ${CHROOT}/etc/update-motd.d/$f
|
[ -f ${CHROOT}/etc/update-motd.d/$f ] && rm ${CHROOT}/etc/update-motd.d/$f
|
||||||
done
|
done
|
||||||
|
|
||||||
#install kernel
|
#(re)install kernel
|
||||||
chroot $CHROOT apt -y -o "APT::Install-Recommends=false" install ${KERNEL_PACKAGE}
|
chroot $CHROOT apt -y -o "APT::Install-Recommends=false" install ${KERNEL_PACKAGE}
|
||||||
|
|
||||||
#clean chroot
|
#clean chroot
|
||||||
|
chroot $CHROOT apt autoremove
|
||||||
chroot $CHROOT apt-get clean
|
chroot $CHROOT apt-get clean
|
||||||
umount $CHROOT/proc/
|
umount $CHROOT/proc/
|
||||||
umount $CHROOT/sys/
|
umount $CHROOT/sys/
|
||||||
|
@ -77,6 +83,9 @@ umount $CHROOT/dev/
|
||||||
|
|
||||||
if [ -x $CHROOT/usr/sbin/sshd ];then
|
if [ -x $CHROOT/usr/sbin/sshd ];then
|
||||||
|
|
||||||
|
|
||||||
|
sed -i -r "s/^[#]?PermitRootLogin .+$/PermitRootLogin ${LIVE_SSH_ROOTLOGIN}/" $CHROOT/etc/ssh/sshd_config
|
||||||
|
|
||||||
cat > $CHROOT/etc/systemd/system/regenerate_ssh_host_keys.service << EOF
|
cat > $CHROOT/etc/systemd/system/regenerate_ssh_host_keys.service << EOF
|
||||||
[Unit]
|
[Unit]
|
||||||
Description=Regenerate SSH host keys
|
Description=Regenerate SSH host keys
|
||||||
|
@ -104,6 +113,17 @@ echo "${LIVE_NAME} Build@${BUILD_TIME}" > $CHROOT/etc/issue.net
|
||||||
echo "" > $CHROOT/etc/legal
|
echo "" > $CHROOT/etc/legal
|
||||||
|
|
||||||
|
|
||||||
|
#set a default keyboard layout
|
||||||
|
cat > ${CHROOT}/etc/default/keyboard << EOF
|
||||||
|
XKBMODEL="pc105"
|
||||||
|
XKBLAYOUT="de"
|
||||||
|
XKBVARIANT="nodeadkeys"
|
||||||
|
XKBOPTIONS=""
|
||||||
|
|
||||||
|
BACKSPACE="guess"
|
||||||
|
EOF
|
||||||
|
|
||||||
|
|
||||||
cat > ${CHROOT}/etc/update-motd.d/01-info << EOF
|
cat > ${CHROOT}/etc/update-motd.d/01-info << EOF
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
|
@ -130,4 +150,6 @@ EOF
|
||||||
|
|
||||||
chmod +x ${CHROOT}/etc/update-motd.d/01-info
|
chmod +x ${CHROOT}/etc/update-motd.d/01-info
|
||||||
|
|
||||||
|
einfo "Bootstrap done"
|
||||||
|
|
||||||
endstage bootstrap
|
endstage bootstrap
|
||||||
|
|
|
@ -2,3 +2,4 @@ MEMTEST_BIN="/boot/memtest86+.bin"
|
||||||
UBUNTU_INSTALL_NETBOOT="http://de.archive.ubuntu.com/ubuntu/dists/bionic/main/installer-amd64/current/images/netboot/netboot.tar.gz"
|
UBUNTU_INSTALL_NETBOOT="http://de.archive.ubuntu.com/ubuntu/dists/bionic/main/installer-amd64/current/images/netboot/netboot.tar.gz"
|
||||||
DEBIAN_INSTALL_NETBOOT="http://ftp.nl.debian.org/debian/dists/stretch/main/installer-amd64/current/images/netboot/netboot.tar.gz"
|
DEBIAN_INSTALL_NETBOOT="http://ftp.nl.debian.org/debian/dists/stretch/main/installer-amd64/current/images/netboot/netboot.tar.gz"
|
||||||
ARCH_BASEDIR="arch/arch"
|
ARCH_BASEDIR="arch/arch"
|
||||||
|
LIVE_SSH_ROOTLOGIN="yes"
|
||||||
|
|
|
@ -1,22 +1,43 @@
|
||||||
function requiredir {
|
RED='\033[0;31m'
|
||||||
|
GREEN='\033[0;32m'
|
||||||
|
ORGANGE='\033[0;33m'
|
||||||
|
BLUE='\033[0;34m'
|
||||||
|
LGRAY='\033[0;37m'
|
||||||
|
|
||||||
|
NC='\033[0m'
|
||||||
|
|
||||||
|
requiredir() {
|
||||||
[ -n "$1" ] || exit 1
|
[ -n "$1" ] || exit 1
|
||||||
[ -e $1 ] || mkdir $1
|
[ -e $1 ] || mkdir $1
|
||||||
}
|
}
|
||||||
|
|
||||||
function err {
|
eexit() {
|
||||||
echo $1
|
eerr "$1"
|
||||||
exit 1
|
exit 1
|
||||||
}
|
}
|
||||||
|
|
||||||
function checkstage {
|
checkstage() {
|
||||||
[ -e ${WORKDIR}/stage/_$1 ] || return 1
|
[ -e ${WORKDIR}/stage/_$1 ] || return 1
|
||||||
[ "$(cat $WORKDIR/stage/_$1)" != "done" ] && return 2
|
[ "$(cat $WORKDIR/stage/_$1)" != "done" ] && return 2
|
||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
|
|
||||||
function startstage {
|
startstage() {
|
||||||
echo -n "started" > ${WORKDIR}/stage/_$1
|
echo -n "started" > ${WORKDIR}/stage/_$1
|
||||||
}
|
}
|
||||||
function endstage {
|
endstage() {
|
||||||
echo -n "done" > ${WORKDIR}/stage/_$1
|
echo -n "done" > ${WORKDIR}/stage/_$1
|
||||||
}
|
}
|
||||||
|
|
||||||
|
eok() {
|
||||||
|
echo -e "${GREEN}[++] $1${NC}"
|
||||||
|
}
|
||||||
|
|
||||||
|
einfo() {
|
||||||
|
echo -e "${BLUE}[ii] ${1}${NC}"
|
||||||
|
}
|
||||||
|
|
||||||
|
eerr(){
|
||||||
|
echo -e "${RED}[--] ${1}${NC}"
|
||||||
|
}
|
||||||
|
|
||||||
|
|
|
@ -3,7 +3,9 @@ source $(dirname $0)/defaults.conf
|
||||||
source ${WORKDIR}/mklive.conf
|
source ${WORKDIR}/mklive.conf
|
||||||
source $(dirname $0)/functions.sh
|
source $(dirname $0)/functions.sh
|
||||||
|
|
||||||
echo "Preparing Installer"
|
set -e
|
||||||
|
|
||||||
|
einfo "Preparing Installer"
|
||||||
|
|
||||||
startstage installer
|
startstage installer
|
||||||
|
|
||||||
|
@ -24,9 +26,12 @@ for dist in $installerdists
|
||||||
do
|
do
|
||||||
URLVAR="${dist^^}_INSTALL_NETBOOT"
|
URLVAR="${dist^^}_INSTALL_NETBOOT"
|
||||||
[ -z "${!URLVAR}" ] && continue;
|
[ -z "${!URLVAR}" ] && continue;
|
||||||
[ -e ${WORKDIR}/INSTALLER/${dist}_netboot.tar.gz ] || wget ${!URLVAR} -O ${WORKDIR}/INSTALLER/${dist}_netboot.tar.gz
|
[ -e ${WORKDIR}/INSTALLER/${dist}_netboot.tar.gz ] || ( einfo "Missing ${dist} netboot installer. Downloading ..." && wget ${!URLVAR} -O ${WORKDIR}/INSTALLER/${dist}_netboot.tar.gz )
|
||||||
|
[ $? -eq 0 ] || ( eerr "Download failed." && break )
|
||||||
tar -C ${WORKDIR}/INSTALLER -xzf ${WORKDIR}/INSTALLER/${dist}_netboot.tar.gz ./$dist-installer/amd64/linux ./${dist}-installer/amd64/initrd.gz
|
tar -C ${WORKDIR}/INSTALLER -xzf ${WORKDIR}/INSTALLER/${dist}_netboot.tar.gz ./$dist-installer/amd64/linux ./${dist}-installer/amd64/initrd.gz
|
||||||
tar -C ${WORKDIR}/INSTALLER --transform "s/txt/${dist}/" --strip 4 -xzf ${WORKDIR}/INSTALLER/${dist}_netboot.tar.gz ./${dist}-installer/amd64/boot-screens/txt.cfg
|
tar -C ${WORKDIR}/INSTALLER --transform "s/txt/${dist}/" --strip 4 -xzf ${WORKDIR}/INSTALLER/${dist}_netboot.tar.gz ./${dist}-installer/amd64/boot-screens/txt.cfg
|
||||||
done
|
done
|
||||||
|
|
||||||
|
eok "Installer done."
|
||||||
|
|
||||||
endstage installer
|
endstage installer
|
||||||
|
|
|
@ -4,12 +4,14 @@ source ${WORKDIR}/mklive.conf
|
||||||
source $(dirname $0)/functions.sh
|
source $(dirname $0)/functions.sh
|
||||||
source $(dirname $0)/menufunction.sh
|
source $(dirname $0)/menufunction.sh
|
||||||
|
|
||||||
echo "Starting ISO creation"
|
set -e
|
||||||
|
|
||||||
|
einfo "Creating ISO"
|
||||||
|
|
||||||
ISOLINUX_MODULES="ldlinux.c32 libmenu.c32 menu.c32"
|
ISOLINUX_MODULES="ldlinux.c32 libmenu.c32 menu.c32"
|
||||||
ISOLINUX_BIN="/usr/lib/ISOLINUX/isolinux.bin"
|
ISOLINUX_BIN="/usr/lib/ISOLINUX/isolinux.bin"
|
||||||
|
|
||||||
checkstage live || err "Previous stage (live) was not finished"
|
checkstage live || eexit "Previous stage (live) was not finished"
|
||||||
|
|
||||||
startstage iso
|
startstage iso
|
||||||
|
|
||||||
|
@ -36,7 +38,7 @@ if [ "$ISO_INCLUDE_UBUNTU_INSTALLER" == "true" ]; then
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ "$PXE_INCLUDE_DEBIAN_INSTALLER" == "true" ]; then
|
if [ "$PXE_INCLUDE_DEBIAN_INSTALLER" == "true" ]; then
|
||||||
menuinstaller debian >> $PXEDIR/pxelinux/pxelinux.cfg/default
|
menuinstaller debian >> $ISODIR/isolinux/isolinux.cfg
|
||||||
[ -L $PXEDIR/debian-installer ] || ln -s ../INSTALLER/debian-installer $PXEDIR/debian-installer
|
[ -L $PXEDIR/debian-installer ] || ln -s ../INSTALLER/debian-installer $PXEDIR/debian-installer
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
@ -69,4 +71,4 @@ done
|
||||||
mkisofs -f -boot-info-table -boot-load-size 4 -no-emul-boot -o ${ISO_FILENAME}.iso -b isolinux/isolinux.bin -c isolinux/boot.cat -l -R -J $ISODIR
|
mkisofs -f -boot-info-table -boot-load-size 4 -no-emul-boot -o ${ISO_FILENAME}.iso -b isolinux/isolinux.bin -c isolinux/boot.cat -l -R -J $ISODIR
|
||||||
|
|
||||||
endstage iso
|
endstage iso
|
||||||
|
eok "ISO done"
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
source ${WORKDIR}/mklive.conf
|
source ${WORKDIR}/mklive.conf
|
||||||
source $(dirname $0)/functions.sh
|
source $(dirname $0)/functions.sh
|
||||||
|
|
||||||
echo "Build live"
|
einfo "Packageing live system"
|
||||||
|
|
||||||
startstage live
|
startstage live
|
||||||
|
|
||||||
|
@ -19,4 +19,4 @@ cp -L $CHROOT/vmlinuz ${WORKDIR}/LIVE/
|
||||||
mksquashfs $CHROOT ${WORKDIR}/LIVE/filesystem.squashfs
|
mksquashfs $CHROOT ${WORKDIR}/LIVE/filesystem.squashfs
|
||||||
|
|
||||||
endstage live
|
endstage live
|
||||||
|
eok "Done"
|
||||||
|
|
|
@ -4,12 +4,17 @@ source ${WORKDIR}/mklive.conf
|
||||||
source $(dirname $0)/functions.sh
|
source $(dirname $0)/functions.sh
|
||||||
source $(dirname $0)/menufunction.sh
|
source $(dirname $0)/menufunction.sh
|
||||||
|
|
||||||
echo "Starting PXE creation"
|
if [ "$PXE" != "true" ]; then
|
||||||
|
einfo "Skipping PXE - not configured"
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
einfo "Creating PXE enviroment"
|
||||||
|
|
||||||
PXELINUX_MODULES="ldlinux.c32 libmenu.c32 menu.c32"
|
PXELINUX_MODULES="ldlinux.c32 libmenu.c32 menu.c32"
|
||||||
PXELINUX_BIN="/usr/lib/PXELINUX/pxelinux.0"
|
PXELINUX_BIN="/usr/lib/PXELINUX/pxelinux.0"
|
||||||
|
|
||||||
checkstage live || err "Previous stage (live) was not finished"
|
checkstage live || eexit "Previous stage (live) was not finished"
|
||||||
|
|
||||||
startstage pxe
|
startstage pxe
|
||||||
|
|
||||||
|
@ -68,8 +73,10 @@ do
|
||||||
cp ${SYSLINUX_MODULESDIR}/$m $PXEDIR/pxelinux/
|
cp ${SYSLINUX_MODULESDIR}/$m $PXEDIR/pxelinux/
|
||||||
done
|
done
|
||||||
|
|
||||||
|
#pack files
|
||||||
|
[ "$PXE_NO_TAR" == "true" ] && einfo "Skipping 'tar' step - disabled by config." || tar -hczf pxe.tar.gz -C $PXEDIR/ .
|
||||||
|
|
||||||
#create tarball
|
#create tarball
|
||||||
|
|
||||||
endstage pxe
|
endstage pxe
|
||||||
|
|
||||||
|
eok "PXE build Done"
|
||||||
|
|
Loading…
Reference in New Issue