Adds a new err_msg function which is used to: -echo feedback to the deploy ramdisk console -keep track of the first error message we hit so that we can send it along to the baremetal-deploy-helper. Also, updates our wget request back to baremetal-deploy-helper to include the first the first error message (if any) as the 'e' parameter. The err_msg uses a new simple safe_url_encode function to ensure we don't send invalid characters in our HTTP post requests. Change-Id: I5a623a6f66cde8d81ff1e75800dc2953ca2703a8
		
			
				
	
	
		
			146 lines
		
	
	
		
			3.5 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
			
		
		
	
	
			146 lines
		
	
	
		
			3.5 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
#!/bin/bash
 | 
						|
 | 
						|
# Copyright (c) 2012 NTT DOCOMO, INC.
 | 
						|
# Copyright 2012 Hewlett-Packard Development Company, L.P.
 | 
						|
#
 | 
						|
# All Rights Reserved.
 | 
						|
#
 | 
						|
#    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.
 | 
						|
 | 
						|
echo "init"
 | 
						|
 | 
						|
source /init-func
 | 
						|
 | 
						|
PATH=/sbin:/bin:/usr/bin:/usr/sbin
 | 
						|
export PATH
 | 
						|
 | 
						|
mkdir -p /proc
 | 
						|
mkdir -p /sys
 | 
						|
mkdir -p /dev
 | 
						|
mkdir -p /boot
 | 
						|
mkdir -p /etc
 | 
						|
mkdir -p /mnt
 | 
						|
mkdir -p /lib/modules
 | 
						|
 | 
						|
mount -t proc proc /proc
 | 
						|
 | 
						|
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_IP_ADDRESS=$(echo "$_IP_" | cut -d':' -f1)
 | 
						|
readonly BOOT_SERVER=$(echo "$_IP_" | cut -d':' -f2)
 | 
						|
readonly BOOT_NETMASK=$(echo "$_IP_" | cut -d':' -f4)
 | 
						|
readonly 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)
 | 
						|
readonly TROUBLESHOOT=$(get_kernel_parameter troubleshoot)
 | 
						|
FIRST_ERR_MSG=
 | 
						|
 | 
						|
mount -t sysfs none /sys
 | 
						|
 | 
						|
UDEVD=
 | 
						|
if [ -x "/bin/systemd-udevd" ]; then
 | 
						|
    UDEVD="systemd-udevd"
 | 
						|
else
 | 
						|
    UDEVD="udevd"
 | 
						|
fi
 | 
						|
 | 
						|
if [ "$UDEVD" = "systemd-udevd" ]; then
 | 
						|
    # devtmpfs is required since udev 176
 | 
						|
    mount -t devtmpfs none /dev
 | 
						|
    mkdir -p /run
 | 
						|
    mount -t tmpfs -o "nosuid,size=20%,mode=0755" tmpfs /run
 | 
						|
    mkdir -p /run/lock
 | 
						|
else
 | 
						|
    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
 | 
						|
    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
 | 
						|
 | 
						|
echo "starting network $BOOT_MAC_ADDRESS"
 | 
						|
t=0
 | 
						|
while ! BOOT_INTERFACE=$(find_interface "$BOOT_MAC_ADDRESS"); do
 | 
						|
	t=`expr "$t" + 5`
 | 
						|
	if [ "$t" -gt 10 ]; then
 | 
						|
		break
 | 
						|
	fi
 | 
						|
	sleep 5
 | 
						|
done
 | 
						|
if [ -z "$BOOT_INTERFACE" ]; then
 | 
						|
	err_msg "Could not find an interface that owns MAC: $BOOT_MAC_ADDRESS"
 | 
						|
	troubleshoot
 | 
						|
fi
 | 
						|
 | 
						|
readonly BOOT_INTERFACE
 | 
						|
 | 
						|
ifconfig lo 127.0.0.1 up
 | 
						|
ifconfig "$BOOT_INTERFACE" up
 | 
						|
if [ $? -ne 0 ]; then
 | 
						|
	sleep 10
 | 
						|
	ifconfig "$BOOT_INTERFACE" up
 | 
						|
	if [ $? -ne 0 ]; then
 | 
						|
		err_msg "Failed to ifconfig up $BOOT_INTERFACE"
 | 
						|
		troubleshoot
 | 
						|
	fi
 | 
						|
fi
 | 
						|
ifconfig "$BOOT_INTERFACE" "$BOOT_IP_ADDRESS" netmask "$BOOT_NETMASK"
 | 
						|
route add default gw $BOOT_GATEWAY
 | 
						|
 | 
						|
echo "pinging to boot server $BOOT_SERVER"
 | 
						|
w=30
 | 
						|
while [ $w -gt 0 ]; do
 | 
						|
	ping -c 5 -q "$BOOT_SERVER" > /dev/null
 | 
						|
	if [ $? -eq 0 ]; then
 | 
						|
		break
 | 
						|
	fi
 | 
						|
	sleep 1
 | 
						|
	w=`expr $w - 5`
 | 
						|
done
 | 
						|
 | 
						|
echo "network ready"
 | 
						|
 |