Initial commit

This commit is contained in:
2026-03-03 19:53:38 -05:00
parent 64e854364b
commit bfd1006698
82 changed files with 9540 additions and 0 deletions

18
TODO.txt Normal file
View File

@@ -0,0 +1,18 @@
TODO list for RescueBRU
feature: save config of backup in a backup.conf file to include devices.
Check for this file when doing a new backup. Offer to use existing
config.
feature: replace spaces with underscores in new image name.
bug: when getting a list of images in imageselect() sometime a busy
server can make the client appear to lock up. Need a "please wait.."
message so user doesn't panic.
bug: server may appear to lock up when using several functions. Need a
"please wait..." message for anything that might have to load data
from the CD.
bug: settings selections submenus don't preselect the current setting as
the default-item in the dialog.

23
buildtools/TODO.txt Normal file
View File

@@ -0,0 +1,23 @@
TODO list for RescueBRU-7.1.1
feature: save config of backup in a backup.conf file to include devices.
Check for this file when doing a new backup. Offer to use existing
config.
feature: replace spaces with underscores in new image name.
bug: on restore, the "original drive was" and "current drive is" info
messages may be blank due to inconsistency in how smartctl
displays the drive model. the code looks for "Device Model" and
sometimes smartctl just outputs "Device"
bug: when getting a list of images in imageselect() sometime a busy
server can make the client appear to lock up. Need a "please wait.."
message so user doesn't panic.
bug: server may appear to lock up when using several functions. Need a
"please wait..." message for anything that might have to load data
from the CD.
bug: settings selections submenus don't preselect the current setting as
the default-item in the dialog.

103
buildtools/buildrescuebru Normal file
View File

@@ -0,0 +1,103 @@
#!/bin/bash
if [ ! -e buildtools.conf ]; then
cp buildtools.conf.delivered buildtools.conf
fi
source buildtools.conf
function buildclient() {
echo "buildrescuebru: building client iso image..."
cp /mnt/custom/customcd/isoroot/isolinux/isolinux.cfg.client /mnt/custom/customcd/isoroot/isolinux/isolinux.cfg
cp /mnt/custom/customcd/isoroot/boot/grub/grub-522.cfg.client /mnt/custom/customcd/isoroot/boot/grub/grub-522.cfg
dobuild "client"
}
function buildserver() {
echo "buildrescuebru: building server iso image..."
cp /mnt/custom/customcd/isoroot/isolinux/isolinux.cfg.server /mnt/custom/customcd/isoroot/isolinux/isolinux.cfg
cp /mnt/custom/customcd/isoroot/boot/grub/grub-522.cfg.server /mnt/custom/customcd/isoroot/boot/grub/grub-522.cfg
dobuild "server"
}
function dobuild() {
echo "buildrescuebru: creating squashfs for $1..."
/usr/sbin/sysresccd-custom squashfs
echo "buildrescuebru: removing stale sysresccd files from isofile directory..."
rm -fv /mnt/custom/customcd/isofile/sysresccd*
echo "buildrescuebru: generating new iso/md5 for $volname-$1..."
/usr/sbin/sysresccd-custom isogen $volname-$1
echo "buildrescuebru: moving sysresccd iso/md5 files to volume name files in xfer directory..."
origiso=`ls /mnt/custom/customcd/isofile/sysresccd-*.iso`
origmd5=`ls /mnt/custom/customcd/isofile/sysresccd-*.md5`
mv -v $origiso /mnt/custom/isoxfer/$volname-$1.iso
mv -v $origmd5 /mnt/custom/isoxfer/$volname-$1.md5
}
# ------
echo -n "Is this a development system or a build machine? [d/b] : "
read systype
echo -n "Will this be a client CD or server CD or both or no CD? [c/s/b/n] : "
read buildtype
if [ "$buildtype" != "n" ]; then
echo -n "Enter CD volume name : "
read volname
fi
echo -n "Would you like to extract a new customcd? [y/n] : "
read ext
echo -n "Do you need to chroot into the customcd filesystem? [y/n] : "
read chrt
if [ "$ext" = "y" ]; then
echo "Moving existing customcd to customcd-`date +%Y%m%d%H%M%S`..."
mv /mnt/custom/customcd /mnt/custom/customcd-`date +%Y%m%d%H%M%S`
echo "Extracting new customcd..."
/usr/sbin/sysresccd-custom extract
fi
if [ "$buildtype" != "n" ]; then
mkdir -p /mnt/custom/isoxfer
rm -f /mnt/custom/isoxfer/*
fi
/mnt/custom/buildtools/get_distributables $systype
if [ "$REL_TYPE" = "p" ]; then
/mnt/custom/buildtools/get_documentation $systype
fi
/mnt/custom/buildtools/fixpermissions
/mnt/custom/buildtools/setsymlinks
if [ "$chrt" = "y" ]; then
/mnt/custom/buildtools/customchroot
fi
mkdir -p /mnt/custom/customcd/isoroot/rescuebru-src
rm -rf /mnt/custom/customcd/isoroot/rescuebru-src/*
cp -R /mnt/custom/rescuebru-src/* /mnt/custom/customcd/isoroot/rescuebru-src
mkdir -p /mnt/custom/customcd/isoroot/buildtools
rm -rf /mnt/custom/customcd/isoroot/buildtools/*
cp -R /mnt/custom/buildtools/* /mnt/custom/customcd/isoroot/buildtools
case $buildtype in
"c" )
buildclient
;;
"s" )
buildserver
;;
"b" )
buildclient
buildserver
;;
"n" )
echo "This was a file update only. Not building a new iso."
;;
esac
if [ "$buildtype" != "n" ]; then
if [ "$systype" = "b" ]; then
echo "buildrescuebru: transferring iso/md5 files back to development system..."
/mnt/custom/buildtools/putiso
else
echo "iso/md5 file generation complete. Files are in /mnt/custom/isoxfer"
fi
else
echo "File update complete."
fi

View File

@@ -0,0 +1,16 @@
# buildtools.conf.delivered
# type of release, c=clean or p=proprietary
REL_TYPE="c"
# path of source files if we are build machine
BUILD_SRC_PATH="rwright@bomarc:/home/rwright/latest-rbru/"
# path of source files if we are a development machine
DEV_SRC_PATH="/mnt/custom/rescuebru-src/"
# path of proprietary documentation files if we are build machine
BUILD_DOC_PATH="rwright@bomarc:/home/rwright/RescueBRU/latest-docs/"
# path on remote development machine where new isos will be put
ISO_DEST_PATH="rwright@bomarc:/home/rwright/RescueBRU/rescuebru-isos/"

14
buildtools/customchroot Normal file
View File

@@ -0,0 +1,14 @@
#!/bin/bash
# customchroot - Modify a stock SystemRescueCD
# Set up the chroot environment
for vfs in proc dev sys; do
mkdir -p /mnt/custom/customcd/files/$vfs
mount -o bind /$vfs /mnt/custom/customcd/files/$vfs
done
echo "Entering chroot environment. Type exit to leave."
chroot /mnt/custom/customcd/files /bin/bash
for vfs in proc dev sys; do
umount /mnt/custom/customcd/files/$vfs
done

47
buildtools/fixpermissions Normal file
View File

@@ -0,0 +1,47 @@
#!/bin/bash
executables="\
/root/rescuebru/rbruserver.sh \
/root/rescuebru/rescuebru.sh \
/root/rescuebru/xrbruserver.sh \
/root/rescuebru/xrescuebru.sh \
/root/rescuebru/clone.sh \
/root/rescuebru/blank.sh \
/root/rescuebru/faultmonitor.sh \
/root/rescuebru/showcapacitywindow.sh \
/root/rescuebru/showfaultwindow.sh \
/root/rescuebru/showstatuswindow.sh \
/root/rescuebru/updatecapacity.sh \
/root/rescuebru/updatestatus.sh \
/root/autorun1 \
/root/autorun2 \
/root/autorun3 \
/root/autorun4 \
/root/srcdtips \
/etc/init.d/pxebootsrv \
/etc/init.d/sysresccd \
/etc/init.d/dostartx \
/etc/init.d/dhcpd \
/bin/bashlogin \
"
tools="\
buildrescuebru \
fixpermissions \
get_distributables \
get_documentation \
putiso \
setsymlinks \
customchroot \
updatedevsystem \
updatelocalsrc \
"
for x in $executables; do
echo "Setting executable bit on $x"
chmod +x /mnt/custom/customcd/files$x
done
for y in $tools; do
echo "Setting executable bit on $y"
chmod +x /mnt/custom/buildtools/$y
done

View File

@@ -0,0 +1,40 @@
#!/bin/bash
echo "Getting distributables..."
if [ ! -e buildtools.conf ]; then
cp buildtools.conf.delivered buildtools.conf
fi
source buildtools.conf
if [ "$1" = "b" ]; then
srcpath=$BUILD_SRC_PATH
elif [ "$1" = "d" ]; then
srcpath=$DEV_SRC_PATH
else
echo "Unknown system type parameter."
echo "Must be b for build machine or d for dev system."
exit 1
fi
rm -rf /mnt/custom/customcd/files/root/rescuebru/*
rm -rf /root/rescuebru/*
sleep 2
if [ "$1" = "b" ]; then
ntpdate 0.pool.ntp.org
fi
rm -rf /mnt/custom/customcd/isoroot/RescueBRU_Documentation/*
rsync -rlptDvz --exclude=*.iso --exclude=*.md5 $srcpath /mnt/custom/
find /mnt/custom/customcd/isoroot/RescueBRU_Documentation/ -type f ! -name '*.pdf' ! -name '*.xls' -delete
mkdir -p /mnt/custom/rescuebru-src
rsync -rlptDvz --del --exclude=*.iso --exclude=*.md5 $srcpath /mnt/custom/rescuebru-src/
cp -Rv /mnt/custom/rescuebru-src /mnt/custom/customcd/isoroot
if [ ! -d "/root/rescuebru" ]; then
mkdir /root/rescuebru
fi
chmod +x /mnt/custom/buildtools/*
chmod -x /mnt/custom/buildtools/*.conf /mnt/custom/buildtools/*.conf.delivered
cp -R /mnt/custom/customcd/files/root/rescuebru/* /root/rescuebru
rm -f /mnt/custom/customcd/files/root/.bash_history
rm -rf /mnt/custom/customcd/files/root/.config/geany

View File

@@ -0,0 +1,23 @@
#!/bin/bash
echo "Getting proprietary documentation..."
if [ ! -e buildtools.conf ]; then
cp buildtools.conf.delivered buildtools.conf
fi
source buildtools.conf
if [ "$1" = "b" ]; then
docpath=$BUILD_DOC_PATH
mkdir -p /mnt/custom/customcd/isoroot/RescueBRU_Documentation
rsync -rlptDvz $docpath/RescueBRU_Documentation /mnt/custom/customcd/isoroot/
find /mnt/custom/customcd/isoroot/RescueBRU_Documentation/ -type f ! -name '*.pdf' ! -name '*.xls' -delete
elif [ "$1" = "d" ]; then
echo "This is a development machine, so leaving documentation as-is."
else
echo "Unknown system type parameter."
echo "Must be b for build machine or d for dev system."
exit 1
fi
rm -f /mnt/custom/customcd/files/root/.bash_history

8
buildtools/putiso Normal file
View File

@@ -0,0 +1,8 @@
#!/bin/bash
if [ ! -e buildtools.conf ]; then
cp buildtools.conf.delivered buildtools.conf
fi
source buildtools.conf
isopath=$ISO_DEST_PATH
rsync -avz /mnt/custom/isoxfer/ $isopath

9
buildtools/setsymlinks Normal file
View File

@@ -0,0 +1,9 @@
#!/bin/bash
rm -f /mnt/custom/customcd/files/root/rescuebru/rescuebru \
/mnt/custom/customcd/files/root/rescuebru/rbruserver \
/mnt/custom/customcd/files/root/rescuebru/clone \
/mnt/custom/customcd/files/root/rescuebru/blank
ln -s /root/rescuebru/rescuebru.sh /mnt/custom/customcd/files/root/rescuebru/rescuebru
ln -s /root/rescuebru/rbruserver.sh /mnt/custom/customcd/files/root/rescuebru/rbruserver
ln -s /root/rescuebru/clone.sh /mnt/custom/customcd/files/root/rescuebru/clone
ln -s /root/rescuebru/blank.sh /mnt/custom/customcd/files/root/rescuebru/blank

View File

@@ -0,0 +1,10 @@
#!/bin/bash
# updatedevsystem - Push latest src files back to the normal development system
if [ ! -e buildtools.conf ]; then
cp buildtools.conf.delivered buildtools.conf
fi
source buildtools.conf
devsystem=$BUILD_SRC_PATH
srcpath=$DEV_SRC_PATH
rsync -avz --exclude 'buildtools.conf' $srcpath $devsystem

10
buildtools/updatelocalsrc Normal file
View File

@@ -0,0 +1,10 @@
#!/bin/bash
# updatelocalsrc - Get latest src files from normal development system
if [ ! -e buildtools.conf ]; then
cp buildtools.conf.delivered buildtools.conf
fi
source buildtools.conf
devsystem=$BUILD_SRC_PATH
srcpath=$DEV_SRC_PATH
rsync -avz --del --exclude 'buildtools.conf' $devsystem $srcpath

View File

@@ -0,0 +1,55 @@
#!/bin/sh
# ============ ENV VARS ================================
cd /root
export LANG=en_US.utf8
export HOME=/root
export SHELL=/bin/bash
export PATH=/sbin:/bin:/usr/sbin:/usr/bin:/root/rescuebru
export path="/sbin /bin /usr/sbin /usr/bin /root/rescuebru"
export MAIL=/var/mail/root
export USER=root
# ============ PRINT MESSAGE ===========================
lc1='\e[01;31m' # light red
dc1='\e[00;31m' # dark red
lc2='\e[01;37m' # white
dc2='\e[00;37m' # gray
# fix broken console with utf8 in the alternative-kernels
echo -n -e '\033%G'
kbd_mode -u
LINES=$(stty size|cut -d" " -f1)
fbecho()
{
[ $LINES -ge 28 ] && echo
}
if [ -f /root/version ]
then
VERSION=" ${lc2}$(cat /root/version)${lc1} "
else
VERSION=""
fi
if [ -f /root/rb_version ]
then
RB_VERSION=" ${lc2}$(cat /root/rb_version)${lc1} "
else
RB_VERSION=""
fi
fbecho
echo -e "${lc1} ======== ${lc2}RescueBRU${lc1} -${RB_VERSION}=== ${lc2}SystemRescueCD${lc1} -${VERSION}=== ${lc2}$(basename $(tty))${dc2}/6 ${lc1}========"
echo -e " ${dc1}http://www.sysresccd.org/"
echo
echo -e "${dc1}*${dc2} Type ${lc2}rescuebru${dc2} to run the backup/restore utility."
echo -e "${dc1}*${dc2} Type ${lc2}rbruserver${dc2} to start the backup server."
echo
echo -e "${dc1}*${dc2} Type ${lc2}srcdtips${dc2} to view SystemRescueCD tips."
fbecho
# ============ SHELL PROMPT ============================
exec $SHELL --login

View File

@@ -0,0 +1 @@
HOSTNAME=rescuebru

View File

@@ -0,0 +1,54 @@
# Copyright 2003-2007 Francois Dupoux - www.sysresccd.org
# Distributed under the terms of the GNU General Public License v2
# Config file for /etc/init.d/pxebootsrv
# Have a look at the PXE chapter in the official manual for more details:
# http://www.sysresccd.org/Sysresccd-manual-en_PXE_network_booting
# ------------------------- README ------------------------------------
# The pxebootsrv service allows to provide a PXE-boot-server for
# SystemRescueCd out of the box. You just need to edit the following
# options and run "/etc/init.d/pxebootsrv restart", and you can boot
# any computer of your local network with PXE.
#
# You must configure these options if the current SystemRescueCd system
# acts as DHCP-server and TFTP-server and HTTP-server. If you keep this
# default behavior you just need to edit these options and start the
# service with "/etc/init.d/pxebootsrv restart".
# If you don't want the current system to be the DHCP server, you will have
# to configure everything by hand and it will not be possible to use
# the pxebootsrv service.
# ------------------------ CONFIGURATION -------------------------------
# By default the current systems acts as DHCP and TFTP and HTTP server
# If you want another machine of you network to act as one of those
# you will have to turn the appropriate option yo "no"
# Set to "yes" if you want this machine to act as a DHCP server
PXEBOOTSRV_DODHCPD="yes"
# Set to "yes" if you want this machine to act as a TFTP server
PXEBOOTSRV_DOTFTPD="yes"
# Set to "yes" if you want this machine to act as an HTTP server
PXEBOOTSRV_DOHTTPD="yes"
# Set to "yes" if you want this machine to act as an NFS server
PXEBOOTSRV_DONFSD="no"
# Here is a typical PXE-Boot configuration --> update with your settings
PXEBOOTSRV_SUBNET="10.111.1.0" # Used only if PXEBOOTSRV_DODHCPD="yes"
PXEBOOTSRV_NETMASK="255.255.255.0" # Used only if PXEBOOTSRV_DODHCPD="yes"
PXEBOOTSRV_DEFROUTE="10.111.1.1" # Used only if PXEBOOTSRV_DODHCPD="yes"
PXEBOOTSRV_DNS="10.111.1.1" # Used only if PXEBOOTSRV_DODHCPD="yes"
PXEBOOTSRV_DHCPRANGE="10.111.1.50 10.111.1.90" # Used only if PXEBOOTSRV_DODHCPD="yes"
PXEBOOTSRV_LOCALIP="10.111.1.1"
PXEBOOTSRV_IF="eth0"
# Keep these values to $PXEBOOTSRV_LOCALIP if the current computer
# acts as TFTP server and HTTP server as well as DHCP server
PXEBOOTSRV_TFTPSERVER="$PXEBOOTSRV_LOCALIP" # IP address of the TFTP server if PXEBOOTSRV_DODHCPD="yes"
PXEBOOTSRV_HTTPSERVER="http://$PXEBOOTSRV_LOCALIP/sysrcd.dat" # download URL
# Set a low value to boot faster. Default, wait 900 deciseconds (1min30sec)
PXEBOOTSRV_TIMEOUT="50" # Used only if PXEBOOTSRV_DOTFTPD="yes"
# You can append extra parameters
PXEBOOTSRV_EXTRA="" # Used only if PXEBOOTSRV_DOTFTPD="yes"

View File

@@ -0,0 +1,101 @@
# dhcpd.conf.rbruserver
# Rescue CD Backup & Restore Utility DHCP server configuration
# version 7.2.2
# Rod Wright 6/20/2018
# Refer to CHANGELOG file for details.
# -----------------------------------------------------------------------------
# see /usr/share/doc/dhcp*/dhcpd.conf.sample
#
ddns-update-style interim;
ignore client-updates;
class "rescuebruclients" {
match if substring(option host-name,0,9) = "rescuebru";
}
class "pxeclients" {
match if substring(option vendor-class-identifier, 0, 9) = "PXEClient";
filename "/pxelinux.0";
}
subnet 10.111.1.0 netmask 255.255.255.0 {
option routers 10.111.1.1;
default-lease-time 21600;
max-lease-time 43200;
next-server 10.111.1.1; # IP addr of the TFTP server
allow booting;
allow bootp;
pool {
allow members of "rescuebruclients";
range dynamic-bootp 10.111.1.100 10.111.1.199;
}
}
subnet 10.111.2.0 netmask 255.255.255.0 {
option routers 10.111.2.1;
default-lease-time 21600;
max-lease-time 43200;
next-server 10.111.2.1; # IP addr of the TFTP server
allow booting;
allow bootp;
pool {
allow members of "rescuebruclients";
range dynamic-bootp 10.111.2.100 10.111.2.199;
}
}
subnet 10.111.3.0 netmask 255.255.255.0 {
option routers 10.111.3.1;
default-lease-time 21600;
max-lease-time 43200;
next-server 10.111.3.1; # IP addr of the TFTP server
allow booting;
allow bootp;
pool {
allow members of "rescuebruclients";
range dynamic-bootp 10.111.3.100 10.111.3.199;
}
}
subnet 10.111.4.0 netmask 255.255.255.0 {
option routers 10.111.4.1;
default-lease-time 21600;
max-lease-time 43200;
next-server 10.111.4.1; # IP addr of the TFTP server
allow booting;
allow bootp;
pool {
allow members of "rescuebruclients";
range dynamic-bootp 10.111.4.100 10.111.4.199;
}
}
subnet 10.111.5.0 netmask 255.255.255.0 {
option routers 10.111.5.1;
default-lease-time 21600;
max-lease-time 43200;
next-server 10.111.5.1; # IP addr of the TFTP server
allow booting;
allow bootp;
pool {
allow members of "rescuebruclients";
range dynamic-bootp 10.111.5.100 10.111.5.199;
}
}
subnet 10.111.6.0 netmask 255.255.255.0 {
option routers 10.111.6.1;
default-lease-time 21600;
max-lease-time 43200;
allow booting;
allow bootp;
next-server 10.111.6.1; # IP addr of the TFTP server
pool {
allow members of "rescuebruclients";
range dynamic-bootp 10.111.6.100 10.111.6.199;
}
}

View File

@@ -0,0 +1,91 @@
# dhcpd.conf.rbruserver.pxeboot
# Rescue CD Backup & Restore Utility PXE DHCP server configuration
# version 7.2.2
# Rod Wright 6/20/2018
# Refer to CHANGELOG file for details.
# -----------------------------------------------------------------------------
# see /usr/share/doc/dhcp*/dhcpd.conf.sample
#
ddns-update-style interim;
ignore client-updates;
class "pxeclients" {
match if substring(option vendor-class-identifier, 0, 9) = "PXEClient";
filename "/pxelinux.0";
}
subnet 10.111.1.0 netmask 255.255.255.0 {
option routers 10.111.1.1;
default-lease-time 21600;
max-lease-time 43200;
next-server 10.111.1.1; # IP addr of the TFTP server
allow booting;
allow bootp;
pool {
range dynamic-bootp 10.111.1.100 10.111.1.199;
}
}
subnet 10.111.2.0 netmask 255.255.255.0 {
option routers 10.111.2.1;
default-lease-time 21600;
max-lease-time 43200;
next-server 10.111.2.1; # IP addr of the TFTP server
allow booting;
allow bootp;
pool {
range dynamic-bootp 10.111.2.100 10.111.2.199;
}
}
subnet 10.111.3.0 netmask 255.255.255.0 {
option routers 10.111.3.1;
default-lease-time 21600;
max-lease-time 43200;
next-server 10.111.3.1; # IP addr of the TFTP server
allow booting;
allow bootp;
pool {
range dynamic-bootp 10.111.3.100 10.111.3.199;
}
}
subnet 10.111.4.0 netmask 255.255.255.0 {
option routers 10.111.4.1;
default-lease-time 21600;
max-lease-time 43200;
next-server 10.111.4.1; # IP addr of the TFTP server
allow booting;
allow bootp;
pool {
range dynamic-bootp 10.111.4.100 10.111.4.199;
}
}
subnet 10.111.5.0 netmask 255.255.255.0 {
option routers 10.111.5.1;
default-lease-time 21600;
max-lease-time 43200;
next-server 10.111.5.1; # IP addr of the TFTP server
allow booting;
allow bootp;
pool {
range dynamic-bootp 10.111.5.100 10.111.5.199;
}
}
subnet 10.111.6.0 netmask 255.255.255.0 {
option routers 10.111.6.1;
default-lease-time 21600;
max-lease-time 43200;
allow booting;
allow bootp;
next-server 10.111.6.1; # IP addr of the TFTP server
pool {
range dynamic-bootp 10.111.6.100 10.111.6.199;
}
}

View File

@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<deviceinfo version="0.2">
<device>
<match key="scsi.type" string="cdrom">
<merge key="storage.media_check_enabled" type="bool">false</merge>
</match>
</device>
</deviceinfo>

View File

@@ -0,0 +1,120 @@
#!/sbin/openrc-run
# Copyright 1999-2015 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
extra_commands="configtest"
: ${DHCPD_CONF:=/etc/dhcp/${SVCNAME}.conf}
depend() {
#need net
provide net
use logger dns
}
get_var() {
local var="$(sed -n 's/^[[:blank:]]\?'"$1"' "*\([^#";]\+\).*/\1/p' "${chroot}${DHCPD_CONF}")"
echo ${var:-$2}
}
setup_opts() {
DHCPD_CHROOT=${DHCPD_CHROOT%/}
# Work out our cffile if it's in our DHCPD_OPTS
case " ${DHCPD_OPTS} " in
*" -cf "*)
DHCPD_CONF=" ${DHCPD_OPTS} "
DHCPD_CONF="${DHCPD_CONF##* -cf }"
DHCPD_CONF="${DHCPD_CONF%% *}"
;;
*) DHCPD_OPTS="${DHCPD_OPTS} -cf ${DHCPD_CONF}"
;;
esac
}
checkconfig() {
set -- ${DHCPD_OPTS} -chroot "${DHCPD_CHROOT:-/}" -t
dhcpd "$@" 1>/dev/null 2>&1
local ret=$?
if [ ${ret} -ne 0 ] ; then
eerror "${SVCNAME} has detected a syntax error in your configuration files:"
dhcpd "$@"
fi
return ${ret}
}
configtest() {
setup_opts
ebegin "Checking ${SVCNAME} configuration"
checkconfig
eend $?
}
start() {
setup_opts
local chroot="${DHCPD_CHROOT}"
if [ -n "${chroot}" ] ; then
# the config test want's these to exist
mkdir -p \
"${chroot}"/var/run/dhcp \
"${chroot}"/var/lib/dhcp \
"${chroot}"/etc/dhcp
fi
# see comment in get_var() above
if [ ! -f "${chroot}${DHCPD_CONF}" ] ; then
eerror "${chroot}${DHCPD_CONF} does not exist"
return 1
fi
checkconfig || return 1
checkpath -d -o dhcp:dhcp "${chroot}"/var/run/dhcp "${chroot}"/var/lib/dhcp
local leasefile="$(get_var lease-file-name /var/lib/dhcp/${SVCNAME}.leases)"
checkpath -f -o dhcp:dhcp "${chroot}${leasefile}"
# Setup LD_PRELOAD so name resolution works in our chroot.
if [ -n "${chroot}" ] ; then
checkpath -d -o root:root -m 755 "${chroot}"/dev "${chroot}"/etc "${chroot}"/proc
cp -pP /etc/localtime /etc/resolv.conf "${chroot}"/etc/
export LD_PRELOAD="${LD_PRELOAD} libresolv.so libnss_dns.so"
if ! mountinfo -q "${chroot}/proc" ; then
mount --bind /proc "${chroot}/proc"
fi
fi
local pidfile="$(get_var pid-file-name /var/run/dhcp/${SVCNAME}.pid)"
ebegin "Starting ${chroot:+chrooted }${SVCNAME}"
start-stop-daemon --start --exec /usr/sbin/dhcpd \
--pidfile "${chroot}/${pidfile}" \
-- ${DHCPD_OPTS} -q -pf "${pidfile}" -lf "${leasefile}" \
-user dhcp -group dhcp \
-chroot "${chroot:-/}" ${DHCPD_IFACE}
eend $? \
&& save_options dhcpd_chroot "${chroot}" \
&& save_options pidfile "${pidfile}"
}
stop() {
local chroot="$(get_options dhcpd_chroot)"
[ -z "${chroot}" ] && chroot="$(get_options chroot)"
ebegin "Stopping ${chroot:+chrooted }${SVCNAME}"
start-stop-daemon --stop --exec /usr/sbin/dhcpd \
--pidfile "${chroot}/$(get_options pidfile)"
res=$?
if [ ${res} -eq 0 ] && [ -n "${chroot}" ] ; then
if mountinfo -q "${chroot}/proc" ; then
umount "${chroot}/proc"
fi
fi
eend ${res}
}

