From ee0d4cc27a5eb835263966c97446ea9d206d37ae Mon Sep 17 00:00:00 2001 From: Karchnu Date: Sat, 24 Aug 2024 10:49:50 +0200 Subject: [PATCH] alpine.mk --- bash/make-alpine-chroot.sh | 64 +++++++++++++++++++++++--------------- mk/alpine.mk | 29 +++++++++++++++++ 2 files changed, 68 insertions(+), 25 deletions(-) create mode 100644 mk/alpine.mk diff --git a/bash/make-alpine-chroot.sh b/bash/make-alpine-chroot.sh index 707f783..c1aa00d 100755 --- a/bash/make-alpine-chroot.sh +++ b/bash/make-alpine-chroot.sh @@ -1,51 +1,63 @@ #!/bin/bash -# TODO: good codebase, need parameters and make a more generic tool +set -x -APKPKT=apk-tools-static-2.10.1-r0.apk +# WARNING: this codebase is now updated in the "alpine.mk" makefile. +# A makefile is a better option than a plain shell script, it enables +# an automatic selection of the action to perform (by just selecting +# the "rule" to make), without dedicated code. -mirror=http://uk.alpinelinux.org/alpine/ -MAINREP=/media/fast/al -CHROOT=$MAINREP/chroot +#APKPKT=apk-tools-static-2.10.1-r0.apk + +#mirror=http://uk.alpinelinux.org/alpine/ +mirror=http://dl-cdn.alpinelinux.org/alpine +MAIN_DIR=/tmp/root +CHROOT=$MAIN_DIR/chroot PACKAGES="vim zsh" -POSTPACKAGES="alpine-sdk git openssh openssl openssl-dev crystal" +#POSTPACKAGES="alpine-sdk git openssh openssl openssl-dev crystal" +POSTPACKAGES="" + +chroot_mkdir(){ + mkdir -p $CHROOT || true +} + +#chroot_apk_static(){ +# cd ${MAIN_DIR}/ +# +# if [ -f ${APKPKT} ]; then +# echo "apk already downloaded" +# else +# wget ${mirror}/latest-stable/main/`uname -p`/${APKPKT} +# tar -xzf ${APKPKT} +# fi +#} chroot_install(){ - mkdir -p $CHROOT - cd ${MAINREP}/ + cd ${MAIN_DIR}/ - if [ -f ${APKPKT} ]; then - echo "apk already downloaded" - else - wget ${mirror}/latest-stable/main/`uname -p`/${APKPKT} - tar -xzf ${APKPKT} - fi - - ${MAINREP}/sbin/apk.static -X ${mirror}/latest-stable/main -U --allow-untrusted --root ${CHROOT} --initdb add alpine-base $PACKAGES + #${MAIN_DIR}/sbin/apk.static -X ${mirror}/latest-stable/main -U --allow-untrusted --root ${CHROOT} --initdb add alpine-base $PACKAGES + apk --arch $(arch) -X ${mirror}/latest-stable/main/ -U --allow-untrusted --root ${CHROOT} --initdb add alpine-base cp /etc/resolv.conf $CHROOT/etc/ - cp -r ~/.zsh* ~/.vim* ${CHROOT}/root - echo export PS1=\"\(chroot\) \$PS1\" >> ${CHROOT}/root/.zshrc + #cp -r ~/.zsh* ~/.vim* ${CHROOT}/root + #echo export PS1=\"\(chroot\) \$PS1\" >> ${CHROOT}/root/.zshrc cat << END > $CHROOT/etc/apk/repositories http://uk.alpinelinux.org/alpine/latest-stable/main http://uk.alpinelinux.org/alpine/latest-stable/community -http://uk.alpinelinux.org/alpine/edge/main -http://uk.alpinelinux.org/alpine/edge/community END } chroot_mount(){ - mount -t proc /proc ${CHROOT}/proc/ - mount -o bind /sys ${CHROOT}/sys/ - mount -o bind /dev ${CHROOT}/dev/ + for a in proc sys dev; do mount -o bind /$a ${CHROOT}/$a; done } chroot_env(){ - chroot ${CHROOT} /bin/zsh -l + chroot ${CHROOT} /bin/sh + #chroot ${CHROOT} /bin/zsh -l } chroot_post(){ - ${MAINREP}/sbin/apk.static --root ${CHROOT} add $POSTPACKAGES + #${MAIN_DIR}/sbin/apk.static --root ${CHROOT} add $POSTPACKAGES # chroot ${CHROOT} /bin/zsh -l "apk update && apk upgrade && apk add $POSTPACKAGES" } @@ -59,6 +71,8 @@ ask(){ fi } +chroot_mkdir +#ask chroot_apk_static ask chroot_install ask chroot_mount ask chroot_post diff --git a/mk/alpine.mk b/mk/alpine.mk new file mode 100644 index 0000000..9255783 --- /dev/null +++ b/mk/alpine.mk @@ -0,0 +1,29 @@ +CHROOT ?= /tmp/root +ARCH ?= x86_64 +VERSION ?= v3.20 +MIRROR ?= http://uk.alpinelinux.org/alpine/ +URL_REPOS ?= $(MIRROR)$(VERSION) + +enter-chroot: + chroot $(CHROOT) /bin/sh + +install-chroot: + @echo "creating a new alpine $(VERSION) chroot" + mkdir -p $(CHROOT) + apk --arch $(ARCH) -X $(URL_REPOS)/main/ -U --allow-untrusted --root $(CHROOT) --initdb add alpine-base + cp /etc/resolv.conf $(CHROOT)/etc/ + echo "$(URL_REPOS)/main" > $(CHROOT)/etc/apk/repositories + echo "$(URL_REPOS)/community" >> $(CHROOT)/etc/apk/repositories + +mount-chroot: + for a in proc sys dev; do mount -o bind /$$a $(CHROOT)/$$a; done + +umount-chroot: + -umount $(CHROOT)/proc + -umount $(CHROOT)/sys + -umount $(CHROOT)/dev + +delete-chroot: umount-chroot + rm -r $(CHROOT) + +new-chroot: install-chroot mount-chroot enter-chroot