From 90bc24b54fa01699ba3247044ceccbaf40833536 Mon Sep 17 00:00:00 2001 From: Clark Boylan Date: Wed, 30 Mar 2016 14:54:46 -0700 Subject: [PATCH] Add removal of grub boot timeouts back in When we removed the restrict memory grub stuff because hpcloud was no longer in use we also removed the configuration updates that set the grub timeout to 0. This can save many seconds per instance boot purely waiting for grub to timeout and continue booting the host. Change-Id: I2d79ec4ebd55f927d868e06c8f00cf50f34f3b92 --- .../finalise.d/99-fix-grub-timeout | 39 +++++++++++++++++++ nodepool/scripts/fix_grub_timeout.sh | 31 +++++++++++++++ nodepool/scripts/prepare_node_bare.sh | 2 + nodepool/scripts/prepare_node_devstack.sh | 2 + .../prepare_node_devstack_virt_preview.sh | 2 + 5 files changed, 76 insertions(+) create mode 100755 nodepool/elements/nodepool-base/finalise.d/99-fix-grub-timeout create mode 100755 nodepool/scripts/fix_grub_timeout.sh diff --git a/nodepool/elements/nodepool-base/finalise.d/99-fix-grub-timeout b/nodepool/elements/nodepool-base/finalise.d/99-fix-grub-timeout new file mode 100755 index 0000000000..a2b2697890 --- /dev/null +++ b/nodepool/elements/nodepool-base/finalise.d/99-fix-grub-timeout @@ -0,0 +1,39 @@ +#!/bin/bash +# Copyright (C) 2014 Hewlett-Packard Development Company, L.P. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or +# implied. +# +# See the License for the specific language governing permissions and +# limitations under the License. + +# This is done in 50 because the vm element has, at 51, an bunch of code +# for properly handling grub. All we need to do here is get our values +# in to the files. + +# dib-lint: disable=setu setpipefail +if [ ${DIB_DEBUG_TRACE:-0} -gt 0 ]; then + set -x +fi +set -e + +# Set grub timeout to zero to save boot time. +if [ -f /etc/default/grub ] ; then + sed -i -e 's/^GRUB_TIMEOUT=[0-9]\+/GRUB_TIMEOUT=0/' /etc/default/grub + if which update-grub &> /dev/null ; then + update-grub + else + # If update-grub isn't available, use grub2-mkconfig directly + /usr/sbin/grub2-mkconfig -o /boot/grub2/grub.cfg + fi +elif [ -f /boot/grub/grub.conf ] ; then + sed -i -e 's/^timeout=[0-9]\+/timeout=0/' /boot/grub/grub.conf +fi diff --git a/nodepool/scripts/fix_grub_timeout.sh b/nodepool/scripts/fix_grub_timeout.sh new file mode 100755 index 0000000000..77fb04b218 --- /dev/null +++ b/nodepool/scripts/fix_grub_timeout.sh @@ -0,0 +1,31 @@ +#!/bin/bash -xe +# Copyright (C) 2014 Hewlett-Packard Development Company, L.P. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or +# implied. +# +# See the License for the specific language governing permissions and +# limitations under the License. + +# Set the grub timeout to 0. +if [ -f /etc/default/grub ] ; then + sudo sed -i -e 's/^GRUB_TIMEOUT=[0-9]\+/GRUB_TIMEOUT=0/' \ + /etc/default/grub + if which update-grub &> /dev/null ; then + sudo update-grub + else + # If update-grub isn't available, use grub2-mkconfig directly + sudo /usr/sbin/grub2-mkconfig -o /boot/grub2/grub.cfg + fi +elif [ -f /boot/grub/grub.conf ] ; then + sudo sed -i -e 's/^timeout=[0-9]\+/timeout=0/' \ + /boot/grub/grub.conf +fi diff --git a/nodepool/scripts/prepare_node_bare.sh b/nodepool/scripts/prepare_node_bare.sh index 681e4cb4ad..8991c8656a 100755 --- a/nodepool/scripts/prepare_node_bare.sh +++ b/nodepool/scripts/prepare_node_bare.sh @@ -23,3 +23,5 @@ export THIN='false' export ALL_MYSQL_PRIVS='true' ./prepare_node.sh "$HOSTNAME" + +./fix_grub_timeout.sh diff --git a/nodepool/scripts/prepare_node_devstack.sh b/nodepool/scripts/prepare_node_devstack.sh index 3a17952606..fe07c0ca04 100755 --- a/nodepool/scripts/prepare_node_devstack.sh +++ b/nodepool/scripts/prepare_node_devstack.sh @@ -40,3 +40,5 @@ sudo chown -R jenkins:jenkins $TEMPEST_DIR/preseed-streams # Delete the venv after the script is called sudo rm -rf /opt/git/subunit2sql-env + +./fix_grub_timeout.sh diff --git a/nodepool/scripts/prepare_node_devstack_virt_preview.sh b/nodepool/scripts/prepare_node_devstack_virt_preview.sh index 0315bb307a..72c3d54a10 100755 --- a/nodepool/scripts/prepare_node_devstack_virt_preview.sh +++ b/nodepool/scripts/prepare_node_devstack_virt_preview.sh @@ -24,3 +24,5 @@ export THIN='true' ./prepare_node.sh "$HOSTNAME" sudo -u jenkins -i /opt/nodepool-scripts/prepare_devstack_virt_preview.sh \ "$HOSTNAME" + +./fix_grub_timeout.sh