f73b3741f0
Apply result of "git diff anaconda-18.37.11-1..anaconda-20.25.16-1" and resolve conflicts.
160 lines
4.8 KiB
Bash
Executable File
160 lines
4.8 KiB
Bash
Executable File
#!/bin/bash
|
|
#
|
|
# Simple script to kick off an install from a live CD
|
|
#
|
|
# Copyright (C) 2007 Red Hat, Inc. All rights reserved.
|
|
#
|
|
# This program is free software; you can redistribute it and/or modify
|
|
# it under the terms of the GNU General Public License as published by
|
|
# the Free Software Foundation; either version 2 of the License, or
|
|
# (at your option) any later version.
|
|
#
|
|
# This program is distributed in the hope that it will be useful,
|
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
# GNU General Public License for more details.
|
|
#
|
|
# You should have received a copy of the GNU General Public License
|
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
#
|
|
|
|
LIVE_INSTALL=0
|
|
IMAGE_INSTALL=0
|
|
RESCUE=0
|
|
if [[ "$LIVECMD $*" =~ "--rescue" ]]; then
|
|
RESCUE=1
|
|
fi
|
|
|
|
if [ -z "$LIVECMD" ]; then
|
|
LIVE_INSTALL=1
|
|
fi
|
|
|
|
if [[ "$LIVECMD $*" =~ "--image" ]]; then
|
|
IMAGE_INSTALL=1
|
|
fi
|
|
|
|
if [[ "$LIVECMD $*" =~ "--liveinst" ]]; then
|
|
LIVE_INSTALL=1
|
|
fi
|
|
|
|
# Try to sort out where the live device is
|
|
if [ -z "$LIVE_BLOCK" ]; then
|
|
if [ -b "/dev/mapper/live-base" ]; then
|
|
LIVE_BLOCK="/dev/mapper/live-base"
|
|
elif [ -b "/dev/mapper/live-osimg-min" ]; then
|
|
LIVE_BLOCK="/dev/mapper/live-osimg-min"
|
|
fi
|
|
fi
|
|
|
|
if [ $LIVE_INSTALL = 1 -a ! -b "$LIVE_BLOCK" ]; then
|
|
zenity --error --title="Not a Live image" --text "Can't do live image installation unless running from a live image"
|
|
exit 1
|
|
fi
|
|
|
|
# Allow running another command in the place of anaconda, but in this same
|
|
# environment. This allows storage testing to make use of all the module
|
|
# loading and lvm control in this file, too.
|
|
ANACONDA=${LIVECMD:=anaconda --liveinst --method=livecd://$LIVE_BLOCK}
|
|
|
|
# load modules that would get loaded by the initramfs (#230945)
|
|
for i in raid0 raid1 raid5 raid6 raid456 raid10 dm-mod dm-zero dm-mirror dm-snapshot dm-multipath dm-round-robin vfat dm-crypt cbc sha256 lrw xts iscsi_tcp iscsi_ibft; do /sbin/modprobe $i 2>/dev/null ; done
|
|
|
|
export ANACONDA_PRODUCTNAME=$( cat /etc/system-release | sed -r -e 's/ *release.*//' )
|
|
if [ $LIVE_INSTALL = 1 ]; then
|
|
export ANACONDA_PRODUCTVERSION=$( cat /etc/system-release | sed -r -e 's/^.* ([0-9\.]+).*$/\1/' )
|
|
elif [ $IMAGE_INSTALL = 1 ]; then
|
|
export ANACONDA_PRODUCTVERSION=$(rpmquery -q --qf '%{VERSION}' anaconda | cut -d. -f1)
|
|
fi
|
|
export ANACONDA_BUGURL=${ANACONDA_BUGURL:="https://bugzilla.redhat.com/bugzilla/"}
|
|
|
|
RELEASE=$(rpm -q --qf '%{Release}' fedora-release)
|
|
if [ "${RELEASE:0:2}" = "0." ]; then
|
|
export ANACONDA_ISFINAL="false"
|
|
else
|
|
export ANACONDA_ISFINAL="true"
|
|
fi
|
|
|
|
export PATH=/sbin:/usr/sbin:$PATH
|
|
|
|
if [ -x /usr/sbin/getenforce ]; then
|
|
current=$(/usr/sbin/getenforce)
|
|
/usr/sbin/setenforce 0
|
|
fi
|
|
|
|
if [ -z "$(sestatus | grep enabled)" ]; then
|
|
ANACONDA="$ANACONDA --noselinux"
|
|
fi
|
|
|
|
# Process cmdline args
|
|
for opt in `cat /proc/cmdline` $*; do
|
|
case $opt in
|
|
xdriver=*)
|
|
ANACONDA="$ANACONDA --$opt"
|
|
;;
|
|
updates=*)
|
|
UPDATES="${opt#updates=}"
|
|
;;
|
|
--updates=*)
|
|
UPDATES="${opt#--updates=}"
|
|
;;
|
|
inst.updates=*)
|
|
UPDATES="${opt#inst.updates=}"
|
|
;;
|
|
--inst.updates=*)
|
|
UPDATES="${opt#--inst.updates=}"
|
|
;;
|
|
esac
|
|
done
|
|
|
|
# unmount anything that shouldn't be mounted prior to install
|
|
anaconda-cleanup $ANACONDA $*
|
|
|
|
# Set up the updates, if provided.
|
|
if [ ! -z "$UPDATES" ]; then
|
|
if [ -e /tmp/updates.img -o -e /tmp/updates ]; then
|
|
zenity --error --title="Updates already exist" --text "updates= was provided, but an updates image already exists. Please remove /tmp/updates.img and /tmp/updates and try again."
|
|
exit 1
|
|
fi
|
|
|
|
curl -o /tmp/updates.img $UPDATES
|
|
|
|
# We officially support two updates.img formats: a filesystem image, and
|
|
# a compressed cpio blob.
|
|
if [ ! -z "$(file /tmp/updates.img | grep 'gzip compressed data')" ]; then
|
|
( cd / ; gzip -dc /tmp/updates.img | cpio -idu )
|
|
else
|
|
mkdir /tmp/updates.disk
|
|
mount -t auto /tmp/updates.img /tmp/updates.disk
|
|
cp -Rt / /tmp/updates.disk/*
|
|
umount /tmp/updates.disk
|
|
rmdir /tmp/updates.disk
|
|
fi
|
|
|
|
export PYTHONPATH=/tmp/updates:$PYTHONPATH
|
|
export LD_LIBRARY_PATH=/tmp/updates:$LD_LIBRARY_PATH
|
|
export PATH=/tmp/updates:$PATH
|
|
fi
|
|
|
|
# Prevents breakage if the hostname is changed during the install
|
|
xhost +si:localuser:root
|
|
|
|
if [ -x /usr/bin/udisks ]; then
|
|
/usr/bin/udisks --inhibit -- $ANACONDA $*
|
|
else
|
|
$ANACONDA $*
|
|
fi
|
|
|
|
if [ -e /tmp/updates ]; then rm -r /tmp/updates; fi
|
|
if [ -e /tmp/updates.img ]; then rm /tmp/updates.img; fi
|
|
|
|
# try to teardown the filesystems if this was an image install
|
|
if [ $IMAGE_INSTALL = 1 -a $RESCUE = 0 ]; then
|
|
anaconda-cleanup
|
|
fi
|
|
|
|
rm -f /dev/.in_sysinit 2>/dev/null
|
|
|
|
if [ -n "$current" ]; then
|
|
/usr/sbin/setenforce $current
|
|
fi
|