mirror of
https://github.com/xcat2/xcat-core.git
synced 2025-05-22 03:32:04 +00:00
Draft compute.rhels8.pkglist for RHEL8 Alpha Base OS Draft pre.rhels8 for RHEL8 Alpha Base OS Draft post.rhels8 for RHEL8 Alpha Base OS Draft next generation post.xcat.ng
226 lines
6.6 KiB
Plaintext
226 lines
6.6 KiB
Plaintext
export XCATDEBUGMODE="#TABLEBLANKOKAY:site:key=xcatdebugmode:value#"
|
|
|
|
case "$XCATDEBUGMODE" in
|
|
"1"|"2")
|
|
set -x
|
|
;;
|
|
esac
|
|
|
|
if grep -q n8r /proc/cmdline >/dev/null 2>&1
|
|
then
|
|
stty crtscts
|
|
fi
|
|
for x in 0 1 2 3 4 5 6 7 8
|
|
do
|
|
mknod /dev/vcs$x c 7 $x
|
|
mknod /dev/vcsa$x c 7 $[$x+128]
|
|
done
|
|
chmod 0644 /dev/vcs*
|
|
chown root.tty /dev/vcs*
|
|
|
|
if [ -r /tmp/updates/etc/pki/tls/certs/ca-bundle.crt ]
|
|
then
|
|
cp -f /tmp/updates/etc/pki/tls/certs/ca-bundle.crt /etc/pki/tls/certs/
|
|
fi
|
|
|
|
cat >/tmp/baz.py <<'EOF'
|
|
#!/usr/bin/python3
|
|
import socket
|
|
import sys
|
|
|
|
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
|
|
sock.connect(('#XCATVAR:XCATMASTER#',#TABLE:site:key=xcatiport:value#))
|
|
|
|
print sys.argv[1]
|
|
response = sock.recv(100)
|
|
if(response == "ready\n"):
|
|
sock.send(sys.argv[1]+"\n")
|
|
response = sock.recv(100)
|
|
|
|
sock.close()
|
|
EOF
|
|
|
|
cat >/tmp/foo.py <<'EOF'
|
|
#!/usr/bin/python3
|
|
|
|
import socket
|
|
import os
|
|
import linecache
|
|
import re
|
|
|
|
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
|
|
sock.connect(('#XCATVAR:XCATMASTER#',#TABLE:site:key=xcatiport:value#))
|
|
|
|
response = sock.recv(100)
|
|
if(response == "ready\n"):
|
|
sock.send("installmonitor\n")
|
|
response = sock.recv(100)
|
|
|
|
sock.close()
|
|
|
|
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
|
|
sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
|
|
|
|
port = 3054
|
|
sock.bind(('', port))
|
|
|
|
sock.listen(5)
|
|
|
|
try:
|
|
while 1:
|
|
newSocket, address = sock.accept()
|
|
while 1:
|
|
received = newSocket.recv(200)
|
|
if not received:
|
|
break
|
|
command = re.split('\s+',received)
|
|
if(command[0] == "stat"):
|
|
ilog = ""
|
|
line = ""
|
|
post = 0
|
|
percent = 0
|
|
count = 0
|
|
numpack = 0
|
|
pre = 0
|
|
if(os.path.isfile('/tmp/xcatpre.log')):
|
|
ilog = '/tmp/xcatpre.log'
|
|
pre = 1
|
|
if(os.path.isfile('/tmp/packaging.log')):
|
|
ilog = '/tmp/packaging.log'
|
|
if(os.path.isfile('/mnt/sysimage/tmp/post.log')):
|
|
ilog = '/mnt/sysimage/tmp/post.log'
|
|
post = True
|
|
if(ilog):
|
|
count = len(open(ilog).readlines())
|
|
line = linecache.getline(ilog,count)
|
|
linecache.clearcache()
|
|
if(line and not post and not pre):
|
|
r2 = re.compile("Installing ([^ ]*) \((\d+)/(\d+)\)")
|
|
m2 = r2.search(line)
|
|
if m2:
|
|
newline = "%s (%.2f%%)" % (m2.group(1), 100 * float(m2.group(2)) / float(m2.group(3)))
|
|
else:
|
|
newline = "post"
|
|
line = "installing " + newline
|
|
if(line and post and not pre):
|
|
line = "installing " + line
|
|
if(not line):
|
|
line = "installing prep"
|
|
newSocket.send(line)
|
|
break
|
|
#UNCOMMENTOENABLEDEBUGPORT# if(command[0] == "sh"): #DEBUG purposes only, wide open root priv command here.
|
|
#UNCOMMENTOENABLEDEBUGPORT# newcommand = ""
|
|
#UNCOMMENTOENABLEDEBUGPORT# for i in command[1:]:
|
|
#UNCOMMENTOENABLEDEBUGPORT# newcommand = newcommand + i + " "
|
|
#UNCOMMENTOENABLEDEBUGPORT# output = os.popen(newcommand).read()
|
|
#UNCOMMENTOENABLEDEBUGPORT# newSocket.send(output)
|
|
#UNCOMMENTOENABLEDEBUGPORT# break
|
|
if(command[0] == "screendump"):
|
|
newcommand = "cat /dev/vcs"
|
|
for i in command[1:]:
|
|
newcommand = newcommand + i
|
|
output = os.popen(newcommand).read()
|
|
newSocket.send(output)
|
|
break
|
|
|
|
newSocket.close()
|
|
|
|
finally:
|
|
sock.close()
|
|
EOF
|
|
|
|
chmod 0755 /tmp/foo.py
|
|
chmod 0755 /tmp/baz.py
|
|
|
|
NODESTATUS="#TABLEBLANKOKAY:site:key=nodestatus:value#"
|
|
|
|
case "$NODESTATUS" in
|
|
"0"|"N"|"n")
|
|
;;
|
|
*)
|
|
/tmp/baz.py "installstatus installing" &
|
|
;;
|
|
esac
|
|
|
|
/tmp/foo.py >/foo.log 2>&1 &
|
|
|
|
# time to ascertain fstype and PReP/UEFI/legacy
|
|
# also, find first available block device (sda or vda likely)
|
|
# TODO: pick a likely non-SAN target if possible
|
|
shopt -s nullglob
|
|
|
|
#
|
|
# The getinstdisk script is common for RHEL/SLES/PowerKVM/Ubuntu.
|
|
# It will attempt to select the install disk and write the selection to /tmp/xcat.install_disk
|
|
#
|
|
#INCLUDE:#ENV:XCATROOT#/share/xcat/install/scripts/getinstdisk#
|
|
if [ -f "/tmp/xcat.install_disk" ]
|
|
then
|
|
instdisk="$(cat /tmp/xcat.install_disk)"
|
|
fi
|
|
|
|
BOOTFSTYPE=ext4
|
|
FSTYPE=ext4
|
|
EFIFSTYPE=efi
|
|
|
|
echo "ignoredisk --only-use=$instdisk" >>/tmp/partitionfile
|
|
case "$(uname -m)" in
|
|
"ppc64"|"ppc64le")
|
|
echo "part prepboot --fstype=prepboot --asprimary --ondisk=$instdisk --size=8" >>/tmp/partitionfile
|
|
;;
|
|
esac
|
|
if [ -d /sys/firmware/efi ]
|
|
then
|
|
echo "part /boot/efi --fstype=$EFIFSTYPE --ondisk=$instdisk --size=250" >>/tmp/partitionfile
|
|
fi
|
|
|
|
# TODO: Ondisk detection, /dev/disk/by-id/edd-int13_dev80 for legacy maybe, and no idea about efi. At least maybe blacklist SAN if mptsas/mpt2sas/megaraid_sas seen...
|
|
echo "part /boot --fstype=$BOOTFSTYPE --asprimary --ondisk=$instdisk --size=512" >>/tmp/partitionfile
|
|
echo "part pv.000997 --grow --asprimary --ondisk=$instdisk --size=8192" >>/tmp/partitionfile
|
|
echo "volgroup system --pesize=4096 pv.000997" >>/tmp/partitionfile
|
|
echo "logvol / --fstype=$FSTYPE --name=root --vgname=system --grow --size=1024" >>/tmp/partitionfile
|
|
echo "logvol swap --name=swap --vgname=system --recommended" >>/tmp/partitionfile
|
|
|
|
# Specify "bootloader" configuration in "/tmp/partitionfile" if there is no user customized partition file
|
|
BOOTLOADER="bootloader"
|
|
|
|
# Specifies which drive the boot loader should be written to
|
|
# and therefore which drive the computer will boot from.
|
|
[ -n "$instdisk" ] && BOOTLOADER="$BOOTLOADER --boot-drive=$(basename $instdisk)"
|
|
|
|
echo "$BOOTLOADER" >>/tmp/partitionfile
|
|
|
|
#XCA_PARTITION_SCRIPT#
|
|
|
|
#specify the kernel options which will be persistent after installation
|
|
if [ -n "#ENV:PERSKCMDLINE#" ];then
|
|
#append the persistent kernel options to the lines including "bootloader --append"
|
|
sed -i -e /bootloader/s#\'#\"#g -e '/bootloader/s/--append=\([^"]\S*[^"]\)/--append="\1"/g' -e '/bootloader/s/--append="\(.*\)"/--append="\1 #ENV:PERSKCMDLINE#"/g' /tmp/partitionfile
|
|
#append the persistent kernel options to the lines including "bootloader" without "--append"
|
|
sed -i -e '/bootloader/{/append=/!s/$/& --append="#ENV:PERSKCMDLINE#" /}' /tmp/partitionfile
|
|
#append the persistent kernel options to /tmp/partitionfile if it does not include "bootloader"
|
|
grep -q bootloader /tmp/partitionfile >/dev/null 2>&1 || echo -e "bootloader --append=\"#ENV:PERSKCMDLINE#\"" >>/tmp/partitionfile
|
|
fi
|
|
|
|
# save the content of /tmp/partitionfile in /var/log/xcat/xcat.log
|
|
# so that we can inspect the partition scheme after installation
|
|
echo "================ The Partition Scheme ==============="
|
|
cat /tmp/partitionfile
|
|
echo "====================================================="
|
|
|
|
# The following code is to generate the repository for the installation
|
|
cat /proc/cmdline
|
|
|
|
NEXTSERVER="$(grep -m 1 http /proc/cmdline)"
|
|
NEXTSERVER="${NEXTSERVER#*http://}"
|
|
NEXTSERVER="${NEXTSERVER%%:*}"
|
|
|
|
export nextserver="$NEXTSERVER"
|
|
#INSTALL_SOURCES_IN_PRE#
|
|
|
|
case "$XCATDEBUGMODE" in
|
|
"1"|"2")
|
|
set +x
|
|
;;
|
|
esac
|