usage() {
cat <<EOF
-Usage: ${0##*/} [OPTION]
+Usage: ${0##*/} [OPTION] [HOST]
If grub var set, act like pxe rom and pxe-kexec to faiserver
-f|--force do kexec if we can reach faiserver
try-kexec() {
deadline=$(( `date +%s` + NETWORK_TIMOUT_SECS ))
- while ! timeout -s 9 3 nc -zu faiserver 69; do
+ while ! timeout -s 9 3 nc -zu $faiserver 69; do
if (( `date +%s` > deadline )); then
echo "fai-check: hit $NETWORK_TIMOUT_SECS s tftp server timeout"
return 0
fi
sleep 1
done
- m pxe-kexec -n --ignore-whitelist -l fai-generated faiserver ||:
+ m pxe-kexec -n --ignore-whitelist -l fai-generated $faiserver ||:
}
+force=false
case $1 in
+ -h|--help)
+ usage
+ ;;
-f|--force)
- try-kexec
- exit
+ force=true
+ shift
;;
esac
+faiserver=${1:-faiserver}
+
+
+if $force; then
+ try-kexec
+ exit
+fi
first=true
for dev in $(btrfs fi show / | sed -rn 's#^\s*devid\s.*\s([^0-9 ]+)\S+$#\1#p' \
|sort); do
+ found=false
# Decide which is my grub_ext partition. see partition.DEFAULT file
- # for details
- if [[ $(blockdev --getsize64 ${dev}4) == 8388608 ]]; then
- # Old partition scheme
- grub_extn=${dev}4
- elif [[ $(blockdev --getsize64 ${dev}5) == 8388608 ]]; then
- # Old partition scheme
- grub_extn=${dev}5
- else
- grub_extn=${dev}7
+ # for details. currently it is 4
+ for (( i=4; i<=7; i++ )); do
+ if [[ $(blockdev --getsize64 ${dev}$i) == 8388608 ]]; then
+ grub_extn=${dev}$i
+ break
+ fi
+ done
+ if ! $found; then
+ echo "$0: error: failed to find grub_ext partition."
+ exit 1
fi
mount $grub_extn /mnt
if $first; then