better error handling and german keyboard layout as default

This commit is contained in:
nospoonuser 2018-05-31 13:01:20 +02:00
parent 4f8c0bd73d
commit 65b5cf2b07
7 changed files with 84 additions and 26 deletions

View File

@ -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

View File

@ -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"

View File

@ -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}"
}

View File

@ -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

View File

@ -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"

View File

@ -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"

View File

@ -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"