View File

@@ -0,0 +1,44 @@
#!/sbin/runscript
DAEMON="/usr/bin/xinit"
ARGS="/etc/X11/xinit/xinitrc"
PIDFILE="/var/run/dostartx.pid"
LOGFILE="/var/log/dostartx.log"
CWD="/root"
totalmem=`free|grep Mem:|awk '{print $2}'`
if [ "$totalmem" -lt 500000 ]; then
if grep -q "autoruns=3" /proc/cmdline ; then
dotextonly=1
fi
fi
depend() {
after sysresccd
}
start() {
if grep -q "dostartx" /proc/cmdline
then
if [ "$dotextonly" ]
then
ebegin "Not enough memory to start the graphical environment"
eend 0
else
ebegin "Starting the graphical environment"
start-stop-daemon --start --quiet --user root --env SHELL="/bin/bash" --env PATH="$PATH:/root/rescuebru" \
--pidfile $PIDFILE --exec $DAEMON --background --chdir $CWD \
--stdout $LOGFILE --make-pidfile -- $ARGS
eend $?
fi
else
eend 0
fi
}
stop() {
ebegin "Stopping the graphical environment"
start-stop-daemon --stop --quiet --pidfile $PIDFILE --exec $DAEMON
eend $?
}

View File

@@ -0,0 +1,187 @@
#!/sbin/runscript
# Distributed under the terms of the GNU General Public License, v2 or later
bootdir='/livemnt/boot'
depend()
{
need net
}
start()
{
ebegin "Starting the pxe-boot-server"
# ---- check the cdrom files exist
if ! ls -l ${bootdir}/sysrcd.dat ${bootdir}/???linux/???linux.cfg >/dev/null 2>&1
then
eerror "Files are missing, please check you are running a valid SystemRescueCd"
return 1
fi
# ---- check the config file exists
if [ ! -f /etc/conf.d/pxebootsrv ]
then
eerror "The pxebootsrv configuration file \"/etc/conf.d/pxebootsrv\" does not exists. Cannot continue."
return 1
fi
# ---- check the major options are set to 'yes' or 'no'
if [ $PXEBOOTSRV_DODHCPD != "yes" ] && [ $PXEBOOTSRV_DODHCPD != "no" ]
then
eerror "Invalid value for PXEBOOTSRV_DODHCPD. Must be \"yes\" or \"no\" (lowercase)."
return 1
fi
if [ $PXEBOOTSRV_DOTFTPD != "yes" ] && [ $PXEBOOTSRV_DOTFTPD != "no" ]
then
eerror "Invalid value for PXEBOOTSRV_DOTFTPD. Must be \"yes\" or \"no\" (lowercase)."
return 1
fi
if [ $PXEBOOTSRV_DOHTTPD != "yes" ] && [ $PXEBOOTSRV_DOHTTPD != "no" ]
then
eerror "Invalid value for PXEBOOTSRV_DOHTTPD. Must be \"yes\" or \"no\" (lowercase)."
return 1
fi
if [ $PXEBOOTSRV_DONFSD != "yes" ] && [ $PXEBOOTSRV_DONFSD != "no" ]
then
eerror "Invalid value for PXEBOOTSRV_DONFSD. Must be \"yes\" or \"no\" (lowercase)."
return 1
fi
if [ $PXEBOOTSRV_DODHCPD == "yes" ]
then
# ---- prepare /etc/dhcp/dhcpd.conf from /etc/conf.d/pxebootsrv
[ -f /etc/dhcp/dhcpd.conf ] && cp /etc/dhcp/dhcpd.conf /etc/dhcp/dhcpd.bak
cp /etc/dhcp/dhcpd.orig /etc/dhcp/dhcpd.conf
if [ -z "$PXEBOOTSRV_SUBNET" -o -z "$PXEBOOTSRV_NETMASK" ]
then
eerror "Invalid values for PXEBOOTSRV_SUBNET or PXEBOOTSRV_NETMASK"
return 1
else
sed -i -e "s/subnet 192.168.1.0 netmask 255.255.255.0/subnet $PXEBOOTSRV_SUBNET netmask $PXEBOOTSRV_NETMASK/" /etc/dhcp/dhcpd.conf
sed -i -e "s/option subnet-mask 255.255.255.0;/option subnet-mask $PXEBOOTSRV_NETMASK;/" /etc/dhcp/dhcpd.conf
fi
if [ -z "$PXEBOOTSRV_DEFROUTE" ]
then
eerror "The config variable PXEBOOTSRV_DEFROUTE is missing"
return 1
else
sed -i -e "s/option routers 192.168.1.254;/option routers $PXEBOOTSRV_DEFROUTE;/" /etc/dhcp/dhcpd.conf
fi
if [ -z "$PXEBOOTSRV_DHCPRANGE" ]
then
eerror "The config variable PXEBOOTSRV_DHCPRANGE is missing"
return 1
else
sed -i -e "s/range dynamic-bootp 192.168.1.100 192.168.1.150;/range dynamic-bootp $PXEBOOTSRV_DHCPRANGE;/" /etc/dhcp/dhcpd.conf
fi
if [ -z "$PXEBOOTSRV_TFTPSERVER" ]
then
eerror "The config variable PXEBOOTSRV_TFTPSERVER is missing"
return 1
else
sed -i -e "s/next-server 192.168.1.5;/next-server $PXEBOOTSRV_TFTPSERVER;/" /etc/dhcp/dhcpd.conf
fi
if [ -n "$PXEBOOTSRV_DNS" ]
then
sed -i -e "s/option domain-name-servers 192.168.1.254;/option domain-name-servers $PXEBOOTSRV_DNS;/" /etc/dhcp/dhcpd.conf
fi
fi
if [ $PXEBOOTSRV_DOTFTPD == "yes" ]
then
# ---- prepare pxelinux config file
[ ! -d /tftpboot/pxelinux.cfg ] && mkdir -p /tftpboot/pxelinux.cfg
[ ! -f /tftpboot/pxelinux.0 ] && cp /usr/share/syslinux/pxelinux.0 /tftpboot/
[ -f /tftpboot/pxelinux.cfg/default.bak ] && rm -f /tftpboot/pxelinux.cfg/default.bak
[ -f /tftpboot/pxelinux.cfg/default ] && mv /tftpboot/pxelinux.cfg/default /tftpboot/pxelinux.cfg/default.bak
cp --remove-destination ${bootdir}/???linux/{*msg,*c32,*.0,memdisk,netboot} /tftpboot/
cp --remove-destination ${bootdir}/???linux/???linux.cfg /tftpboot/pxelinux.cfg/default
if [ -n "$PXEBOOTSRV_TIMEOUT" ]
then
sed -i -e "s!^TIMEOUT .*!TIMEOUT $PXEBOOTSRV_TIMEOUT!i" /tftpboot/pxelinux.cfg/default
fi
sed -i -e "s!scandelay=1!scandelay=5 netboot=$PXEBOOTSRV_HTTPSERVER ${PXEBOOTSRV_EXTRA}!g" /tftpboot/pxelinux.cfg/default
fi
# ---- start the NFS server
if [ $PXEBOOTSRV_DONFSD == "yes" ]
then
# ---- nfs export /tftpboot
touch /etc/exports
sed -i -e 's!^/tftpboot!#/tftpboot!g' /etc/exports
echo "/tftpboot *(fsid=0,ro,no_subtree_check,all_squash,insecure,anonuid=1000,anongid=1000)" >> /etc/exports
fi
# ---- stop network manager to avoid conflicts
/etc/init.d/NetworkManager stop
# ---- bring up network interface
ifconfig $PXEBOOTSRV_IF $PXEBOOTSRV_LOCALIP/24
# ---- start the DHCPD service
if [ $PXEBOOTSRV_DODHCPD == "yes" ]
then
/etc/init.d/dhcpd restart
if [ "$?" != "0" ]
then
eerror "Cannot start /etc/init.d/dhcpd, check /var/log/messages"
return 1
fi
fi
# ---- start the THTTPD service
if [ $PXEBOOTSRV_DOHTTPD == "yes" ]
then
/etc/init.d/thttpd restart
if [ "$?" != "0" ]
then
eerror "Cannot start /etc/init.d/thttpd"
return 1
fi
fi
# ---- start the TFTPD service
if [ $PXEBOOTSRV_DOTFTPD == "yes" ]
then
/etc/init.d/in.tftpd restart
if [ "$?" != "0" ]
then
eerror "Cannot start /etc/init.d/in.tftpd"
return 1
fi
fi
# ---- start the NFS server
if [ $PXEBOOTSRV_DONFSD == "yes" ]
then
/etc/init.d/nfs restart
if [ "$?" != "0" ]
then
eerror "Cannot start /etc/init.d/nfs"
return 1
fi
fi
return 0
}
stop()
{
ebegin "Stopping the pxe-boot-server"
/etc/init.d/thttpd stop
/etc/init.d/in.tftpd stop
/etc/init.d/dhcpd stop
return 0
}

View File

@@ -0,0 +1,128 @@
#!/sbin/runscript
source /sbin/livecd-functions.sh
depend()
{
before xdm autorun tigervnc
after pwgen sshd portmap hald
}
start()
{
ebegin "Performing the SystemRescueCd specific initializations"
CMDLINE="$(cat /proc/cmdline)"
# ---- create file /var/log/lastlog so that ssh does not complain in the logs ----
touch /var/log/lastlog
# ---- create various directories ----
mkdir -p /var/log/samba
mkdir -p /var/cache/revdep-rebuild
mkdir -p /var/run/dhcp
chown dhcp:dhcp /var/run/dhcp
# ---- disable screensaver in the console
setterm -blank 0 -powersave off
# ---- auto-detect software raid ----
[ -n "$(which mdadm)" ] && mdadm --auto-detect 2>&1
# ---- change the root password if requested in cmdline ----
for curopt in ${CMDLINE}
do
if echo "${curopt}" | grep -q -E '^rootpass=[^ ]{1,32}$'
then
newpass="$(echo ${curopt} | sed -r -e 's!^rootpass=([^ ]{1,32})$!\1!g')"
( echo root:${newpass} ) | chpasswd 1>/dev/null 2>&1
fi
done
# ---- options to start/stop services ----
for curopt in ${CMDLINE}
do
if echo "${curopt}" | grep -q -E '^initscript=[a-zA-Z0-9]{1,32}:[a-z]{1,32}$'
then
touch /var/log/initscript.log
service="$(echo ${curopt} | sed -r -e 's!^initscript=([a-zA-Z0-9]{1,32}):([a-z]{1,32})$!\1!g')"
action="$(echo ${curopt} | sed -r -e 's!^initscript=([a-zA-Z0-9]{1,32}):([a-z]{1,32})$!\2!g')"
echo "initscript: found option ${curopt} (service=${service} and action=${action}" >| /var/log/initscript.log
if [ -x "/etc/init.d/${service}" ]
then
cmd="/etc/init.d/${service} ${action}"
${cmd} > /var/log/initscript-${service}.log 2>&1
res=$?
echo "initscript: ${cmd} --> ${res}" | tee -a /var/log/initscript.log
else
echo "initscript: /etc/init.d/${service} not found" | tee -a /var/log/initscript.log
fi
fi
done
# ---- options to configure and start the vncserver ----
# eg: "rescuecd vncserver=2:mYpAsWd" will create two vnc displays (display=1 on port 5900 and display=2 on port 5901)
# and the two displays will use the same password and the root user account (password=mYpAsWd)
# this option should be used only once, but in case of multiple usages the last vncserver option overwrite the previous ones
vnclog='/var/log/vncserver.log'
for curopt in ${CMDLINE}
do
case "${curopt}" in
vncserver\=*)
echo '' >| ${vnclog}
vncopt="$(echo ${curopt} | cut -d= -f2)"
echo "vncserver: found option vncserver=${vncopt}" | tee -a ${vnclog}
if echo "${vncopt}" | grep -q -E '^[1-9]:[^ ]{6,12}$'
then
[ -f /root/.vnc/passwd ] && rm -f /root/.vnc/passwd
[ ! -d /root/.vnc ] && mkdir -p /root/.vnc
sed -i -e 's!^DISPLAYS=.*!!g' /etc/conf.d/tigervnc
displaycnt="$(echo ${curopt} | sed -r -e 's!^vncserver=([1-9]):([^ ]{6,12})$!\1!g')"
password="$(echo ${curopt} | sed -r -e 's!^vncserver=([1-9]):([^ ]{6,12})$!\2!g')"
echo "vncserver: ${displaycnt} displays will be created" | tee -a ${vnclog}
echo "vncserver: creating password file in /root/.vnc/passwd:" >>${vnclog}
echo -e "${password}\n${password}\n" | vncpasswd /root/.vnc/passwd >>${vnclog} 2>&1
chmod 600 /root/.vnc/passwd
echo "exec /usr/bin/startxfce4 >/dev/null 2>&1" >| /root/.vnc/xstartup
chmod 700 /root/.vnc/xstartup
displayopt=''
for ((i=1; i <= displaycnt; i++))
do
echo "vncserver: preparing display number $i" | tee -a ${vnclog}
displayopt="${displayopt} root:$i"
displayopt="$(echo ${displayopt} | sed -e 's!^ !!g' | sed -e 's! $!!g')"
done
echo "DISPLAYS=\"${displayopt}\"" >> /etc/conf.d/tigervnc
else
echo "vncserver: invalid syntax (expected \"vncserver=x:mYpAsWd\")"
echo " where x is the number of displays (1 or 2 in general)"
echo " mYpAsWd is a password (between 6 and 12 characters)"
sleep 2
fi
;;
esac
done
# ---- clean /etc/mtab ----
if grep -q -F 'tmpfs /newroot' /etc/mtab
then
rm -f /etc/mtab.bak
cp /etc/mtab /etc/mtab.bak
sed -i -e "/ \/newroot/d" /etc/mtab
fi
# ---- create a kernel options file ----
if [ -f /proc/config.gz ]
then
cat /proc/config.gz | gzip -d > /root/kernel-$(uname -r).conf
fi
# ---- fix inittab for serial consoles
livecd_fix_inittab
/sbin/telinit q &>/dev/null
# ---- mount tmpfs (important for backing store)
mount -t tmpfs tmpfs /tmp
}

View File

@@ -0,0 +1,69 @@
# /etc/profile: login shell setup
#
# That this file is used by any Bourne-shell derivative to setup the
# environment for login shells.
#
# Load environment settings from profile.env, which is created by
# env-update from the files in /etc/env.d
if [ -e /etc/profile.env ] ; then
. /etc/profile.env
fi
# You should override these in your ~/.bashrc (or equivalent) for per-user
# settings. For system defaults, you can add a new file in /etc/profile.d/.
export EDITOR=${EDITOR:-/bin/nano}
export PAGER=${PAGER:-/usr/bin/less}
# 077 would be more secure, but 022 is generally quite realistic
umask 022
# Set up PATH depending on whether we're root or a normal user.
# There's no real reason to exclude sbin paths from the normal user,
# but it can make tab-completion easier when they aren't in the
# user's PATH to pollute the executable namespace.
#
# It is intentional in the following line to use || instead of -o.
# This way the evaluation can be short-circuited and calling whoami is
# avoided.
if [ "$EUID" = "0" ] || [ "$USER" = "root" ] ; then
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/root/rescuebru:${ROOTPATH}"
else
PATH="/usr/local/bin:/usr/bin:/bin:/root/rescuebru:${PATH}"
fi
export PATH
unset ROOTPATH
if [ -n "${BASH_VERSION}" ] ; then
# Newer bash ebuilds include /etc/bash/bashrc which will setup PS1
# including color. We leave out color here because not all
# terminals support it.
if [ -f /etc/bash/bashrc ] ; then
# Bash login shells run only /etc/profile
# Bash non-login shells run only /etc/bash/bashrc
# Since we want to run /etc/bash/bashrc regardless, we source it
# from here. It is unfortunate that there is no way to do
# this *after* the user's .bash_profile runs (without putting
# it in the user's dot-files), but it shouldn't make any
# difference.
. /etc/bash/bashrc
else
PS1='\u@\h \w \$ '
fi
else
# Setup a bland default prompt. Since this prompt should be useable
# on color and non-color terminals, as well as shells that don't
# understand sequences such as \h, don't put anything special in it.
PS1="${USER:-$(type whoami >/dev/null && whoami)}@$(type uname >/dev/null && uname -n) \$ "
fi
for sh in /etc/profile.d/*.sh ; do
[ -r "$sh" ] && . "$sh"
done
unset sh
alias cp='cp -i'
alias mv='mv -i'
alias rm='rm -i'
alias ls='ls --color=auto'
alias ll='ls -l'
alias grep='grep --color=auto'

View File

@@ -0,0 +1,44 @@
# /etc/zsh/zprofile
# $Header: /mnt/raid/cvsroot/rescuebru/customcd/files/etc/zsh/Attic/zprofile,v 1.1.2.1.2.4 2010/12/22 19:42:04 rwright Exp $
# Load environment settings from profile.env, which is created by
# env-update from the files in /etc/env.d
if [ -e /etc/profile.env ] ; then
. /etc/profile.env
fi
# You should override these in your ~/.zprofile (or equivalent) for per-user
# settings. For system defaults, you can add a new file in /etc/profile.d/.
export EDITOR=${EDITOR:-/bin/nano}
export PAGER=${PAGER:-/usr/bin/less}
# 077 would be more secure, but 022 is generally quite realistic
umask 022
# Set up PATH depending on whether we're root or a normal user.
# There's no real reason to exclude sbin paths from the normal user,
# but it can make tab-completion easier when they aren't in the
# user's PATH to pollute the executable namespace.
#
# It is intentional in the following line to use || instead of -o.
# This way the evaluation can be short-circuited and calling whoami is
# avoided.
if [ "$EUID" = "0" ] || [ "$USER" = "root" ] ; then
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:${ROOTPATH}"
else
PATH="/usr/local/bin:/usr/bin:/bin:${PATH}"
fi
# Add /root/rescuebru and /root to all paths
PATH="${PATH}:/root/rescuebru"
PATH="${PATH}:/root"
export PATH
unset ROOTPATH
shopts=$-
setopt nullglob
for sh in /etc/profile.d/*.sh ; do
[ -r "$sh" ] && . "$sh"
done
unsetopt nullglob
set -$shopts
unset sh shopts

View File

@@ -0,0 +1,20 @@
# do not edit this file, it will be overwritten on update
ACTION=="remove", GOTO="cdrom_end"
SUBSYSTEM!="block", GOTO="cdrom_end"
KERNEL!="sr[0-9]*|xvd*", GOTO="cdrom_end"
ENV{DEVTYPE}!="disk", GOTO="cdrom_end"
# unconditionally tag device as CDROM
KERNEL=="sr[0-9]*", ENV{ID_CDROM}="1"
# media eject button pressed
ENV{DISK_EJECT_REQUEST}=="?*", RUN+="/usr/bin/eject $devnode", GOTO="cdrom_end"
# import device and media properties and lock tray to
# enable the receiving of media eject button events
IMPORT{program}="cdrom_id --lock-media $devnode"
KERNEL=="sr0", SYMLINK+="cdrom", OPTIONS+="link_priority=-100"
LABEL="cdrom_end"

View File

@@ -0,0 +1,91 @@
# do not edit this file, it will be overwritten on update
# persistent storage links: /dev/disk/{by-id,by-uuid,by-label,by-path}
# scheme based on "Linux persistent device names", 2004, Hannes Reinecke <hare@suse.de>
# forward scsi device event to corresponding block device
ACTION=="change", SUBSYSTEM=="scsi", ENV{DEVTYPE}=="scsi_device", TEST=="block", ATTR{block/*/uevent}="change"
ACTION=="remove", GOTO="persistent_storage_end"
# enable in-kernel media-presence polling
ACTION=="add", SUBSYSTEM=="module", KERNEL=="block", ATTR{parameters/events_dfl_poll_msecs}=="0", ATTR{parameters/events_dfl_poll_msecs}="2000"
ACTION=="add", ATTR{removable}=="1", ATTR{events_poll_msecs}=="-1", ATTR{events_poll_msecs}="2000"
SUBSYSTEM!="block", GOTO="persistent_storage_end"
# skip rules for inappropriate block devices
KERNEL=="fd*|mtd*|nbd*|gnbd*|btibm*|dm-*|md*|zram*", GOTO="persistent_storage_end"
# ignore partitions that span the entire disk
TEST=="whole_disk", GOTO="persistent_storage_end"
# for partitions import parent information
ENV{DEVTYPE}=="partition", IMPORT{parent}="ID_*"
# virtio-blk
KERNEL=="vd*[!0-9]", ATTRS{serial}=="?*", ENV{ID_SERIAL}="$attr{serial}", SYMLINK+="disk/by-id/virtio-$env{ID_SERIAL}"
KERNEL=="vd*[0-9]", ATTRS{serial}=="?*", ENV{ID_SERIAL}="$attr{serial}", SYMLINK+="disk/by-id/virtio-$env{ID_SERIAL}-part%n"
# ATA devices using the "scsi" subsystem
KERNEL=="sd*[!0-9]|sr*", ENV{ID_SERIAL}!="?*", SUBSYSTEMS=="scsi", ATTRS{vendor}=="ATA", IMPORT{program}="ata_id --export $devnode"
# ATA/ATAPI devices (SPC-3 or later) using the "scsi" subsystem
KERNEL=="sd*[!0-9]|sr*", ENV{ID_SERIAL}!="?*", SUBSYSTEMS=="scsi", ATTRS{type}=="5", ATTRS{scsi_level}=="[6-9]*", IMPORT{program}="ata_id --export $devnode"
# Run ata_id on non-removable USB Mass Storage (SATA/PATA disks in enclosures)
KERNEL=="sd*[!0-9]|sr*", ENV{ID_SERIAL}!="?*", ATTR{removable}=="0", SUBSYSTEMS=="usb", IMPORT{program}="ata_id --export $devnode"
# Otherwise, fall back to using usb_id for USB devices
KERNEL=="sd*[!0-9]|sr*", ENV{ID_SERIAL}!="?*", SUBSYSTEMS=="usb", IMPORT{builtin}="usb_id"
# scsi devices
KERNEL=="sd*[!0-9]|sr*", ENV{ID_SERIAL}!="?*", IMPORT{program}="scsi_id --export --whitelisted -d $devnode", ENV{ID_BUS}="scsi"
KERNEL=="cciss*", ENV{DEVTYPE}=="disk", ENV{ID_SERIAL}!="?*", IMPORT{program}="scsi_id --export --whitelisted -d $devnode", ENV{ID_BUS}="cciss"
KERNEL=="sd*|sr*|cciss*", ENV{DEVTYPE}=="disk", ENV{ID_SERIAL}=="?*", SYMLINK+="disk/by-id/$env{ID_BUS}-$env{ID_SERIAL}"
KERNEL=="sd*|cciss*", ENV{DEVTYPE}=="partition", ENV{ID_SERIAL}=="?*", SYMLINK+="disk/by-id/$env{ID_BUS}-$env{ID_SERIAL}-part%n"
# firewire
KERNEL=="sd*[!0-9]|sr*", ATTRS{ieee1394_id}=="?*", SYMLINK+="disk/by-id/ieee1394-$attr{ieee1394_id}"
KERNEL=="sd*[0-9]", ATTRS{ieee1394_id}=="?*", SYMLINK+="disk/by-id/ieee1394-$attr{ieee1394_id}-part%n"
KERNEL=="mmcblk[0-9]", SUBSYSTEMS=="mmc", ATTRS{name}=="?*", ATTRS{serial}=="?*", ENV{ID_NAME}="$attr{name}", ENV{ID_SERIAL}="$attr{serial}", SYMLINK+="disk/by-id/mmc-$env{ID_NAME}_$env{ID_SERIAL}"
KERNEL=="mmcblk[0-9]p[0-9]", ENV{ID_NAME}=="?*", ENV{ID_SERIAL}=="?*", SYMLINK+="disk/by-id/mmc-$env{ID_NAME}_$env{ID_SERIAL}-part%n"
KERNEL=="mspblk[0-9]", SUBSYSTEMS=="memstick", ATTRS{name}=="?*", ATTRS{serial}=="?*", ENV{ID_NAME}="$attr{name}", ENV{ID_SERIAL}="$attr{serial}", SYMLINK+="disk/by-id/memstick-$env{ID_NAME}_$env{ID_SERIAL}"
KERNEL=="mspblk[0-9]p[0-9]", ENV{ID_NAME}=="?*", ENV{ID_SERIAL}=="?*", SYMLINK+="disk/by-id/memstick-$env{ID_NAME}_$env{ID_SERIAL}-part%n"
# by-path (parent device path)
ENV{DEVTYPE}=="disk", DEVPATH!="*/virtual/*", IMPORT{builtin}="path_id"
ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="?*", SYMLINK+="disk/by-path/$env{ID_PATH}"
ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="?*", SYMLINK+="disk/by-path/$env{ID_PATH}-part%n"
# skip unpartitioned removable media devices from drivers which do not send "change" events
ENV{DEVTYPE}=="disk", KERNEL!="sd*|sr*", ATTR{removable}=="1", GOTO="persistent_storage_end"
# probe filesystem metadata of optical drives which have a media inserted
KERNEL=="sr*", ENV{DISK_EJECT_REQUEST}!="?*", ENV{ID_CDROM_MEDIA_TRACK_COUNT_DATA}=="?*", ENV{ID_CDROM_MEDIA_SESSION_LAST_OFFSET}=="?*", \
IMPORT{builtin}="blkid --offset=$env{ID_CDROM_MEDIA_SESSION_LAST_OFFSET}"
# single-session CDs do not have ID_CDROM_MEDIA_SESSION_LAST_OFFSET
KERNEL=="sr*", ENV{DISK_EJECT_REQUEST}!="?*", ENV{ID_CDROM_MEDIA_TRACK_COUNT_DATA}=="?*", ENV{ID_CDROM_MEDIA_SESSION_LAST_OFFSET}=="", \
IMPORT{builtin}="blkid --noraid"
# probe filesystem metadata of disks
KERNEL!="sr*", IMPORT{builtin}="blkid"
# watch metadata changes by tools closing the device after writing
KERNEL!="sr*", OPTIONS+="watch"
# by-label/by-uuid links (filesystem metadata)
ENV{ID_FS_USAGE}=="filesystem|other|crypto", ENV{ID_FS_UUID_ENC}=="?*", SYMLINK+="disk/by-uuid/$env{ID_FS_UUID_ENC}"
ENV{ID_FS_USAGE}=="filesystem|other", ENV{ID_FS_LABEL_ENC}=="?*", SYMLINK+="disk/by-label/$env{ID_FS_LABEL_ENC}"
# by-id (World Wide Name)
ENV{DEVTYPE}=="disk", ENV{ID_WWN_WITH_EXTENSION}=="?*", SYMLINK+="disk/by-id/wwn-$env{ID_WWN_WITH_EXTENSION}"
ENV{DEVTYPE}=="partition", ENV{ID_WWN_WITH_EXTENSION}=="?*", SYMLINK+="disk/by-id/wwn-$env{ID_WWN_WITH_EXTENSION}-part%n"
# by-partlabel/by-partuuid links (partition metadata)
ENV{ID_PART_ENTRY_SCHEME}=="gpt", ENV{ID_PART_ENTRY_UUID}=="?*", SYMLINK+="disk/by-partuuid/$env{ID_PART_ENTRY_UUID}"
ENV{ID_PART_ENTRY_SCHEME}=="gpt", ENV{ID_PART_ENTRY_NAME}=="?*", SYMLINK+="disk/by-partlabel/$env{ID_PART_ENTRY_NAME}"
# add symlink to GPT root disk
ENV{ID_PART_ENTRY_SCHEME}=="gpt", ENV{ID_PART_GPT_AUTO_ROOT}=="1", SYMLINK+="gpt-auto-root"
LABEL="persistent_storage_end"

