#!/bin/bash source $(dirname $0)/defaults.conf source ${WORKDIR}/mklive.conf source $(dirname $0)/functions.sh set -e einfo "Bootstraping live system" BUILD_TIME=$(date +%Y-%m-%dT%H:%M) CHROOT=${WORKDIR}/chroot startstage bootstrap #bootstrap basic system [ -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 mount -t proc proc $CHROOT/proc/ mount -t sysfs sys $CHROOT/sys/ mount -o bind /dev $CHROOT/dev/ #install locales if ! checkstage bootstrap_locales; then einfo " installing locales" chroot $CHROOT apt -y install locales echo "de_DE.UTF-8 UTF-8" >> $CHROOT/etc/locale.gen echo "en_US.UTF-8 UTF-8" >> $CHROOT/etc/locale.gen chroot $CHROOT locale-gen endstage bootstrap_locales fi #install systemd checkstage bootstrap_systemd || chroot $CHROOT apt -y install systemd && endstage bootstrap_systemd #install live-boot checkstage bootstrap_liveboot || chroot $CHROOT apt-get -y install live-boot && endstage bootstrap_liveboot DEFAULT_PACKAGES="console-setup language-pack-de" #install additional packages if [ -n "${PACKAGES}" ]; then DEBIAN_FRONTEND=noninteractive DEBCONF_NONINTERACTIVE_SEEN=true \ LC_ALL=C LANGUAGE=C LANG=C chroot $CHROOT apt-get -y install ${DEFAULT_PACKAGES} ${PACKAGES} fi echo "LANG=de_DE.UTF-8" >> $CHROOT/etc/default/locale if [ "${LIVE_AUTOLOGIN}" == "true" ]; then einfo "Autologin is enabled" requiredir "$CHROOT/etc/systemd/system/getty@tty1.service.d/" cat > "$CHROOT/etc/systemd/system/getty@tty1.service.d/override.conf" << EOF [Service] ExecStart= ExecStart=-/sbin/agetty --autologin root --noclear %I \$TERM EOF fi #set the rootpw chpasswd -R $(readlink -f $CHROOT) <<< "root:${LIVE_ROOTPW}" #change to a full busybox - for tftp support sed -i -r 's/=.+(\/bin\/busybox)/=\1/' chroot/usr/share/initramfs-tools/hooks/zz-busybox-initramfs #remove ubuntu ads for f in 00-header 10-help-text 50-motd-news do [ -f ${CHROOT}/etc/update-motd.d/$f ] && rm ${CHROOT}/etc/update-motd.d/$f done #(re)install kernel chroot $CHROOT apt -y -o "APT::Install-Recommends=false" install ${KERNEL_PACKAGE} #clean chroot chroot $CHROOT apt autoremove chroot $CHROOT apt-get clean umount $CHROOT/proc/ umount $CHROOT/sys/ umount $CHROOT/dev/ 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 [Unit] Description=Regenerate SSH host keys Before=ssh.service [Service] Type=oneshot ExecStartPre=-/bin/sh -c "/bin/rm -f -v /etc/ssh/ssh_host_*_key*" ExecStart=/usr/bin/ssh-keygen -A -v ExecStartPost=/bin/systemctl disable regenerate_ssh_host_keys [Install] WantedBy=multi-user.target EOF SSH_STATUS="on" [ -e ${CHROOT}/etc/systemd/system/multi-user.target.wants/regenerate_ssh_host_keys.service ] || ln -s ../regenerate_ssh_host_keys.service ${CHROOT}/etc/systemd/system/multi-user.target.wants/regenerate_ssh_host_keys.service else SSH_STATUS="off" fi #final changes echo "${LIVE_HOSTNAME}" > $CHROOT/etc/hostname echo "${LIVE_NAME} Build@${BUILD_TIME} \\l" > $CHROOT/etc/issue echo "${LIVE_NAME} Build@${BUILD_TIME}" > $CHROOT/etc/issue.net 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 #!/bin/bash echo -e "\n===== GENERAL =====\n" echo " ${LIVE_NAME}" echo " Buildtime: ${BUILD_TIME}" echo " Root password: ${LIVE_ROOTPW}" echo " SSH: ${SSH_STATUS}" echo "" echo -e "\n====== NETWORK ======\n" echo " Interfaces:" ip -c -br addr | grep -v lo | sed -r 's/^(.*)$/ \1/g' echo -e "\n Default route: " ip -c -br route show default | awk '{print " "\$3"\t("\$5")"}' echo "" #Diskingo echo -e "\n====== DISKS ======\n" lsblk -e 7,11 -o NAME,SIZE,TYPE,FSTYPE,SERIAL,MODEL | sed -r -e 's/^(.*)$/ \1/g' -e 's/([A-Za-z0-9]) /\1 /g' echo "" EOF chmod +x ${CHROOT}/etc/update-motd.d/01-info einfo "Bootstrap done" endstage bootstrap