summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Cady <d@jerkface.net>2020-05-14 15:39:30 -0400
committerAndrew Cady <d@jerkface.net>2020-05-14 15:39:30 -0400
commit88baafbdd68cbd79362502500ef042e482b86657 (patch)
tree435366ab36eba281c31139f69cdda6f68cb71634
parent5da330114348948f3f3fe642a96e4d2b3eaa6cdb (diff)
add "patchroot.sh" mechanism
-rw-r--r--.gitignore1
-rw-r--r--Makefile41
-rw-r--r--patchroot.sh13
3 files changed, 46 insertions, 9 deletions
diff --git a/.gitignore b/.gitignore
index 70a7dc0..34734ec 100644
--- a/.gitignore
+++ b/.gitignore
@@ -47,3 +47,4 @@ patched.iso
47rootfs/samizdat.patch.btrfs 47rootfs/samizdat.patch.btrfs
48rootfs/samizdat.seed.btrfs 48rootfs/samizdat.seed.btrfs
49rootfs/seed.iso 49rootfs/seed.iso
50apt-get-update-stamp
diff --git a/Makefile b/Makefile
index 03e748d..406022b 100644
--- a/Makefile
+++ b/Makefile
@@ -78,10 +78,12 @@ $(conf_files_out): $(conf_files_in) ./src/generate-network-filter.sh
78 78
79static_conf_files = conf/torrc conf/nbd-server conf/postfix_main.cf 79static_conf_files = conf/torrc conf/nbd-server conf/postfix_main.cf
80 80
81SUDO_MAKE = sudo MAKEFLAGS="$$MAKEFLAGS" $(MAKE)
82
81.PHONY: install-configuration install-bootserver start-bootserver 83.PHONY: install-configuration install-bootserver start-bootserver
82install-bootserver: 84install-bootserver:
83 sudo initrd.sh 85 sudo initrd.sh
84 sudo -E $(MAKE) instdir=/ real-install-bootserver start-bootserver 86 $(SUDO_MAKE) instdir=/ real-install-bootserver start-bootserver
85 87
86start-bootserver: 88start-bootserver:
87 ifup --force br0 89 ifup --force br0
@@ -125,7 +127,7 @@ export rootfs
125.PHONY: rootfs 127.PHONY: rootfs
126rootfs: 128rootfs:
127 [ -e install-submodules-stamp ] || make install-submodules-stamp 129 [ -e install-submodules-stamp ] || make install-submodules-stamp
128 [ -e install-stamp ] || sudo make install-stamp 130 [ -e install-stamp ] || $(SUDO_MAKE) install-stamp
129 $(MAKE) -C rootfs 131 $(MAKE) -C rootfs
130 sudo mkdir -p /srv/nbd 132 sudo mkdir -p /srv/nbd
131 sudo ln -sf "$$PWD"/rootfs/$(rootfs).btrfs /srv/nbd/samizdat.btrfs 133 sudo ln -sf "$$PWD"/rootfs/$(rootfs).btrfs /srv/nbd/samizdat.btrfs
@@ -174,7 +176,7 @@ get_min_size="$$(btrfs inspect-internal min-dev-size --id 1 $@.mnt | (read b _;
174 176
175rootfs/samizdat.seed.btrfs: rootfs/samizdat.btrfs 177rootfs/samizdat.seed.btrfs: rootfs/samizdat.btrfs
176ifneq ($(shell id -u),0) 178ifneq ($(shell id -u),0)
177 sudo make $@ 179 $(SUDO_MAKE) $@
178else 180else
179 cp --reflink $< $@~tmp 181 cp --reflink $< $@~tmp
180 btrfstune -f -S0 $@~tmp 182 btrfstune -f -S0 $@~tmp
@@ -188,22 +190,43 @@ else
188 mv $@~tmp $@ 190 mv $@~tmp $@
189endif 191endif
190 192
191rootfs/samizdat.patch.btrfs: rootfs/samizdat.seed.btrfs 193FORCE:
194
195debian_dist = stretch
196
197apt_list_files = $(addprefix /./var/lib/apt/lists/, \
198 *$(debian_dist)_main_binary* \
199 *$(debian_dist)_main_i18n_Translation-en \
200 *$(debian_dist)_updates_main_binary* \
201 *$(debian_dist)_updates_main_i18n_Translation-en \
202 *dists_$(debian_dist)_*Release*)
203
204stale = [ ! -e $@ ] || [ $$(( $$(date +%s) - $$(date -r $@ +%s) )) -gt 36000 ]
205
206apt-get-update-stamp: FORCE
207 @if $(stale); then set -x; sudo apt-get update && touch $@; fi
208
209rootfs/samizdat.patch.btrfs: rootfs/samizdat.seed.btrfs apt-get-update-stamp \
210 $(if $(INTERACTIVE_CHROOT),FORCE,patchroot.sh)
192ifneq ($(shell id -u),0) 211ifneq ($(shell id -u),0)
193 sudo make $@ 212 $(SUDO_MAKE) $@
194else 213else
195 rm -f $@~tmp 214 rm -f $@~tmp
196 touch $@~tmp 215 touch $@~tmp
197 fallocate -l $(samizdat_btrfs_patch_size) $@~tmp 216 fallocate -l $(samizdat_btrfs_patch_size) $@~tmp
198 test -d $@.mnt || mkdir $@.mnt 217 test -d $@.mnt || mkdir $@.mnt
199 ! mountpoint -q $@.mnt || umount $@.mnt 218 ! mountpoint -q $@.mnt || umount $@.mnt
200 mount -o ro -t btrfs $< $@.mnt 219 mount -o compress,ro -t btrfs $< $@.mnt
201 a=$(get_loop_dev); [ -z "$$a" ] || losetup -d $$a 220 a=$(get_loop_dev); [ -z "$$a" ] || losetup -d $$a
202 losetup -f $@~tmp 221 losetup -f $@~tmp
203 btrfs device add $(get_loop_dev) $@.mnt 222 btrfs device add $(get_loop_dev) $@.mnt
204 mount -o rw,remount $@.mnt 223 mount -o compress,rw,remount $@.mnt
205 chroot $@.mnt /bin/sh -c 'echo samizdat > /etc/hostname' 224 rsync -Ra $(apt_list_files) $@.mnt/
225ifdef INTERACTIVE_CHROOT
206 chroot $@.mnt bash -i 226 chroot $@.mnt bash -i
227else
228 chroot $@.mnt sh < patchroot.sh
229endif
207 umount $@.mnt 230 umount $@.mnt
208 losetup -f $< 231 losetup -f $<
209 btrfstune -S1 $@~tmp 232 btrfstune -S1 $@~tmp
@@ -279,7 +302,7 @@ rootfs/samizdat.btrfs:
279.PHONY: install 302.PHONY: install
280install: 303install:
281 [ -e install-submodules-stamp ] || make install-submodules-stamp 304 [ -e install-submodules-stamp ] || make install-submodules-stamp
282 sudo make install-stamp 305 $(SUDO_MAKE) install-stamp
283 306
284install-submodules-stamp: install-submodules 307install-submodules-stamp: install-submodules
285 touch $@ 308 touch $@
diff --git a/patchroot.sh b/patchroot.sh
new file mode 100644
index 0000000..54a37e2
--- /dev/null
+++ b/patchroot.sh
@@ -0,0 +1,13 @@
1#!/bin/sh
2echo samizdat > /etc/hostname
3cat <<END > /etc/apt/sources.list
4deb http://httpredir.debian.org/debian stretch main #contrib non-free
5deb http://security.debian.org stretch/updates main #contrib non-free
6#deb http://httpredir.debian.org/debian stretch-backports main #contrib non-free
7END
8
9#apt-get update
10cat /var/lib/apt/lists/*_Packages | dpkg --update-avail -
11
12#apt-get -yd install baresip
13apt-mark install baresip