View File

@@ -0,0 +1,16 @@
#!/bin/bash
# autorun1
# Rescue CD Backup & Restore Utility text client startup
# version 7.2.5
# Rod Wright 1/16/2024
# Refer to CHANGELOG file for details.
# -----------------------------------------------------------------------------
/etc/init.d/NetworkManager stop
export PATH=$PATH:/root/rescuebru
rm -f /root/.zshrc
rm -f /root/.bashrc
cp /root/zshrc.rescuebru /root/.zshrc
cp /root/bashrc.rescuebru /root/.bashrc

View File

@@ -0,0 +1,16 @@
#!/bin/bash
# autorun2
# Rescue CD Backup & Restore Utility server startup
# version 7.2.5
# Rod Wright 1/16/2024
# Refer to CHANGELOG file for details.
# -----------------------------------------------------------------------------
/etc/init.d/NetworkManager stop
export PATH=$PATH:/root/rescuebru
rm -f /root/.config/autostart/Terminal.desktop
cp /root/rbruserver.desktop /root/.config/autostart/
rm -f /root/.config/autostart/Terminal.desktop
/usr/bin/eject >/dev/null 2>&1

View File

@@ -0,0 +1,25 @@
#!/bin/bash
# autorun3
# Rescue CD Backup & Restore Utility graphical client startup
# version 7.2.5
# Rod Wright 1/16/2024
# Refer to CHANGELOG file for details.
# -----------------------------------------------------------------------------
/etc/init.d/NetworkManager stop
export PATH=$PATH:/root/rescuebru
totalmem=`free|grep Mem:|awk '{print $2}'`
if [ "$totalmem" -lt 1000000 ]; then
rm -f /root/.zshrc
rm -f /root/.bashrc
cp /root/zshrc.rescuebru /root/.zshrc
cp /root/bashrc.rescuebru /root/.bashrc
else
rm -f /root/.config/autostart/Terminal.desktop
cp /root/xrescuebru.desktop /root/.config/autostart/
rm -f /root/.config/autostart/Terminal.desktop
/usr/bin/eject >/dev/null 2>&1
fi

View File

@@ -0,0 +1,12 @@
#!/bin/bash
# autorun4
# Rescue CD Backup & Restore Utility PXE boot server startup
# version 7.2.5
# Rod Wright 1/16/2024
# Refer to CHANGELOG file for details.
# -----------------------------------------------------------------------------
/etc/init.d/NetworkManager stop
export PATH=$PATH:/root/rescuebru
/etc/init.d/pxebootsrv start

View File

@@ -0,0 +1,25 @@
#!/bin/bash
# bashrc.rbruserver
# Rescue CD Backup & Restore Utility server bash configuration
# version 7.2.5
# Rod Wright 1/16/2024
# Refer to CHANGELOG file for details.
# -----------------------------------------------------------------------------
if [ ! "$(grep nox /proc/cmdline)" ]
then
if [ -x /usr/bin/X ]
then
if [ -e /etc/startx ]
then
rm -f /etc/startx
source /etc/profile ##STARTX##STARTX su - -c startx
[ -f /etc/motd ] && cat /etc/motd
fi
fi
fi
# Start rbruserver
if [ `/usr/bin/tty` = "/dev/tty1" ]; then
/root/rescuebru/rbruserver
fi

View File

@@ -0,0 +1,28 @@
#!/bin/bash
# bashrc.rescuebru
# Rescue CD Backup & Restore Utility client bash configuration
# version 7.2.5
# Rod Wright 1/16/2024
# Refer to CHANGELOG file for details.
# -----------------------------------------------------------------------------
if [ ! "$(grep nox /proc/cmdline)" ]
then
if [ -x /usr/bin/X ]
then
if [ -e /etc/startx ]
then
rm -f /etc/startx
source /etc/profile ##STARTX##STARTX su - -c startx
[ -f /etc/motd ] && cat /etc/motd
fi
fi
fi
# Eject the CD
/usr/bin/eject >/dev/null 2>&1
# Start rescuebru
if [ `/usr/bin/tty` = "/dev/tty1" ]; then
/root/rescuebru/rescuebru
fi

View File

@@ -0,0 +1 @@
7.2.5

View File

@@ -0,0 +1,11 @@
[Desktop Entry]
Encoding=UTF-8
Version=0.9.4
Type=Application
Name=xrescuebru
Comment=
Exec=/root/rescuebru/xrbruserver.sh
OnlyShowIn=XFCE;
StartupNotify=false
Terminal=false
Hidden=false

View File

@@ -0,0 +1,438 @@
RescueBRU System - Rescue CD Backup & Restore Utility Rod Wright
CHANGELOG
########################################################################
General changes:
------------------------------------------------------------------------
02/11/2016 - 7.2.1 - Changed default startup mode from text mode to
graphical (Xorg) mode. Fixed some things that were missing from the boot
menu and re-ordered options to make more sense. Created a /mnt/usb
directory so some procedures would work correctly. Updated the RescueBRU
User Guide to reflect changes.
06/27/2018 - 7.2.2 - Updated System Rescue CD version to 5.2.2 to
provide kernel support for newer hardware.
03/19/2021 - 7.2.3 - No changes.
09/21/2021 - 7.2.4 - No changes.
01/19/2024 - 7.2.5 - Changed scripts in /etc/init.d to prevent dhcpcd
from running automatically at boot. This makes RescueBRU play nice in
networks with other DHCP servers by not unnecessarily grabbing up leases
unnecessarily. We will let rescuebru.sh acquire addresses later under
its own control.
########################################################################
rescuebru.sh:
------------------------------------------------------------------------
05/06/08 - 1.0 - Initial Release
05/09/08 - 1.1 - Added prompting for MBRs and partitions. Added
Help. Added media creation.
05/16/08 - 1.2 - Fixed bug where partition array was not being
created correctly when multiple drives were present. Added error
detection on backup and restore. Added backup media capacity
detection and warning. Added backup and restore of extended
partition information. Updated help files.
05/24/08 - 2.0 - Added support for HP CISS controller devices. Added
NFS media support.
06/05/08 - 2.1 - Added support for Adaptec I2O SCSI controller
devices. Improved client IP address deconfliction. Added support to
restore linux swap partitions. Fixed unreliable detection of
extended partitions.
06/10/08 - 2.2 - Added "-M" (--no-mbr) to PI_BACKUP_ARGS for
partimage since it was causing trouble with Adaptec I2O controller,
and we back up MBRs separately anyway.
06/12/08 - 2.3 - Added "--force" option to arguments for sfdisk
restoration to prevent failure caused by restoring existing table.
07/01/08 - 2.4 - Added line to kill off netplugd before we start,
since we don't need it and it interferes with server detection on
some machines. Added support for backing up to a local directory.
07/02/08 - 2.5 - Added a 5 second sleep after setting up a network
interface to give any network switches time to recognize and route
us properly.
07/23/08 - 2.6 - Improved Local media type for general use. Added
integration with new rbruserver script. Fixed main menu to catch
garbage user input.
08/13/08 - 3.0 - Upgraded sysresccd to version 1.0.4. Improved exit
options. Now you can exit to shell, exit and reboot, or exit and
power off. Added operation logging so it's easy to tell if something
failed. Added backup method menu. Standard is dd/sfdisk/partimage.
Verbatim is dd of whole drive, compressed and split into 2G files.
05/13/09 - 3.1 - Fixed net_setup function to stop testing interfaces
after it finds a working one. Create /var/lib/nfs/state file so nfs
startup script won't complain. Removed Adaptec i2o specific code
since sysresccd version 1.0.4 names the devices correctly. NOTE:
BACKUPS DONE WITH VERSIONS OF RESCUEBRU PRIOR TO 3.0 THAT CONTAIN
I2O DEVICES CANNOT BE RESTORED WITH VERSIONS 3.0 OR LATER. REDO
THOSE BACKUPS! Fixed bug where a failure to find a server loops you
back through the net setup code again. Removed prompts to save log
file when rebooting or powering down since anything saved in the
ramdisk will disappear anyway. Added option to view log files on
backup media.
10/22/09 - 4.0 - Added progress indicating for verbatim
backups/restores. Removed arbitrary limit to number of clients
(since it was easy to fool anyway). Added conv=sync,noerror to dd
arguments in vbbackup function to ignore disk errors and replace bad
blocks with nulls. Shortened timeouts in the network code to speed
things up a bit. Changed network interface scanning to start with
short timeouts and gradually increase them so we can work with slow
NICs, but not take too long on fast ones. Added a prompt for the
initial IP address so that multiple users can work on the same
network without IP collisions. Removed the backup media and backup
method submenus and replaced them with simple prompts to make them
less unwieldy. Moved the restore and backup processes out of the
main menu and into functions. Fixed bug that caused incorrect
behavior when "quit" was supplied as an image name. Removed prompt
to save temporary log file on exit to shell. Save temporary log by
default. Removed prompting to save a log with the backup. It's a
good idea to save the logs and sometimes it was accidentally not
saved. Fixed bug in logview function that caused weird behavior on
subsequent calls of the function. Don't delete existing backup
before starting new one, so if something goes wrong, we're not
screwed. When prompting for IP addresses, after the backup server
address, only prompt for the host byte to make entries easier.
2/16/10 - 4.1 - At end of backup, copy new backup over old one
before displaying log to avoid long delays. Detect and abort on NFS
share mount failure. In function net_setup(), ping more during
"determine ip" phase to accommodate slower hardware. In function
mbrrestore(), removed untrue statement that associated partitions
couldn't be restored. At beginning of function net_setup(), unmount
any stale NFS mounts and take down any interfaces that are already
up. Put "then" and "do" on the same line as their starting
statements so auto-indent works properly in IDE. Fixed bug where
status file wasn't getting written if $remote_dir was different than
$MEDIA_MNT_DIR. In function net_setup(), improve interface scanning
to increase the number of pings in each step and decrease the number
of steps since some slower NICs were still not coming up. In
function net_setup, changed sleeps and pings wherever link is
brought up to sleep and ping longer based on the timeout required to
find the server. This should prevent NFS mounts from failing on slow
NICs. Modified function partbackup() to save UUID info to image file
for linux swap partitions. Included static binary mkswap-uuid to
enable setting UUID on swap partitions. Modified function
partrestore() to set UUID when restoring swap if UUID info is
available, otherwise let mkswap generate one. This prevents swap
mount failure on distributions (like Ubuntu) that mount swap based
on UUID instead of device name.
2/25/10 - 5.0 - Updated System Rescue CD to version 1.3.5. Stripped
unneeded packages to get iso size down enough to run docache by
default. Added docache and lowmem as boot parameters. Edited
/bin/bashlogin and f1boot.msg to reflect new versions/dates. Added
code to mbrbackup(), partbackup(), and vbbackup() functions to save
output of fdisk -l for each drive for comparison on restore. Added
code to driveselect() and partselect() funtions to compare sizes of
original and current drives and issue warnings as required.
6/11/10 - 5.1 - Moved CHANGELOG off to a separate file since it was
getting so huge. Found that Adaptec i2o support is a moving target.
With the current kernel, it's back to /dev/i2o/hdXX. Put the i2o
specific code that I pulled out for version 3.1 back in. IF YOU HAVE
BACKUPS OF MACHINES USING ADAPTEC I2O CONTROLLERS THAT WERE DONE
SINCE VERSION 4.0, YOU WILL NEED TO MANUALLY RENAME THE FILES IN
THOSE BACKUPS TO REFLECT THE NEW DEVICE NAMES, OR JUST DO NEW
BACKUPS! Added option to select what you want to do after a
successful backup or restore (return to menu, reboot, or shut down).
Reworked dobackup() and dorestore() to remove excessive loop
nesting. Fixed bug where new backups log files were getting dumped
into the $IMAGE_PATH directory. Added the ability to abort network
scanning after the normal scan so you don't have to wait for the
long and extra long scans to complete to get back to the menu.
9/9/10 - 6.0 - Updated System Rescue CD to version 1.5.8. Set up
boot menu and autoruns to eliminate typing commands at shell
prompts. Fixed bug in rescuebru.sh netscan_timeout() where pressing
a didn't abort scan. Added scripts to rename backups when the
Adaptec i2o driver changes device names. If you get errors when
trying to restore like "device not found", run the appropriate
script on the server to fix things. Added PXE boot server
capability to rbruserver.
1/6/11 - 6.1 - Updated System Rescue CD to version 1.6.4 to get
updated tg3 driver. In rescuebru.sh, updated vbbackup() and
vbrestore() to use pv for progress indication.
11/29/11 - 6.2 - Swap partitions created with old versions of mkswap
didn't have UUIDs, so on backup, the file generated by blkid didn't
contain UUID. This caused failure on restore. Fixed the swap
creation in rescuebru.sh:partrestore() to detect this condition and
do the right thing. If aborting network scanning once, was unable to
abort it in subsequent passes. In rescuebru.sh, fixed
netscan_timeout() to unset the $nsa loop control variable at start.
Fixed some typos in isolinux.cfg.
7/3/12 - 6.3 - Added flush_input() function to drop spurious user
input between prompts. Added y_or_n() function to standardize,
simplify, and validate yes or no prompting. Removed mkswap-uuid
since new mkswap implements UUID setting. Removed ddprog since we
don't use it any more. Renamed backup methods to reflect what they
actually do. Added inline help for media type and backup method
selections. Added fsarchiver backup method. Fixed bug where USB
backup media wasn't being excluded from drive/partition selection
prompting. Fixed bug where the initial boot menu wasn't starting the
pxeboot server when option 7 was selected. Modified the build tools
to put a copy of /root/rescuebru in the root of the ISO file system
so you could see the scripts without having to boot the CD.
9/14/12 - 6.3.1 - Added check_route() function to work around slow
behavior of certain Cisco switches in setting up routes.
1/16/13 - 7.0 - Added function to display selected actions before
beginning an operation and prompt for confirmation. Also check for a
backup where nothing is selected. Previously, this would succeed,
resulting in a backup of nothing potentially overwriting an existing
backup. Added clone.sh and blank.sh command line utilities.
Integrated those two utilities into the RescueBRU menu structure.
Moved functions that have a common usage among various RescueBRU
components to a separate functions.sh file. Integrated CHANGELOGs
from the multiple utilities into this file. Fixed bug where
arguments passed in from rbruserver were not being parsed correctly
resulting in the local RAID devices not being excluded. Changed name
of functions vbbackup(), vbrestore() to ddgzbackup(), ddgzrestore()
to match the new method naming scheme. Save S.M.A.R.T. data for
drives during backup so that useful drive info may be obtained. When
backing up, save drive sizes in separate files instead of trying to
extract it from the fdisk -l output. Save partition size information
as well as drive size information. When creating directory for
backup, if directory already exists, and user elects not to
overwrite, the getimagename() function is called again instead of
just aborting out and having the user start all over. Enabled
pausing of various operations. Automatically eject the CD after
booting to rescuebru or rescuebru in xorg options. Completely
revamped the menu layout of rescuebru. Moved all program settings
(media type, backup method, and action after successful operation)
to a Settings submenu. Created a Disk Utilities submenu for cloning,
blanking, badblocks testing, and media setup. Changed the constant
menu options (help, exit) to letters to prevent having to renumber
them if new options are added in the future. Reorganized funtions to
make them easier to maintain. Standardized all menu code to case
statements using regular expressions instead of unwieldy "if then
elif then" statements with cumbersome test constructs. Updated all
help documentation to reflect changes.
1/2/2015 - 7.1.0 - Complete rewrite of rescuebru.sh. Implemented
dialog based user interface. Network configuration is now automatic
using DHCP. Changed the standard IP addressing scheme to 10.111.x.y.
Added ability to save notes and version numbers with a backup. If
overwriting a previous backup, preserve notes/logs from the existing
backup. If a notes template is present on the server, loads that
into the note edit dialog. Added image management functionality
(copy/delete/rename) that was previously only available in the
server. Backup method is now determined automatically by default for
each partition individually based on the contents. Fixed numerous
bugs. Removed scsi-i2o conversion scripts because the systems they
were written to support are no longer available to test against. If
the problem returns (can only happen with a new SystemRescueCD
version), the suggestion is just to do new backups of the affected
systems. Updated help files.
2/19/2015 - 7.1.1 - Critical bugfix and minor feature release. Fixed
bug in do_restore() where size warning code caused abort for backups
done of HP CISS devices. Added ability to specify compression levels
of backups. Changed hotkeys for help options in menus from "H" to
"?" to avoid conflicts with other menu options. Fixed bug where
smartctl output was not being parsed correctly resulting in messages
like "Previous device was: (blank)" during restore.
3/10/2015 - 7.2.0 - Updated SystemRescueCD to version 4.5.1 to make
use of new megaraid driver device support. Added support for GPT
partition tables. Added support for booting machines with UEFI BIOS.
2/11/2016 - 7.2.1 - Xorg mode is now the default mode and includes a
backup media capacity monitoring window. Modified the xrescuebru.sh
script to disable screen blanking. Validate the version input text
to prevent failure to display available backups. Fixed bug where
auto_net_setup would report no carrier where it did in face exist.
06/27/2018 - 7.2.2 - No changes.
03/19/2021 - 7.2.3 - Added support for NVMe devices.
9/21/2021 - 7.2.4 - Fixed bug in getimages() function where gpt
partition table images of NVMe devices were not being offered as
selections to restore, resulting in failed restores with new drives.
01/19/2024 - 7.2.5 - Added option to the settings menu to set the backup
server type. The options are “RescueBRU Server” (the default) and
“any DHCP server”. Also changed the auto_net_setup() function to only
attempt to get a DHCP address based on the backup server type selected
in settings. This is to prevent attempts to get an IP address from any
available DHCP server in the event that getting one from a RescueBRU
server fails. This makes RescueBRU play nice on networks that have DHCP
servers by not grabbing up leases unnecessarily. If you need to use
RescueBRU with the NFS storage type, but you dont have a dedicated
RescueBRU Server running, youll need to go into settings and explicitly
enable promiscuous DHCP by changing the backup server type. Added an
option to the settings menu to specify the remote NFS share name in case
we are using a non RescueBRU NFS server but still use the auto net
setup type to get our address.
########################################################################
rbruserver.sh:
----------------------------------------------------------------------
07/23/08 - 1.0 - Initial Release
08/12/08 - 1.1 - Added code to server_start to clean up stale client
mark files.
08/27/08 - 1.2 - Incorporated improvements to mainmenu()
04/30/09 - 1.3 - Added code to intelligently determine RAID array
members instead of hardcoding them.
05/14/09 - 1.4 - Added code to create /var/lib/nfs/state file so nfs
startup script won't complain. Added capability to view log files.
Improved exit options so they match rescuebru and are not confusing.
Added raidtest function to show RAID status on startup and with a
menu option.
10/21/09 - 1.5 - Changed raidtest function to use mdadm instead of
just cat'ing and parsing /proc/mdstat. Start server by default on
program start. Fixed bug in logview function that caused weird
behavior on subsequent calls of the function. Added ability to show
connected clients and their status.
9/7/10 - 2.0 - Add ability to start PXE boot script to act as a boot
server.
12/20/10 - 2.1 - Fixed bug in server_start that prevented network
from being brought back up after a user stop/start.
1/17/13 - 3.0 - Fixed bug where only the RAID partitions and not the
entire drive devices were being passed to rescuebru when local
backup/restore was selected. Removed functions that are duplicated
in functions.sh. Moved change information to the commom CHANGELOG
file. Consolidated the three image manipulation functions,
image_copy(), image_rename(), and image_delete() into a single
function, image_mod(). Cleaned up code structure. Changed the main
menu exit options to letters to prevent having to renumber them if
new options are added in the future. Combined image copy, rename,
and delete options into an image management submenu.
1/2/2015 - 7.1.0 - Advanced the version number to match that of
other scripts. Major rewrite of rbruserver.sh. Implemented dialog
based user interface. Network addressing is provided to clients
using DHCP. Server now uses all available interfaces in the machine,
and serves IP addresses and NFS on all. By default, only provides
DHCP responses to clients identifying themselves as "rescuebru". If
PXE boot server is running, provides responses to all clients by
necessity. Fixed bug where PXE boot server would send the server
version of the configuration instead of the client version. Added
capability to define a template for backup notes to guide users
about what information to be entered in a note. Increased RAID
stripe cache size to the max to improve RAID write performance.
2/19/2015 - 7.1.1 - Advanced the version number.
3/10/2015 - 7.2.0 - Updated SystemRescueCD to version 4.5.1 to make
use of new megaraid driver device support. Added command to kill
dhcpcd at startup since we don't need to ask somebody for an IP
address if we're a server. Added support for booting machines with
UEFI BIOS.
2/11/2016 - 7.2.1 - Server now runs in Xorg mode. Implemented a
RAID set capacity display. Implemented a fault monitoring display
and indication using the blue UID light on the server machine to
indicate a fault.
06/27/2018 - 7.2.2 - No changes.
03/19/2021 - 7.2.3 - Added support for NVMe devices.
9/21/2021 - 7.2.4 - No changes
01/19/2024 - 7.2.5 - No changes.
########################################################################
clone.sh:
------------------------------------------------------------------------
11/28/12 - 1.0 - Initial Release
1/2/2015 - 7.1.0 - Advanced the version number to match that of
other scripts.
2/19/2015 - 7.1.1 - Advanced the version number.
3/10/2015 - 7.2.0 - Updated SystemRescueCD to version 4.5.1 to make
use of new megaraid driver device support.
2/11/2016 - 7.2.1 - Changed the input and output block sizes used by
the dd command from the default (512 byte) to 4096 byte to increase
clone speed.
06/27/2018 - 7.2.2 - No changes.
03/19/2021 - 7.2.3 - No changes.
09/21/2021 - 7.2.4 - No changes.
01/19/2024 - 7.2.5 - No changes.
########################################################################
blank.sh:
------------------------------------------------------------------------
11/28/12 - 1.0 - Initial Release
1/2/2015 - 7.1.0 - Advanced the version number to match that of
other scripts.
2/19/2015 - 7.1.1 - Advanced the version number.
3/10/2015 - 7.2.0 - Updated SystemRescueCD to version 4.5.1 to make
use of new megaraid driver device support.
2/11/2016 - 7.2.1 - Changed the input and output block sizes used by
the dd command from the default (512 byte) to 4096 byte to increase
clone speed.
06/27/2018 - 7.2.2 - No changes.
03/19/2021 - 7.2.3 - No changes.
09/21/2021 - 7.2.4 - No changes.
01/19/2024 - 7.2.5 - No changes.
########################################################################
functions.sh:
------------------------------------------------------------------------
12/5/12 - 1.0 - Initial Release
1/2/2015 - 7.1.0 - Advanced the version number to match that of
other scripts. Updated existing functions to use the dialog based
user interface.
2/19/2015 - 7.1.1 - Advanced the version number.
3/10/2015 - 7.2.0 - Updated SystemRescueCD to version 4.5.1 to make
use of new megaraid driver device support. Added --time-style
parameter to the ls command in the showimages() and buildimagelist()
functions due to a change in the default time style in the newer
version of ls.
2/11/2016 - 7.2.1 - No changes.
06/27/2018 - 7.2.2 - No changes.
03/19/2021 - 7.2.3 - No changes.
09/21/2021 - 7.2.4 - No changes.
01/19/2024 - 7.2.5 - Modified the validate_text() function to validate
either a name (of say, a backup or version number) or a path (which
would need to include forward slashes). Fixed bug in getnewname() where
"NEW_IMAGE_NAME" or "lost+found" would incorrectly be accepted as the
backup image name.

View File

@@ -0,0 +1,38 @@
#!/bin/bash
# blank.sh
# Rescue CD Backup & Restore Utility device blanking utility
# version 7.2.5
# Rod Wright 1/19/2024
# Refer to CHANGELOG file for details.
# -----------------------------------------------------------------------------
PROG_NAME="blank.sh"
PROG_VERSION=7.2.5
PROG_REVISION=1
RBRU_INSTALL_PATH="/root/rescuebru"
source $RBRU_INSTALL_PATH/functions.sh
# test for required arguments
if [ "$#" -ne 1 ]; then
echo "blank.sh: Invalid number of arguments."
echo "Usage: blank <target>"
echo "target can be drive (/dev/sda) or partition"
echo "(/dev/sda1)."
echo "If target is a drive, all data including the MBR,"
echo "partition table, and any RAID signatures will be lost."
echo "If target is a partition, any filesystem on it will"
echo "be lost."
exit 1
fi
tgt_dev=$1
dd_bs=4096
# determine sizes of target
tgt_size=`blockdev --getsize64 $tgt_dev`
tgt_blocks=$(($tgt_size / $dd_bs ))
# now do the blanking
monitor "dd if=/dev/zero bs=$dd_bs count=$tgt_blocks conv=sync,noerror status=noxfer|pv -s $tgt_size|dd of=$tgt_dev bs=$dd_bs" "pausable"
exit $?

View File

@@ -0,0 +1,48 @@
#!/bin/bash
# clone.sh
# Rescue CD Backup & Restore Utility drive/partition cloning utility
# version 7.2.5
# Rod Wright 1/19/2024
# Refer to CHANGELOG file for details.
# -----------------------------------------------------------------------------
PROG_NAME="clone.sh"
PROG_VERSION=7.2.5
PROG_REVISION=1
RBRU_INSTALL_PATH="/root/rescuebru"
source $RBRU_INSTALL_PATH/functions.sh
# test for required arguments
if [ "$#" -ne 2 ]; then
echo "clone.sh: Invalid number of arguments."
echo "Usage: clone <source> <destination>"
echo "source and destination can be drives (/dev/sda) or partitions"
echo "(/dev/sda1)."
echo "Please ensure the size of the destination is equal to or"
echo "greater than the size of the source."
exit 1
fi
source_dev=$1
dest_dev=$2
dd_bs=4096
# determine sizes of devices
source_size=`blockdev --getsize64 $source_dev`
dest_size=`blockdev --getsize64 $dest_dev`
# compare sizes and warn if necessary
if [ $dest_size -lt $source_size ]; then
pv_size=$dest_size
if ! approved "WARNING: The size of the destination device seems to be smaller than the size of the source device. Continue anyway?" ; then
inform "Aborting" "3"
exit 1
fi
else
pv_size=$source_size
fi
# now do the clone
monitor "dd if=$source_dev bs=$dd_bs conv=sync,noerror status=noxfer|pv -s $pv_size|dd of=$dest_dev bs=$dd_bs" "pausable"
exit $?

