first scripts
This commit is contained in:
parent
db50f44221
commit
5ad4393d9b
12
create.sh
Executable file
12
create.sh
Executable file
@ -0,0 +1,12 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
cd -- "$( dirname -- "${BASH_SOURCE[0]}" )"
|
||||||
|
source creator_exports.sh
|
||||||
|
source creator_functions.sh
|
||||||
|
rm -rf "$ROOT" 2>/dev/null
|
||||||
|
mkdir -p build "$ROOT" "${ROOT}/usr/bin/"
|
||||||
|
cd build
|
||||||
|
|
||||||
|
echo_blue "Starting installation at $ROOT."
|
||||||
|
|
||||||
|
install_busybox || exit 1
|
||||||
|
create_archive
|
6
creator_exports.sh
Executable file
6
creator_exports.sh
Executable file
@ -0,0 +1,6 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
script_dir=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )
|
||||||
|
|
||||||
|
# root of the initrd, that will be used to create the cpio archive
|
||||||
|
export ROOT="${script_dir}/build/initrd_root"
|
||||||
|
export BUSYBOX_PATH="/usr/lib/initcpio/busybox"
|
63
creator_functions.sh
Normal file
63
creator_functions.sh
Normal file
@ -0,0 +1,63 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
echo_blue() {
|
||||||
|
echo -e "\033[34m$1\033[0m"
|
||||||
|
}
|
||||||
|
|
||||||
|
echo_red() {
|
||||||
|
echo -e "\033[0;31m$1\033[0m"
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
# Installs a library. Expects absolute path.
|
||||||
|
install_lib() {
|
||||||
|
local lib="$1"
|
||||||
|
[[ -f "$lib" ]] || {
|
||||||
|
echo "Did not find library at path: $lib"
|
||||||
|
return 1
|
||||||
|
}
|
||||||
|
|
||||||
|
mkdir -p $(dirname "${ROOT}${lib}")
|
||||||
|
echo_blue "Adding library to root: $lib"
|
||||||
|
cp "$lib" "${ROOT}${lib}"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Expects to receive the absolute path as the full argument.
|
||||||
|
# Use `which binary_name` if it's in your path.
|
||||||
|
# Installs to /usr/bin
|
||||||
|
install_binary() {
|
||||||
|
local binary="$1" lib=''
|
||||||
|
[[ -f "$binary" ]] || {
|
||||||
|
echo_red "Did not find binary at path: $binary"
|
||||||
|
return 1
|
||||||
|
}
|
||||||
|
|
||||||
|
echo_blue "Adding binary to root: $binary"
|
||||||
|
cp "$binary" "${ROOT}/usr/bin/"
|
||||||
|
|
||||||
|
ldd_deps="$(ldd "$binary")"
|
||||||
|
if [[ $ldd_deps == *"not a dynamic executable"* ]]; then
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
while read -r lib; do
|
||||||
|
install_lib "$lib"
|
||||||
|
done <<< "$( echo "$ldd_deps" | grep -F ' => ' | awk '{ print $3 }' )"
|
||||||
|
}
|
||||||
|
|
||||||
|
install_busybox() {
|
||||||
|
echo_blue "Installing busybox..."
|
||||||
|
[[ -f "$BUSYBOX_PATH" ]] || {
|
||||||
|
echo_red "Did not find busybox at $BUSYBOX_PATH"
|
||||||
|
echo_red "Please compile or download busybox. You can also change the path."
|
||||||
|
return 1
|
||||||
|
}
|
||||||
|
install_binary "$BUSYBOX_PATH"
|
||||||
|
for applet in $(/usr/lib/initcpio/busybox --list); do
|
||||||
|
ln -s busybox "${ROOT}/usr/bin/$applet"
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
create_archive() {
|
||||||
|
find . | cpio -o -H newc | gzip > detee-$(hostnamectl hostname)-$(uname -r).cpio.gz
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user