2
0
mirror of https://github.com/xcat2/xcat-dep.git synced 2026-09-02 15:36:04 +00:00
Files
2026-08-24 23:25:15 -03:00

61 lines
1.6 KiB
Bash
Executable File

#!/bin/sh
genesis_is_host_root() {
[ -f /proc/cmdline ] || return 1
host_root=$(stat -c '%i %d' / 2>/dev/null) || return 1
init_root=$(stat -c '%i %d' /proc/1/root/. 2>/dev/null) || return 1
[ "$host_root" = "$init_root" ]
}
genesis_mknb_exists() {
[ -x /opt/xcat/sbin/mknb ]
}
genesis_is_service_node() {
if command -v rpm >/dev/null 2>&1 \
&& rpm -q xCATsn >/dev/null 2>&1; then
return 0
fi
command -v dpkg-query >/dev/null 2>&1 || return 1
dpkg-query -W -f='${Status}' xcatsn 2>/dev/null \
| grep -q '^install ok installed$'
}
genesis_uses_shared_tftp() {
[ -x /opt/xcat/sbin/tabdump ] || return 1
sharedtftp=$(
/opt/xcat/sbin/tabdump site 2>/dev/null \
| awk -F '"' '$2 == "sharedtftp" { print $4; exit }'
)
[ "$sharedtftp" = 1 ]
}
genesis_run_mknb() {
# shellcheck disable=SC1091
[ ! -r /etc/profile.d/xcat.sh ] || . /etc/profile.d/xcat.sh
/opt/xcat/sbin/mknb "$1"
}
genesis_activation_main() {
architecture=$1
case "$architecture" in
x86|x86_64|ppc64|ppc64le|armv7hf|aarch64|riscv64) ;;
*)
echo "Invalid Genesis architecture: $architecture" >&2
return 0
;;
esac
genesis_is_host_root || return 0
genesis_mknb_exists || return 0
if genesis_is_service_node && genesis_uses_shared_tftp; then
return 0
fi
if ! genesis_run_mknb "$architecture"; then
echo "WARNING: mknb $architecture failed; rerun it after xcatd is available." >&2
fi
return 0
}
genesis_activation_main "$@"