Fixup kernel detection during upgrade process to ensure someone can't end up with a kernel that doesn't exist any more.
This commit is contained in:
parent
6acfbc6f49
commit
f16a622038
|
@ -155,25 +155,17 @@ function check_for_kernel_file() {
|
|||
}
|
||||
if(!file_exists("/boot/kernel/pfsense_kernel.txt")) {
|
||||
echo "\nPlease select which kernel you would like to use:\n";
|
||||
echo "\n1. Non SMP kernel";
|
||||
echo "\n2. SMP kernel";
|
||||
echo "\n3. Embedded kernel (no video or keyboard)";
|
||||
echo "\n4. Developers kernel (slower performing, more debugging)\n";
|
||||
echo "\nPlease enter a number [1-4]: ";
|
||||
echo "\n1. Standard Kernel";
|
||||
echo "\n2. Embedded Kernel (no video or keyboard)";
|
||||
echo "\nPlease enter a number [1-2]: ";
|
||||
$selection = strtoupper(chop(fgets($fp)));
|
||||
switch ($selection) {
|
||||
case "1":
|
||||
exec("echo UP > /boot/kernel/pfsense_kernel.txt");
|
||||
break;
|
||||
case "2":
|
||||
exec("echo SMP > /boot/kernel/pfsense_kernel.txt");
|
||||
break;
|
||||
case "3":
|
||||
case "2":
|
||||
exec("echo wrap > /boot/kernel/pfsense_kernel.txt");
|
||||
break;
|
||||
case "4":
|
||||
exec("echo Developers > /boot/kernel/pfsense_kernel.txt");
|
||||
break;
|
||||
}
|
||||
echo "\n";
|
||||
}
|
||||
|
|
|
@ -3,34 +3,78 @@
|
|||
/etc/rc.conf_mount_rw
|
||||
|
||||
PFSENSETYPE=`cat /etc/platform`
|
||||
KERNELTYPE=`cat /boot/kernel/pfsense_kernel.txt`
|
||||
|
||||
if [ $KERNELTYPE = "wrap" ]; then
|
||||
if [ -f /kernels/kernel_wrap.gz ]; then
|
||||
tar xzpf /kernels/kernel_wrap.gz --exclude loader.conf -C /boot/
|
||||
cp /etc/ttys_wrap /etc/ttys
|
||||
fi
|
||||
# check in two places for the old kernel type, since it could have been moved elsewhere in the upgrade process.
|
||||
if [ -f /boot/kernel/pfsense_kernel.txt ]; then
|
||||
OLDKERNEL=`cat /boot/kernel/pfsense_kernel.txt`
|
||||
else
|
||||
OLDKERNEL=`cat /tmp/pfsense_kernel.txt`
|
||||
fi
|
||||
if [ $KERNELTYPE = "wrap_vga" ]; then
|
||||
if [ -f /kernels/kernel_wrap_vga.gz ]; then
|
||||
tar xzpf /kernels/kernel_wrap_vga.gz --exclude loader.conf -C /boot/
|
||||
fi
|
||||
fi
|
||||
if [ $KERNELTYPE = "Developers" ]; then
|
||||
if [ -f /kernels/kernel_Dev.gz ]; then
|
||||
tar xzpf /kernels/kernel_Dev.gz --exclude loader.conf -C /boot/
|
||||
cp /boot/kernel/kernel.gz
|
||||
fi
|
||||
fi
|
||||
if [ $KERNELTYPE = "SMP" ]; then
|
||||
if [ -f /kernels/kernel_SMP.gz ]; then
|
||||
tar xzpf /kernels/kernel_SMP.gz --exclude loader.conf -C /boot/
|
||||
fi
|
||||
fi
|
||||
if [ $KERNELTYPE = "UP" ]; then
|
||||
if [ -f /kernels/kernel_SMP.gz ]; then
|
||||
tar xzpf /kernels/kernel_uniprocessor.gz --exclude loader.conf -C /boot/
|
||||
fi
|
||||
|
||||
# Massage the existing kernel into one that actually exists.
|
||||
# Leaving old entries so we can bring back other kernels later if desired.
|
||||
case "$OLDKERNEL" in
|
||||
"wrap")
|
||||
KERNELTYPE=wrap
|
||||
;;
|
||||
"wrap_vga")
|
||||
KERNELTYPE=wrap_vga
|
||||
;;
|
||||
"Developers")
|
||||
KERNELTYPE=SMP
|
||||
;;
|
||||
"UP")
|
||||
KERNELTYPE=SMP
|
||||
;;
|
||||
"SMP")
|
||||
KERNELTYPE=SMP
|
||||
;;
|
||||
*)
|
||||
KERNELTYPE=SMP
|
||||
;;
|
||||
esac
|
||||
|
||||
# Overwrite the old kernel type with what we're using now to reflect what is about to be written out.
|
||||
echo ${KERNELTYPE} > /boot/kernel/pfsense_kernel.txt
|
||||
HAVE_KERNEL=false
|
||||
|
||||
case "${KERNELTYPE}" in
|
||||
"wrap")
|
||||
if [ -f /kernels/kernel_wrap.gz ]; then
|
||||
HAVE_KERNEL=true
|
||||
tar xzpf /kernels/kernel_wrap.gz --exclude loader.conf -C /boot/
|
||||
cp /etc/ttys_wrap /etc/ttys
|
||||
fi
|
||||
;;
|
||||
"wrap_vga")
|
||||
if [ -f /kernels/kernel_wrap_vga.gz ]; then
|
||||
HAVE_KERNEL=true
|
||||
tar xzpf /kernels/kernel_wrap_vga.gz --exclude loader.conf -C /boot/
|
||||
fi
|
||||
;;
|
||||
"Developers")
|
||||
if [ -f /kernels/kernel_Dev.gz ]; then
|
||||
HAVE_KERNEL=true
|
||||
tar xzpf /kernels/kernel_Dev.gz --exclude loader.conf -C /boot/
|
||||
fi
|
||||
;;
|
||||
"UP")
|
||||
if [ -f /kernels/kernel_uniprocessor.gz ]; then
|
||||
HAVE_KERNEL=true
|
||||
tar xzpf /kernels/kernel_uniprocessor.gz --exclude loader.conf -C /boot/
|
||||
fi
|
||||
;;
|
||||
"SMP")
|
||||
if [ -f /kernels/kernel_SMP.gz ]; then
|
||||
HAVE_KERNEL=true
|
||||
tar xzpf /kernels/kernel_SMP.gz --exclude loader.conf -C /boot/
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
|
||||
if [ ${HAVE_KERNEL} = "false" ]; then
|
||||
echo "ERROR: Unable to locate a kernel upgrade file!"
|
||||
sleep 5
|
||||
fi
|
||||
|
||||
if [ $PFSENSETYPE = "pfSense" ] || [ $PFSENSETYPE = "nanobsd" ]; then
|
||||
|
@ -38,17 +82,19 @@ if [ $PFSENSETYPE = "pfSense" ] || [ $PFSENSETYPE = "nanobsd" ]; then
|
|||
fi
|
||||
|
||||
# Detect interactive logins and display the shell
|
||||
echo "if [ \`env | grep SSH_TTY | wc -l\` -gt 0 ] || [ \`env | grep cons25 | wc -l\` -gt 0 ]; then" > $CVS_CO_DIR/root/.shrc
|
||||
echo " /etc/rc.initial" >> $CVS_CO_DIR/root/.shrc
|
||||
echo " exit" >> $CVS_CO_DIR/root/.shrc
|
||||
echo "fi" >> $CVS_CO_DIR/root/.shrc
|
||||
echo "if [ \`env | grep SSH_TTY | wc -l\` -gt 0 ] || [ \`env | grep cons25 | wc -l\` -gt 0 ]; then" >> $CVS_CO_DIR/root/.profile
|
||||
echo " /etc/rc.initial" >> $CVS_CO_DIR/root/.profile
|
||||
echo " exit" >> $CVS_CO_DIR/root/.profile
|
||||
echo "fi" >> $CVS_CO_DIR/root/.profile
|
||||
detect_command='[ -n "$SSH_TTY" -o "$TERM" = "cons25" ] && exec /etc/rc.initial'
|
||||
echo "$detect_command" > $CVS_CO_DIR/root/.shrc
|
||||
echo "$detect_command" >> $CVS_CO_DIR/root/.profile
|
||||
|
||||
# Now turn on or off serial console as needed
|
||||
/tmp/post_upgrade_command.php
|
||||
echo "Checking for /tmp/$1/tmp/post_upgrade_command.php... " >> /conf/upgrade_log.txt
|
||||
if [ -x /tmp/$1/tmp/post_upgrade_command.php ]; then
|
||||
echo "Running /tmp/$1/tmp/post_upgrade_command.php $1" >> /conf/upgrade_log.txt
|
||||
/tmp/$1/tmp/post_upgrade_command.php $1 >> /conf/upgrade_log.txt 2>&1
|
||||
elif [ -f /tmp/post_upgrade_command.php ]; then
|
||||
echo "Running /tmp/post_upgrade_command.php $1" >> /conf/upgrade_log.txt
|
||||
/tmp/post_upgrade_command.php $1
|
||||
fi
|
||||
|
||||
# Remove any previous MD5 sum files
|
||||
rm -f /root/*.md5
|
||||
|
|
|
@ -51,10 +51,8 @@ require_once("guiconfig.inc");
|
|||
$curcfg = $config['system']['firmware'];
|
||||
|
||||
$kerneltypes = array(
|
||||
'SMP' => gettext("Multiprocessor kernel"),
|
||||
'single' => gettext("Uniprocessor kernel"),
|
||||
'wrap' => gettext("Embedded kernel"),
|
||||
'Developers' => gettext("Developers kernel")
|
||||
'SMP' => gettext("Standard Kernel"),
|
||||
'wrap' => gettext("Embedded Kernel"),
|
||||
);
|
||||
|
||||
require_once("xmlrpc_client.inc");
|
||||
|
|
Reference in New Issue