first commit
This commit is contained in:
commit
14867d5900
5 changed files with 261 additions and 0 deletions
164
init.sh
Executable file
164
init.sh
Executable file
|
@ -0,0 +1,164 @@
|
|||
#!/bin/bash
|
||||
#
|
||||
# Script de creation d'un media bootable Debian
|
||||
# Pour l'ACAQB
|
||||
#
|
||||
# Dépend : syslinux,wget
|
||||
#
|
||||
OPTIND=1
|
||||
DEBIAN_VERSION="8.5.0"
|
||||
DEBIAN_ARCH="amd64"
|
||||
BOOT_TYPE="efi64"
|
||||
SYSLINUX_VERSION="6.03"
|
||||
SYSLINUX_FILES="com32/menu/menu.c32 com32/menu/vesamenu.c32 com32/libutil/libutil.c32 com32/lib/libcom32.c32"
|
||||
SYSLINUX_BIOS_FILES="core/ldlinux.sys com32/elflink/ldlinux/ldlinux.c32"
|
||||
SYSLINUX_EFI_FILES="com32/elflink/ldlinux/ldlinux.e64"
|
||||
TMP_DIR="tmp"
|
||||
MOUNT_DIR="/mnt/usbstick"
|
||||
|
||||
usage() {
|
||||
cat << EOF
|
||||
USAGE: ${0} [-a architecture] [-b]
|
||||
-a amd64 | i386 CPU architecture
|
||||
-b bios boot type (default is efi64)
|
||||
-d device_block USB key to write
|
||||
|
||||
${0} initialize an usb key fot debian automatic install with preseed and a partman recipe.
|
||||
EOF
|
||||
}
|
||||
|
||||
download (){
|
||||
#Download function
|
||||
# $1 : filename
|
||||
# $2 : url
|
||||
# $3 : 1 if abort download if file exist
|
||||
echo -ne "Downloading $1 ... "
|
||||
if [[ -f $1 && $3 == "1" ]]
|
||||
then
|
||||
echo file already downloaded.
|
||||
return
|
||||
fi
|
||||
wget ‐‐no-clobber -4 $2/$1 &> /dev/null
|
||||
echo "done!"
|
||||
}
|
||||
|
||||
create_dir(){
|
||||
# $1 directory to create
|
||||
if [ ! -d $1 ]; then mkdir -p $1; fi
|
||||
}
|
||||
|
||||
# Arguments ...
|
||||
while getopts "ha:bd:" opt; do
|
||||
case "$opt" in
|
||||
h)
|
||||
usage
|
||||
exit 0
|
||||
;;
|
||||
a)
|
||||
if [[ $OPTARG == "amd64" || $OPTARG == "i386" ]]
|
||||
then
|
||||
DEBIAN_ARCH=$OPTARG
|
||||
else
|
||||
echo "CPU architecture must be amd64 of i386, bye."
|
||||
exit 1
|
||||
fi
|
||||
;;
|
||||
b)
|
||||
BOOT_TYPE="bios"
|
||||
;;
|
||||
d)
|
||||
if [ -b $OPTARG ]
|
||||
then
|
||||
dest=$OPTARG
|
||||
else
|
||||
echo "Destinatioj is not a block device, bye."
|
||||
exit 1
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
# Création du répertoire temporaire
|
||||
if [ ! -d $TMP_DIR ]; then mkdir $TMP_DIR; fi
|
||||
|
||||
if [[ -z $dest ]]
|
||||
then
|
||||
echo "No destination device specified, USB key will not be created."
|
||||
fi
|
||||
|
||||
bootfiles_Debian="http://ftp.debian.org/debian/dists/jessie/main/installer-${DEBIAN_ARCH}/current/images/hd-media"
|
||||
iso_Debian="http://cdimage.debian.org/debian-cd/${DEBIAN_VERSION}/${DEBIAN_ARCH}/iso-cd/"
|
||||
iso_file="debian-${DEBIAN_VERSION}-${DEBIAN_ARCH}-netinst.iso "
|
||||
syslinux_url="https://www.kernel.org/pub/linux/utils/boot/syslinux/"
|
||||
syslinux_archive="syslinux-${SYSLINUX_VERSION}.tar.gz"
|
||||
current_dir=`pwd`
|
||||
|
||||
# Download Debian file (kernel, initrd and iso)
|
||||
echo -e "\nPrepare Debian files\n---"
|
||||
for file in "vmlinuz" "initrd.gz"
|
||||
do
|
||||
download $file $bootfiles_Debian 1
|
||||
done
|
||||
download ${iso_Debian} $iso_file 1
|
||||
|
||||
# Get Syslinux archive
|
||||
echo -e "\nPrepare syslinux files\n---"
|
||||
if [ ! -d "/tmp/syslinux-${SYSLINUX_VERSION}" ]
|
||||
then
|
||||
cd $TMP_DIR
|
||||
if [ ! -f $syslinux_archive ]; then download $syslinux_archive $syslinux_url 1; fi
|
||||
tar -xf $syslinux_archive
|
||||
cd $current_dir
|
||||
fi
|
||||
|
||||
# Copy wanted syslinux file from archive
|
||||
for file in $SYSLINUX_FILES
|
||||
do
|
||||
echo "copie de $file"
|
||||
cp ${TMP_DIR}/syslinux-${SYSLINUX_VERSION}/${BOOT_TYPE}/${file} ./syslinux/
|
||||
done
|
||||
case $BOOT_TYPE in
|
||||
efi64)
|
||||
for file in $SYSLINUX_EFI_FILES
|
||||
do
|
||||
echo "copying $file ..."
|
||||
cp ${TMP_DIR}/syslinux-${SYSLINUX_VERSION}/${BOOT_TYPE}/${file} ./syslinux/
|
||||
done
|
||||
create_dir "EFI/syslinux"
|
||||
cp ${TMP_DIR}/syslinux-${SYSLINUX_VERSION}/${BOOT_TYPE}/efi/syslinux.efi ./EFI/boot/bootx64.efi
|
||||
;;
|
||||
bios)
|
||||
for file in $SYSLINUX_BIOS_FILES
|
||||
do
|
||||
echo "copying $file ..."
|
||||
cp ${TMP_DIR}/syslinux-${SYSLINUX_VERSION}/${BOOT_TYPE}/${file} ./syslinux/
|
||||
done
|
||||
;;
|
||||
esac
|
||||
|
||||
if [[ -n $dest ]]
|
||||
then
|
||||
read -p "[WARNING] Disk $dest will be erased continue [Y/N]? " -n 1 -r
|
||||
if [[ ! $REPLY =~ ^[Yy]$ ]]
|
||||
then
|
||||
exit 1
|
||||
fi
|
||||
#dd if=/dev/zero of=${dest} bs=512 count=1 conv=notrunc &> /dev/null
|
||||
echo -e "\nCreating partition"
|
||||
parted -s ${dest} mklabel msdos mkpart primary fat32 1MiB 100% set 1 boot on
|
||||
mkfs.vfat ${dest}1 -n debian &> /dev/null
|
||||
if [[ $BOOT_TYPE == "bios" ]]
|
||||
then
|
||||
# In bis mode, we need to write syslinux MBR.
|
||||
echo "Writing syslinux mbr.ini fo $dest"
|
||||
dd bs=440 count=1 conv=notrunc if=${TMP_DIR}/syslinux-${SYSLINUX_VERSION}/bios/mbr/mbr.bin of=${dest}
|
||||
fi
|
||||
create_dir $MOUNT_DIR
|
||||
mount ${dest}1 $MOUNT_DIR
|
||||
echo "copying all file to USB drive"
|
||||
cp * $MOUNT_DIR &> /dev/null
|
||||
cp -R syslinux $MOUNT_DIR &> /dev/null
|
||||
cp -R EFI $MOUNT_DIR &> /dev/null
|
||||
umount $MOUNT_DIR
|
||||
exit 0
|
||||
fi
|
Reference in a new issue