#!/usr/bin/env zsh # Copyright (c) 2016 Dyne.org Foundation # libdevuansdk maintained by Ivan J. # # This file is part of libdevuansdk # # This source code is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This software is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this source code. If not, see . vars+=(bootstrap_tgz) bootstrap_complete_base() { fn bootstrap_complete_base "$@" req=(arch) ckreq || return 1 notice "bootstrapping $os $arch base" bootstrap_tgz="$R/tmp/bootstrap-${os}-${arch}.tgz" [[ -f $bootstrap_tgz ]] && { notice "using the existing bootstrap tarball found in $R/tmp" bootstrap_tar_unpack $strapdir || { die "failed to extract"; zerr } return 0 } notice "running debootstrap stage 1" ## deboostrap stage 1 export LANG=C export LC_ALL=C export DEBIAN_FRONTEND=noninteractive sudo -E debootstrap \ --foreign \ --arch $arch $release $strapdir $mirror || zerr [[ $arch =~ "^arm.." ]] && { qemu_install_user || zerr } ## debootstrap stage 2 notice "running debootstrap stage 2" sudo -E chroot $strapdir \ /debootstrap/debootstrap --second-stage || zerr ## write all system configuration notice "writing system configuration" conf_print_debconf | sudo tee $strapdir/debconf.set conf_print_fstab | sudo tee $strapdir/etc/fstab conf_print_hostname | sudo tee $strapdir/etc/hostname conf_print_hosts | sudo tee $strapdir/etc/hosts conf_print_networkifaces | sudo tee $strapdir/etc/network/interfaces conf_print_resolvconf | sudo tee $strapdir/etc/resolv.conf conf_print_sourceslist | sudo tee $strapdir/etc/apt/sources.list ## write third-stage for chroot bootstrap_config_thirdstage | sudo tee $strapdir/thirdstage bootstrap_config_cleanup | sudo tee $strapdir/cleanup sudo chmod +x $strapdir/thirdstage sudo chmod +x $strapdir/cleanup ## chroot into it and configure further ## debootstrap stage 3 notice "running debootstrap stage 3" devprocsys mount $strapdir || zerr dpkgdivert on $strapdir sudo -E chroot $strapdir /thirdstage || zerr sudo -E chroot $strapdir /cleanup || zerr dpkgdivert off $strapdir sleep 1 devprocsys umount $strapdir || zerr bootstrap_tar_pack || zerr bootstrap_tar_unpack $strapdir || zerr } bootstrap_config_cleanup() { fn config_cleanup cat << EOF #!/bin/sh rm -f /debconf.set rm -f /thirdstage rm -f /etc/ssh/*_key rm -f /etc/ssh/*.pub rm -f /root/.bash_history #rm -f /usr/bin/qemu-* ## our file for which we check the bootstrap is complete echo "1" > .done rm -f /cleanup EOF } bootstrap_config_thirdstage() { fn bootstrap_config_thirdstage req=(core_packages base_packages) ckreq || return 1 cat << EOF #!/bin/sh apt-get update debconf-set-selections /debconf.set echo "root:toor" | chpasswd sed -i -e 's/KERNEL\!=\"eth\*|/KERNEL\!=\"/' \ /lib/udev/rules.d/75-persistent-net-generator.rules rm -f /etc/udev/rules.d/70-persistent-net.rules export DEBIAN_FRONTEND=noninteractive apt-get --yes --force-yes install ${core_packages} apt-get --yes --force-yes install ${base_packages} apt-get --yes --force-yes purge ${purge_packages} apt-get --yes --force-yes autoremove apt-get clean EOF } bootstrap_tar_pack() { fn bootstrap_tar_pack req=(bootstrap_tgz) ckreq || return 1 #for i in $custmodules;do sudo sed -i -e '/'$i'/d' $strapdir/etc/modules;done #[[ -n $inittab ]] && sudo sed -i -e '/'$inittab'/d' $strapdir/etc/inittab cat <