diskimage-builder/elements/ramdisk/extra-data.d/scripts/init
Ramakrishnan G 10d72ddb22 Add vmedia boot support for deploy-ironic element
deploy-ironic element currently retrieves token over tftp and
expects BOOT_IP_ADDRESS to be set.  This commit adds support for
retrieving token file from virtual media if node booted from
virtual media. Also corrects the issue for BOOT_IP_ADDRESS not set
for virtual media boot.

Change-Id: I3d5f1779b9b17842360860c7778baa01db1e1a52
Closes-Bug: #1356339
2014-09-11 15:41:46 +05:30

123 lines
3.6 KiB
Bash
Executable File

#!/bin/bash
# Copyright (c) 2012 NTT DOCOMO, INC.
# Copyright 2012 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.
# NOTE(bnemec): We don't want this script to exit on failures because if init
# dies then we get a kernel panic on ramdisk boot.
# dib-lint: disable=sete setu setpipefail
echo "init"
source /init-func
PATH=/sbin:/bin:/usr/bin:/usr/sbin
export PATH
mkdir -p /proc /sys /dev /boot /etc /mnt /lib/modules
mount -t proc proc /proc
FIRST_ERR_MSG=
mount -t sysfs none /sys
UDEVD=
if [ -x "/bin/systemd-udevd" ]; then
UDEVD="systemd-udevd"
else
UDEVD="udevd"
fi
# udev versions 176 and newer require a different on-disk setup
UDEVD_VERSION=$(udevadm --version)
if [ "$UDEVD_VERSION" != "" -a $UDEVD_VERSION -gt 175 ]; then
echo "Using new-style udevd setup"
mount -t devtmpfs none /dev
mkdir -p /run
mount -t tmpfs -o "nosuid,size=20%,mode=0755" tmpfs /run
mkdir -p /run/{lock,udev}
else
echo "Using old-style udevd setup"
mount -t tmpfs none /dev
ln -sf /proc/self/fd /dev/fd
mknod /dev/null c 1 3
mknod /dev/zero c 1 5
mknod /dev/random c 1 8
mknod /dev/urandom c 1 9
mknod /dev/tty0 c 4 0
mknod /dev/tty1 c 4 1
mknod /dev/tty2 c 4 2
mknod /dev/tty3 c 4 3
mknod /dev/tty4 c 4 4
mknod /dev/tty5 c 4 5
mknod /dev/tty6 c 4 6
mknod /dev/tty7 c 4 7
mknod /dev/tty8 c 4 8
mknod /dev/tty9 c 4 9
mknod /dev/tty c 5 0
mknod -m 0600 /dev/console c 5 1
mknod -m 0666 /dev/ptmx c 5 2
mkdir -p /dev/.udev/data
fi
echo "starting syslogd"
echo '*.* /initlog' > /etc/syslog.conf
syslogd
klogd
echo "starting udevd"
$UDEVD --daemon --resolve-names=never
echo "load modules"
load_modules_by_udev
# To identify that the node has booted from virtual media, a kernel
# command-line argument boot_method=vmedia is added in the iso bootloader
# configuration file (like isolinux.cfg for isolinux).
VMEDIA_BOOT_TAG="vmedia"
BOOT_METHOD=$(get_kernel_parameter boot_method)
if [ "$BOOT_METHOD" = "$VMEDIA_BOOT_TAG" ]; then
# If the node booted from virtual media cdrom, the arguments for the
# installation are provided in virtual media floppy. Find out
# the virtual media device, mount it and get the information.
configure_vmedia_dir
fi
readonly _BOOTIF_=$(get_kernel_parameter BOOTIF)
readonly _IP_=$(get_kernel_parameter ip)
readonly BOOT_MAC_ADDRESS=$(echo "$_BOOTIF_" | sed -e "s/-/:/g" | \
sed -e "s/^01://g" | tr 'a-f' 'A-F')
readonly BOOT_SERVER=$(echo "$_IP_" | cut -d':' -f2)
# IP address, netmask, gateway can be set a later point of time if
# IP address is assigned by dhcp (for non-pxe boots).
BOOT_IP_ADDRESS=$(echo "$_IP_" | cut -d':' -f1)
BOOT_NETMASK=$(echo "$_IP_" | cut -d':' -f4)
BOOT_GATEWAY=$(echo "$_IP_" | cut -d':' -f3)
readonly DISK=$(get_kernel_parameter disk)
readonly DEPLOYMENT_ID=$(get_kernel_parameter deployment_id)
readonly DEPLOYMENT_KEY=$(get_kernel_parameter deployment_key)
readonly ISCSI_TARGET_IQN=$(get_kernel_parameter iscsi_target_iqn)
TROUBLESHOOT=$(get_kernel_parameter troubleshoot)