View File

@@ -0,0 +1,130 @@
#!/bin/bash
# faultmonitor.sh
# Rescue CD Backup & Restore Utility fault monitoring script
# version 7.2.5
# Rod Wright 1/19/2024
# Refer to CHANGELOG file for details.
# -----------------------------------------------------------------------------
CAPACITY_WARN=90
STATUS_FILE="/root/faultstatus.txt"
function checkraid() {
# check for RAID failure
# takes one argument, a full raid device name
local device=$1
if [ "$device" != "none" ]; then
if mdadm -D $device | grep -q degraded ; then
return 1
else
return 0
fi
else
return 0
fi
}
function checksmart() {
# check for RAID member SMART failure
# takes a list of RAID partition full device names as positional parameters
for drive in $* ; do
if echo $drive|grep -q nvme ; then
nvmesmartstat=`nvme smart-log $drive|grep critical_warning|cut -d ":" -f2|sed 's/^ *//g'`
if [ $nvmesmartstat -ne 0 ]; then return 1 ;fi
else
smartctl -q silent $drive
local smartstat=$(($? & 8))
if [ $smartstat -ne 0 ]; then return 1 ;fi
fi
done
return 0
}
function checkcapacity() {
# check for RAID usage above a threshold
# takes two arguments, a RAID device and a percentage
local device=$1
local threshold=$2
if [ "$device" != "none" ]; then
local pctstrg=`df $device |grep $device|awk '{print $5}'`
local pct=${pctstrg//%}
if [ $pct -ge $threshold ] ; then
return 1
else
return 0
fi
else
return 0
fi
}
function flashuid() {
# turn flashing UID light on or off
# takes one argument, the word "on" or "off"
# determine if ipmi hardware is supported and return failure if not
if ! ipmitool chassis status >/dev/null 2>&1; then return 1 ; fi
if [ "$1" = "on" ]; then
local ipmiarg="force"
elif [ "$1" = "off" ]; then
local ipmiarg="0"
else
# invalid argument make no change and return failure
return 1
fi
ipmitool chassis identify $ipmiarg
}
function update_faultstatusfile() {
# maintain the fault status file
if [ "$raiddevname" != "none" ]; then
if [ $raidfail ]; then
local raidline="RAID Status : \033[1;31mFAIL\033[0m"
else
local raidline="RAID Status : \033[1;32mOK\033[0m"
fi
else
local raidline="RAID Status : \033[1;33mWAIT\033[0m"
fi
if [ $smartfail ]; then
local smartline="Disk Status : \033[1;31mFAIL\033[0m"
else
local smartline="Disk Status : \033[1;32mOK\033[0m"
fi
if [ "$raiddevname" != "none" ]; then
if [ $lowspace ]; then
local capline="Free Space : \033[1;31mLOW\033[0m"
else
local capline="Free Space : \033[1;32mOK\033[0m"
fi
else
local capline="Free Space : \033[1;33mWAIT\033[0m"
fi
printf "$raidline \n$smartline \n$capline \n">$STATUS_FILE
}
# generate a list of RAID component drives
for raiddrv in `cat /proc/mdstat|grep -o -e "sd[a-z]|nvme[0-9]n[0-9]"`; do
raidmembers=$raidmembers" /dev/$raiddrv"
done
unset raidfail
unset smartfail
unset lowspace
# main loop
while true ; do
# determine the RAID device name and see if it's mounted
if mount | grep -q "/dev/md" ; then
raiddevname=`mount |grep "/dev/md"|awk '{print $1}'`
else
raiddevname="none"
fi
# run the tests
if ! checkraid $raiddevname ; then raidfail=1 ; else unset raidfail ; fi
if ! checksmart $raidmembers ; then smartfail=1 ; else unset smartfail ; fi
if ! checkcapacity $raiddevname $CAPACITY_WARN ; then lowspace=1 ; else unset lowspace ; fi
if [ $raidfail -o $smartfail -o $lowspace ]; then flashuid on ; else flashuid off ; fi
update_faultstatusfile
sleep 60
done

View File

@@ -0,0 +1,679 @@
# functions.sh
# Rescue CD Backup & Restore Utility common functions
# version 7.2.5
# Rod Wright 1/19/2024
# Refer to CHANGELOG file for details.
# -----------------------------------------------------------------------------
function monitor() {
# Run a command while monitoring for user input
# Takes two arguments. The first is a string containing
# the complete command to be executed. The second is the word
# "pausable" if you would like to be able to pause or abort
# the operation.
unset pausekey
unset pausable
cmd_string=$1
if [ "$2" = "pausable" ]; then
pausable=1
dialog --sleep 4 --begin 20 5 --no-shadow \
--infobox "You may press any letter key at any time to pause the operation." 3 70
fi
eval "$cmd_string &"
cmd_pid=$!
let watching=1
let alive=1
while [[ $watching && $alive ]]; do
if ! `kill -0 $cmd_pid 2>/dev/null` ; then
unset alive
wait $cmd_pid
cmd_exit_stat=$?
fi
if [ "$pausable" = "1" ]; then read -s -n1 -t1 pausekey <&1; fi
if [ $pausekey ]; then
unset watching
kill -s STOP $cmd_pid
if approved "Operation paused. Do you want to continue?" "y"; then
dialog --sleep 4 --begin 20 5 --no-shadow \
--infobox "You may press any letter key at any time to pause the operation." 3 70
kill -s CONT $cmd_pid
let watching=1
else
kill -s CONT $cmd_pid
kill -s TERM $cmd_pid
wait $cmd_pid 2>/dev/null
return 1
fi
fi
done
return $cmd_exit_stat
}
function progreport() {
# Creates an infobox to report cumulative progress.
# Takes one argument, the text to print in box.
# If the text supplied is "" then a new report is started.
if [ -n "$1" ]; then
echo "$1">>$progfile
dialog --infobox "`tail -20 $progfile`" 24 80
else
echo "">$progfile
fi
}
function flush_input() {
# Flush spurious user input. Call this before a 'read' when you
# need to get user data. Do NOT call this if you're just trying to
# detect keystrokes.
read -t .1 -n 10000 discard
}
function approved() {
# Ask a question requiring a y or n for an answer
# takes two arguments.
# First is the text of the prompt.
# Second is the default result, "y" or "n".
# Returns 0 if answer is yes, 1 if no.
if [[ $2 = "n" ]]; then
flush_input
dialog --aspect 80 --defaultno --yesno "$1" 0 0
elif [[ $2 = "y" ]]; then
flush_input
dialog --aspect 80 --yesno "$1" 0 0
fi
return $?
}
function validate_text() {
# Ensures a string contains only allowed characters.
# Takes two arguments, the first is "name" or "path",
# the second is the string to be validated
# returns 0 if valid, 1 if not
unset chars_only
tst_strg=$2
case $1 in
"name" )
chars_regex="^[\.0-9_a-zA-Z\-]*$"
;;
"path" )
chars_regex="^[\.\/0-9_a-zA-Z\-]*$"
;;
* )
return 1
;;
esac
echo $tst_strg|grep -q -e $chars_regex
return $?
}
function operation_log() {
# Turns the operation log on or off.
# Takes one argument, the string "on" or "off".
if [ "$1" = "on" ]; then
local opfn=`echo ${operation// /_}`
OPERATION_LOG="$LOG_PATH/${opfn}_`date +%Y-%m-%d_%H%M%S`.log"
elif [ "$1" = "off" ]; then
OPERATION_LOG="/dev/null"
else
pause "You must specify \"on\" or \"off\"."
return 1
fi
}
function log_session() {
# Appends supplied text to the session log file. Argument is text to log
if [ "$LOGGING_ENABLED" -eq 1 ]; then
echo "[`date +%T`]: $1">>$SESSION_LOG
fi
}
function log_operation() {
# Appends supplied text to the operation log file. Argument is text to log
if [ "$LOGGING_ENABLED" -eq 1 ]; then
echo "[`date +%T`]: $1">>$OPERATION_LOG
fi
}
function log() {
# Logs to all three of the log types. Argument is text to log.
# The filename of the logfile is determined at the point in time
# when the variable (SESSION_LOG, etc.) is defined. So define the
# session log at program start and use the operation_log()
# function at the start and end of each operation.
log_session "$1"
log_operation "$1"
}
function contains() {
# Determine if an array contains a key or value.
# Takes two arguments. First argument is the key or value.
# Second argument is a list of elements.
# Returns 0 if array contains key or value, 1 if not.
local element
for element in "${@:2}"; do
if [ "$element" = "$1" ]; then
return 0
fi
done
return 1
}
function inform() {
# Display an informative message for a short time
# Takes two arguments, first is the text to display.
# Second is optionally the number of seconds the message stays up.
if [ $2 ]; then
secs=$2
else
secs=3
fi
dialog --sleep "$secs" --aspect 80 --infobox "$1" 0 0
}
function pause() {
# Display a message and wait for acknowledgment
# takes one optional argument, the message to display
if [ "$1" = "" ]; then
pausetxt="----- PAUSED -----"
else
pausetxt="$1"
fi
dialog --aspect 80 --msgbox "$pausetxt" 0 0
}
function showimages() {
if [ -d $IMAGE_PATH ]; then
radiotmp=`mktemp -q`
radiocoltmp=`mktemp -q`
echo "___NAME___ ___DATE___ ___SIZE___ ___VERSION___">$radiotmp
origifs=$IFS
IFS=$'\n'
# Build a list of existing images
for line in `ls -l --time-style=+%Y-%m-%d\ %H:%M --hide="lost+found" $IMAGE_PATH/|sed -e 1,1d|awk {'print $8" "$6'}`; do
IFS=$origifs
local name=`echo $line|cut -d " " -f1`
local size=$(echo `du -sh $IMAGE_PATH/$name`|cut -d " " -f1)
local version=`cat $IMAGE_PATH/$name/version.txt 2>/dev/null`
if [ "$version" = "" ]; then version="-"; fi
if [ -e $IMAGE_PATH/$name/latest_backup_date.txt ]; then
local date=`cat $IMAGE_PATH/$name/latest_backup_date.txt`
else
local date=`echo $line|cut -d " " -f2`
fi
echo "$name $date $size $version">>$radiotmp
IFS=$'\n'
done
IFS=$origifs
column -t $radiotmp>$radiocoltmp
flush_input
dialog --title "Images available on backup media" \
--exit-label "Return" \
--textbox $radiocoltmp 24 79
rm -f $radiotmp $radiocoltmp
else
if [ "$PROG_NAME" = "rescuebru.sh" ]; then
flush_input
pause "Media does not appear to be set up as backup media.\nChoose Set up backup media from the main menu."
elif [ "$PROG_NAME" = "rbruserver.sh" ]; then
flush_input
pause "Path to backup images not found."
fi
return 1
fi
rm -f $radiotmp $radiocoltmp
return 0
}
function lognoteview() {
local backupname
local logname
# Allows user to view log files saved on backup media
if [ "$CLIENT_NET_STATUS" -eq 1 ]; then
echo "is allocated and is viewing log files.">$MEDIA_MNT_DIR/$wkg_addr
fi
while true; do
# Generate a list of backups for the radiobox dialog
radiotmp=`mktemp -q`
buildimagelist
# Prompt for backup name
if ! pickimagename "view log/notes files for" "single" ; then
rm -f $radiotmp
if [ "$CLIENT_NET_STATUS" -eq 1 ]; then
echo "is allocated and idle.">$MEDIA_MNT_DIR/$wkg_addr
fi
return 0
else
backupname=$imagename
fi
rm -f $radiotmp
# Generate a list of logs and notes for the radiobox dialog
radiotmp=`mktemp -q`
tagtmp=`mktemp -q`
for tag in `ls $IMAGE_PATH/$backupname/*.log|rev|cut -d / -f1|rev`; do
echo "$tag \"off\"">>$radiotmp
done
for tag in `ls $IMAGE_PATH/$backupname/*.notes|rev|cut -d / -f1|rev`; do
echo "$tag \"off\"">>$radiotmp
done
if [ ! -s "$radiotmp" ]; then
pause "No logs or notes found for this image."
rm -f $radiotmp $tagtmp
else
# Prompt for log or note file name
if [ `wc -l $radiotmp|cut -d " " -f1` -eq 1 ]; then
lognotename=`cat $radiotmp|cut -d " " -f1`
if approved "Only one log/notes file found. Select Yes to view that or No to return to the previous menu." "y"; then
# Show the log or notes file
flush_input
dialog --title $lognotename --textbox $IMAGE_PATH/$backupname/$lognotename 25 80
else
rm -f $radiotmp $tagtmp
if [ "$CLIENT_NET_STATUS" -eq 1 ]; then
echo "is allocated and idle.">$MEDIA_MNT_DIR/$wkg_addr
fi
return 0
fi
else
flush_input
while dialog --no-items --cancel-label "Return" --radiolist "Select log/notes file to view" \
20 60 20 `cat $radiotmp` 2>$tagtmp ; do
lognotename=`cat $tagtmp`
# Show the log or notes file
flush_input
dialog --title $lognotename --textbox $IMAGE_PATH/$backupname/$lognotename 25 80
done
fi
rm -f $radiotmp $tagtmp
fi
done
}
function getbackupname() {
# Get imagename for backup
radiotmp=`mktemp -q`
# Insert an option to create a new name
echo "\"NEW_IMAGE_NAME\" \"---------- ------ -----\" \"on\"">$radiotmp
buildimagelist
imgcount=`wc -l $radiotmp|cut -d " " -f1`
while [ ! $iname_confirmed ]; do
if [ $imgcount -eq 1 ]; then
# new image name is the only option
if ! getnewname ; then
log "Unable to get new image name."
rm -f $radiotmp
return 1
else
iname_confirmed=1
fi
else
# show the radiolist
if ! pickimagename "backup" "single"; then
log "Unable to get image name."
rm -f $radiotmp
return 1
else
iname_confirmed=1
fi
fi
if [ "$imagename" = "NEW_IMAGE_NAME" ]; then
# NEW_IMAGE_NAME was chosen from list
if ! getnewname ; then
log "Unable to get new image name."
rm -f $radiotmp
return 1
else
iname_confirmed=1
fi
fi
# test imagename for uniqueness and ask what to do
if [ -d $IMAGE_PATH/$imagename ]; then
overwrite_confirm
case $? in
1 )
unset iname_confirmed
;;
2 )
iname_confirmed=1
imgovr=1
rm -f $ovrchoicetmp
rm -f $radiotmp
;;
* )
unset iname_confirmed
rm -f $radiotmp
return 1
;;
esac
fi
done
rm -f $radiotmp
return 0
}
function getrestorename() {
# Get imagename for restore
radiotmp=`mktemp -q`
buildimagelist
imgcount=`wc -l $radiotmp|cut -d " " -f1`
if [ $imgcount -eq 1 ]; then
# only one image found
imagename=`cat $radiotmp|cut -d " " -f1|tr -d '"'`
pause "$imagename was the only image found. Selecting that to restore."
rm -f $radiotmp
return 0
else
if ! pickimagename "restore" "single"; then
rm -f $radiotmp
return 1
fi
fi
}
function getmodnames() {
# Get source and/or destination image names
# Parameter is "copy", "rename", or "delete"
# get existing image name
radiotmp=`mktemp -q`
buildimagelist
imgcount=`wc -l $radiotmp|cut -d " " -f1`
if [ $imgcount -eq 0 ]; then
# no images found
pause "No images found."
log "No images found."
rm -f $radiotmp
return 1
elif [ $imgcount -eq 1 ]; then
# only one image found
srcimagename=`cat $radiotmp|cut -d " " -f1|tr -d '"'`
pause "$srcimagename was the only image found. Selecting that to $1."
rm -f $radiotmp
else
# more than one image found
if [ "$1" = "delete" ]; then
pickcmd="pickimagename $1 multiple"
else
pickcmd="pickimagename $1 single"
fi
if ! $pickcmd ; then
rm -f $radiotmp
return 1
else
srcimagename=$imagename
fi
fi
if [ "$1" = "copy" -o "$1" = "rename" ]; then
# get destination image name
unset imagename
if ! getnewname ; then
pause "Unable to get new image name."
log "Unable to get new image name."
return 1
elif [ -d $IMAGE_PATH/$imagename ]; then
# test imagename for uniqueness and ask what to do
overwrite_confirm
case $1 in
0 )
unset iname_confirmed
inform "Overwrite confirmation cancelled."
return 1
;;
1 )
unset iname_confirmed
;;
2 )
destimagename=$imagename
iname_confirmed=1
imgovr=1
return 0
;;
esac
else
destimagename=$imagename
iname_confirmed=1
imgovr=1
return 0
fi
fi
}
function overwrite_confirm() {
# Get confirmation to overwrite an image
# Returns 1 to select a new name, 2 to overwrite existing, or something
# else to just cancel.
ovrchoicetmp=`mktemp -q`
dialog --no-tags --menu "You have selected an existing image name." 9 60 9 \
"1" "Return to image selection and enter a new name" \
"2" "Overwrite existing image (if operation successful)" 2>$ovrchoicetmp
local retval=`cat $ovrchoicetmp`
rm -f $ovrchoicetmp
return $retval
}
function pickimagename() {
# Choose a new image name(s) from a radiolist or checklist dialog
# $radiotmp list file must already exist using buildimagelist()
# takes two arguments. First is operation to be performed.
# Second is "single" or "multiple".
radiocoltmp=`mktemp -q`
selectiontmp=`mktemp -q`
column -t $radiotmp>$radiocoltmp
local dialog_script=`mktemp -q`
if [ "$2" = "single" ]; then
local listtype="--radiolist"
local noun="name"
elif [ "$2" = "multiple" ]; then
local listtype="--checklist"
local noun="names"
else
pause "ERROR in pickimagename(). Must specify single or multiple."
rm -f $radiotmp $radiocoltmp $selectiontmp $dialog_script
return 1
fi
echo "dialog --cancel-label \"Return\" $listtype \"Select image $noun to $1\" 25 80 25 `cat $radiocoltmp|tr '\n' ' '` 2>$selectiontmp">$dialog_script
if ! bash $dialog_script ; then
rm -f $radiotmp $radiocoltmp $selectiontmp $dialog_script
return 1
fi
imagename=`cat $selectiontmp`
rm -f $radiocoltmp $selectiontmp $dialog_script
return 0
}
function getnewname() {
# Prompt for a new image name
local iname_invalid=1
while [ $iname_invalid ]; do
# Prompt for new image name
nametmp=`mktemp -q`
if dialog --inputbox "Please enter new image name" \
8 50 "$imagename" 2>$nametmp ; then
imagename=`cat $nametmp`
if ! validate_text name $imagename; then
pause "Image name contains invalid characters. Valid characters are upper and lowercase letters, numbers, underscore, and dash. Try again." 0 0
elif [ "$imagename" = "" ]; then
pause "Image name cannot be blank. \nTry again."
elif [ "$imagename" = "NEW_IMAGE_NAME" ]; then
pause "\"NEW_IMAGE_NAME\" is not a valid image name. \nChoose another."
elif [ "$imagename" = "lost+found" ]; then
pause "\"lost+found\" is not a valid image name. \nChoose another."
else
unset iname_invalid
rm -f $nametmp
fi
else
inform "Image name entry aborted."
rm -f $nametmp
unset imagename
return 1
fi
done
log "New image name is $imagename"
return 0
}
function buildimagelist() {
# Create a file containing a list of existing images with info
if [ ! -e $radiotmp ]; then
radiotmp=`mktemp -q`
fi
origifs=$IFS
IFS=$'\n'
for line in `ls --time-style=+%Y-%m-%d\ %H:%M --hide="lost+found" -l $IMAGE_PATH/|sed -e 1,1d|awk {'print $8" "$6'}`; do
IFS=$origifs
local name=`echo $line|cut -d " " -f1`
local size=$(echo `du -sh $IMAGE_PATH/$name`|cut -d " " -f1)
local version=`cat $IMAGE_PATH/$name/version.txt 2>/dev/null`
if [ "$version" = "" ]; then version="-"; fi
if [ -e $IMAGE_PATH/$name/latest_backup_date.txt ]; then
local bdate=`cat $IMAGE_PATH/$name/latest_backup_date.txt`
else
local bdate=`echo $line|cut -d " " -f2`
fi
local tag="$name"
local item="$bdate $size $version"
local status="off"
echo "\"$tag\" \"$item\" \"$status\"">>$radiotmp
IFS=$'\n'
done
IFS=$origifs
}
function getimagename() {
# Dispatcher function to get image name(s) for an operation
# parameter is "backup" or "restore" or "copy" or "rename" or "delete"
unset imgovr
while [ ! $iname_confirmed ]; do
case $1 in
"backup" )
getbackupname
return $?
;;
"restore" )
getrestorename
return $?
;;
"copy" | "rename" | "delete" )
getmodnames "$1"
return $?
;;
* )
pause "${FUNCNAME[@]} :Invalid parameter passed to getimagename()."
return 1
;;
esac
done
}
function shutdown_proc() {
# Manage shutdown or reboot
# Takes one argument, "shutdown" or "reboot"
# Returns 1 on abort or invalid option.
case "$1" in
"reboot" )
warntxt="REBOOT"
cmdtxt="reboot"
abrttxt="Reboot"
;;
"shutdown" )
warntxt="SHUTDOWN"
cmdtxt="poweroff"
abrttxt="Shutdown"
;;
* )
inform "Invalid shutdown option. Aborting." "4"
return 1
;;
esac
flush_input
if dialog --no-cancel --pause "$warntxt IN PROGRESS. Press <Esc> to abort or <Enter> to confirm." \
10 70 30 ; then
if cleanup ; then
inform "Starting $warntxt now." "1"
reset
$cmdtxt
else
pause "$abrttxt could not be completed."
return 1
fi
else
inform "$abrttxt aborted"
return 1
fi
}
function image_mod {
while true; do
# Show modification menu
imtmp=`mktemp -q`
if dialog --no-cancel \
--title "IMAGE MANAGEMENT" \
--menu "Please enter choice:" 11 50 6 \
"1" "Copy an image" \
"2" "Rename an image" \
"3" "Delete one or more images" \
"M" "Return to main menu" 2>$imtmp ; then
imchoice=`cat $imtmp`
rm -f $imtmp
case $imchoice in
"M" )
return 0
;;
3 )
mod_type="delete"
mod_cmd="rm -rf "
;;
2 )
mod_type="rename"
mod_cmd="mv "
;;
1 )
mod_type="copy"
mod_cmd="cp -R "
;;
esac
# Get source and/or destination image names
unset srcimagename destimagename imagename
if getmodnames "$mod_type" ; then
# srcimagename, destimagename for copy or rename
# srcimagename for delete
if [ "$mod_type" = "copy" -o "$mod_type" = "rename" ]; then
inform "$mod_type in progress. Please wait..."
if $mod_cmd $IMAGE_PATH/$srcimagename $IMAGE_PATH/$destimagename ; then
inform "$mod_type succeeded."
else
pause "$mod_type failed."
fi
elif [ "$mod_type" = "delete" ]; then
unset delfail
if approved "WARNING! You are about to permanently delete the following image(s):\n$srcimagename\nAre you sure?" "n"; then
inform "$mod_type in progress. Please wait..."
for delimg in $srcimagename; do
if ! $mod_cmd $IMAGE_PATH/$delimg ; then
delfail="$delfail $delimg"
fi
done
if [ $delfail ]; then
pause "The following images could not be deleted:\n$delfail"
else
inform "$mod_type succeeded."
fi
else
inform "Image deletion aborted."
fi
else
pause "An invalid modification type was specified."
fi
else
pause "Couldn't get image name to $mod_type."
fi
else
inform "Image modification canceled."
return 1
fi
done
}

View File

