mirror of
https://github.com/xcat2/xcat-dep.git
synced 2026-09-02 15:36:04 +00:00
61 lines
1.6 KiB
Bash
Executable File
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 "$@"
|