From 2702e09259bd66b85c6d3a4c0753ed1120d714df Mon Sep 17 00:00:00 2001 From: Andrew Cady Date: Mon, 9 Jul 2018 17:46:51 -0400 Subject: get build-rootfs.sh working adequately to build some truly useful images --- build-rootfs.sh | 99 ++++++++++++++++++++++++++++++++++++++++++++------------- 1 file changed, 77 insertions(+), 22 deletions(-) (limited to 'build-rootfs.sh') diff --git a/build-rootfs.sh b/build-rootfs.sh index 63eb4c9..76daf66 100755 --- a/build-rootfs.sh +++ b/build-rootfs.sh @@ -1,6 +1,7 @@ -#!/bin/sh -e +#!/bin/sh +set -e release=stretch -img_name=t3 +img_name=2018-06-27 img_file=debootstrap/${release}-minbase-amd64.${img_name}.btrfs die() { printf '%s\n' "$*" >&2; exit 1; } @@ -19,13 +20,17 @@ defrag() $img_sh btrfs fi def -rc . } +wordlines() { printf '%s\n' "$@"; } + xorg_packages() { - wordlines xorg libxss1 - + wordlines xorg libxss1 xserver-xorg-input-all xserver-xorg-input-wacom } -wordlines() { printf '%s\n' "$@"; } +necessary_packages() +{ + wordlines systemd-sysv +} useful_packages() { @@ -68,18 +73,26 @@ find_prog() want_prog=$1 prog=$(which "$want_prog") && return if [ "$SUDO_USER" -a "$(id -u)" = 0 ]; then - prog=$(sh -c 'su - "$SUDO_USER" -c "which xmonad"') + prog=$(sh -c 'su - "$SUDO_USER" -c "which \"'"${want_prog}"'\""') else false fi } -install_program_from_path() +install_program_from_path1() { find_prog "$1" || die "program not found: $1" $img_sh cp -L "$prog" ./usr/local/bin/"$1" } +install_program_from_path() +{ + local f + for f in "$@"; do + install_program_from_path1 "$f" || die "could not install package '$f'" + done +} + install_xmonad() { install_program_from_path xmonad @@ -92,19 +105,17 @@ kernel_packages() wordlines busybox cpio firmware-linux-free \ initramfs-tools initramfs-tools-core irqbalance \ klibc-utils kmod libklibc libnuma1 linux-base \ - linux-image-4.9.0-6-amd64 linux-image-amd64 \ - systemd-sysv + linux-image-4.9.0-6-amd64 linux-image-amd64 } install_apt_cache() { - $img_sh rsync -RaP /var/cache/apt --exclude archives ./ + $img_sh rsync -RaP /var/lib/apt/lists --exclude partial ./ } install_kiki() { - install_program_from_path cokiki - install_program_from_path kiki + install_program_from_path cokiki kiki } install_samizdat() @@ -193,21 +204,30 @@ install_config_dat() all_packages() { (kernel_packages - network_packages - useful_packages - filesystem_tool_packages - boot_tool_packages - samizdat_dep_packages - xorg_packages) | sort -u + necessary_packages + network_packages + useful_packages + filesystem_tool_packages + boot_tool_packages + samizdat_dep_packages + xorg_packages) | sort -u +} + +choose_hostname() +{ + true } main() { - ./debootstrap.sh init $release - ./debootstrap.sh new $release $img_name + ./debootstrap.sh init $release + ./debootstrap.sh new $release $img_name + ./debootstrap.sh with_img $release $img_name truncate -s 5G + # ./debootstrap.sh with_img $release $img_name btrfstune -S0 -f || true + ./debootstrap.sh sh $release $img_name btrfs filesystem resize max . install_config_dat - + install_packages $(necessary_packages) install_packages $(kernel_packages) install_packages $(network_packages) install_packages $(useful_packages) @@ -215,13 +235,48 @@ main() install_packages $(boot_tool_packages) install_packages $(samizdat_dep_packages) install_packages $(xorg_packages) + install_packages firefox-esr linphone alsa-utils install_xmonad - # install_apt_cache + # (Note: libglib2.0-bin is needed for mypaint to work correctly) + install_packages mypaint libglib2.0-bin emacs25 strongswan-pki strongswan-swanctl strongswan-nm + install_packages build-essential vim less xbindkeys w3m sudo dmenu psmisc rsync + install_apt_cache + install_samizdat install_kiki + install_program_from_path google + install_program_from_path stack + install_program_from_path dhtd dht + + add_user_account u + add_git_clone ../src/dotfiles home/u/src/dotfiles + add_git_clone ./ home/u/src/samizdat + add_git_clone ../src/bittorrent home/u/src/presence make_bootable + echo done. >&2 +} + +add_user_account() +{ + local uname="$1" + $chroot useradd "$uname" -G sudo -m -p '' -s /bin/bash +} + +add_git_clone() +{ + local src dst="$2" + src=$(realpath -e "$1") || die "add_git_clone: path does not exist: $1" + $img_sh git clone "$src" ./"$dst" + + # todo: set up to properly push and pull via VPN + + # From "man git clone": + # + # This default configuration is achieved by creating references to the + # remote branch heads under refs/remotes/origin and by initializing + # remote.origin.url and remote.origin.fetch configuration variables. } if [ "${0##*/}" = build-rootfs.sh ]; then -- cgit v1.2.3