@@ -0,0 +1,846 @@
#!/bin/bash
# rbruserver.sh
# Rescue CD Backup & Restore Utility Server Script
# version 7.2.5
# Rod Wright 1/19/2024
# Refer to CHANGELOG file for details.
# -----------------------------------------------------------------------------
PROG_NAME="rbruserver.sh"
PROG_VERSION=7.2.5
RBRU_INSTALL_PATH="/root/rescuebru"
source $RBRU_INSTALL_PATH/functions.sh
RAID_MEMBERS=""
RAID_MNT_PT="/mnt/rescuebru"
IMAGE_PATH="$RAID_MNT_PT/rescuebru-backups"
NET_ADDR="10.111."
EXPRT_ARGS="*(rw,no_root_squash,no_subtree_check,fsid=1)"
SVR_STAT=0
PXE_STAT=0
NET_STAT=0
LOGGING_ENABLED=0
CLIENT_NET_STATUS=0
NOTES_TEMPLATE=$RAID_MNT_PT/notes_template.txt
TRUE=1
FALSE=0
function editnotestemplate {
# Edit the template for notes where rescuebru client expects it
templatetext=`mktemp -q`
touch $NOTES_TEMPLATE
if dialog --title "Notes Template" \
--backtitle "Edit template then Tab to <Save> or <Cancel> and press enter." \
--ok-label "Save" \
--editbox $NOTES_TEMPLATE 20 80 2>$templatetext ; then
cp -f $templatetext $NOTES_TEMPLATE
else
pause "Couldn't edit notes template."
rm -f $templatetext
fi
}
function clientstatus {
# show connected clients and their status
if client_files=`ls $RAID_MNT_PT/10.* 2>/dev/null` ; then
cstmp=`mktemp -q`
for cfname in $client_files; do
# see if the client still responds
client_addr=`basename $cfname`
if ! ping -q -c3 $client_addr 1>/dev/null 2>&1 ; then
echo "$client_addr is allocated but not responding. Mark file will be removed on next server stop.">>$cstmp
else
echo "$client_addr `cat $cfname`">>$cstmp
fi
done
dialog --title "Client Status" --aspect 80 --msgbox "$(cat $cstmp)" 0 0
else
inform "No connected clients."
fi
rm -f $cstmp
return 0
}
function raidtest {
# Show RAID status
# Takes one argument, the string "inform" or "pause" that determines if it waits for acknowledgement
$1 "`mdadm -D $raid_dev |awk '/\/dev\/md|Array Size|Dev Size|Devices|State|\/dev\/sd|\/dev\/nvme/ {print}'`" "6"
return 0
}
function mainmenu {
# Show the main menu
mmtemp=`mktemp -q`
if [ "$SVR_STAT" = 0 ]; then
svr_stat_txt="Start server"
else
svr_stat_txt="Stop Server"
fi
if [ "$PXE_STAT" = 0 ]; then
pxe_stat_txt="Start the PXE boot server"
else
pxe_stat_txt="Stop the PXE boot server"
fi
dialog --clear --no-cancel \
--title "RescueBRU Server Main Menu"\
--menu "Welcome to Rescue CD Backup & Restore Server
__ Version $PROG_VERSION __
Please enter choice:" 23 50 23 \
"1" "$svr_stat_txt" \
"2" "Show backups available on media" \
"3" "Show storage capacity" \
"4" "Show RAID status" \
"5" "Show client status" \
"6" "Image management" \
"7" "$pxe_stat_txt" \
"8" "Run RescueBru (for local backup/restore)" \
"9" "View logs or notes" \
"10" "Edit notes template" \
"S" "Exit to shell" \
"R" "Exit and reboot" \
"P" "Exit and power down" 2> $mmtemp
mainmc=`cat $mmtemp`
rm -f $mmtemp
return 0
}
function server_start {
#clean up stale client mark files
for cmfile in `ls $RAID_MNT_PT|grep 10.`; do
rm -f $RAID_MNT_PT/$cmfile
done
# kill netplugd to keep it from interfering
killall netplugd >/dev/null 2>&1
# Since sysresccd-1.0.4, we have to manually start nfs
if ! /etc/init.d/nfs start >/dev/null 2>&1 ; then
pause "NFS service failed to start."
return 1
fi
sleep 2
# Bring up the network
# Build array of interfaces
ifname=( )
for nif in `cat /proc/net/dev|grep eth|cut -d : -f1`; do
ifname=( ${ifname[@]} $nif )
done
if [ "$NET_STAT" -eq 1 ]; then
inform "Network is already up"
else
inform "Bringing up the networks..."
ifidx=1
for nif in ${ifname[@]} ; do
inform "$nif as $NET_ADDR$ifidx.1" "1"
ifconfig $nif $NET_ADDR$ifidx.1 netmask 255.255.255.0
let "ifidx += 1"
done
sleep 2
inform "Starting DHCP server..."
cp /etc/dhcp/dhcpd.conf.rbruserver /etc/dhcp/dhcpd.conf
if ! /etc/init.d/dhcpd restart >/dev/null 2>&1 ; then
pause "DHCP server failed to start."
return 1
fi
sleep 2
NET_STAT=1
fi
# NFS export the RAID set
inform "Exporting the RAID set to NFS clients..."
if ! exportfs -r >/dev/null 2>&1 ; then
pause "An error was encountered while exporting the RAID set."
return 1
fi
sleep 5
SVR_STAT=1
}
function server_stop {
# Check to see if all clients have exited
if ls $RAID_MNT_PT |grep -q 10. ; then
if ! approved "It appears that not all clients have exited. Stopping server now may cause client or server lockups, corrupt backups, or other problems. Do you want to stop the server anyway?" "n"; then
return 1
fi
fi
# Un-export the RAID set
# exportfs -u \*:/mnt/rescuebru
# Turn off nfs
inform "Stopping NFS..."
if ! /etc/init.d/nfs stop >/dev/null 2>&1 ; then
inform "Could not stop NFS."
fi
# Turn off dhcpd
inform "Stopping DHCP server..."
if ! /etc/init.d/dhcpd stop >/dev/null 2>&1 ; then
inform "Could not stop DHCP server."
fi
rm -f /etc/dhcp/dhcpd.conf
# Bring down the networks
inform "Bringing down the networks..."
for nif in ${ifname[@]} ; do
inform "$nif ..." "1"
ifconfig $nif 0.0.0.0
ifconfig $nif down
done
NET_STAT=0
# Clean up IP mark files
rm -f $RAID_MNT_PT/10.* >/dev/null 2>&1
SVR_STAT=0
return 0
}
function show_usage {
local total=`df -h $RAID_MNT_PT|grep $RAID_MNT_PT|awk '{print $2}'`
local used=`df -h $RAID_MNT_PT|grep $RAID_MNT_PT|awk '{print $3}'`
local available=`df -h $RAID_MNT_PT|grep $RAID_MNT_PT|awk '{print $4}'`
local percentage=`df -h $RAID_MNT_PT|grep $RAID_MNT_PT|awk '{print $5}'`
pause "Total capacity: $total\nUsed: $used\nAvailable: $available\nPercent usage: $percentage"
}
function cleanup() {
# Perform cleanup actions prior to exit
if [ "$SVR_STAT" -eq 1 ]; then
if server_stop ; then
if mount|grep -q $RAID_MNT_PT ; then
umount $RAID_MNT_PT
sleep 2
fi
return 0
else
return 1
fi
else
if mount|grep -q $RAID_MNT_PT ; then
umount $RAID_MNT_PT
sleep 2
fi
return 0
fi
}
function pxe_start() {
# Start the PXE boot server
if [ ! -d /tftpboot/pxelinux.cfg ]; then
mkdir -p /tftpboot/pxelinux.cfg
fi
if [ ! -f /tftpboot/pxelinux.0 ]; then
cp /usr/share/syslinux/pxelinux.0 /tftpboot/
fi
if [ -f /tftpboot/pxelinux.cfg/default.bak ]; then
rm -f /tftpboot/pxelinux.cfg/default.bak
fi
if [ -f /tftpboot/pxelinux.cfg/default ]; then
mv /tftpboot/pxelinux.cfg/default /tftpboot/pxelinux.cfg/default.bak
fi
cp --remove-destination /livemnt/boot/???linux/{*msg,*c32,*.0,memdisk,netboot} /tftpboot/
cp --remove-destination /livemnt/boot/???linux/???linux.cfg.pxeclient /tftpboot/pxelinux.cfg/default
touch /etc/exports
sed -i -e 's!^/tftpboot!#/tftpboot!g' /etc/exports
echo "/tftpboot *(fsid=0,ro,no_subtree_check,all_squash,insecure,anonuid=1000,anongid=1000)" >> /etc/exports
exportfs -r
rm -f /etc/dhcp/dhcpd.conf
cp /etc/dhcp/dhcpd.conf.rbruserver.pxeboot /etc/dhcp/dhcpd.conf
if ! /etc/init.d/dhcpd restart >/tmp/dhcpdrestart.log 2>&1; then
pause "Unable to restart DHCP server. Aborting."
return 1
fi
if ! /etc/init.d/thttpd restart >/tmp/thttpdrestart.log 2>&1; then
pause "Unable to restart thttp server. Aborting."
return 1
fi
if ! /etc/init.d/in.tftpd restart >/tmp/tftpdrestart.log 2>&1; then
pause "Unable to restart tftp server. Aborting."
return 1
fi
return 0
}
function pxe_stop() {
# Stop the PXE boot server
rm -f /etc/dhcp/dhcpd.conf
cp /etc/dhcp/dhcpd.conf.rbruserver /etc/dhcp/dhcpd.conf
if ! /etc/init.d/dhcpd restart >/tmp/dhcpdrestart.log 2>&1; then
pause "Unable to restart DHCP server. Aborting."
return 1
fi
if ! /etc/init.d/thttpd stop >/tmp/thttpdstop.log 2>&1; then
pause "Unable to stop thttp server. Aborting."
return 1
fi
if ! /etc/init.d/in.tftpd stop >/tmp/tftpdstop.log 2>&1; then
pause "Unable to stop tftp server. Aborting."
return 1
fi
return 0
}
function createraid() {
# Creates a RAID set from existing drives
# Build an array of existing drives
declare -A drives
for rdrive in `ls /dev/sd? /dev/nvme?n?` ; do
rdrive_bytes=`fdisk -l $rdrive|grep $rdrive:|egrep -oe "[0-9]+ bytes"|egrep -oe "[0-9]+"`
drives[$rdrive]=$rdrive_bytes
done
# Prompt for drives to use
prompttext="Select drives you would like to configure as RAID members"
# Generate an array of devices for the list dialog
local listitems=( )
tagtmp=`mktemp -q`
for dev in `echo ${!drives[@]}|tr " " "\n"|sort|tr "\n" " "` ; do
drivegb=$(( ${drives[$dev]} / 1073741824 ))
listitems+=( "$dev" "$drivegb Gb" "off" )
done
# Select devices
declare -A selraiddevs
unset finished
flush_input
while [ ! $finished ] ; do
if ! dialog --checklist "$prompttext" 20 60 20 "${listitems[@]}" 2>$tagtmp ; then
inform "Device selection canceled." "3"
rm -f $tagtmp
return 1
fi
for devname in `cat $tagtmp` ; do
selraiddevs[$devname]="${drives[$devname]}"
done
local finished=1
if [ ${#selraiddevs[@]} -eq 0 ]; then
pause "You didn't select any devices. If this was your intent, press enter to return to the selection list and select Cancel."
unset finished
fi
done
rm -f $tagtmp
# Determine possible RAID levels
case ${#selraiddevs[@]} in
1 )
# single disk RAID0 is only option
raidlvlopts="0"
;;
2 )
# options are RAID0 or RAID1
raidlvlopts="0 1"
;;
* )
# options are RAID0, RAID1, or RAID5
raidlvlopts="0 1 5"
;;
esac
# Choose configuration
local lvlitems=( )
tagtmp=`mktemp -q`
for level in $raidlvlopts ; do
if [ "$level" = "0" ]; then
# size is capacity of smallest selected device * number of selected devices
smallestcap=$(printf "%d\n" ${selraiddevs[@]} | sort -rn | tail -n1)
numdrives=${#selraiddevs[@]}
let "totalbytes=smallestcap*numdrives"
totalgb=$(( $totalbytes / 1073741824 ))
lvlitems+=( "$level" "striped RAID no parity, $totalgb Gb, NO REDUNDANCY" "off" )
fi
if [ "$level" = "1" ]; then
# size is capacity of smallest selected device
totalbytes=$(printf "%d\n" ${selraiddevs[@]} | sort -rn | tail -n1)
totalgb=$(( $totalbytes / 1073741824 ))
lvlitems+=( "$level" "mirrored RAID, $totalgb Gb, fault tolerant" "off" )
fi
if [ "$level" = "5" ]; then
# size is capacity of smallest selected device * number of selected devices - capacity of smallest selected device
smallestcap=$(printf "%d\n" ${selraiddevs[@]} | sort -rn | tail -n1)
numdrives=${#selraiddevs[@]}
let "totalbytes=smallestcap*numdrives-smallestcap"
totalgb=$(( $totalbytes / 1073741824 ))
lvlitems+=( "$level" "striped RAID with parity, $totalgb Gb, fault tolerant" "off" )
fi
done
prompttext="Select desired RAID level"
tagtmp=`mktemp -q`
# Select level
unset finished
flush_input
while [ ! $finished ] ; do
if ! dialog --radiolist "$prompttext" 20 60 20 "${lvlitems[@]}" 2>$tagtmp ; then
inform "Level selection canceled."
rm -f $tagtmp
return 1
fi
sellevel=`cat $tagtmp`
finished=1
done
rm -f $tagtmp
# Confirm data destruction
if ! approved "WARNING! All existing data on the devices you selected will be destroyed. Proceed?" "n"; then
inform "RAID creation cancelled."
return 1
fi
# Remove any existing partitions and RAID metadata
inform "Clearing partition tables and old RAID metadata" "1"
newraidparts=( )
for rdevice in ${!selraiddevs[@]} ; do
sgdisk -Z $rdevice >/dev/null 2>&1
dd if=/dev/zero of=$rdevice bs=1024k count=2000 >/dev/null 2>&1
dd if=/dev/zero of=$rdevice bs=512 count=2048 seek=$((`blockdev --getsz $rdevice` -2048)) >/dev/null 2>&1
if echo $rdevice | grep -q sd ; then
newraidparts+=( "$rdevice""1" )
elif echo $rdevice | grep -q nvme ; then
newraidparts+=( "$rdevice""p1" )
fi
done
# Create a single GPT partition using entire drive for each selected drive
inform "Creating new partition tables" "1"
for rdevice in ${!selraiddevs[@]} ; do
parted -s $rdevice mklabel gpt
parted -s $rdevice mkpart primary ext2 0% 100%
parted -s $rdevice set 1 raid on
sleep 2
partprobe $rdevice
done
# Create RAID set of selected level and create filesystem.
inform "Creating RAID set" "1"
case $sellevel in
0 )
# Create raid 0. Use force if single drive.
if [[ ${#newraidparts[@]} == 1 ]]; then
if ! mdadm --create /dev/md0 --quiet --level=0 --force --raid-devices=1 ${newraidparts[@]} ; then
pause "RAID set creation failed."
return 1
else
echo "32768" > /sys/block/md0/md/stripe_cache_size
fi
else
if ! mdadm --create /dev/md0 --quiet --level=0 --raid-devices=${#newraidparts[@]} ${newraidparts[@]} ; then
pause "RAID set creation failed."
return 1
else
echo "32768" > /sys/block/md0/md/stripe_cache_size
fi
fi
sleep 3
# Create filesystem
if ! mkfs.ext4 -b 4096 -m .1 /dev/md0 | dialog --progressbox "Creating filesystem. This make take a while..." 24 80 ; then
pause "Filesystem creation failed."
return 1
fi
if [ ! -d "$RAID_MNT_PT" ]; then
mkdir $RAID_MNT_PT
fi
inform "Mounting RAID set and creating new image path..."
mount /dev/md0 $RAID_MNT_PT
sleep 2
mkdir $IMAGE_PATH;;
1 )
# Create raid 1
if ! mdadm --create /dev/md0 --quiet --level=1 --raid-devices=${#newraidparts[@]} ${newraidparts[@]} ; then
pause "RAID set creation failed."
return 1
else
echo "32768" > /sys/block/md0/md/stripe_cache_size
fi
sleep 3
# Create filesystem
if ! mkfs.ext4 -b 4096 -m .1 /dev/md0| dialog --progressbox "Creating filesystem. This make take a while..." 24 80 ; then
pause "Filesystem creation failed."
return 1
fi
if [ ! -d "$RAID_MNT_PT" ]; then
mkdir $RAID_MNT_PT
fi
inform "Mounting RAID set and creating new image path..."
mount /dev/md0 $RAID_MNT_PT
sleep 2
mkdir $IMAGE_PATH
;;
5 )
# Create raid 5
if ! mdadm --create /dev/md0 --quiet --level=5 --raid-devices=${#newraidparts[@]} ${newraidparts[@]} ; then
pause "RAID set creation failed."
return 1
else
echo "32768" > /sys/block/md0/md/stripe_cache_size
fi
sleep 3
# Create filesystem
if ! mkfs.ext4 -b 4096 -m .1 -E stride=128,stripe-width=$((128*(${#newraidparts[@]}-1))) /dev/md0 | dialog --progressbox "Creating filesystem. This make take a while..." 24 80 ; then
pause "Filesystem creation failed."
return 1
fi
if [ ! -d "$RAID_MNT_PT" ]; then
mkdir $RAID_MNT_PT
fi
inform "Mounting RAID set and creating new image path..."
mount /dev/md0 $RAID_MNT_PT
sleep 2
mkdir $IMAGE_PATH
;;
* )
# ?
pause "Invalid RAID level. RAID creation failed."
return 1
;;
esac
return 0
}
function export() {
# Export backups to other media
pause "the export() function would run now."
# Select export media
if ! iedevselect ; then
pause "Couldn't select export media."
return 1
fi
# we now have ie_media_type, ie_media_dev, ie_media_cap
# Select images to export
buildimagelist
imgcount=`wc -l $radiotmp|cut -d " " -f1`
if [ $imgcount -eq 1 ]; then
# only one image found
imagename=`cat $radiotmp|cut -d " " -f1|tr -d '"'`
pause "$imagename was the only image found. Selecting that to export."
rm -f $radiotmp
return 0
else
if ! pickimagename "export" "multiple"; then
rm -f $radiotmp
pause "Couldn't select images to export."
return 1
fi
fi
# we now have imagename
if [ "$ie_media_type" = "optical" ]; then
for expimage in $imagename ; do
imagesz=$(du $IMAGE_PATH/$expimage | awk '{print $1}')
done
fi
# Determine total size of images to export (for non-optical media)
tcap=0
for expimage in $imagename ; do
imagesz=$(du $IMAGE_PATH/$expimage | awk '{print $1}')
tcap=$(echo "$tcap + $imagesz"|bc)
done
# we now have total required size in tcap
if [ "$ie_media_type" = "optical" ]; then
numdiscs=$(echo "fd=$tcap/$ie_media_cap;scale=0;fd/1+1"|bc)
fi
}
function iedevselect() {
# Prompt user to select export or import media type and device. Mount
# device if it's not optical media.
# Takes one argument, "import" or "export".
# Sets variables, ie_media_type, ie_media_dev, ie_media_cap.
ie_op=$1
iemttemp=`mktemp -q`
while true ; do
if ! dialog --menu "Select $ie_op media type" 12 40 8 \
"O" "Optical" \
"U" "USB" \
"L" "Local" \
"?" "import/export help" 2> $iemttemp ; then
rm -f $iemttemp
return 0
else
iemt=`cat $iemttemp`
rm -f $iemttemp
fi
case $iemt in
"O" )
ie_media_type="optical"
log "$ie_op media type set to $media_type."
unset ieoptdrive
for optdrive in `ls /dev/sr{0,1} 2>/dev/null`; do
if ! mount|grep -q $optdrive ; then ieoptdrive=$optdrive; fi
done
if [ ! $ieoptdrive ]; then
pause "No usable optical drive found."
return 1
fi
ie_media_dev=$ieoptdrive
if [ "$ie_op" = "export" ]; then
omttemp=`mktemp -q`
if ! dialog --menu "Select optical media type" 12 40 8 \
"1" "700MB CD-R" \
"2" "4.3GB DVD+R" \
"3" "7.9GB DVD+R DL" \
"4" "22.5GB BD-R" \
"5" "46.5GB BD-R DL" 2> $omttemp ; then
rm -f $omttemp
return 0
else
omt=`cat $omttemp`
rm -f $omttemp
fi
case $omt in
1 ) ie_media_cap=$(echo "700*1024"|bc) ;;
2 ) ie_media_cap=$(echo "4.3*1024*1024"|bc) ;;
3 ) ie_media_cap=$(echo "7.9*1024*1024"|bc) ;;
4 ) ie_media_cap=$(echo "22.5*1024*1024"|bc) ;;
5 ) ie_media_cap=$(echo "46.5*1024*1024"|bc) ;;
* ) ie_media_cap=0 ;;
esac
fi
return 0
;;
"U" )
ie_media_type="USB"
log "$ie_op media type set to $media_type."
local infotext="Searching for USB drive"
flush_input
searching=1
while [ $searching ]; do
infotext="$infotext ."
dialog --begin 3 5 --infobox "Plug in USB drive now or press any key to abort. If drive is already plugged in, and is not detected, unplug it, wait a few seconds, and plug it in again." 0 0 \
--and-widget \
--begin 10 5 --sleep 1 --infobox "$infotext" 14 70
if read -s -n1 -t1 kp <&1 ; then
pause "USB media mounting aborted."
log "USB media mounting aborted."
unset searching
return 1
fi
if [ -e /tmp/usbdriveinfo ] ; then
unset searching
fi
done
ie_media_dev=$(grep DEVNAME /tmp/usbdriveinfo|cut -d"=" -f2)
if [ ! -e "$ie_media_dev""1" ]; then
if approved "The USB drive you inserted doesn't appear to be partitioned. Would you like to partition and create a filesystem on it now (all existing data will be lost)?" "n" ; then
parted -s $ie_media_dev mklabel gpt
parted -s $ie_media_dev mkpart primary ext2 0% 100%
sleep 2
partprobe $rdevice
mkfs.ext4 -b 4096 -m .1 $ie_media_dev"1" | dialog --progressbox "Creating filesystem. Please wait..." 24 80
else
pause "USB device $ie_media_dev is not usable."
return 1
fi
fi
ie_media_dev=$ie_media_dev"1"
if ! mount $ie_media_dev /mnt/usb ; then
pause "Could not mount USB device for $ie_op. Aborting."
return 1
fi
ie_media_cap=$(df --output=avail /mnt/usb|tail -1|tr -d " ")
return 0
;;
"L" )
ie_media_type="Local"
log "$ie_op media type set to $media_type."
# Determine correct local directory
localdirtmp=`mktemp -q`
path_invalid=true
unset local_dir
while [ $path_invalid ]; do
flush_input
if dialog --inputbox "Enter full path of $ie_op directory" 8 78 "$LOCAL_DIR" 2>$localdirtmp ; then
local_dir=`cat $localdirtmp`
if [ "$local_dir" = "" ]; then
inform "You must enter a valid path or select Cancel to abort." "5"
fi
if [ -d "$local_dir" ]; then
unset path_invalid
elif [ "$local_dir" = "" ]; then
:
else
pause "Specified directory does not exist. Perhaps you made a typo.\nTry again."
fi
else
pause "Local directory setup cancelled."
log "Local directory setup cancelled."
rm -f $localdirtemp
return 1
fi
done
log "Local $ie_op directory is $local_dir"
rm -f $localdirtemp
ie_media_cap=$(df --output=avail $local_dir|tail -1|tr -d " ")
return 0
;;
"?" )
if [ -r "$HELP_PATH/importexport.txt" ]; then
dialog --title "RescueBRU Help - Import/export" \
--no-shadow --textbox $HELP_PATH/importexport.txt 25 80
else
pause "Help file $HELP_PATH/importexport.txt could not be found. Check your installation."
fi
;;
esac
done
}
##### Execution begins here #####
# Fix the font so dialog boxes aren't corrupt
/usr/bin/setfont
# Check for presence of RAID set
if ! cat /proc/mdstat|grep -q md ; then
pause "Server RAID set was not found."
# Check for presence of unconfigured drives
if ls /dev/sd* || ls /dev/nvme?n? >/dev/null 2>&1; then
if approved "One or more drives were found that are not configured as part of a RAID set. Would you like to configure a new RAID set?" "n" ; then
if ! createraid ; then
pause "Cannot start server without backup storage."
exit 1
fi
fi
else
pause "Cannot start server without backup storage."
exit 1
fi
fi
# Increase RAID cache size to improve performance
for mddir in `ls /sys/block |egrep -e "md[0-9]+"` ; do
echo "32768" > /sys/block/$mddir/md/stripe_cache_size 2>/dev/null
done
# Kill off any running DHCP client daemon
dhcpcd -q -k
# configure /etc/exports
echo "$RAID_MNT_PT $EXPRT_ARGS" > /etc/exports
# Determine RAID array members
for raiddrv in `cat /proc/mdstat|grep -o -e "sd[a-z]|nvme[0-9]n[0-9]"`; do
RAID_MEMBERS=$RAID_MEMBERS" /dev/$raiddrv"
done
for raidpart in `cat /proc/mdstat|grep -o -e "sd[a-z][1-9]|nvme[0-9]n[0-9]p[0-9]"`; do
RAID_MEMBERS=$RAID_MEMBERS" /dev/$raidpart"
done
# Mount the RAID set
if [ ! -d "$RAID_MNT_PT" ]; then
mkdir $RAID_MNT_PT
fi
if ! mount|grep -q $RAID_MNT_PT ; then
inform "Mounting RAID set..."
for possible_raid in `ls /dev|egrep -e "md[0-9]+"` ; do
possible_raid_path="/dev/$possible_raid"
if mount $possible_raid_path $RAID_MNT_PT 1>/dev/null 2>&1 ; then
raid_dev=$possible_raid_path
break
fi
done
sleep 2
else
raid_dev=`mount|grep $RAID_MNT_PT|egrep -o -e "/dev/md[0-9]+"`
inform "RAID set appears to be mounted."
fi
# Show RAID status
raidtest "inform"
sleep 5
# Start server by default
server_start
echo "0000" > /var/lib/nfs/state
while true; do
mainmenu
case $mainmc in
"P" | "p" )
shutdown_proc "shutdown"
;;
"R" | "r" )
shutdown_proc "reboot"
;;
"S" | "s" )
if cleanup ; then
inform "Exiting to shell" "2"
reset
exit 0
else
pause "Could not perform cleanup options. Not exiting."
return 1
fi
;;
10 )
editnotestemplate
;;
9 )
lognoteview
;;
8 )
inform "Starting RescueBRU"
rescuebru -localserver $IMAGE_PATH $raid_dev $RAID_MEMBERS
;;
7 )
if [ "$PXE_STAT" = 0 ]; then
inform "Starting PXE boot server"
if ! pxe_start ; then
pause "Errors were encountered while starting PXE boot server."
else
PXE_STAT=1
fi
else
inform "Stopping PXE boot server"
if ! pxe_stop ; then
pause "Errors were encountered while stopping PXE boot server."
else
PXE_STAT=0
fi
fi
;;
6 )
image_mod
;;
5 )
clientstatus
;;
4 )
raidtest "pause"
;;
3 )
show_usage
;;
2 )
showimages
;;
1 )
echo
if [ "$SVR_STAT" = 0 ]; then
server_start
else
server_stop
fi
;;
esac
done
echo "End of script! If you see this, something is wrong!"
exit 1

View File

@@ -0,0 +1,35 @@
Option 2 of the RescueBRU main menu (Do a backup) allows backups to
be performed. It first attempts to mount the particular backup media
you selected, and then asks you to choose an image name from a list
or supply a new name for the backup. This name will become the name
of the directory on the NFS server or USB drive where the backup
images are stored. It should be short, but descriptive. It cannot
contain spaces or special characters. For example, "SJ#4 Display PC
3 (Pilot/ WSO UFCs)" would not be accepted. A better alternative
would be "sj4disppc3". After you supply a name for the backup, a
directory is created on the backup media to store the images.
RescueBRU then probes the hard drives and generates a list of drives
and their partitions. Because you may not always want to back up all
partitions of all drives, RescueBRU prompts you whether or not to
back up each MBR and each partition. Select what you want with the
spacebar. After choosing MBRs and partitions, you will be prompted
to confirm the options. Once you have selected Ok and confirmed, the
master boot records and the partitions you chose are backed up.
An important note about the dd method:
When selecting drives and partitions to be backed up using this
method, be aware that dd backs up the entire drive (/dev/sda
for example) not just the MBR like the other methods. This means
that if you select a drive (/dev/sda) you should probably not select
any of the drive's partitions, since the data contained on them is
already in the backup of the drive itself. Selecting the drive and
its partitions will make the backup take a long, long time and be
ludicrously huge. However, RescueBRU never assumes it knows more
than you and will happily oblige if you tell it to.
When the backup is complete, the backup media is unmounted and you
are returned to the main menu. From here you can perform other
operations or exit RescueBRU.

View File

@@ -0,0 +1,34 @@
This determines the level of compression used when doing a backup. The
following options are available:
low
Uses either no compression (for partimage and dd) or the lzo
compression algorithm (for fsarchiver). The advantage is that it's
very fast on the client side. The disadvantage is that the size of
the backup will be large; in most cases as large as the original
data. Using this setting really only makes sense if you have vast
amounts of storage space for your backups and a very fast network,
or if you know that your data is pretty much uncompressible, such as
a compressed database. Note that even though low compression is fast
on the client side, you may still run into speed limitations of the
storage subsystem on the server side, or of the network.
normal
Uses the gzip compression algorithm to give the best compromise
between speed and backup size. This is the default compression level.
high
Uses the bzip2 compression algorithm (for partimage and dd) or the
lzma compression algorithm (for fsarchiver). This results in a very
good compression ratio requiring less space to store the backup.
However, this comes at the price of high CPU and memory usage on the
client side. A backup done with high compression will probably take
a long, long time to accomplish. Additionally, if there is
insufficient memory available on the client, the compression may
fail altogether, resulting in the backup being stored uncompressed.
If you want to use high compression, testing is advised before
deciding to use it for real.

View File

