File: drbl-syslinux-efi-pxe-sw

package info (click to toggle)
drbl 2.20.11-7
  • links: PTS, VCS
  • area: main
  • in suites: buster
  • size: 7,560 kB
  • sloc: sh: 60,899; perl: 7,803; xml: 867; makefile: 124
file content (100 lines) | stat: -rwxr-xr-x 3,136 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
#!/bin/bash
# License: GPL 
# Author: Steven Shiau <steven _at_ nchc org tw>
#
DRBL_SCRIPT_PATH="${DRBL_SCRIPT_PATH:-/usr/share/drbl}"
. $DRBL_SCRIPT_PATH/sbin/drbl-conf-functions
. /etc/drbl/drbl-ocs.conf
. $DRBL_SCRIPT_PATH/sbin/ocs-functions

# Load the config in ocs-live.conf. This is specially for Clonezilla live. It will overwrite some settings of /etc/drbl/drbl-ocs.conf, such as $DIA...
[ -e "/etc/ocs/ocs-live.conf" ] && . /etc/ocs/ocs-live.conf

# Settings
syslinux_efi_def_v="6.03"

#
USAGE() {
    echo "$ocs - To switch the network booting service"
    echo "Usage:"
    echo "To run $ocs:"
    echo "$ocs [Option] MODE"
    echo "Options:"
    echo "-s, --syslinux VER Specify syslinux version. If not assigned, version \"$syslinux_efi_def_v\" will be used. It has to be >= $syslinux_efi_def_v."
    echo "MODE is the mode you want to switch to, either \"efi\" or \"pxe\"."
    echo "If no MODE is specified, \"efi\" will be used."
    echo "Ex:"
    echo "To switch this DRBL server as a server for uEFI network booting clients, run"
    echo "   $ocs efi"
    echo

}
#
to_efi_client(){
  [ "$BOOTUP" = "color" ] && $SETCOLOR_WARNING
  echo "Switching to the service for uEFI network booting clients..."
  [ "$BOOTUP" = "color" ] && $SETCOLOR_NORMAL
  drbl-prepare-pxelinux -d -u -pv $syslinux_ver
  rm -f $pxecfg_pd/{hdt.c32,chain.c32,mboot.c32,menu.c32,sanboot.c32,vesamenu.c32}
  generate-pxe-menu
  perl -pi -e "s/^PATH bios/#PATH bios/g" $pxecfg_pd/pxelinux.cfg/default 
  perl -pi -e "s/^#+PATH efi64/PATH efi64/g" $pxecfg_pd/pxelinux.cfg/default
}
#
to_pxe_client(){
  [ "$BOOTUP" = "color" ] && $SETCOLOR_WARNING
  echo "Switching to the service for PXE network booting clients..."
  [ "$BOOTUP" = "color" ] && $SETCOLOR_NORMAL
  drbl-prepare-pxelinux -d -u -pv $syslinux_ver
  generate-pxe-menu
  perl -pi -e "s/^#+PATH bios/PATH bios/g" $pxecfg_pd/pxelinux.cfg/default 
  perl -pi -e "s/^PATH efi64/#PATH efi64/g" $pxecfg_pd/pxelinux.cfg/default
}

####################
### Main program ###
####################

ocs_file="$0"
ocs=`basename $ocs_file`
#
while [ $# -gt 0 ]; do
 case "$1" in
   -s|--syslinux)
           shift; 
           if [ -z "$(echo $1 |grep ^-.)" ]; then
             # skip the -xx option, in case 
             syslinux_ver="$1"
             shift;
           fi
           [ -z "$syslinux_ver" ] && USAGE && exit 1
           ;;
   -*)     echo "${0}: ${1}: invalid option" >&2
           USAGE >& 2
           exit 2 ;;
   *)      break ;;
 esac
done

mode="$1"

if [ -d "$pxecfg_pd/grub-efi.cfg" ]; then
  [ "$BOOTUP" = "color" ] && $SETCOLOR_FAILURE
  echo "Dir $pxecfg_pd/grub-efi.cfg exists. It already provides the ability to serve both uEFI and PXE network booting clients."
  echo "No need to switch. This program is only for running pxelinux for uEFI or PXE network booting client."
  [ "$BOOTUP" = "color" ] && $SETCOLOR_NORMAL
  echo "$msg_program_stop!"
  my_ocs_exit 1
fi

if [ -z "$syslinux_ver" ]; then
  syslinux_ver="$syslinux_efi_def_v"
fi
if [ -z "$mode" ]; then
  mode="efi"
fi

case "$mode" in
  "efi"|"EFI") to_efi_client;;
  "pxe"|"PXE") to_pxe_client;;
esac