forever updating

This commit is contained in:
Adrian Amaglio 2023-08-02 11:36:53 +02:00
parent 9bda639aa3
commit 269e2a1720
2 changed files with 52 additions and 16 deletions

View File

@ -8,7 +8,7 @@
# https://github.com/adrianamaglio/driglibash # https://github.com/adrianamaglio/driglibash
declare -A usage declare -A usage
declare -A varia declare -A varia
driglibash_run_retry=true export driglibash_run_retry=true
version="alpha nightly 0.0.1 pre-release unstable" version="alpha nightly 0.0.1 pre-release unstable"
summary="$0 [options]" summary="$0 [options]"
@ -42,6 +42,10 @@ usage[b]="The device where grub will be installed"
varia[b]=boot_device varia[b]=boot_device
boot_device= boot_device=
usage[B]="Boot partition"
varia[B]=boot_part
boot_part=
usage[R]="The device where the system will be installed" usage[R]="The device where the system will be installed"
varia[R]=root_device varia[R]=root_device
root_device= root_device=
@ -62,15 +66,24 @@ usage[i]="Packages to install. space separated"
varia[i]=install varia[i]=install
install= install=
usage[u]="Install grub as UEFI (not working)"
varia[u]=uefi
uefi=false
usage[I]="Interractive mode. Ask questions if needed."
varia[I]=interractive
interractive=false
. driglibash-args . driglibash-args
secret_dir=secrets secret_dir=secrets
secret_dir="$(realpath -m "$secret_dir/$hostname")" secret_dir="$(realpath -m "$secret_dir/$hostname")"
install="$install vim openssh-server git nginx smartmontool" install="$install linux-image-amd64 console-data grub2 locales vim openssh-server git nginx smartmontools tcpdump netcat-openbsd wireguard"
debootstrap_done_marker="$mnt/etc/debootstrap_done" debootstrap_done_marker="$mnt/etc/debootstrap_done"
uefi_mountpoint=/boot/efi
############################################################################### ###############################################################################
# Actual script # Actual script
@ -78,7 +91,7 @@ debootstrap_done_marker="$mnt/etc/debootstrap_done"
chroot_run(){ chroot_run(){
chroot "$mnt" $@ run chroot "$mnt" $@
if [ "$?" -ne 0 ] && [ "$?" != '0' ] ; then if [ "$?" -ne 0 ] && [ "$?" != '0' ] ; then
die "Error, chroot command [$@] exited with code '$?'" die "Error, chroot command [$@] exited with code '$?'"
fi fi
@ -100,6 +113,10 @@ mount_misc(){
#clean "umount -R '$(realpath "$mnt/dev")'" #clean "umount -R '$(realpath "$mnt/dev")'"
run mount --rbind --make-rslave /sys "$mnt/sys" run mount --rbind --make-rslave /sys "$mnt/sys"
#clean "umount -R '$(realpath "$mnt/sys")'" #clean "umount -R '$(realpath "$mnt/sys")'"
if "$uefi" ; then
run mkdir -p "$mnt$uefi_mountpoint"
run mount "$boot_device" "$mnt$uefi_mountpoint"
fi
clean "umount -R '$mnt'" clean "umount -R '$mnt'"
} }
@ -124,7 +141,11 @@ if [ -n "$(df | grep "$root_device")" ] ; then
fi fi
run mkdir -p "$mnt" run mkdir -p "$mnt"
run mount --make-private "$root_device" "$mnt" run mount --make-private "$root_device" "$mnt"
# bug in driglibash-base. If $mnt got spaces it break # bug in driglibash-base. If $mnt got spaces it breaks
if [ -n "$boot_part" ] ; then
run mkdir -p "$mnt/boot"
run mount "$boot_part" "$mnt/boot"
fi
clean "umount -R $mnt" clean "umount -R $mnt"
@ -138,8 +159,13 @@ fi
section "debootstraping" section "debootstraping"
if [ ! -f "$debootstrap_done_marker" ] ; then if [ ! -f "$debootstrap_done_marker" ] ; then
# Debootstrap may fail when the target is an existing system # Debootstrap may fail when the target is an existing system
if [ -n "$(ls -A $mnt)" ]; then if [ -n "$(ls -A $mnt | grep -vi -e 'lost+found' -e boot)" ]; then
die "Root dir '$mnt' is not empty. Wont debootstrap it. Is this installation broken?" yell "Root dir '$mnt' is not empty."
if "$interractive" ; then
read -p 'Press enter to continue anyway'
else
die "Wont debootstrap it. Is this installation broken?"
fi
fi fi
run debootstrap --verbose --arch "$arch" "$release" "$mnt" "$repo" run debootstrap --verbose --arch "$arch" "$release" "$mnt" "$repo"
touch "$debootstrap_done_marker" touch "$debootstrap_done_marker"
@ -150,20 +176,20 @@ fi
mount_misc mount_misc
section "Generating locales"
echo -e "$locale" > "$mnt/etc/locale.gen"
chroot_run locale-gen
section "Installing selected software" section "Installing selected software"
echo "$repos" >> "$mnt/etc/apt/sources.list" echo "$repos" >> "$mnt/etc/apt/sources.list"
chroot "$mnt" <<EOF run chroot "$mnt" <<EOF
export DEBIAN_FRONTEND=noninteractive export DEBIAN_FRONTEND=noninteractive
apt-get update -q -y apt-get update -q -y
apt-get install -q -y linux-image-amd64 console-data grub2 locales vim wireguard-tools wireguard $install apt-get install -q -y $install
EOF EOF
# TODO watershed ? # TODO watershed ?
section "Generating locales"
echo -e "$locale" > "$mnt/etc/locale.gen"
chroot_run locale-gen
section "Configuring new system" section "Configuring new system"
@ -210,7 +236,9 @@ echo 'set bell-style none' >> "$mnt/etc/inputrc"
section "Set up networking" section "Set up networking"
# Disable the unpredictable naming (since we are not on the future host) # Disable the unpredictable naming (since we are not on the future host)
if [ ! -L "$mnt/etc/udev/rules.d/80-net-setup-link.rules" ] ; then
run ln -s /dev/null "$mnt/etc/udev/rules.d/80-net-setup-link.rules" run ln -s /dev/null "$mnt/etc/udev/rules.d/80-net-setup-link.rules"
fi
run cat >> "$mnt/etc/network/interfaces" <<EOF run cat >> "$mnt/etc/network/interfaces" <<EOF
allow-hotplug eth0 allow-hotplug eth0
iface eth0 inet dhcp iface eth0 inet dhcp
@ -248,7 +276,7 @@ PersistentKeepalive = 25
EOF EOF
wireguard_pubkey="$(cat "$mnt/etc/wireguard/jeancloud.conf" | grep -oP '^PrivateKey = \K.*' | wg pubkey)" wireguard_pubkey="$(cat "$mnt/etc/wireguard/jeancloud.conf" | grep -oP '^PrivateKey = \K.*' | wg pubkey)"
run cat >> "$secret_dir/wg_conf_part_$hostname" <<EOF run cat > "$secret_dir/wg_conf_part" <<EOF
[Peer] # $hostname [Peer] # $hostname
PublicKey = $wireguard_pubkey PublicKey = $wireguard_pubkey
AllowedIPs = 10.98.1.$wireguard_number/32 AllowedIPs = 10.98.1.$wireguard_number/32
@ -261,10 +289,14 @@ fi
section "Installing grub" section "Installing grub"
# Disable predictable name (again) # Disable predictable interfaces name since we are not on the target host
run sed -i 's/GRUB_CMDLINE_LINUX=""/GRUB_CMDLINE_LINUX="net.ifnames=0 biosdevname=0"/g' "$mnt/etc/default/grub" run sed -i 's/GRUB_CMDLINE_LINUX=""/GRUB_CMDLINE_LINUX="net.ifnames=0 biosdevname=0"/g' "$mnt/etc/default/grub"
chroot_run update-grub chroot_run update-grub
chroot_run grub-install "$boot_device" if $uefi ; then
chroot_run grub-install --efi-directory="$uefi_mountpoint" --recheck "$boot_device"
else
chroot_run grub-install --recheck "$boot_device"
fi

4
installing/notes Normal file
View File

@ -0,0 +1,4 @@
blatte :
DO NOT REBOOT IT. it sometimes fails…
-i 'firmware-amd-graphics firmware-realtek'