@@ -0,0 +1,59 @@
Option 4 of the RescueBRU main menu (Disk Utilities) allows you to
perform various drive maintenance actions. These actions are
described below.
Clone disk
RescueBRU generates a list of hard drives. You are then prompted to
select the source and destination drives from menus. You will then
be asked to confirm your actions and an exact block by block copy of
all data on the source drive will be created on the destination
drive. The operation may take a long time for large drives. A
progress indicator will be shown. When the clone is finished, you
will be returned to the Disk Utilities menu.
Blank disk
RescueBRU generates a list of hard drives. You are then prompted to
select the target drive for blanking from a menu. You will then be
asked to confirm your actions and all data on the target drive will
be overwritten with zeros. This will destroy the MBR, the partition
table, and any RAID signatures that may exist on the drive. Any data
that exists on the drive will not be recoverable. NOTE: This will
not satisfy the US DoD 5220.22-M standard and will not serve to
"declassify" a drive. If the drive contained classified data, it
will still need to be stored and controlled in accordance with the
highest classification it contained. When the blanking operation is
finished, you will be returned to the Disk Utilities menu.
Test disk for bad blocks
RescueBRU generates a list of hard drives. You are then prompted to
select the target drive for testing from a menu. You will also be
prompted whether you want to do a read-only test or a write/read
test. You will then be asked to confirm your actions and the test
will begin. If you have selected a read-only test, no alteration
will be made to any data on the drive.If you have selected a
write/read test, all data on the target drive will be overwritten by
various bit patterns, and finally with zeros. This will destroy the
MBR, the partition table, and any RAID signatures that may exist on
the drive. Any data that exists on the drive will not be
recoverable. NOTE: This will not satisfy the US DoD 5220.22-M
standard and will not serve to "declassify" a drive. If the drive
contained classified data, it will still need to be stored and
controlled in accordance with the highest classification it
contained. When the blanking operation is finished, you will be
returned to the Disk Utilities menu.
Setup backup media
If using the "Local" media type, media setup is not required. For
the RescueBRU utility to work,the backup images must be stored on
the backup media in a place where RescueBRU can find them. This
option creates the directory on the backup media where the images
will be stored. After selecting this option, RescueBRU mounts the
media, and then checks to see if the backup location already exists.
If it does, RescueBRU warns you that if you continue the setup, you
may lose old backups. You have the option of continuing anyway or
aborting media setup. When a backup is started, the media is checked
to see if it is set up and this function is automatically invoked if
it isn't. Consequently, you should never have to use this option.
This option is really only useful if you want to purge all existing
backups from the media.

View File

@@ -0,0 +1,66 @@
RescueBRU is the Rescue CD Backup & Restore Utility. It is a user
friendly interface to various programs on the System Rescue CD.
RescueBRU allows you to create backup images of nearly any PC, even
those on which the filesystems or partitioning schemes are
unsupported. In the event of data corruption or drive hardware
failure, you can restore the backup images to the original drive or
to a new drive of equal or greater capacity. After the restoration,
you just reboot and use the restored drive immediately. No flaky
Norton Ghost boot floppies. No Windows device configuration. No
device driver installation. No IP address or software configuration.
Less downtime.
Backup files are stored on an NFS server, a portable USB drive, or a
local directory. The general procedure is to run a backup to the
backup media using this custom System Rescue CD. When a drive needs
to be rebuilt, you can boot this CD on the bad machine and restore
directly from the NFS server or the USB drive. For details of how
this works, see the more specific help topics in the help menu.
When booting the RescueBRU CD, the RescueBRU boot page will appear.
If you are backing up or restoring a single machine, you can just
hit enter to continue booting. You can also backup or restore
multiple machines at once if you are using an NFS server as your
media type.
The Main Menu
The main menu gives you access to all functions of RescueBRU.
Option 1: Settings menu. Allows you to select which type of media to
use for backup or restore, the method used for backups, and the
action for the program to take after a successful operation.
Option 2: Do a backup. See the help for Doing a backup.
Option 3: Do a restore. See the help for Restoring from a backup.
Option 4: Disk Utilities. See the help for Disk Utilities.
Option 5: Image Management. Allows you to copy, rename or delete
images stored on the backup media.
Option 6: View logs or notes. Log files and notes are generated
during most operations of RescueBRU and may be saved with an image
when backups or restores are done. These files may be viewed using
this option.
Option 7: Show backups available on media.
Option H: Help. You know what this does, or you wouldn't be here.
Option S: Exit to shell or Exit and return to rbruserver. This will
exit the RescueBRU program and return you to the System Rescue CD
shell if you ran rescuebru directly from a shell prompt. If
rescuebru was called from the rbruserver program, you will be
returned to rbruserver.
Option R: Exit and reboot. Reboots the system.
Option P: Exit and power down. Powers down the system on systems
that support it. For systems that do not support APM or ACPI
poweroff, it halts the system.

View File

@@ -0,0 +1,22 @@
RescueBRU uses an NFS server, portable USB drive, or a local
directory to store backup images.
Showing backups available on media
Option 7 of the RescueBRU main menu (Show backups available on
media) does what the name implies. The available backups are listed
by name showing the date and time.
An important note about using the Local media type for backup/restore:
If you use the local media type, be aware that the drive designation
(sda, sdb, etc.) will very likely be different than what it is in
the machine the drive is to be used in. For example, if you back up
the drive using the NFS media type, the drive designation may be
sda. If you remove this drive and install it in a RescueBRU server
machine, it may get designated sdc. Attempting to restore it like
this may result in overwriting the server's image storage drive! The
rule of thumb is that the same media type must be used for both the
backup and the restore. If you back it up with NFS, restore it with
NFS. If you back it up with Local, restore it with Local.

View File

@@ -0,0 +1,17 @@
This determines what type of backup media will be used. The
following options are available:
NFS
Uses a server on the network to store backups, usually a RescueBRU
server, but it can be any NFS server. The most convenient type.
Multiple PCs can use this simultaneously. Space for backups is
limited only by the amount of storage on the server. This is the
default type.
USB
Uses a portable USB disk drive or thumb drive. No server required.
This is usually the slowest method.
Local
Uses a pre-mounted partition on the local machine. For expert use only.

View File

@@ -0,0 +1,41 @@
This determines how the backup is done. The following options are
available:
auto
Analyzes the partitions on the drive to determine the best of the
three methods described below. If the drive contains ext4, reiser4,
or btrfs partitions, fsarchiver will be used. If the drive contains
ext2, ext3, reiserfs, vfat, hpfs, jfs, xfs, ufs, hfs, or ntfs
partitions, partimage will be used. For any other partition type, or
if a drive doesn't contain any partitions, dd will be used.
This is the default.
partimage
Uses the partimage utility to make images of individual partitions.
Supports ext2, ext3, reiserfs, FAT16/32, HPFS, JFS, XFS, UFS, HFS,
and NTFS. Saves and restores the MBR(s) and partition table(s).
Recreates Linux swap partitions. Works for most configurations.
fsarchiver
Uses the fsarchiver utility to archive the files of a filesystem.
Supports ext2, ext3, reiserfs, XFS, JFS, ext4, reiser4, btrfs, and
NTFS. Saves and restores the MBR(s) and partition table(s).
Recreates Linux swap partitions. More tolerant of drive hardware
failures during backup. After restoring this type of backup, you may
have to reinstall your bootloader, since the restored system files
may not be in the same physical location on the disk. This method is
the fastest method during both backup and restore due to the
multithreaded compression/decompression.
dd
Uses the dd utility to create bit-by-bit images of entire hard
drives or partitions. Works for any disk drive with any filesystem
or no filesystem at all. The most reliable method. Also the slowest
method, and uses the most space for backups. Use for drives with LVM
partitions. If none of the other methods work, use this method.

View File

@@ -0,0 +1,18 @@
Option 3 of the RescueBRU main menu allows you to restore previously
backed up images. Make sure the drive you want to restore to is
installed in the PC before booting the System Rescue CD. After
selecting option 3, it first attempts to mount the backup media.
After detecting and mounting the backup media, a list of backups on
the media is shown. You are then prompted to enter the name of the
backup you wish to restore. After specifying the backup to restore,
RescueBRU determines what method was used to back up the PC.
You are asked which MBRs/drives and partitions you would like to
restore. After you have made your selections, a confirmation message
appears so that you can verify the choices and options. After
selecting Ok to confirm, the MBRs and partitions you have selected
will be restored.
When the restoration is complete, you are returned to the main menu,
where you can perform other operations or exit RescueBRU.

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,22 @@
#!/bin/bash
# showcapacitywindow.sh
# Rescue CD Backup & Restore Utility capacity window display
# version 7.2.5
# Rod Wright 1/19/2024
# Refer to CHANGELOG file for details.
# -----------------------------------------------------------------------------
CAPACITY_FILE="/root/capacity.txt"
if ps ax|grep rbruserver|grep -vq grep; then
windowtitle="RAID Capacity"
else
windowtitle="Media Capacity"
fi
while true ; do
if ! ps ax| grep "watch -t -n1"|grep -q $CAPACITY_FILE ; then
xfce4-terminal --disable-server --hide-menubar --hide-toolbar --title="$windowtitle" --geometry=25x4+2000+0 -e "watch -t -n1 'cat $CAPACITY_FILE'"
echo $! >$PID_FILE
fi
sleep 2
done

View File

@@ -0,0 +1,18 @@
#!/bin/bash
# showfaultwindow.sh
# Rescue CD Backup & Restore Utility fault window display
# version 7.2.5
# Rod Wright 1/19/2024
# Refer to CHANGELOG file for details.
# -----------------------------------------------------------------------------
STATUS_FILE="/root/faultstatus.txt"
windowtitle="Server Status"
while true ; do
if ! ps ax|grep "watch -t -n1"|grep -q $STATUS_FILE ; then
xfce4-terminal --disable-server --hide-menubar --hide-toolbar --title="$windowtitle" --geometry=25x3+2000+100 -e "watch -c -t -n1 'cat $STATUS_FILE'"
fi
sleep 2
done

View File

@@ -0,0 +1,18 @@
#!/bin/bash
# showstatuswindow.sh
# Rescue CD Backup & Restore Utility status window display
# version 7.2.5
# Rod Wright 1/19/2024
# Refer to CHANGELOG file for details.
# -----------------------------------------------------------------------------
STATUS_FILE="/root/status.txt"
windowtitle="RescueBRU Status"
while true ; do
if ! ps ax|grep "watch -t -n1"|grep -q $STATUS_FILE ; then
xfce4-terminal --disable-server --hide-menubar --hide-toolbar --title="$windowtitle" --geometry=110x13+0+480 -e "watch -t -n1 'cat $STATUS_FILE'"
fi
sleep 2
done

View File

@@ -0,0 +1,34 @@
#!/bin/bash
# updatecapacity.sh
# Rescue CD Backup & Restore Utility media capacity update script
# version 7.2.5
# Rod Wright 1/19/2024
# Refer to CHANGELOG file for details.
# -----------------------------------------------------------------------------
RAID_MNT_PT="/mnt/rescuebru"
CAPACITY_FILE="/root/capacity.txt"
UPDATE_INTERVAL=10
while true; do
if ! mount|grep -q /mnt/rescuebru ; then
if ps ax|grep rbruserver|grep -vq grep; then
echo "Awaiting RAID mount...">$CAPACITY_FILE
else
echo "Awaiting backup media...">$CAPACITY_FILE
fi
else
dfout=`df -h $RAID_MNT_PT|grep $RAID_MNT_PT`
total=`echo $dfout|awk '{print $2}'`
used=`echo $dfout|awk '{print $3}'`
available=`echo $dfout|awk '{print $4}'`
percentage=`echo $dfout|awk '{print $5}'`
echo "Total Capacity: $total">$CAPACITY_FILE
echo "Used: $used">>$CAPACITY_FILE
echo "Available: $available">>$CAPACITY_FILE
echo "Percent Usage: $percentage">>$CAPACITY_FILE
fi
sleep $UPDATE_INTERVAL
done

View File

@@ -0,0 +1,21 @@
#!/bin/bash
# updatestatus.sh
# Rescue CD Backup & Restore Utility status update script
# version 7.2.5
# Rod Wright 1/19/2024
# Refer to CHANGELOG file for details.
# -----------------------------------------------------------------------------
STATUS_FILE="/root/status.txt"
INFO_FILE="/root/rbinfo.txt"
UPDATE_INTERVAL=1
while true; do
csplit -s -f opsum $INFO_FILE '/^Image/'
cat /root/opsum00 | tr '\n' '\t'>$STATUS_FILE
rm /root/opsum*
echo "\n" >>$STATUS_FILE
#csplit -s -f opsum $INFO_FILE '%^Image%-1' '/Devices
sleep $UPDATE_INTERVAL
done

View File

@@ -0,0 +1,17 @@
#!/bin/bash
# xrbruserver.sh
# Rescue CD Backup & Restore Utility graphical server startup
# version 7.2.5
# Rod Wright 1/19/2024
# Refer to CHANGELOG file for details.
# -----------------------------------------------------------------------------
/root/rescuebru/faultmonitor.sh &
sleep 1
/root/rescuebru/updatecapacity.sh &
sleep 1
/root/rescuebru/showcapacitywindow.sh &
sleep 1
/root/rescuebru/showfaultwindow.sh &
sleep 1
/usr/bin/xfce4-terminal --disable-server --hide-menubar --hide-toolbar --title="RescueBRU Server" --geometry=80x25+0+0 -e /root/rescuebru/rbruserver.sh &

View File

@@ -0,0 +1,14 @@
#!/bin/bash
# xrescuebru.sh
# Rescue CD Backup & Restore Utility graphical client start
# version 7.2.5
# Rod Wright 1/19/2024
# Refer to CHANGELOG file for details.
# -----------------------------------------------------------------------------
xset dpms 0 0 0
/root/rescuebru/updatecapacity.sh &
sleep 1
/root/rescuebru/showcapacitywindow.sh &
sleep 2
/usr/bin/xfce4-terminal --disable-server --hide-menubar --hide-toolbar --title="RescueBRU" --geometry=80x25+0+0 -e /root/rescuebru/rescuebru.sh &

View File

@@ -0,0 +1,59 @@
# srcdtips
# Rescue CD Backup & Restore Utility system rescue cd tips
# version 7.2.5
# Rod Wright 1/16/2024
# Refer to CHANGELOG file for details.
# -----------------------------------------------------------------------------
# ============ PRINT MESSAGE ===========================
lc1='\e[01;31m' # light red
dc1='\e[00;31m' # dark red
lc2='\e[01;37m' # white
dc2='\e[00;37m' # gray
# fix broken console with utf8 in the alternative-kernels
echo -n -e '\033%G'
kbd_mode -u
LINES=$(stty size|cut -d" " -f1)
fbecho()
{
[ $LINES -ge 28 ] && echo
}
if [ -f /root/version ]
then
VERSION=" ${lc2}$(cat /root/version)${lc1} "
else
VERSION=""
fi
fbecho
echo -e "${lc1} =========== ${lc2}SystemRescue-Cd${lc1} -----${VERSION}=========== ${lc2}$(basename $(tty))${dc2}/6 ${lc1}=="
echo -e " ${dc1}http://www.sysresccd.org/"
echo
echo -e "${dc1}*${dc2} You should stop the Network-Manager service if you want to configure "
echo -e " the network by hand. Just run this command: /etc/init.d/NetworkManager stop"
echo -e "${dc1}*${dc2} Type ${lc2}net-setup eth0${dc2} to specify ethernet configuration."
echo -e "${dc1}*${dc2} If your PC is on an ethernet local network, you can configure by hand:"
echo -e " ${dc1}-${dc2} ifconfig eth0 192.168.x.a (your static IP address)"
echo -e " ${dc1}-${dc2} route add default gw 192.168.x.b (IP address of the gateway)"
fbecho
echo -e "${dc1}*${dc2} To be sure there is an ssh server running, type ${lc2}/etc/init.d/sshd start${dc2}."
echo -e " You will need to create an user or to change the root password with ${lc2}passwd${dc2}."
fbecho
echo -e "${dc1}*${dc2} Available console text editors : ${lc2}nano${dc2}, ${lc2}vim${dc2}, ${lc2}qemacs${dc2}, ${lc2}joe${dc2}."
echo -e "${dc1}*${dc2} Web browser in the console: ${lc2}elinks www.web-site.org${dc2}."
fbecho
echo -e "${dc1}*${lc1} Ntfs-3g${dc2} : If you need a full Read-Write NTFS access, use Ntfs-3g."
echo -e " Mount the disk: ${lc2}ntfs-3g /dev/sda1 /mnt/windows${dc2}"
fbecho
echo -e "${dc1}*${lc1} Graphical environment${dc2} : use either ${lc2}Xorg${dc2} or ${lc2}Xfbdev${dc2}."
echo -e " Type ${lc2}wizard${dc2} to run the graphical environment (or ${lc2}startx${dc2} but it may fail)"
echo -e " X.Org comes with the XFCE environment and several graphical tools:"
echo -e " ${dc1}-${dc2} Partition manager:..${lc2}gparted${dc2}"
echo -e " ${dc1}-${dc2} Web browsers:.......${lc2}firefox-52.7.3${dc2}"
echo -e " ${dc1}-${dc2} Text editors:.......${lc2}gvim${dc2} and ${lc2}geany${dc2}"
echo
fbecho

View File

@@ -0,0 +1,11 @@
[Desktop Entry]
Encoding=UTF-8
Version=0.9.4
Type=Application
Name=xrescuebru
Comment=
Exec=/root/rescuebru/xrescuebru.sh
OnlyShowIn=XFCE;
StartupNotify=false
Terminal=false
Hidden=false

View File

