#!/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)