85 lines
3.2 KiB
Bash
85 lines
3.2 KiB
Bash
#!/bin/bash
|
|
|
|
# logo
|
|
echo -e "Ubuntu Overssh Reinstallation: Create iso file"
|
|
|
|
# check for root user
|
|
if [ "$EUID" -ne 0 ]
|
|
then echo "Please run as root"
|
|
exit
|
|
fi
|
|
|
|
# default iso url
|
|
DEFAULT_ISO_URL='http://archive.ubuntu.com/ubuntu/dists/xenial/main/installer-amd64/current/images/netboot/mini.iso'
|
|
|
|
# check dependencies
|
|
echo "Checking dependencies...".
|
|
REQUIRE_COMMAND[0]='realpath'
|
|
REQUIRE_COMMAND[1]='mkisofs'
|
|
REQUIRE_COMMAND[2]='dirname'
|
|
REQUIRE_COMMAND[3]='awk'
|
|
REQUIRE_COMMAND[4]='cut'
|
|
REQUIRE_COMMAND[5]='head'
|
|
REQUIRE_COMMAND[6]='grep'
|
|
REQUIRE_COMMAND[7]='apt-get'
|
|
REQUIRE_COMMAND[8]='update-grub'
|
|
for command in "${REQUIRE_COMMAND[@]}"
|
|
do
|
|
if ! type ${command} > /dev/null 2>&1; then
|
|
echo "Please install '${command}' for continue installation"
|
|
exit 1
|
|
fi
|
|
done
|
|
echo "Done"
|
|
|
|
SCRIPT=`realpath $0`
|
|
PROJECTPATH=`dirname $SCRIPT`
|
|
CONFIGFILE=$PROJECTPATH/config
|
|
if [ ! -f $CONFIGFILE ]; then
|
|
echo "Please create config file config"
|
|
exit 1
|
|
fi
|
|
|
|
source $CONFIGFILE
|
|
|
|
ISO_FILE=$PROJECTPATH/mini.iso
|
|
|
|
if [ ! -f $ISO_FILE ]; then
|
|
echo "File mini.iso not found. Download it $DEFAULT_ISO_URL"
|
|
exit 1
|
|
fi
|
|
|
|
# copy iso
|
|
umount /mnt/ubuntu-overssh-iso 2> /dev/null
|
|
mkdir -p /mnt/ubuntu-overssh-iso
|
|
mount -o loop $ISO_FILE /mnt/ubuntu-overssh-iso 2> /dev/null
|
|
rm -rf $PROJECTPATH/ubuntu-overssh-iso
|
|
mkdir $PROJECTPATH/ubuntu-overssh-iso
|
|
cp -rT /mnt/ubuntu-overssh-iso $PROJECTPATH/ubuntu-overssh-iso
|
|
|
|
# create preseed
|
|
cp $PROJECTPATH/preseed.cfg.template $PROJECTPATH/ubuntu-overssh-iso/preseed.cfg
|
|
|
|
# replace vairables
|
|
sed -i 's/timeout 0/timeout 1/g' $PROJECTPATH/ubuntu-overssh-iso/prompt.cfg
|
|
sed -i 's/timeout 0/timeout 1/g' $PROJECTPATH/ubuntu-overssh-iso/isolinux.cfg
|
|
|
|
sed -i "s/INTERFACE_DEV/$INTERFACE_DEV/g" $PROJECTPATH/ubuntu-overssh-iso/preseed.cfg
|
|
sed -i "s/INTERFACE_IP/$INTERFACE_IP/g" $PROJECTPATH/ubuntu-overssh-iso/preseed.cfg
|
|
sed -i "s/INTERFACE_NAMESERVERS/$INTERFACE_NAMESERVERS/g" $PROJECTPATH/ubuntu-overssh-iso/preseed.cfg
|
|
sed -i "s/INTERFACE_NETMASK/$INTERFACE_NETMASK/g" $PROJECTPATH/ubuntu-overssh-iso/preseed.cfg
|
|
sed -i "s/INTERFACE_GATEWAY/$INTERFACE_GATEWAY/g" $PROJECTPATH/ubuntu-overssh-iso/preseed.cfg
|
|
sed -i "s/COUNTRY_LOWER/$COUNTRY_LOWER/g" $PROJECTPATH/ubuntu-overssh-iso/preseed.cfg
|
|
sed -i "s/COUNTRY/$COUNTRY/g" $PROJECTPATH/ubuntu-overssh-iso/preseed.cfg
|
|
sed -i "s/HOSTNAME/$HOSTNAME/g" $PROJECTPATH/ubuntu-overssh-iso/preseed.cfg
|
|
sed -i "s/DOMAIN/$DOMAIN/g" $PROJECTPATH/ubuntu-overssh-iso/preseed.cfg
|
|
sed -i "s/PASSWORD/$PASSWORD/g" $PROJECTPATH/ubuntu-overssh-iso/preseed.cfg
|
|
|
|
sed -i "s#append #append priority=critical auto=true preseed/url=$PRESEED_URL netcfg/hostname=$HOSTNAME netcfg/domain=$DOMAIN interface=$INTERFACE_DEV netcfg/disable_dhcp=true netcfg/get_ipaddress=$INTERFACE_IP netcfg/get_netmask=$INTERFACE_NETMASK netcfg/get_gateway=$INTERFACE_GATEWAY netcfg/get_nameservers=$INTERFACE_NAMESERVERS #g" $PROJECTPATH/ubuntu-overssh-iso/txt.cfg
|
|
|
|
cp $PROJECTPATH/ubuntu-overssh-iso/preseed.cfg $PROJECTPATH/preseed.cfg
|
|
|
|
mkisofs -D -r -V UBUNTU_SERVER -cache-inodes -J -l -b isolinux.bin -c boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -o $PROJECTPATH/ubuntu-overssh-reinstall.iso $PROJECTPATH/ubuntu-overssh-iso
|
|
|
|
echo "Your network iso is ready '$PROJECTPATH/ubuntu-overssh-reinstall.iso'"
|