@@ -0,0 +1,48 @@
# zshrc.rbruserver
# Rescue CD Backup & Restore Utility zsh configuration
# version 7.2.5
# Rod Wright 1/16/2024
# Refer to CHANGELOG file for details.
# -----------------------------------------------------------------------------
#
# This file is based on the configuration written by
# Bruno Bonfils, <asyd@debian-fr.org>
# Written since summer 2001
#
# My functions (don't forget to modify fpath before call compinit !!)
fpath=($HOME/.zsh/functions $fpath)
# colors
eval `dircolors $HOME/.zsh/colors`
autoload -U zutil
autoload -U compinit
autoload -U complist
bindkey '\e[A' history-search-backward
bindkey '\e[B' history-search-forward
bindkey '^K' kill-whole-line
bindkey "\e[H" beginning-of-line # Home (xorg)
bindkey "\e[1~" beginning-of-line # Home (console)
bindkey "\e[4~" end-of-line # End (console)
bindkey "\e[F" end-of-line # End (xorg)
bindkey "\e[2~" overwrite-mode # Ins
bindkey "\e[3~" delete-char # Delete
bindkey '\eOH' beginning-of-line
bindkey '\eOF' end-of-line
# Activation
compinit
# Resource files
for file in $HOME/.zsh/rc/*.rc; do
source $file
done
#start the rescuebru server
if [ "$TTY" = "/dev/tty1" ]; then
/root/rescuebru/rbruserver
fi

View File

@@ -0,0 +1,50 @@
# zshrc.rescuebru
# Rescue CD Backup & Restore Utility zshrc configuration
# version 7.2.5
# Rod Wright 1/16/2024
# Refer to CHANGELOG file for details.
# -----------------------------------------------------------------------------
#
# This file is based on the configuration written by
# Bruno Bonfils, <asyd@debian-fr.org>
# Written since summer 2001
#
# My functions (don't forget to modify fpath before call compinit !!)
fpath=($HOME/.zsh/functions $fpath)
# colors
eval `dircolors $HOME/.zsh/colors`
autoload -U zutil
autoload -U compinit
autoload -U complist
bindkey '\e[A' history-search-backward
bindkey '\e[B' history-search-forward
bindkey '^K' kill-whole-line
bindkey "\e[H" beginning-of-line # Home (xorg)
bindkey "\e[1~" beginning-of-line # Home (console)
bindkey "\e[4~" end-of-line # End (console)
bindkey "\e[F" end-of-line # End (xorg)
bindkey "\e[2~" overwrite-mode # Ins
bindkey "\e[3~" delete-char # Delete
bindkey '\eOH' beginning-of-line
bindkey '\eOF' end-of-line
# Activation
compinit
# Resource files
for file in $HOME/.zsh/rc/*.rc; do
source $file
done
# Eject the CD
/usr/bin/eject >/dev/null 2>&1
# Start rescuebru
if [ "$TTY" = "/dev/tty1" ]; then
/root/rescuebru/rescuebru
fi

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1 @@
7.2.5.1

View File

@@ -0,0 +1,77 @@
# Global options
set timeout=30
set default=1
set fallback=0
set pager=1
# Display settings
if loadfont /boot/grub/font.pf2 ; then
set gfxmode=auto
insmod efi_gop
insmod efi_uga
insmod gfxterm
insmod videotest
insmod videoinfo
terminal_output gfxterm
fi
menuentry "RescueBRU - Run Rescue CD Backup/Restore Utility" {
set gfxpayload=keep
linux /isolinux/rescue64 scandelay=1 setkmap=us docache nolvm nodhcp nodmraid lowmem nonm ar_nowait autoruns=1
initrd /isolinux/initram.igz
}
menuentry "RescueBRU - Run Rescue CD Backup/Restore Utility in Xorg" {
set gfxpayload=keep
linux /isolinux/rescue64 scandelay=1 setkmap=us dostartx docache nolvm nodhcp nodmraid lowmem nonm ar_nowait autoruns=3
initrd /isolinux/initram.igz
}
menuentry "RescueBRU - Run Rescue CD Backup/Restore Server" {
set gfxpayload=keep
linux /isolinux/rescue64 scandelay=1 setkmap=us dostartx nolvm nodhcp nodmraid nonm ar_nowait autoruns=2
initrd /isolinux/initram.igz
}
menuentry "RescueBRU - Run Rescue CD Backup/Restore Utility (text mode)" {
set gfxpayload=keep
linux /isolinux/rescue64 scandelay=1 setkmap=us nolvm nodhcp nodmraid lowmem nonm ar_nowait autoruns=1
initrd /isolinux/initram.igz
}
menuentry "SystemRescueCd (64bit, default boot options)" {
set gfxpayload=keep
linux /isolinux/rescue64
initrd /isolinux/initram.igz
}
menuentry "SystemRescueCd (64bit, cache all files in memory)" {
set gfxpayload=keep
linux /isolinux/rescue64 docache
initrd /isolinux/initram.igz
}
menuentry "SystemRescueCd (64bit, alternative kernel with default options)" {
set gfxpayload=keep
linux /isolinux/altker64
initrd /isolinux/initram.igz
}
menuentry "SystemRescueCd (64bit, disable Kernel-Mode-Settings)" {
set gfxpayload=keep
linux /isolinux/rescue64 nomodeset
initrd /isolinux/initram.igz
}
menuentry "SystemRescueCd (64bit, directly start the graphical environment)" {
set gfxpayload=keep
linux /isolinux/rescue64 dostartx
initrd /isolinux/initram.igz
}
menuentry "Boot existing Linux OS installed on the disk (64bit kernel)" {
set gfxpayload=keep
linux /isolinux/rescue64 root=auto
initrd /isolinux/initram.igz
}

View File

@@ -0,0 +1,77 @@
# Global options
set timeout=5
set default=2
set fallback=1
set pager=1
# Display settings
if loadfont /boot/grub/font.pf2 ; then
set gfxmode=auto
insmod efi_gop
insmod efi_uga
insmod gfxterm
insmod videotest
insmod videoinfo
terminal_output gfxterm
fi
menuentry "RescueBRU - Run Rescue CD Backup/Restore Utility" {
set gfxpayload=keep
linux /isolinux/rescue64 scandelay=1 setkmap=us docache nolvm nodhcp nodmraid lowmem nonm ar_nowait autoruns=1
initrd /isolinux/initram.igz
}
menuentry "RescueBRU - Run Rescue CD Backup/Restore Utility in Xorg" {
set gfxpayload=keep
linux /isolinux/rescue64 scandelay=1 setkmap=us dostartx docache nolvm nodhcp nodmraid lowmem nonm ar_nowait autoruns=3
initrd /isolinux/initram.igz
}
menuentry "RescueBRU - Run Rescue CD Backup/Restore Server" {
set gfxpayload=keep
linux /isolinux/rescue64 scandelay=1 setkmap=us dostartx nolvm nodhcp nodmraid nonm ar_nowait autoruns=2
initrd /isolinux/initram.igz
}
menuentry "RescueBRU - Run Rescue CD Backup/Restore Utility (text mode)" {
set gfxpayload=keep
linux /isolinux/rescue64 scandelay=1 setkmap=us nolvm nodhcp nodmraid lowmem nonm ar_nowait autoruns=1
initrd /isolinux/initram.igz
}
menuentry "SystemRescueCd (64bit, default boot options)" {
set gfxpayload=keep
linux /isolinux/rescue64
initrd /isolinux/initram.igz
}
menuentry "SystemRescueCd (64bit, cache all files in memory)" {
set gfxpayload=keep
linux /isolinux/rescue64 docache
initrd /isolinux/initram.igz
}
menuentry "SystemRescueCd (64bit, alternative kernel with default options)" {
set gfxpayload=keep
linux /isolinux/altker64
initrd /isolinux/initram.igz
}
menuentry "SystemRescueCd (64bit, disable Kernel-Mode-Settings)" {
set gfxpayload=keep
linux /isolinux/rescue64 nomodeset
initrd /isolinux/initram.igz
}
menuentry "SystemRescueCd (64bit, directly start the graphical environment)" {
set gfxpayload=keep
linux /isolinux/rescue64 dostartx
initrd /isolinux/initram.igz
}
menuentry "Boot existing Linux OS installed on the disk (64bit kernel)" {
set gfxpayload=keep
linux /isolinux/rescue64 root=auto
initrd /isolinux/initram.igz
}

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1,24 @@
0C
____ ____ ____ _ _
| _ \ ___ ___ ___ _ _ ___ | _ \| _ \| | | |
| |_) / _ \/ __|/ __| | | |/ _ \||_) /| |_) | | | |
| _ < __/\__ \ (__| |_| | __/||_) \| _ <| |_| |
|_| \_\___||___/\___|\__,_|\___||____/|_| \_ \___/
07
0C*07 Welcome to RescueBRU-7.2.5, the Rescue CD Backup & Restore Utility
0C*07
0C*07 Built 21 Sep 2021 by Rod Wright
0C*07 Based on SystemRescueCD 5.2.2. Visit http://www.sysresccd.org
0C*07
0C*07 After booting, type rescuebru to perform backups or restorations,
0C*07 or type rbruserver to start the backup server.
0C*07
0C*07 To boot, just press enter at the boot: prompt below.
02==>07 0EPress F5 for help if you have boot problems with RescueBRU 02<==07
0fF2,F3,F4,F5,F6,F707 for boot options and more help.
0fEnter07 to boot.

View File

@@ -0,0 +1,564 @@
UI vesamenu.c32
F2 f2images.msg
F3 f3params.msg
F4 f4arun.msg
F5 f5troubl.msg
F6 f6pxe.msg
F7 f7net.msg
PROMPT 0
TIMEOUT 300
ONTIMEOUT rescuebru
MENU DEFAULT rescuebru
MENU TABMSG Press <TAB> to edit options or <F2>,<F3>,<F4>,<F5>,<F6>,<F7> for help
MENU TITLE RescueBRU 7.2.5 (System Rescue CD 5.2.2 (www.sysresccd.org))
MENU ROWS 16
MENU TIMEOUTROW 22
MENU TABMSGROW 24
MENU CMDLINEROW 24
MENU HELPMSGROW 26
MENU WIDTH 78
MENU MARGIN 6
MENU BACKGROUND #FF003333
MENU color title 1;31;40 #FFFF0000 #00000000 std
MENU color sel 7;37;40 #FF000000 #FFC0C0C0 all
MENU color unsel 37;44 #FFFFFFFF #00000000 none
MENU color hotsel 1;7;37;40 #FF000000 #FFC0C0C0 all
MENU color tabmsg 1;31;40 #FFFFFF00 #00000000 std
MENU color help 1;31;40 #FFFFFFFF #00000000 none
LABEL rescuebru
MENU LABEL 1) RescueBRU: Run Rescue CD Backup/Restore Utility
KERNEL ifcpu64.c32
APPEND rescue64 scandelay=1 setkmap=us dostartx docache nolvm nodhcp nodmraid lowmem nonm ar_nowait autoruns=3 -- rescue32 scandelay=1 setkmap=us dostartx docache nolvm nodhcp nodmraid lowmem nonm ar_nowait autoruns=3
TEXT HELP
Standard RescueBRU Client running in GUI environment. Caches all
files to memory and ejects the CD.
ENDTEXT
LABEL rescuebru_txt
MENU LABEL 2) RescueBRU: Run Rescue CD Backup/Restore Utility (text mode)
KERNEL ifcpu64.c32
APPEND rescue64 scandelay=1 setkmap=us nolvm nodhcp nodmraid lowmem nonm ar_nowait autoruns=1 -- rescue32 scandelay=1 setkmap=us nolvm nodhcp nodmraid lowmem nonm ar_nowait autoruns=1
TEXT HELP
Text mode RescueBRU Client for systems with less than 1Gb
of memory or lack of graphics capability. Runs directly from CD.
CD will not eject after boot. Must remove CD manually after reboot.
ENDTEXT
LABEL rbruserver
MENU LABEL 3) RescueBRU Server: Run Rescue CD Backup/Restore Server
KERNEL ifcpu64.c32
APPEND rescue64 scandelay=1 setkmap=us dostartx nolvm nodhcp nodmraid nonm ar_nowait autoruns=2 -- rescue32 scandelay=1 setkmap=us dostartx nolvm nodhcp nodmraid nonm ar_nowait autoruns=2
TEXT HELP
Automatically start RescueBRU Server.Runs directly from CD.
CD will not eject after boot. Must remove CD manually after reboot.
ENDTEXT
MENU SEPARATOR
LABEL memtest
MENU LABEL 4) MEMTEST: Memory test using Memtest86+
kernel /bootdisk/memtestp
append -
TEXT HELP
Use this tool if you suspect your RAM may be damaged. Damaged memory can
explain crashes or unexpected bahaviors on stable operating systems.
ENDTEXT
LABEL ntpass
MENU LABEL 5) NTPASSWD: Reset or edit Windows passwords
kernel /ntpasswd/vmlinuz
append rw vga=1 initrd=/ntpasswd/initrd.cgz,/ntpasswd/scsi.cgz
TEXT HELP
This tool can be used to reset windows users accounts. It works will all
windows user accounts including the administrator. You can use this tool if
you forgot the administrator's password.
ENDTEXT
LABEL dban
MENU LABEL 6) DBAN: erase all data from the disk
kernel /bootdisk/dban.bzi
append nuke="dwipe" silent
LABEL rescuecd_auto
MENU LABEL 7) Boot an existing Linux system installed on the disk
KERNEL ifcpu64.c32
APPEND rescue64 root=auto -- rescue32 root=auto
TEXT HELP
Detect partition where linux is installed and boot from it. You can use
this to boot Linux if your boot loader (eg: Grub) is broken or has been
removed by another OS.
ENDTEXT
LABEL freedos
MENU LABEL 8) FREEDOS: Clone of the MSDOS Operating System
kernel memdisk
append initrd=/bootdisk/freedos.img floppy
TEXT HELP
FreeDOS can be used to execute DOS programs such as BIOS upgrade tools
ENDTEXT
MENU SEPARATOR
LABEL rescuecd_std
MENU LABEL 9) SystemRescueCd: default boot options
KERNEL ifcpu64.c32
APPEND rescue64 scandelay=1 autoruns=no setkmap=us -- rescue32 scandelay=1 autoruns=no setkmap=us
TEXT HELP
Boot standard kernel with default options (should always work)
You should use this entry if you don't know which one to use
ENDTEXT
LABEL rescuecd_docache
MENU LABEL 10) SystemRescueCd: all files cached to memory (docache)
KERNEL ifcpu64.c32
APPEND rescue64 scandelay=1 autoruns=no setkmap=us docache -- rescue32 scandelay=1 autoruns=no setkmap=us docache
TEXT HELP
Boot standard kernel and run system from RAM (cdrom can be removed)
It requires 512 MB of memory to work and takes some time during the
boot process, but the cdrom can be removed and system will be faster.
ENDTEXT
LABEL rescuecd_791
MENU LABEL 11) SystemRescueCd: console in high resolution (framebuffer)
KERNEL ifcpu64.c32
APPEND rescue64 nomodeset vga=791 scandelay=1 autoruns=no setkmap=us -- rescue32 nomodeset vga=791 scandelay=1 autoruns=no setkmap=us
TEXT HELP
Boot standard kernel with console in high resolution
This mode is useful only if you want to work in console mode
ENDTEXT
LABEL rescuecd_us
MENU LABEL 12) SystemRescueCd: do not ask for keyboard, use US keymap
KERNEL ifcpu64.c32
APPEND rescue64 scandelay=1 setkmap=us autoruns=no -- rescue32 scandelay=1 setkmap=us autoruns=no
TEXT HELP
Boot standard kernel and use the keymap for american keyboards
This way it will not prompt for the keymap during the boot process
ENDTEXT
LABEL rescuecd_xorg
MENU LABEL 13) SystemRescueCd: directly start the graphical environment
KERNEL ifcpu64.c32
APPEND rescue64 scandelay=1 dostartx autoruns=no setkmap=us -- rescue32 scandelay=1 dostartx autoruns=no setkmap=us
TEXT HELP
Boot standard kernel and start the XFCE graphical environment
directly. You can also get in this environment by typing "startx" from
the console.
ENDTEXT
MENU SEPARATOR
# ------------------------------------------------------------------------------
MENU BEGIN
MENU TITLE A) Run system tools from floppy disk image...
LABEL grubdisk
MENU LABEL SGD: Super Grub2 Disk
kernel memdisk
append initrd=/bootdisk/grubdisk.img floppy raw
LABEL netboot
MENU LABEL NETBOOT: Boot from the network
kernel netboot
append -
LABEL hdt
MENU LABEL HDT: recent hardware diagnostics tool
kernel memdisk
append initrd=/bootdisk/hdt.img floppy
TEXT HELP
This diagnostic tool will give you information about your hardware
ENDTEXT
LABEL aida
MENU LABEL AIDA: old hardware diagnostics tool
kernel memdisk
append initrd=/bootdisk/aida.img floppy
LABEL mhdd
MENU LABEL MHDD: Low-level Hard Drive diagnostic tool
kernel memdisk
append initrd=/bootdisk/mhdd.img floppy
MENU SEPARATOR
LABEL return
MENU LABEL Return to main menu
MENU EXIT
MENU END
# ------------------------------------------------------------------------------
MENU BEGIN
MENU TITLE B) Standard 32bit kernel (rescue32) with more choice...
LABEL rescue32_1
MENU LABEL 1. SystemRescueCd with default options
LINUX rescue32
INITRD initram.igz
TEXT HELP
Boot standard 32bit kernel with default options (should always work)
ENDTEXT
LABEL rescue32_2
MENU LABEL 2. SystemRescueCd with all files cached to memory
LINUX rescue32
INITRD initram.igz
APPEND docache
TEXT HELP
Boot standard 32bit kernel and run system from memory.
It requires 512 MB of memory to work and takes some time during the
boot process, but the cdrom can be removed and system will be faster.
ENDTEXT
LABEL rescue32_3
MENU LABEL 3. SystemRescueCd with console in high resolution (1024x768)
LINUX rescue32
INITRD initram.igz
APPEND nomodeset vga=791
TEXT HELP
Boot standard 32bit kernel with framebuffer console in high resolution
KMS graphic drivers (Kernel-Mode-Settings) will be disabled.
ENDTEXT
LABEL rescue32_4
MENU LABEL 4. SystemRescueCd with a standard VGA console (no KMS)
LINUX rescue32
INITRD initram.igz
APPEND nomodeset
TEXT HELP
Boot standard 32bit kernel and use standard low-resolution VGA console
KMS graphic drivers (Kernel-Mode-Settings) will be disabled.
Try this if you can't get a working console or new a low-resolution mode
ENDTEXT
LABEL rescue32_5
MENU LABEL 5. SystemRescueCd with a console in 800x600
LINUX rescue32
INITRD initram.igz
APPEND video=800x600
TEXT HELP
Boot standard 32bit kernel and use the default graphic driver in 800x600
KMS graphic drivers (Kernel-Mode-Settings) will be used if appropriate.
Use that to get a 800x600 resolution and have a KMS compatible card.
ENDTEXT
LABEL rescue32_6
MENU LABEL 6. Boot an existing Linux OS installed on the disk
LINUX rescue32
INITRD initram.igz
APPEND root=auto
TEXT HELP
Detect partition where linux is installed and boot from it. You can use
this to boot Linux if your boot loader (eg: Grub) is broken or has been
removed by another OS.
ENDTEXT
LABEL rescue32_7
MENU LABEL 7. SystemRescueCd with the default graphical environment
LINUX rescue32
INITRD initram.igz
APPEND dostartx
TEXT HELP
Boot standard 32bit kernel and start the XFCE graphical environment
directly. You can also get in this environment by typing "startx" from
the console.
ENDTEXT
LABEL rescue32_8
MENU LABEL 8. SystemRescueCd with VESA based graphical environment
LINUX rescue32
INITRD initram.igz
APPEND nomodeset vga=791 dostartx forcevesa
TEXT HELP
Boot standard 32bit kernel and use VESA based graphical environment
Try this if you have problems to get the default graphical environment
ENDTEXT
MENU SEPARATOR
LABEL return
MENU LABEL Return to main menu
MENU EXIT
MENU END
# ------------------------------------------------------------------------------
MENU BEGIN
MENU TITLE C) Standard 64bit kernel (rescue64) with more choice...
LABEL rescue64_1
MENU LABEL 1. SystemRescueCd with default options
LINUX rescue64
INITRD initram.igz
TEXT HELP
Boot standard 64bit kernel with default options (should always work)
ENDTEXT
LABEL rescue64_2
MENU LABEL 2. SystemRescueCd with all files cached to memory
LINUX rescue64
INITRD initram.igz
APPEND docache
TEXT HELP
Boot standard 64bit kernel and run system from RAM (cdrom can be removed)
It requires 512 MB of memory to work and takes some time during the
boot process, but the cdrom can be removed and system will be faster.
ENDTEXT
LABEL rescue64_3
MENU LABEL 3. SystemRescueCd with console in high resolution (1024x768)
LINUX rescue64
INITRD initram.igz
APPEND nomodeset vga=791
TEXT HELP
Boot standard 64bit kernel with framebuffer console in high resolution
KMS graphic drivers (Kernel-Mode-Settings) will be disabled.
ENDTEXT
LABEL rescue64_4
MENU LABEL 4. SystemRescueCd with a standard VGA console (no KMS)
LINUX rescue64
INITRD initram.igz
APPEND nomodeset
TEXT HELP
Boot standard 64bit kernel and use standard low-resolution VGA console
KMS graphic drivers (Kernel-Mode-Settings) will be disabled.
Try this if you can't get a working console or new a low-resolution mode
ENDTEXT
LABEL rescue64_5
MENU LABEL 5. SystemRescueCd with a console in 800x600
LINUX rescue64
INITRD initram.igz
APPEND video=800x600
TEXT HELP
Boot standard 64bit kernel and use the default graphic driver in 800x600
KMS graphic drivers (Kernel-Mode-Settings) will be used if appropriate.
Use that to get a 800x600 resolution and have a KMS compatible card.
ENDTEXT
LABEL rescue64_6
MENU LABEL 6. Boot an existing Linux OS installed on the disk
LINUX rescue64
INITRD initram.igz
APPEND root=auto
TEXT HELP
Detect partition where linux is installed and boot from it. You can use
this to boot Linux if your boot loader (eg: Grub) is broken or has been
removed by another OS.
ENDTEXT
LABEL rescue64_7
MENU LABEL 7. SystemRescueCd with the default graphical environment
LINUX rescue64
INITRD initram.igz
APPEND dostartx
TEXT HELP
Boot standard 64bit kernel and start the XFCE graphical environment
directly. You can also get in this environment by typing "startx" from
the console.
ENDTEXT
LABEL rescue64_8
MENU LABEL 8. SystemRescueCd with VESA based graphical environment
LINUX rescue64
INITRD initram.igz
APPEND nomodeset vga=791 dostartx forcevesa
TEXT HELP
Boot standard 64bit kernel and use VESA based graphical environment
Try this if you have problems to get the default graphical environment
ENDTEXT
MENU SEPARATOR
LABEL return
MENU LABEL Return to main menu
MENU EXIT
MENU END
# ------------------------------------------------------------------------------
MENU SEPARATOR
LABEL local1
MENU LABEL *) Boot from first hard disk
kernel chain.c32
append hd0
TEXT HELP
Boot local OS installed on first hard disk
ENDTEXT
LABEL local2
MENU LABEL *) Boot from second hard disk
kernel chain.c32
append hd1
TEXT HELP
Boot local OS installed on second hard disk
ENDTEXT
LABEL rescuecd
MENU HIDE
KERNEL ifcpu64.c32
APPEND rescue64 -- rescue32
LABEL rescue32
MENU HIDE
LINUX rescue32
INITRD initram.igz
LABEL rescue64
MENU HIDE
LINUX rescue64
INITRD initram.igz
LABEL altker32
MENU HIDE
LINUX altker32
INITRD initram.igz
LABEL altker64
MENU HIDE
LINUX altker64
INITRD initram.igz
LABEL azerty
MENU HIDE
KERNEL kbdmap.c32
APPEND maps/azerty.ktl
LABEL be
MENU HIDE
KERNEL kbdmap.c32
APPEND maps/be.ktl
LABEL bg
MENU HIDE
KERNEL kbdmap.c32
APPEND maps/bg.ktl
LABEL by
MENU HIDE
KERNEL kbdmap.c32
APPEND maps/by.ktl
LABEL cf
MENU HIDE
KERNEL kbdmap.c32
APPEND maps/cf.ktl
LABEL croat
MENU HIDE
KERNEL kbdmap.c32
APPEND maps/croat.ktl
LABEL cz
MENU HIDE
KERNEL kbdmap.c32
APPEND maps/cz.ktl
LABEL de
MENU HIDE
KERNEL kbdmap.c32
APPEND maps/de.ktl
LABEL dk
MENU HIDE
KERNEL kbdmap.c32
APPEND maps/dk.ktl
LABEL dvorak
MENU HIDE
KERNEL kbdmap.c32
APPEND maps/dvorak.ktl
LABEL es
MENU HIDE
KERNEL kbdmap.c32
APPEND maps/es.ktl
LABEL et
MENU HIDE
KERNEL kbdmap.c32
APPEND maps/et.ktl
LABEL fi
MENU HIDE
KERNEL kbdmap.c32
APPEND maps/fi.ktl
LABEL fr_CH
MENU HIDE
KERNEL kbdmap.c32
APPEND maps/fr_CH.ktl
LABEL fr
MENU HIDE
KERNEL kbdmap.c32
APPEND maps/fr.ktl
LABEL gr
MENU HIDE
KERNEL kbdmap.c32
APPEND maps/gr.ktl
LABEL hu
MENU HIDE
KERNEL kbdmap.c32
APPEND maps/hu.ktl
LABEL il
MENU HIDE
KERNEL kbdmap.c32
APPEND maps/il.ktl
LABEL it
MENU HIDE
KERNEL kbdmap.c32
APPEND maps/it.ktl
LABEL lt
MENU HIDE
KERNEL kbdmap.c32
APPEND maps/lt.ktl
LABEL mk
MENU HIDE
KERNEL kbdmap.c32
APPEND maps/mk.ktl
LABEL nl
MENU HIDE
KERNEL kbdmap.c32
APPEND maps/nl.ktl
LABEL no
MENU HIDE
KERNEL kbdmap.c32
APPEND maps/no.ktl
LABEL pl
MENU HIDE
KERNEL kbdmap.c32
APPEND maps/pl.ktl
LABEL ru
MENU HIDE
KERNEL kbdmap.c32
APPEND maps/ru.ktl
LABEL sg
MENU HIDE
KERNEL kbdmap.c32
APPEND maps/sg.ktl
LABEL slovene
MENU HIDE
KERNEL kbdmap.c32
APPEND maps/slovene.ktl
LABEL trf
MENU HIDE
KERNEL kbdmap.c32
APPEND maps/trf.ktl
LABEL trq
MENU HIDE
KERNEL kbdmap.c32
APPEND maps/trq.ktl
LABEL ua
MENU HIDE
KERNEL kbdmap.c32
APPEND maps/ua.ktl
LABEL uk
MENU HIDE
KERNEL kbdmap.c32
APPEND maps/uk.ktl
LABEL us
MENU HIDE
KERNEL kbdmap.c32
APPEND maps/us.ktl
LABEL wangbe
MENU HIDE
KERNEL kbdmap.c32
APPEND maps/wangbe.ktl

View File

@@ -0,0 +1,536 @@
UI vesamenu.c32
F2 f2images.msg
F3 f3params.msg
F4 f4arun.msg
F5 f5troubl.msg
F6 f6pxe.msg
F7 f7net.msg
PROMPT 0
TIMEOUT 300
ONTIMEOUT rescuebru
MENU DEFAULT rescuebru
MENU TABMSG Press <TAB> to edit options or <F2>,<F3>,<F4>,<F5>,<F6>,<F7> for help
MENU TITLE RescueBRU 7.2.5 (System Rescue CD 5.2.2 (www.sysresccd.org))
MENU ROWS 16
MENU TIMEOUTROW 22
MENU TABMSGROW 24
MENU CMDLINEROW 24
MENU HELPMSGROW 26
MENU WIDTH 78
MENU MARGIN 6
MENU BACKGROUND #FF003333
MENU color title 1;31;40 #FFFF0000 #00000000 std
MENU color sel 7;37;40 #FF000000 #FFC0C0C0 all
MENU color unsel 37;44 #FFFFFFFF #00000000 none
MENU color hotsel 1;7;37;40 #FF000000 #FFC0C0C0 all
MENU color tabmsg 1;31;40 #FFFFFF00 #00000000 std
MENU color help 1;31;40 #FFFFFFFF #00000000 none
LABEL rescuebru
MENU LABEL 1) RescueBRU: Run Rescue CD Backup/Restore Utility
KERNEL ifcpu64.c32
APPEND rescue64 scandelay=1 setkmap=us dostartx docache nolvm nodmraid lowmem nonm ar_nowait autoruns=3 netboot=http://10.111.1.1/sysrcd.dat -- rescue32 scandelay=1 setkmap=us dostartx docache nolvm nodmraid lowmem nonm ar_nowait autoruns=3 netboot=http://10.111.1.1/sysrcd.dat
TEXT HELP
Standard RescueBRU Client running in GUI environment. Caches all
files to memory and ejects the CD.
ENDTEXT
LABEL rescuebru_txt
MENU LABEL 2) RescueBRU: Run Rescue CD Backup/Restore Utility (text mode)
KERNEL ifcpu64.c32
APPEND rescue64 scandelay=1 setkmap=us docache nolvm nodmraid lowmem nonm ar_nowait autoruns=1 netboot=http://10.111.1.1/sysrcd.dat -- rescue32 scandelay=1 setkmap=us nolvm nodmraid lowmem nonm ar_nowait autoruns=1 netboot=http://10.111.1.1/sysrcd.dat
TEXT HELP
Text mode RescueBRU Client for systems with less than 1Gb
of memory or lack of graphics capability. Runs directly from CD.
CD will not eject after boot. Must remove CD manually after reboot.
ENDTEXT
MENU SEPARATOR
LABEL memtest
MENU LABEL 3) MEMTEST: Memory test using Memtest86+
kernel /bootdisk/memtestp
append -
TEXT HELP
Use this tool if you suspect your RAM may be damaged. Damaged memory can
explain crashes or unexpected bahaviors on stable operating systems.
ENDTEXT
LABEL ntpass
MENU LABEL 4) NTPASSWD: Reset or edit Windows passwords
kernel /ntpasswd/vmlinuz
append rw vga=1 initrd=/ntpasswd/initrd.cgz,/ntpasswd/scsi.cgz
TEXT HELP
This tool can be used to reset windows users accounts. It works will all
windows user accounts including the administrator. You can use this tool if
you forgot the administrator's password.
ENDTEXT
LABEL dban
MENU LABEL 5) DBAN: erase all data from the disk
kernel /bootdisk/dban.bzi
append nuke="dwipe" silent
LABEL rescuecd_auto
MENU LABEL 6) Boot an existing Linux system installed on the disk
KERNEL ifcpu64.c32
APPEND rescue64 root=auto -- rescue32 root=auto
TEXT HELP
Detect partition where linux is installed and boot from it. You can use
this to boot Linux if your boot loader (eg: Grub) is broken or has been
removed by another OS.
ENDTEXT
LABEL freedos
MENU LABEL 7) FREEDOS: Clone of the MSDOS Operating System
kernel memdisk
append initrd=/bootdisk/freedos.img floppy
TEXT HELP
FreeDOS can be used to execute DOS programs such as BIOS upgrade tools
ENDTEXT
MENU SEPARATOR
LABEL rescuecd_std
MENU LABEL 8) SystemRescueCd: default boot options
KERNEL ifcpu64.c32
APPEND rescue64 scandelay=1 autoruns=no setkmap=us netboot=http://10.111.1.1/sysrcd.dat -- rescue32 scandelay=1 autoruns=no setkmap=us netboot=http://10.111.1.1/sysrcd.dat
TEXT HELP
Boot standard kernel with default options (should always work)
You should use this entry if you don't know which one to use
ENDTEXT
LABEL rescuecd_791
MENU LABEL 9) SystemRescueCd: console in high resolution (framebuffer)
KERNEL ifcpu64.c32
APPEND rescue64 nomodeset vga=791 scandelay=1 autoruns=no setkmap=us netboot=http://10.111.1.1/sysrcd.dat -- rescue32 nomodeset vga=791 scandelay=1 autoruns=no setkmap=us netboot=http://10.111.1.1/sysrcd.dat
TEXT HELP
Boot standard kernel with console in high resolution
This mode is useful only if you want to work in console mode
ENDTEXT
LABEL rescuecd_us
MENU LABEL 10) SystemRescueCd: do not ask for keyboard, use US keymap
KERNEL ifcpu64.c32
APPEND rescue64 scandelay=1 setkmap=us autoruns=no netboot=http://10.111.1.1/sysrcd.dat -- rescue32 scandelay=1 setkmap=us autoruns=no netboot=http://10.111.1.1/sysrcd.dat
TEXT HELP
Boot standard kernel and use the keymap for american keyboards
This way it will not prompt for the keymap during the boot process
ENDTEXT
LABEL rescuecd_xorg
MENU LABEL 11) SystemRescueCd: directly start the graphical environment
KERNEL ifcpu64.c32
APPEND rescue64 scandelay=1 dostartx autoruns=no setkmap=us netboot=http://10.111.1.1/sysrcd.dat -- rescue32 scandelay=1 dostartx autoruns=no setkmap=us netboot=http://10.111.1.1/sysrcd.dat
TEXT HELP
Boot standard kernel and start the XFCE graphical environment
directly. You can also get in this environment by typing "startx" from
the console.
ENDTEXT
MENU SEPARATOR
# ------------------------------------------------------------------------------
MENU BEGIN
MENU TITLE A) Run system tools from floppy disk image...
LABEL grubdisk
MENU LABEL SGD: Super Grub2 Disk
kernel memdisk
append initrd=/bootdisk/grubdisk.img floppy raw
LABEL netboot
MENU LABEL NETBOOT: Boot from the network
kernel netboot
append -
LABEL hdt
MENU LABEL HDT: recent hardware diagnostics tool
kernel memdisk
append initrd=/bootdisk/hdt.img floppy
TEXT HELP
This diagnostic tool will give you information about your hardware
ENDTEXT
LABEL aida
MENU LABEL AIDA: old hardware diagnostics tool
kernel memdisk
append initrd=/bootdisk/aida.img floppy
LABEL mhdd
MENU LABEL MHDD: Low-level Hard Drive diagnostic tool
kernel memdisk
append initrd=/bootdisk/mhdd.img floppy
MENU SEPARATOR
LABEL return
MENU LABEL Return to main menu
MENU EXIT
MENU END
# ------------------------------------------------------------------------------
MENU BEGIN
MENU TITLE B) Standard 32bit kernel (rescue32) with more choice...
LABEL rescue32_1
MENU LABEL 1. SystemRescueCd with default options
LINUX rescue32
INITRD initram.igz
APPEND scandelay=1 autoruns=no setkmap=us netboot=http://10.111.1.1/sysrcd.dat
TEXT HELP
Boot standard 32bit kernel with default options (should always work)
ENDTEXT
LABEL rescue32_3
MENU LABEL 3. SystemRescueCd with console in high resolution (1024x768)
LINUX rescue32
INITRD initram.igz
APPEND nomodeset vga=791 autoruns=no setkmap=us netboot=http://10.111.1.1/sysrcd.dat
TEXT HELP
Boot standard 32bit kernel with framebuffer console in high resolution
KMS graphic drivers (Kernel-Mode-Settings) will be disabled.
ENDTEXT
LABEL rescue32_4
MENU LABEL 4. SystemRescueCd with a standard VGA console (no KMS)
LINUX rescue32
INITRD initram.igz
APPEND nomodeset autoruns=no setkmap=us netboot=http://10.111.1.1/sysrcd.dat
TEXT HELP
Boot standard 32bit kernel and use standard low-resolution VGA console
KMS graphic drivers (Kernel-Mode-Settings) will be disabled.
Try this if you can't get a working console or new a low-resolution mode
ENDTEXT
LABEL rescue32_5
MENU LABEL 5. SystemRescueCd with a console in 800x600
LINUX rescue32
INITRD initram.igz
APPEND video=800x600 autoruns=no setkmap=us netboot=http://10.111.1.1/sysrcd.dat
TEXT HELP
Boot standard 32bit kernel and use the default graphic driver in 800x600
KMS graphic drivers (Kernel-Mode-Settings) will be used if appropriate.
Use that to get a 800x600 resolution and have a KMS compatible card.
ENDTEXT
LABEL rescue32_6
MENU LABEL 6. Boot an existing Linux OS installed on the disk
LINUX rescue32
INITRD initram.igz
APPEND root=auto
TEXT HELP
Detect partition where linux is installed and boot from it. You can use
this to boot Linux if your boot loader (eg: Grub) is broken or has been
removed by another OS.
ENDTEXT
LABEL rescue32_7
MENU LABEL 7. SystemRescueCd with the default graphical environment
LINUX rescue32
INITRD initram.igz
APPEND dostartx autoruns=no setkmap=us netboot=http://10.111.1.1/sysrcd.dat
TEXT HELP
Boot standard 32bit kernel and start the XFCE graphical environment
directly. You can also get in this environment by typing "startx" from
the console.
ENDTEXT
LABEL rescue32_8
MENU LABEL 8. SystemRescueCd with VESA based graphical environment
LINUX rescue32
INITRD initram.igz
APPEND nomodeset vga=791 dostartx forcevesa autoruns=no setkmap=us netboot=http://10.111.1.1/sysrcd.dat
TEXT HELP
Boot standard 32bit kernel and use VESA based graphical environment
Try this if you have problems to get the default graphical environment
ENDTEXT
MENU SEPARATOR
LABEL return
MENU LABEL Return to main menu
MENU EXIT
MENU END
# ------------------------------------------------------------------------------
MENU BEGIN
MENU TITLE C) Standard 64bit kernel (rescue64) with more choice...
LABEL rescue64_1
MENU LABEL 1. SystemRescueCd with default options
LINUX rescue64
INITRD initram.igz
APPEND autoruns=no setkmap=us netboot=http://10.111.1.1/sysrcd.dat
TEXT HELP
Boot standard 64bit kernel with default options (should always work)
ENDTEXT
LABEL rescue64_2
MENU LABEL 2. SystemRescueCd with all files cached to memory
LINUX rescue64
INITRD initram.igz
APPEND docache autoruns=no setkmap=us netboot=http://10.111.1.1/sysrcd.dat
TEXT HELP
Boot standard 64bit kernel and run system from RAM (cdrom can be removed)
It requires 512 MB of memory to work and takes some time during the
boot process, but the cdrom can be removed and system will be faster.
ENDTEXT
LABEL rescue64_3
MENU LABEL 3. SystemRescueCd with console in high resolution (1024x768)
LINUX rescue64
INITRD initram.igz
APPEND nomodeset vga=791 autoruns=no setkmap=us netboot=http://10.111.1.1/sysrcd.dat
TEXT HELP
Boot standard 64bit kernel with framebuffer console in high resolution
KMS graphic drivers (Kernel-Mode-Settings) will be disabled.
ENDTEXT
LABEL rescue64_4
MENU LABEL 4. SystemRescueCd with a standard VGA console (no KMS)
LINUX rescue64
INITRD initram.igz
APPEND nomodeset autoruns=no setkmap=us netboot=http://10.111.1.1/sysrcd.dat
TEXT HELP
Boot standard 64bit kernel and use standard low-resolution VGA console
KMS graphic drivers (Kernel-Mode-Settings) will be disabled.
Try this if you can't get a working console or new a low-resolution mode
ENDTEXT
LABEL rescue64_5
MENU LABEL 5. SystemRescueCd with a console in 800x600
LINUX rescue64
INITRD initram.igz
APPEND video=800x600 autoruns=no setkmap=us netboot=http://10.111.1.1/sysrcd.dat
TEXT HELP
Boot standard 64bit kernel and use the default graphic driver in 800x600
KMS graphic drivers (Kernel-Mode-Settings) will be used if appropriate.
Use that to get a 800x600 resolution and have a KMS compatible card.
ENDTEXT
LABEL rescue64_6
MENU LABEL 6. Boot an existing Linux OS installed on the disk
LINUX rescue64
INITRD initram.igz
APPEND root=auto
TEXT HELP
Detect partition where linux is installed and boot from it. You can use
this to boot Linux if your boot loader (eg: Grub) is broken or has been
removed by another OS.
ENDTEXT
LABEL rescue64_7
MENU LABEL 7. SystemRescueCd with the default graphical environment
LINUX rescue64
INITRD initram.igz
APPEND dostartx autoruns=no setkmap=us netboot=http://10.111.1.1/sysrcd.dat
TEXT HELP
Boot standard 64bit kernel and start the XFCE graphical environment
directly. You can also get in this environment by typing "startx" from
the console.
ENDTEXT
LABEL rescue64_8
MENU LABEL 8. SystemRescueCd with VESA based graphical environment
LINUX rescue64
INITRD initram.igz
APPEND nomodeset vga=791 dostartx forcevesa autoruns=no setkmap=us netboot=http://10.111.1.1/sysrcd.dat
TEXT HELP
Boot standard 64bit kernel and use VESA based graphical environment
Try this if you have problems to get the default graphical environment
ENDTEXT
MENU SEPARATOR
LABEL return
MENU LABEL Return to main menu
MENU EXIT
MENU END
# ------------------------------------------------------------------------------
MENU SEPARATOR
LABEL local1
MENU LABEL *) Boot from first hard disk
kernel chain.c32
append hd0
TEXT HELP
Boot local OS installed on first hard disk
ENDTEXT
LABEL local2
MENU LABEL *) Boot from second hard disk
kernel chain.c32
append hd1
TEXT HELP
Boot local OS installed on second hard disk
ENDTEXT
LABEL rescuecd
MENU HIDE
KERNEL ifcpu64.c32
APPEND rescue64 -- rescue32
LABEL rescue32
MENU HIDE
LINUX rescue32
INITRD initram.igz
LABEL rescue64
MENU HIDE
LINUX rescue64
INITRD initram.igz
LABEL altker32
MENU HIDE
LINUX altker32
INITRD initram.igz
LABEL altker64
MENU HIDE
LINUX altker64
INITRD initram.igz
LABEL azerty
MENU HIDE
KERNEL kbdmap.c32
APPEND maps/azerty.ktl
LABEL be
MENU HIDE
KERNEL kbdmap.c32
APPEND maps/be.ktl
LABEL bg
MENU HIDE
KERNEL kbdmap.c32
APPEND maps/bg.ktl
LABEL by
MENU HIDE
KERNEL kbdmap.c32
APPEND maps/by.ktl
LABEL cf
MENU HIDE
KERNEL kbdmap.c32
APPEND maps/cf.ktl
LABEL croat
MENU HIDE
KERNEL kbdmap.c32
APPEND maps/croat.ktl
LABEL cz
MENU HIDE
KERNEL kbdmap.c32
APPEND maps/cz.ktl
LABEL de
MENU HIDE
KERNEL kbdmap.c32
APPEND maps/de.ktl
LABEL dk
MENU HIDE
KERNEL kbdmap.c32
APPEND maps/dk.ktl
LABEL dvorak
MENU HIDE
KERNEL kbdmap.c32
APPEND maps/dvorak.ktl
LABEL es
MENU HIDE
KERNEL kbdmap.c32
APPEND maps/es.ktl
LABEL et
MENU HIDE
KERNEL kbdmap.c32
APPEND maps/et.ktl
LABEL fi
MENU HIDE
KERNEL kbdmap.c32
APPEND maps/fi.ktl
LABEL fr_CH
MENU HIDE
KERNEL kbdmap.c32
APPEND maps/fr_CH.ktl
LABEL fr
MENU HIDE
KERNEL kbdmap.c32
APPEND maps/fr.ktl
LABEL gr
MENU HIDE
KERNEL kbdmap.c32
APPEND maps/gr.ktl
LABEL hu
MENU HIDE
KERNEL kbdmap.c32
APPEND maps/hu.ktl
LABEL il
MENU HIDE
KERNEL kbdmap.c32
APPEND maps/il.ktl
LABEL it
MENU HIDE
KERNEL kbdmap.c32
APPEND maps/it.ktl
LABEL lt
MENU HIDE
KERNEL kbdmap.c32
APPEND maps/lt.ktl
LABEL mk
MENU HIDE
KERNEL kbdmap.c32
APPEND maps/mk.ktl
LABEL nl
MENU HIDE
KERNEL kbdmap.c32
APPEND maps/nl.ktl
LABEL no
MENU HIDE
KERNEL kbdmap.c32
APPEND maps/no.ktl
LABEL pl
MENU HIDE
KERNEL kbdmap.c32
APPEND maps/pl.ktl
LABEL ru
MENU HIDE
KERNEL kbdmap.c32
APPEND maps/ru.ktl
LABEL sg
MENU HIDE
KERNEL kbdmap.c32
APPEND maps/sg.ktl
LABEL slovene
MENU HIDE
KERNEL kbdmap.c32
APPEND maps/slovene.ktl
LABEL trf
MENU HIDE
KERNEL kbdmap.c32
APPEND maps/trf.ktl
LABEL trq
MENU HIDE
KERNEL kbdmap.c32
APPEND maps/trq.ktl
LABEL ua
MENU HIDE
KERNEL kbdmap.c32
APPEND maps/ua.ktl
LABEL uk
MENU HIDE
KERNEL kbdmap.c32
APPEND maps/uk.ktl
LABEL us
MENU HIDE
KERNEL kbdmap.c32
APPEND maps/us.ktl
LABEL wangbe
MENU HIDE
KERNEL kbdmap.c32
APPEND maps/wangbe.ktl

View File

@@ -0,0 +1,564 @@
UI vesamenu.c32
F2 f2images.msg
F3 f3params.msg
F4 f4arun.msg
F5 f5troubl.msg
F6 f6pxe.msg
F7 f7net.msg
PROMPT 0
TIMEOUT 50
ONTIMEOUT rbruserver
MENU DEFAULT rbruserver
MENU TABMSG Press <TAB> to edit options or <F2>,<F3>,<F4>,<F5>,<F6>,<F7> for help
MENU TITLE RescueBRU 7.2.5 (System Rescue CD 5.2.2 (www.sysresccd.org))
MENU ROWS 16
MENU TIMEOUTROW 22
MENU TABMSGROW 24
MENU CMDLINEROW 24
MENU HELPMSGROW 26
MENU WIDTH 78
MENU MARGIN 6
MENU BACKGROUND #FF003333
MENU color title 1;31;40 #FFFF0000 #00000000 std
MENU color sel 7;37;40 #FF000000 #FFC0C0C0 all
MENU color unsel 37;44 #FFFFFFFF #00000000 none
MENU color hotsel 1;7;37;40 #FF000000 #FFC0C0C0 all
MENU color tabmsg 1;31;40 #FFFFFF00 #00000000 std
MENU color help 1;31;40 #FFFFFFFF #00000000 none
LABEL rescuebru
MENU LABEL 1) RescueBRU: Run Rescue CD Backup/Restore Utility
KERNEL ifcpu64.c32
APPEND rescue64 scandelay=1 setkmap=us dostartx docache nolvm nodhcp nodmraid lowmem nonm ar_nowait autoruns=3 -- rescue32 scandelay=1 setkmap=us dostartx docache nolvm nodhcp nodmraid lowmem nonm ar_nowait autoruns=3
TEXT HELP
Standard RescueBRU Client running in GUI environment. Caches all
files to memory and ejects the CD.
ENDTEXT
LABEL rescuebru_txt
MENU LABEL 2) RescueBRU: Run Rescue CD Backup/Restore Utility (text mode)
KERNEL ifcpu64.c32
APPEND rescue64 scandelay=1 setkmap=us nolvm nodhcp nodmraid lowmem nonm ar_nowait autoruns=1 -- rescue32 scandelay=1 setkmap=us nolvm nodhcp nodmraid lowmem nonm ar_nowait autoruns=1
TEXT HELP
Text mode RescueBRU Client for systems with less than 1Gb
of memory or lack of graphics capability. Runs directly from CD.
CD will not eject after boot. Must remove CD manually after reboot.
ENDTEXT
LABEL rbruserver
MENU LABEL 3) RescueBRU Server: Run Rescue CD Backup/Restore Server
KERNEL ifcpu64.c32
APPEND rescue64 scandelay=1 setkmap=us dostartx nolvm nodhcp nodmraid nonm ar_nowait autoruns=2 -- rescue32 scandelay=1 setkmap=us dostartx nolvm nodhcp nodmraid nonm ar_nowait autoruns=2
TEXT HELP
Automatically start RescueBRU Server.Runs directly from CD.
CD will not eject after boot. Must remove CD manually after reboot.
ENDTEXT
MENU SEPARATOR
LABEL memtest
MENU LABEL 4) MEMTEST: Memory test using Memtest86+
kernel /bootdisk/memtestp
append -
TEXT HELP
Use this tool if you suspect your RAM may be damaged. Damaged memory can
explain crashes or unexpected bahaviors on stable operating systems.
ENDTEXT
LABEL ntpass
MENU LABEL 5) NTPASSWD: Reset or edit Windows passwords
kernel /ntpasswd/vmlinuz
append rw vga=1 initrd=/ntpasswd/initrd.cgz,/ntpasswd/scsi.cgz
TEXT HELP
This tool can be used to reset windows users accounts. It works will all
windows user accounts including the administrator. You can use this tool if
you forgot the administrator's password.
ENDTEXT
LABEL dban
MENU LABEL 6) DBAN: erase all data from the disk
kernel /bootdisk/dban.bzi
append nuke="dwipe" silent
LABEL rescuecd_auto
MENU LABEL 7) Boot an existing Linux system installed on the disk
KERNEL ifcpu64.c32
APPEND rescue64 root=auto -- rescue32 root=auto
TEXT HELP
Detect partition where linux is installed and boot from it. You can use
this to boot Linux if your boot loader (eg: Grub) is broken or has been
removed by another OS.
ENDTEXT
LABEL freedos
MENU LABEL 8) FREEDOS: Clone of the MSDOS Operating System
kernel memdisk
append initrd=/bootdisk/freedos.img floppy
TEXT HELP
FreeDOS can be used to execute DOS programs such as BIOS upgrade tools
ENDTEXT
MENU SEPARATOR
LABEL rescuecd_std
MENU LABEL 9) SystemRescueCd: default boot options
KERNEL ifcpu64.c32
APPEND rescue64 scandelay=1 autoruns=no setkmap=us -- rescue32 scandelay=1 autoruns=no setkmap=us
TEXT HELP
Boot standard kernel with default options (should always work)
You should use this entry if you don't know which one to use
ENDTEXT
LABEL rescuecd_docache
MENU LABEL 10) SystemRescueCd: all files cached to memory (docache)
KERNEL ifcpu64.c32
APPEND rescue64 scandelay=1 autoruns=no setkmap=us docache -- rescue32 scandelay=1 autoruns=no setkmap=us docache
TEXT HELP
Boot standard kernel and run system from RAM (cdrom can be removed)
It requires 512 MB of memory to work and takes some time during the
boot process, but the cdrom can be removed and system will be faster.
ENDTEXT
LABEL rescuecd_791
MENU LABEL 11) SystemRescueCd: console in high resolution (framebuffer)
KERNEL ifcpu64.c32
APPEND rescue64 nomodeset vga=791 scandelay=1 autoruns=no setkmap=us -- rescue32 nomodeset vga=791 scandelay=1 autoruns=no setkmap=us
TEXT HELP
Boot standard kernel with console in high resolution
This mode is useful only if you want to work in console mode
ENDTEXT
LABEL rescuecd_us
MENU LABEL 12) SystemRescueCd: do not ask for keyboard, use US keymap
KERNEL ifcpu64.c32
APPEND rescue64 scandelay=1 setkmap=us autoruns=no -- rescue32 scandelay=1 setkmap=us autoruns=no
TEXT HELP
Boot standard kernel and use the keymap for american keyboards
This way it will not prompt for the keymap during the boot process
ENDTEXT
LABEL rescuecd_xorg
MENU LABEL 13) SystemRescueCd: directly start the graphical environment
KERNEL ifcpu64.c32
APPEND rescue64 scandelay=1 dostartx autoruns=no setkmap=us -- rescue32 scandelay=1 dostartx autoruns=no setkmap=us
TEXT HELP
Boot standard kernel and start the XFCE graphical environment
directly. You can also get in this environment by typing "startx" from
the console.
ENDTEXT
MENU SEPARATOR
# ------------------------------------------------------------------------------
MENU BEGIN
MENU TITLE A) Run system tools from floppy disk image...
LABEL grubdisk
MENU LABEL SGD: Super Grub2 Disk
kernel memdisk
append initrd=/bootdisk/grubdisk.img floppy raw
LABEL netboot
MENU LABEL NETBOOT: Boot from the network
kernel netboot
append -
LABEL hdt
MENU LABEL HDT: recent hardware diagnostics tool
kernel memdisk
append initrd=/bootdisk/hdt.img floppy
TEXT HELP
This diagnostic tool will give you information about your hardware
ENDTEXT
LABEL aida
MENU LABEL AIDA: old hardware diagnostics tool
kernel memdisk
append initrd=/bootdisk/aida.img floppy
LABEL mhdd
MENU LABEL MHDD: Low-level Hard Drive diagnostic tool
kernel memdisk
append initrd=/bootdisk/mhdd.img floppy
MENU SEPARATOR
LABEL return
MENU LABEL Return to main menu
MENU EXIT
MENU END
# ------------------------------------------------------------------------------
MENU BEGIN
MENU TITLE B) Standard 32bit kernel (rescue32) with more choice...
LABEL rescue32_1
MENU LABEL 1. SystemRescueCd with default options
LINUX rescue32
INITRD initram.igz
TEXT HELP
Boot standard 32bit kernel with default options (should always work)
ENDTEXT
LABEL rescue32_2
MENU LABEL 2. SystemRescueCd with all files cached to memory
LINUX rescue32
INITRD initram.igz
APPEND docache
TEXT HELP
Boot standard 32bit kernel and run system from memory.
It requires 512 MB of memory to work and takes some time during the
boot process, but the cdrom can be removed and system will be faster.
ENDTEXT
LABEL rescue32_3
MENU LABEL 3. SystemRescueCd with console in high resolution (1024x768)
LINUX rescue32
INITRD initram.igz
APPEND nomodeset vga=791
TEXT HELP
Boot standard 32bit kernel with framebuffer console in high resolution
KMS graphic drivers (Kernel-Mode-Settings) will be disabled.
ENDTEXT
LABEL rescue32_4
MENU LABEL 4. SystemRescueCd with a standard VGA console (no KMS)
LINUX rescue32
INITRD initram.igz
APPEND nomodeset
TEXT HELP
Boot standard 32bit kernel and use standard low-resolution VGA console
KMS graphic drivers (Kernel-Mode-Settings) will be disabled.
Try this if you can't get a working console or new a low-resolution mode
ENDTEXT
LABEL rescue32_5
MENU LABEL 5. SystemRescueCd with a console in 800x600
LINUX rescue32
INITRD initram.igz
APPEND video=800x600
TEXT HELP
Boot standard 32bit kernel and use the default graphic driver in 800x600
KMS graphic drivers (Kernel-Mode-Settings) will be used if appropriate.
Use that to get a 800x600 resolution and have a KMS compatible card.
ENDTEXT
LABEL rescue32_6
MENU LABEL 6. Boot an existing Linux OS installed on the disk
LINUX rescue32
INITRD initram.igz
APPEND root=auto
TEXT HELP
Detect partition where linux is installed and boot from it. You can use
this to boot Linux if your boot loader (eg: Grub) is broken or has been
removed by another OS.
ENDTEXT
LABEL rescue32_7
MENU LABEL 7. SystemRescueCd with the default graphical environment
LINUX rescue32
INITRD initram.igz
APPEND dostartx
TEXT HELP
Boot standard 32bit kernel and start the XFCE graphical environment
directly. You can also get in this environment by typing "startx" from
the console.
ENDTEXT
LABEL rescue32_8
MENU LABEL 8. SystemRescueCd with VESA based graphical environment
LINUX rescue32
INITRD initram.igz
APPEND nomodeset vga=791 dostartx forcevesa
TEXT HELP
Boot standard 32bit kernel and use VESA based graphical environment
Try this if you have problems to get the default graphical environment
ENDTEXT
MENU SEPARATOR
LABEL return
MENU LABEL Return to main menu
MENU EXIT
MENU END
# ------------------------------------------------------------------------------
MENU BEGIN
MENU TITLE C) Standard 64bit kernel (rescue64) with more choice...
LABEL rescue64_1
MENU LABEL 1. SystemRescueCd with default options
LINUX rescue64
INITRD initram.igz
TEXT HELP
Boot standard 64bit kernel with default options (should always work)
ENDTEXT
LABEL rescue64_2
MENU LABEL 2. SystemRescueCd with all files cached to memory
LINUX rescue64
INITRD initram.igz
APPEND docache
TEXT HELP
Boot standard 64bit kernel and run system from RAM (cdrom can be removed)
It requires 512 MB of memory to work and takes some time during the
boot process, but the cdrom can be removed and system will be faster.
ENDTEXT
LABEL rescue64_3
MENU LABEL 3. SystemRescueCd with console in high resolution (1024x768)
LINUX rescue64
INITRD initram.igz
APPEND nomodeset vga=791
TEXT HELP
Boot standard 64bit kernel with framebuffer console in high resolution
KMS graphic drivers (Kernel-Mode-Settings) will be disabled.
ENDTEXT
LABEL rescue64_4
MENU LABEL 4. SystemRescueCd with a standard VGA console (no KMS)
LINUX rescue64
INITRD initram.igz
APPEND nomodeset
TEXT HELP
Boot standard 64bit kernel and use standard low-resolution VGA console
KMS graphic drivers (Kernel-Mode-Settings) will be disabled.
Try this if you can't get a working console or new a low-resolution mode
ENDTEXT
LABEL rescue64_5
MENU LABEL 5. SystemRescueCd with a console in 800x600
LINUX rescue64
INITRD initram.igz
APPEND video=800x600
TEXT HELP
Boot standard 64bit kernel and use the default graphic driver in 800x600
KMS graphic drivers (Kernel-Mode-Settings) will be used if appropriate.
Use that to get a 800x600 resolution and have a KMS compatible card.
ENDTEXT
LABEL rescue64_6
MENU LABEL 6. Boot an existing Linux OS installed on the disk
LINUX rescue64
INITRD initram.igz
APPEND root=auto
TEXT HELP
Detect partition where linux is installed and boot from it. You can use
this to boot Linux if your boot loader (eg: Grub) is broken or has been
removed by another OS.
ENDTEXT
LABEL rescue64_7
MENU LABEL 7. SystemRescueCd with the default graphical environment
LINUX rescue64
INITRD initram.igz
APPEND dostartx
TEXT HELP
Boot standard 64bit kernel and start the XFCE graphical environment
directly. You can also get in this environment by typing "startx" from
the console.
ENDTEXT
LABEL rescue64_8
MENU LABEL 8. SystemRescueCd with VESA based graphical environment
LINUX rescue64
INITRD initram.igz
APPEND nomodeset vga=791 dostartx forcevesa
TEXT HELP
Boot standard 64bit kernel and use VESA based graphical environment
Try this if you have problems to get the default graphical environment
ENDTEXT
MENU SEPARATOR
LABEL return
MENU LABEL Return to main menu
MENU EXIT
MENU END
# ------------------------------------------------------------------------------
MENU SEPARATOR
LABEL local1
MENU LABEL *) Boot from first hard disk
kernel chain.c32
append hd0
TEXT HELP
Boot local OS installed on first hard disk
ENDTEXT
LABEL local2
MENU LABEL *) Boot from second hard disk
kernel chain.c32
append hd1
TEXT HELP
Boot local OS installed on second hard disk
ENDTEXT
LABEL rescuecd
MENU HIDE
KERNEL ifcpu64.c32
APPEND rescue64 -- rescue32
LABEL rescue32
MENU HIDE
LINUX rescue32
INITRD initram.igz
LABEL rescue64
MENU HIDE
LINUX rescue64
INITRD initram.igz
LABEL altker32
MENU HIDE
LINUX altker32
INITRD initram.igz
LABEL altker64
MENU HIDE
LINUX altker64
INITRD initram.igz
LABEL azerty
MENU HIDE
KERNEL kbdmap.c32
APPEND maps/azerty.ktl
LABEL be
MENU HIDE
KERNEL kbdmap.c32
APPEND maps/be.ktl
LABEL bg
MENU HIDE
KERNEL kbdmap.c32
APPEND maps/bg.ktl
LABEL by
MENU HIDE
KERNEL kbdmap.c32
APPEND maps/by.ktl
LABEL cf
MENU HIDE
KERNEL kbdmap.c32
APPEND maps/cf.ktl
LABEL croat
MENU HIDE
KERNEL kbdmap.c32
APPEND maps/croat.ktl
LABEL cz
MENU HIDE
KERNEL kbdmap.c32
APPEND maps/cz.ktl
LABEL de
MENU HIDE
KERNEL kbdmap.c32
APPEND maps/de.ktl
LABEL dk
MENU HIDE
KERNEL kbdmap.c32
APPEND maps/dk.ktl
LABEL dvorak
MENU HIDE
KERNEL kbdmap.c32
APPEND maps/dvorak.ktl
LABEL es
MENU HIDE
KERNEL kbdmap.c32
APPEND maps/es.ktl
LABEL et
MENU HIDE
KERNEL kbdmap.c32
APPEND maps/et.ktl
LABEL fi
MENU HIDE
KERNEL kbdmap.c32
APPEND maps/fi.ktl
LABEL fr_CH
MENU HIDE
KERNEL kbdmap.c32
APPEND maps/fr_CH.ktl
LABEL fr
MENU HIDE
KERNEL kbdmap.c32
APPEND maps/fr.ktl
LABEL gr
MENU HIDE
KERNEL kbdmap.c32
APPEND maps/gr.ktl
LABEL hu
MENU HIDE
KERNEL kbdmap.c32
APPEND maps/hu.ktl
LABEL il
MENU HIDE
KERNEL kbdmap.c32
APPEND maps/il.ktl
LABEL it
MENU HIDE
KERNEL kbdmap.c32
APPEND maps/it.ktl
LABEL lt
MENU HIDE
KERNEL kbdmap.c32
APPEND maps/lt.ktl
LABEL mk
MENU HIDE
KERNEL kbdmap.c32
APPEND maps/mk.ktl
LABEL nl
MENU HIDE
KERNEL kbdmap.c32
APPEND maps/nl.ktl
LABEL no
MENU HIDE
KERNEL kbdmap.c32
APPEND maps/no.ktl
LABEL pl
MENU HIDE
KERNEL kbdmap.c32
APPEND maps/pl.ktl
LABEL ru
MENU HIDE
KERNEL kbdmap.c32
APPEND maps/ru.ktl
LABEL sg
MENU HIDE
KERNEL kbdmap.c32
APPEND maps/sg.ktl
LABEL slovene
MENU HIDE
KERNEL kbdmap.c32
APPEND maps/slovene.ktl
LABEL trf
MENU HIDE
KERNEL kbdmap.c32
APPEND maps/trf.ktl
LABEL trq
MENU HIDE
KERNEL kbdmap.c32
APPEND maps/trq.ktl
LABEL ua
MENU HIDE
KERNEL kbdmap.c32
APPEND maps/ua.ktl
LABEL uk
MENU HIDE
KERNEL kbdmap.c32
APPEND maps/uk.ktl
LABEL us
MENU HIDE
KERNEL kbdmap.c32
APPEND maps/us.ktl
LABEL wangbe
MENU HIDE
KERNEL kbdmap.c32
APPEND maps/wangbe.ktl