created install script

This commit is contained in:
ghe0 2024-11-07 00:58:20 +02:00
parent 3dd7e915e1
commit ab496871ad
Signed by: ghe0
GPG Key ID: 451028EE56A0FBB4
5 changed files with 58 additions and 6 deletions

1
.gitignore vendored

@ -1,2 +1,3 @@
dtrfs.tar
build
tmp

@ -8,13 +8,18 @@ cd build
echo_blue "Starting installation at $ROOT."
echo_blue "Adding kernel binaries..."
install_busybox
install_binary $(which modprobe)
install_binary $(which switch_root)
echo_blue "Adding scripts..."
install_init_script
install_module btrfs
echo_blue "Adding kernel modules..."
install_module "$(df -T / | awk '{ print $2 }' | tail -1)"
install_module msr
install_module sev-guest
install_module dm_crypt
cp /lib/modules/${KERNEL}/modules.{order,builtin,builtin.modinfo} "${ROOT}/lib/modules/${KERNEL}/"
depmod -b "$ROOT" "$KERNEL"
echo_blue "Creating archive..."
create_archive

@ -22,7 +22,7 @@ install_dep() {
[[ -f "${ROOT}${lib}" ]] || {
mkdir -p $(dirname "${ROOT}${lib}")
echo_blue "Adding dependency to root: $lib"
echo_blue "Adding dependency: $lib"
cp "$lib" "${ROOT}${lib}"
}
}
@ -37,7 +37,7 @@ install_binary() {
exit 1
}
echo_blue "Adding binary to root: $binary"
echo_blue "Adding binary: $binary"
cp "$binary" "${ROOT}/usr/bin/"
ldd_deps="$(ldd "$binary")"
@ -69,15 +69,22 @@ install_init_script() {
}
create_archive() {
echo_blue "Creating archive..."
local archive="detee-$(hostnamectl hostname)-${KERNEL}.cpio.gz"
echo_blue "Creating archive $archive"
echo $archive > .archive_name
find . | cpio -o -H newc | gzip > detee-$(hostnamectl hostname)-${KERNEL}.cpio.gz
}
install_module() {
local module="$1" depends='' dep='' filename=''
filename="$( modinfo -k $KERNEL $module | grep '^filename:' | awk '{ print $2 }' )"
[[ "$filename" == "(builtin)" ]] && {
echo_yellow "Module $module is builtin. Installation not needed."
return 0
}
install_dep "$filename"
echo "insmod $filename" >> "${ROOT}/load_modules.sh"
depends="$(modinfo -k $KERNEL $module |
grep '^depends:' | awk '{ print $2 }' | sed 's/,/\n/g')"

@ -9,7 +9,7 @@ echo_red() {
}
load_modules() {
modprobe btrfs msr sev-guest || exit 1
cat /load_modules.sh | sort -u | bash
}
create_mounts() {

39
install.sh Executable file

@ -0,0 +1,39 @@
#!/bin/bash
cd -- "$( dirname -- "${BASH_SOURCE[0]}" )"
dir="/tmp/dtrfs"
if [ -z $1 ]; then
echo "You must specify the server as the first parameter."
echo "Example: ./install.sh 10.10.10.73 root 22"
echo "The 2nd (ssh user) and 3rd (ssh port) arguments are optional."
exit 1
fi
server="$1"
if ! [ -z $2 ]; then
server="${2}@${server}"
fi
if [ -z $3 ]; then
ssh="ssh"
scp="scp"
else
ssh="ssh -p $3"
scp="scp -P $3"
fi
echo Starting installation...
tar cf dtrfs.tar *.sh
$ssh $server rm -rf ${dir}
$ssh $server mkdir -p ${dir}
$scp dtrfs.tar ${server}:${dir}
$ssh $server tar -xf ${dir}/dtrfs.tar -C ${dir}
$ssh $server ${dir}/create.sh
set -e
archive=$($ssh $server cat ${dir}/build/.archive_name)
mkdir -p tmp
$scp ${server}:${dir}/build/${archive} tmp/
echo initrd downloaded to: $(pwd)/tmp/${archive}