From 75891d0d4efe1593d095157b2edbf961e0e94664 Mon Sep 17 00:00:00 2001 From: Clayton Voges Date: Sun, 29 Aug 2021 21:48:18 +0000 Subject: [PATCH] First commit --- ANSWERFILE | 17 +++++++ README.md | 10 ++++ alpine_init.sh | 42 +++++++++++++++ chroot_init.sh | 18 +++++++ main.sh | 135 ------------------------------------------------- startup.sh | 9 ---- 6 files changed, 87 insertions(+), 144 deletions(-) create mode 100644 ANSWERFILE create mode 100644 README.md create mode 100644 alpine_init.sh create mode 100644 chroot_init.sh delete mode 100644 main.sh delete mode 100644 startup.sh diff --git a/ANSWERFILE b/ANSWERFILE new file mode 100644 index 0000000..8d7d400 --- /dev/null +++ b/ANSWERFILE @@ -0,0 +1,17 @@ +KEYMAPOPTS="us us" +HOSTNAMEOPTS="-n cvoges12home-desktop-0" +INTERFACESOPTS="auto lo +iface lo inet loopback + +auto eth0 +iface eth0 inet dhcp + hostname cvoges12home-desktop-0 + gateway eth0 +" +DNSOPTS="-n 9.9.9.9" +TIMEZONEOPTS="-z UTC" +PROXYOPTS="none" +APKREPOSOPTS="-f" +SSHDOPTS="-c openssh" +NTPOPTS="-c chrony" +DISKOPTS="none" diff --git a/README.md b/README.md new file mode 100644 index 0000000..c3b05e3 --- /dev/null +++ b/README.md @@ -0,0 +1,10 @@ +# Alpine Chroot + +To create a base alpine chroot on any alpine system, run: + +```sh +chmod +x *.sh +./alpine_init.sh +``` + +Assuming your current working directory is the directory of the cloned repository. diff --git a/alpine_init.sh b/alpine_init.sh new file mode 100644 index 0000000..d6f7cd8 --- /dev/null +++ b/alpine_init.sh @@ -0,0 +1,42 @@ +setup-alpine -f ANSWERFILE + +# setting fastest edge repos in repo list +grep "edge" /etc/apk/repositories | sed "s/^#//" > repositories +mv repositories /etc/apk/repositories + +# setting the mirror +apk add curl +curl -LO http://nl.alpinelinux.org/alpine/MIRRORS.txt +mirror=`grep $(head -n 1 /etc/apk/repositories) | sed -e "s/.*\/\///" | sed -e "s/\//\ /" | awk '{print $1}') MIRRORS.txt` +rm MIRRORS.txt + +# setting the chroot dir +mkdir -p /mnt/chroot +chroot_dir="/mnt/chroot" + +# setting the arch (change if needed) +arch=$(uname -m) + + +# set up apk +version="edge" +curl -LO ${mirror}/latest-stable/main/${arch}/apk-tools-static-${version}.apk +tar -xzf apk-tools-static-*.apk + +# install the alpine base installation onto the chroot +./sbin/apk.static -X ${mirror}/latest-stable/main -U --allow-untrusted -p ${chroot_dir} --initdb add alpine-base + +# seting up the chroot +mount -o bind /dev ${chroot_dir}/dev +mount -t proc none ${chroot_dir}/proc +mount -o bind /sys ${chroot_dir}/sys + +# set up name resolution +cp -L /etc/resolv.conf ${chroot_dir}/etc/ + +# prepare the APK repositories +branch=$version # change if you want a specific version +mkdir -p ${chroot_dir}/etc/apk +echo "${mirror}/${branch}/main" > ${chroot_dir}/etc/apk/repositories + +chroot ${chroot_dir} chroot_init.sh diff --git a/chroot_init.sh b/chroot_init.sh new file mode 100644 index 0000000..948428f --- /dev/null +++ b/chroot_init.sh @@ -0,0 +1,18 @@ +# preparing init services +rc-update add devfs sysinit +rc-update add dmesg sysinit +rc-update add mdev sysinit + +rc-update add hwclock boot +rc-update add modules boot +rc-update add sysctl boot +rc-update add hostname boot +rc-update add bootmisc boot +rc-update add syslog boot + +rc-update add mount-ro shutdown +rc-update add killprocs shutdown +rc-update add savecache shutdown + +# login shell +sh -l diff --git a/main.sh b/main.sh deleted file mode 100644 index 22e8019..0000000 --- a/main.sh +++ /dev/null @@ -1,135 +0,0 @@ -#!/usr/bin/env ash - -format_disk(){ - echo "===FORMATTING DISK===" - apk add parted e2fsprogs - - ram="8" # in whole number GiB (round up) - table="EFI-GPT" # EFI-GPT or MBR or BIOS-GPT - - [ "$table" == "MBR" ] && \ - parted -s /dev/sda \ - mklabel msdos \ - mkpart primary linux-swap 2MiB ${ram}GiB \ - mkpart primary ext4 ${ram}GiB 100% \ - set 2 boot on \ - && mkswap -L SWAP /dev/sda1 \ - && swapon /dev/sda1 \ - && mkfs.ext4 -n ROOT /dev/sda2 - - [ "$table" == "EFI-GPT" ] && \ - parted -s /dev/sda \ - mklabel gpt \ - mkpart primary fat32 1MiB +260MiB \ - mkpart primary linux-swap 260MiB +${ram}GiB \ - mkpart primary ext4 ${ram}GiB 100% \ - set 1 esp on \ - set 3 boot on \ - && mkdosfs -n EFI /dev/sda1 \ - && mkswap -L SWAP /dev/sda2 \ - && swapon /dev/sda2 \ - && mkfs.ext4 -n ROOT /dev/sda3 - - [ "$table" == "BIOS-GPT" ] && \ - parted -s /dev/sda \ - mklabel gpt \ - mkpart primary fat32 1MiB 2MiB \ - mkpart primary linux-swap 100MiB ${ram}GiB \ - mkpart primary ext4 ${ram}GiB 100% \ - set 1 bios_grub on \ - set 3 boot on \ - && mkdosfs -n EFI /dev/sda1 \ - && mkswap -L SWAP /dev/sda2 \ - && swapon /dev/sda2 \ - && mkfs.ext4 -n ROOT /dev/sda3 - - echo -e "\n\n" -} - -chroot_dir="" -arch="" -mirror="" -branch="latest-stable" -version="" - -set_chroot_dir(){ - echo "===CHROOT DIRECTORY===" - mkdir -p /mnt/chroot - chroot_dir="/mnt/chroot" -} - -set_arch(){ - arch=`uname -m` -} - -set_mirror(){ - echo "===SETTING MIRROR===" - data="" - for s in $(wget -qO - \ - http://rsync.alpinelinux.org/alpine/MIRRORS.txt) - do - t=$(time -f "%E" wget -q $s/MIRRORS.txt -T 2 -O /dev/null 2>&1) - echo "$s was $t" - data="$data$t $s\n" - done - - mirror=`echo -e $data \ - | sort \ - | grep "http" \ - | head -n 1 \ - | awk '{print $3}'` - echo "${mirror}/${branch}/main" >> /etc/apk/repositories - apk upgrade && apk upgrade - echo "==RESULTS==" - echo -e "${mirror}\n\n" -} - -set_version(){ - version=`wget -O - -o /dev/null \ - ${mirror}/${branch}/main/${arch}/ \ - | grep "apk-tools-static" \ - | sed -e 's/.*apk-tools-static-//' \ - | sed -e 's/\.apk.*//'` -} - -get_alpine(){ - wget \ - ${mirror}/${branch}/main/${arch}\ - /apk-tools-static-${version}.apk - tar -xzf apk-tools-static-*.apk - ./sbin/apk.static -X ${mirror}/${branch}/main -U \ - --allow-untrusted --root ${chroot_dir} --initdb add alpine-base -} - -mk_chroot(){ - # dev mounts - mount /dev/ ${chroot_dir}/dev/ --bind - mount -o remount,ro,bind ${chroot_dir}/dev - - # proc and sysfs - mount -t proc none ${chroot_dir}/proc - mount -o bind /sys ${chroot_dir}/sys - - # dns - cp -L /etc/resolv.conf ${chroot_dir}/etc/ - mkdir -p ${chroot_dir}/root - - # apk sources - mkdir -p ${chroot_dir}/etc/apk - echo "${mirror}/${branch}/main" > \ - ${chroot_dir}/etc/apk/repositories -} - -set_mirror && \ -# fix the start and end -format_disk && \ -set_chroot_dir #&& \ -#set_arch && \ -#set_version && \ -#get_alpine && \ -#mk_chroot - -#cat << EOF | chroot ${chroot_dir} ash -l -#mkdir boop -#echo "did it work?" -#EOF diff --git a/startup.sh b/startup.sh deleted file mode 100644 index 25aeb4d..0000000 --- a/startup.sh +++ /dev/null @@ -1,9 +0,0 @@ -apk add wireless-tools wpa_supplicant openssh -ip link set wlan0 up -iwconfig wlan0 essid "TheFoundry" -wpa_passphrase "TheFoundry" "somethingclever" > /etc/wpa_supplicant/wpa_supplicant.conf -wpa_supplicant -B -i wlan0 -c /etc/wpa_supplicant/wpa_supplicant.conf -udhcpc -i wlan0 -# change /etc/ssh/sshd_config to have "PermitRootLogin yes" -passwd #t -rc-service sshd restart