wrap chrooting in a function

This commit is contained in:
parazyd 2016-12-18 13:19:45 +01:00
parent 75a22f1134
commit 367bf5fc2e
No known key found for this signature in database
GPG Key ID: F0CB28FCF78637DE
6 changed files with 47 additions and 36 deletions

View File

@ -63,8 +63,6 @@ bootstrap_complete_base() {
## 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
@ -72,10 +70,8 @@ bootstrap_complete_base() {
devprocsys mount $strapdir || zerr
dpkgdivert on $strapdir
sudo -E chroot $strapdir /thirdstage || zerr
sudo -E chroot $strapdir /cleanup || zerr
dpkgdivert off $strapdir
chroot-script -d thirdstage || zerr
chroot-script -d cleanup || zerr
sleep 1
devprocsys umount $strapdir || zerr
@ -94,7 +90,7 @@ rm -f /thirdstage
rm -f /etc/ssh/*_key
rm -f /etc/ssh/*.pub
rm -f /root/.bash_history
#rm -f /usr/bin/qemu-*
rm -f /usr/bin/qemu-arm-static
## our file for which we check the bootstrap is complete
echo "1" > .done
rm -f /cleanup
@ -141,8 +137,7 @@ apt-get clean
rm -f /prepack
EOF
sudo chmod +x $strapdir/prepack || zerr
sudo -E chroot $strapdir /prepack || zerr
chroot-script prepack || zerr
local _dest=$(dirname $bootstrap_tgz)
@ -185,14 +180,13 @@ apt-get clean
rm -f /postunpack
EOF
dpkgdivert on $strapdir
devprocsys mount $strapdir
sudo chmod +x $strapdir/postunpack || zerr
sudo -E chroot $strapdir /postunpack || zerr
chroot-script -d postunpack || zerr
devprocsys umount $strapdir
dpkgdivert off $strapdir
## below typically used in arm-sdk
[[ -z $inittab ]] || { print $inittab | sudo tee -a $strapdir/etc/inittab }
for i in $custmodules;do print $i | sudo tee -a $strapdir/etc/modules; done
for i in $custmodules; do
print $i | sudo tee -a $strapdir/etc/modules
done
}

View File

@ -17,7 +17,7 @@
# You should have received a copy of the GNU General Public License
# along with this source code. If not, see <http://www.gnu.org/licenses/>.
## helper functions that make your life easier
## helper functions that make my life easier
build_image_dist() {
fn build_image_dist
@ -138,8 +138,8 @@ dpkg-divert --remove --rename /usr/sbin/invoke-rc.d
rm -f /dpkgdivert
EOF
fi
sudo chmod +x $werdo/dpkgdivert
sudo -E chroot $werdo /dpkgdivert || zerr
chroot-script dpkgdivert || zerr
}
enableserv() {
@ -154,8 +154,7 @@ update-rc.d ${service} enable
EOF
notice "enabling $service service"
sudo chmod +x $strapdir/enserv
sudo -E chroot $strapdir /enserv
chroot-script enserv
}
disableserv() {
@ -170,8 +169,7 @@ update-rc.d ${service} disable
EOF
notice "disabling $service service"
sudo chmod +x $strapdir/disserv
sudo -E chroot $strapdir /disserv
chroot-script disserv
}
enablessh() {
@ -183,9 +181,9 @@ enablessh() {
#!/bin/sh
sed -i -e 's/PermitRootLogin without-password/PermitRootLogin yes/' /etc/ssh/sshd_config
update-rc.d ssh enable
chmod +x /etc/init.d/regensshkeys
update-rc.d regensshkeys defaults
update-rc.d regensshkeys enable
rm -f /enssh
EOF
cat <<EOF | sudo tee ${strapdir}/etc/init.d/regensshkeys
@ -222,10 +220,9 @@ case "\$1" in
esac
EOF
dpkgdivert on $strapdir
sudo chmod +x $strapdir/enssh
sudo -E chroot $strapdir /enssh
dpkgdivert off $strapdir
sudo chmod +x $strapdir/etc/init.d/regensshkeys
chroot-script -d enssh
}
install-custdebs() {
@ -246,8 +243,29 @@ apt-get autoremove
apt-get clean
rm -rf /debs install-debs
EOF
sudo chmod +x $strapdir/install-debs
sudo -E chroot $strapdir /install-debs
chroot-script install-debs
}
chroot-script() {
fn chroot-script "$@"
notice "chrooting for script $@"
if [[ "$1" == "-d" ]]; then
shift 1
local _script="$1"
dpkgdivert on $strapdir
sudo chmod +x $strapdir/$_script
sudo -E chroot $strapdir /$_script
dpkgdivert off $strapdir
else
local _script="$1"
sudo chmod +x $strapdir/$_script
sudo -E chroot $strapdir /$_script
fi
}
silly() {

View File

@ -36,10 +36,8 @@ apt-get --yes --force-yes autoremove
apt-get clean
rm -f /isoprep
EOF
dpkgdivert on $strapdir
sudo chmod +x $strapdir/isoprep
sudo -E chroot $strapdir /isoprep
dpkgdivert off $strapdir
chroot-script -d isoprep || zerr
}
iso_setup_isolinux() {

View File

@ -33,7 +33,7 @@ build_kernel_amd64() {
dpkgdivert on $strapdir
devprocsys mount $strapdir
sudo chroot $strapdir \
sudo -E chroot $strapdir \
apt-get --yes --force-yes install $kernel
devprocsys umount $strapdir
@ -54,7 +54,7 @@ build_kernel_i386() {
dpkgdivert on $strapdir
devprocsys mount $strapdir
sudo chroot $strapdir \
sudo -E chroot $strapdir \
apt-get --yes --force-yes install $kernel
devprocsys umount $strapdir

View File

@ -17,7 +17,7 @@
# You should have received a copy of the GNU General Public License
# along with this source code. If not, see <http://www.gnu.org/licenses/>.
## ilporcodio
## ilpd
rsync_to_raw_image() {
fn rsync_to_raw_image
@ -35,6 +35,7 @@ rsync_to_raw_image() {
die "not enough space. report a bug please"
zerr
}
if [[ $parted_type = dos ]]; then
sudo rsync -HPavz -q ./boot/* $workdir/boot || {
image_raw_umount

View File

@ -39,7 +39,7 @@ proc /proc proc nodev,noexec,nosuid 0 0
/dev/sda2 / ext4 errors=remount-ro 0 1
# boot
/dev/sda1 /boot ext2 noauto 0 0
/dev/sda1 /boot ext2 defaults 0 0
EOF
}