277 lines
10 KiB
Bash
Executable File
277 lines
10 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
# Once you have run this script you should be able to
|
|
#
|
|
# drive names must be changed in blends/devuan-desktop-metal/config
|
|
# blends/devuan-desktop-metal/daedalus/config has the installed package list
|
|
#
|
|
# then:
|
|
# $ cd /var/tmp/live-sdk
|
|
# $ tmuxp load .
|
|
#
|
|
# This will give you two frames, one in the live-sdk env and one not.
|
|
# Use ^B arrow to switch between them,
|
|
#
|
|
# To install run:
|
|
# $ build_metal_dist
|
|
|
|
# This script is intended to be run of an sdcard live image NOT a running system.
|
|
#
|
|
# It copies /var/tmp/live-sdk from 192.168.1.102 if the ssh key exchange does not
|
|
# fix password requests the default:default can be used.
|
|
#
|
|
# It takes the blends/devuan-desktop-live directory as a template and copies the
|
|
# configuration files in live-metal to the newly named blend directory.
|
|
#
|
|
# The sources.list will be updated to a snapshot.debian.org date that matches
|
|
# the live sdcard release (bookworm) if you change the live sdcard image you
|
|
# must change the date of the snapshot.
|
|
|
|
# check for the availability of color terminfoi, fix it if it's missing.
|
|
if [[ ! -f /lib/terminfo/t/tmux-256color ]]; then
|
|
wget -c https://raw.githubusercontent.com/jez/dotfiles/master/tmux-256color.terminfo
|
|
tic ./tmux-256color.terminfo
|
|
fi
|
|
|
|
# Fix "cannot allocate memory"
|
|
echo 1 >/proc/sys/kernel/sysrq
|
|
echo f >/proc/sysrq-trigger
|
|
echo 0 >/proc/sys/kernel/sysrq
|
|
|
|
# Make a swap device that will allow apt to update and install.
|
|
dd if=/dev/zero bs=1M of=/swapfile count=128
|
|
chmod 0600 /swapfile
|
|
mkfs.ext2 /swapfile
|
|
mount -o loop /swapfile /mnt
|
|
dd if=/dev/zero bs=1M of=/mnt/swap
|
|
mkswap /mnt/swap
|
|
chmod 0600 /mnt/swap
|
|
swapon /mnt/swap
|
|
|
|
rm /etc/apt/sources.list.d/mkusb-ppa.list
|
|
rm /etc/apt/sources.list.d/yarn.list
|
|
rm /etc/apt/sources.list.d/docker.list
|
|
rm /etc/apt/sources.list.d/brave-browser.list
|
|
rm /etc/apt/sources.list.d/nodesource.list
|
|
rm /etc/apt/sources.list.d/matrix-riot-im.list
|
|
|
|
# the snapshot.debian.org sources.list for the sdcard image.
|
|
# rm /etc/apt/sources.list
|
|
|
|
# To reduce the number of packages installed with an update we put a fixed date
|
|
# sources.list from snapshot.debian.org that matches the release of the live sdcard.
|
|
|
|
# jessie caused a name collision with debian, capitalized ascii is already used
|
|
# for something and just an anoying choice, they calmed down after that
|
|
# (or someone left).
|
|
|
|
# corresponds to Debian 7 Wheezy 20170617T034212Z
|
|
# Devuan 1.0 Jessie corresponds to Debian 8 Jessie 20180623T023722Z
|
|
# Devuan 2.0 ASCII corresponds to Debian 9 Stretch 20200717T204551Z
|
|
# Devuan 3.0 Beowulf corresponds to Debian 10.4 Buster 20230611T103552Z
|
|
# Devuan 4.0 Chimaera corresponds to Debian 11.1 Bullseye 20230611T103552Z
|
|
# Devuan 5.0 Daedalus corresponds to Debian 12 Bookworm 20231007T150030Z
|
|
# Devuan 6.0 Excalibur corresponds to Debian 13 Trixie testing
|
|
# Devuan 7.0 Freia corresponds to Debian 14 Forky
|
|
# Devuan Ceres corresponds to Debian Sid unstable
|
|
|
|
RELEASE_NAME=bookworm
|
|
SOURCES_DATE=20221017T031443Z
|
|
SNAPSHOT_SERVER="snapshot.debian.org"
|
|
# SNAPSHOT_SERVER="snapshot.notset.fr"
|
|
cat <<-EOF | sudo tee /etc/apt/sources.list.d/snapshot.sources.list
|
|
deb https://"${SNAPSHOT_SERVER}"/archive/debian/"${SOURCES_DATE}"/ "${RELEASE_NAME}" main contrib non-free non-free-firmware
|
|
deb-src https://"${SNAPSHOT_SERVER}"/archive/debian/"${SOURCES_DATE}"/ "${RELEASE_NAME}" main contrib non-free non-free-firmware
|
|
deb https://"${SNAPSHOT_SERVER}"/archive/debian-security/"${SOURCES_DATE}"/ "${RELEASE_NAME}"-security main contrib non-free non-free-firmware
|
|
deb-src https://"${SNAPSHOT_SERVER}"/archive/debian-security/"${SOURCES_DATE}"/ "${RELEASE_NAME}"-security main contrib non-free non-free-firmware
|
|
EOF
|
|
# cp ./snapshot.sources.list /etc/apt/sources.list.d/snapshot.sources.list
|
|
|
|
# Update apt even if upstream have shifted to a new release.
|
|
echo 'Acquire::Check-Valid-Until "false";' | sudo tee /etc/apt/apt.conf.d/99validuntil
|
|
echo 'Acquire::AllowReleaseInfoChange::Suite "true";' | sudo tee /etc/apt/apt.conf.d/99releaseinfochange
|
|
echo 'APT::Get::AllowUnauthenticated "true";' | sudo tee -a /etc/apt/apt.conf.d/99unauth
|
|
echo 'quiet::ReleaseInfoChange::Version "true";' | sudo tee -a /etc/apt/apt.conf.d/99releaseinfochange
|
|
|
|
# When a suite gets advanced from testing to stable the release info changes,
|
|
# allow to update without error.
|
|
apt-get update --allow-releaseinfo-change -y
|
|
|
|
# Keep the existing kernel and headers to prevent multiple builds of the zfs
|
|
# module for additional kernels.
|
|
KERNEL_VERSION="$(uname -r)"
|
|
apt-mark hold \
|
|
linux-image-"${KERNEL_VERSION}" \
|
|
linux-headers-"${KERNEL_VERSION}" \
|
|
linux-image-amd64 \
|
|
linux-headers-amd64
|
|
apt-get install linux-headers-"${KERNEL_VERSION}" zfs-dkms
|
|
|
|
modprobe zfs
|
|
|
|
# Remove libreoffice, updating an installed libreoffice is time consuming and
|
|
# uses a lot of disk space on an sdcard image.
|
|
apt-get remove -y --purge \
|
|
libreoffice \
|
|
libreoffice-common \
|
|
libreoffice-calc \
|
|
libreoffice-core \
|
|
libreoffice-writer \
|
|
libreoffice-impress \
|
|
libreoffice-draw \
|
|
libreoffice-math \
|
|
libreoffice-base \
|
|
libreoffice-gtk3 \
|
|
liblibreoffice-java \
|
|
libreoffice-sdbc-hsqldb \
|
|
libreoffice-base-drivers
|
|
apt-get -y autoremove
|
|
apt-get install -y lsof jc jq gdisk hdparm debootstrap dosfstools rsync \
|
|
openssh-server sshpass eudev # desktop-base
|
|
|
|
apt-get clean
|
|
|
|
# install server public key for ssh from ~/.ssh/id_rsa.pub
|
|
mkdir -p ~/.ssh && cat ./sistarte-id_rsa.pub >>"${HOME}"/.ssh/authorized_keys
|
|
|
|
#
|
|
# Exchange ssh keys
|
|
AUTOMATE_IP="192.168.1.102"
|
|
LOCAL_USER_EMAIL="devuan@${AUTOMATE_IP}"
|
|
ssh-keygen -t rsa -b 4096 -N '' -C "${LOCAL_USER_EMAIL}" -f "${HOME}"/.ssh/id_rsa
|
|
sshpass -f sistarte_password.txt ssh-copy-id default@${AUTOMATE_IP}
|
|
|
|
#git clone https://git.devuan.org/devuan-sdk/live-sdk ../live-sdk
|
|
#cd ../livecd || exit; git submodule update --init --recursive --checkout
|
|
alias ssh="ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null"
|
|
|
|
# rsync -ratlz \
|
|
# --rsh="/usr/bin/sshpass -p password ssh -l username" \
|
|
# src_path \
|
|
# dest_path
|
|
|
|
rsync -avz \
|
|
--exclude='.git/*' \
|
|
--exclude='*gz' \
|
|
--exclude='*deb' \
|
|
-e ssh default@"${AUTOMATE_IP}":/var/tmp/automate \
|
|
../
|
|
|
|
# git clone ssh://git@git2.ring-zero.co.uk/scripts/automate.git ../automate
|
|
|
|
ln -sf ../automate /var/tmp/automate
|
|
|
|
bash ../automate/010_generate-ssh.sh "${HOME}"
|
|
bash ../automate/001_ssh.sh
|
|
|
|
# SDCARD_ID="usb-Mass_Storage_Device_121220160204-0:0-part1"
|
|
# mkdir -p ../live-sdk
|
|
# if ! mountpoint -q ../live-sdk; then
|
|
# fsck.ext4 -f /dev/disk/by-id/${SDCARD_ID}
|
|
# mount /dev/disk/by-id/${SDCARD_ID} ../live-sdk
|
|
# else
|
|
# echo "mount point already in use, skipping mount operation."
|
|
# fi
|
|
|
|
rsync -avz \
|
|
--exclude='.git' \
|
|
--exclude='tmp/*' \
|
|
--exclude='dist/*' \
|
|
--exclude='git/*' \
|
|
-e ssh default@${AUTOMATE_IP}:/var/tmp/live-sdk \
|
|
../live-sdk
|
|
|
|
# git clone https://git.devuan.org/devuan-sdk/live-sdk ../live-sdk
|
|
# git clone https://git2.ring-zero.co.uk/devuan-sdk/live-sdk.git ../live-sdk
|
|
|
|
mkdir -p ../live-sdk/log
|
|
mkdir -p ../live-sdk/tmp
|
|
|
|
# Uncomment to speed up subsequent builds
|
|
# rsync -avz \
|
|
# -e ssh default@${AUTOMATE_IP}:/var/tmp/"bootstrap-devuan-amd64-stage*.cpio.gz" \
|
|
# /var/tmp/live-sdk/tmp/
|
|
|
|
# Install
|
|
# metal install chimaera (bare metal install to zfs following openzfs zfs rootfs)
|
|
RELEASE_NAME="daedalus"
|
|
BLEND_NAME=devuan-desktop-metal
|
|
TEMPLATE=devuan-desktop-live
|
|
sed -i \
|
|
"/blend_map=.*/ s/.*/&\n\t\t\"${BLEND_NAME}\" \"\$R\/blends\/${BLEND_NAME}\/${BLEND_NAME}.blend\"/" \
|
|
../live-sdk/sdk
|
|
|
|
mkdir -p ../live-sdk/blends/${BLEND_NAME}/${RELEASE_NAME}
|
|
cp -a ../live-sdk/blends/${TEMPLATE} ../live-sdk/blends/${BLEND_NAME}
|
|
cp blend_config ../live-sdk/blends/${BLEND_NAME}/config
|
|
cp blend_${RELEASE_NAME}_config ../live-sdk/blends/${BLEND_NAME}/${RELEASE_NAME}/config
|
|
cp blend_sysconf ../live-sdk/blends/${BLEND_NAME}/sysconf
|
|
cp blend_sysconf.md ../live-sdk/blends/${BLEND_NAME}/sysconf.md
|
|
cp blend_helpers ../live-sdk/blends/${BLEND_NAME}/helpers
|
|
cp blend_helpers.md ../live-sdk/blends/${BLEND_NAME}/helpers.md
|
|
cp devuan-desktop-metal.blend ../live-sdk/blends/${BLEND_NAME}/
|
|
cp devuan-desktop-metal.md ../live-sdk/blends/${BLEND_NAME}/
|
|
cp console_livesdk.sh ../live-sdk/
|
|
cp dot_tmuxp_metal.yaml ../live-sdk/.tmuxp.yaml
|
|
|
|
# docker image minimal (following debuerreotype methods)
|
|
BLEND_NAME=devuan-minimal-docker
|
|
TEMPLATE=devuan-minimal-live
|
|
sed -i \
|
|
"/blend_map=.*/ s/.*/&\n\t\t\"${BLEND_NAME}\" \"\$R\/blends\/${BLEND_NAME}\/${BLEND_NAME}.blend\"/" \
|
|
../live-sdk/sdk
|
|
|
|
mkdir -p ../live-sdk/blends/${BLEND_NAME}/${RELEASE_NAME}
|
|
cp -a ../live-sdk/blends/${TEMPLATE} ../live-sdk/blends/${BLEND_NAME}
|
|
cp blend_${RELEASE_NAME}-docker_config ../live-sdk/blends/${BLEND_NAME}/${RELEASE_NAME}/config
|
|
cp blend_config-docker ../live-sdk/blends/${BLEND_NAME}/config-docker
|
|
cp blend_sysconf ../live-sdk/blends/${BLEND_NAME}/sysconf
|
|
cp blend_sysconf.md ../live-sdk/blends/${BLEND_NAME}/sysconf.md
|
|
cp blend_helpers-docker ../live-sdk/blends/${BLEND_NAME}/helpers-docker
|
|
cp blend_helpers-docker.md ../live-sdk/blends/${BLEND_NAME}/helpers-docker.md
|
|
cp devuan-minimal-docker.blend ../live-sdk/blends/${BLEND_NAME}/
|
|
cp devuan-minimal-docker.md ../live-sdk/blends/${BLEND_NAME}/
|
|
cp tar-excludes ../live-sdk/blends/${BLEND_NAME}/
|
|
|
|
# ln -sf ${RELEASE_NAME}.config config
|
|
|
|
bash ../automate/010_zram.sh && /etc/init.d/zram start
|
|
bash ../automate/020_tmux.sh "${HOME}"
|
|
bash ../automate/020_zsh_quickstart.sh "${HOME}"
|
|
|
|
sudo -i -u devuan '/usr/share/tmux-plugin-manager/bin/install_plugins'
|
|
sudo -i '/usr/share/tmux-plugin-manager/bin/install_plugins'
|
|
|
|
ps aux >../live-sdk/log/psaux.pre
|
|
lsof >../live-sdk/log/lsof.pre
|
|
|
|
# Fix the innumeration of drives to usbe ata-* rather than wwn-*
|
|
|
|
# could import from blend_config
|
|
# disk_path="/dev/disk/by-id"
|
|
# disk_name="ata-CT1000MX500SSD1_2321E6DBE216"
|
|
# disk2_name="ata-CT1000MX500SSD1_2321E6DBE1D2"
|
|
#
|
|
# raid=mirror
|
|
#
|
|
# available_disks=("${disk_name}")
|
|
# if [[ -v $raid ]]; then
|
|
# available_disks+="${disk2_name}"
|
|
# fi
|
|
|
|
# source blend_config
|
|
# for disk in "${available_disks[@]}"; do
|
|
# TARGET="/dev/disk/by-id/${disk}"
|
|
#
|
|
# UDEV_OUTPUT=$(udevadm info --query=all "${TARGET}" | jc --udevadm -p | jq 'del(.E.ID_MODEL_ENC)')
|
|
# MODEL=$(echo -n "${UDEV_OUTPUT}" | jq -r '.E.ID_MODEL')
|
|
# SERIAL=$(echo -n "${UDEV_OUTPUT}" | jq -r '.E.ID_SERIAL_SHORT')
|
|
# echo "SUBSYSTEM==\"block\", \
|
|
# ATTRS{model}=\"$MODEL\", \
|
|
# ATTRS{serial_short}=\"$SERIAL\", \
|
|
# SYMLINK+=\"disk/by-id/ata-\$attr{serial_short}\"" | \
|
|
# sudo tee /etc/udev/rules.d/99-custom-ata-names.rules
|
|
# done
|
|
|
|
# udevadm control --reload-rules && sudo udevadm trigger
|