#!/bin/bash

# This script do the following:
#   Download Debian Initrd for Stretch, Buster, Jessie, Wheezy and Sid
#   Download firmwares:
#     bnx2
#     all non-free (for tigon)
#   Extract all downloaded files
#   Make a new initrd with the previous firmwares

if command -v in.tftpd > /dev/null; then
	source /etc/default/tftpd-hpa
else
	TFTP_DIRECTORY="/srv/tftp"
fi

for DISTRO in stretch buster jessie wheezy sid; do  # For ALL Debian's version

	TEMP_DIR=$(mktemp -d)
	pushd "${TEMP_DIR}" > /dev/null

	# Download and uncompress original initrd
	#wget http://ftp.fr.debian.org/debian/dists/${DISTRO}/main/installer-amd64/current/images/netboot/debian-installer/amd64/initrd.gz
	wget --quiet http://ftp.fr.debian.org/debian/dists/${DISTRO}/main/installer-amd64/current/images/netboot/debian-installer/amd64/initrd.gz
	mkdir "${TEMP_DIR}"/mkinitrd
	pushd "${TEMP_DIR}"/mkinitrd/ > /dev/null
	zcat ../initrd.gz | cpio -iv

	popd > /dev/null

	# Download bnx2's firmware and uncompress it
	#wget http://ftp.fr.debian.org/debian/pool/non-free/f/firmware-nonfree/firmware-bnx2_0.43_all.deb
	wget --quiet http://ftp.fr.debian.org/debian/pool/non-free/f/firmware-nonfree/firmware-bnx2_0.43_all.deb
	dpkg-deb -x firmware-bnx2_0.43_all.deb "${TEMP_DIR}"/mkinitrd

	# Download tigon(all non-free)'s firmware and uncompress it
	#wget http://ftp.fr.debian.org/debian/pool/non-free/f/firmware-nonfree/firmware-linux-nonfree_0.43_all.deb
	wget --quiet http://ftp.fr.debian.org/debian/pool/non-free/f/firmware-nonfree/firmware-linux-nonfree_0.43_all.deb
	dpkg-deb -x firmware-linux-nonfree_0.43_all.deb "${TEMP_DIR}"/mkinitrd

	# Download myricom for IBM
	#wget http://ftp.fr.debian.org/debian/pool/non-free/f/firmware-nonfree/firmware-myricom_0.43_all.deb
	wget --quiet http://ftp.fr.debian.org/debian/pool/non-free/f/firmware-nonfree/firmware-myricom_0.43_all.deb
	dpkg-deb -x firmware-myricom_0.43_all.deb "${TEMP_DIR}"/mkinitrd

	# Download qlogic
	#wget http://ftp.fr.debian.org/debian/pool/non-free/f/firmware-nonfree/firmware-qlogic_0.43_all.deb
	wget --quiet http://ftp.fr.debian.org/debian/pool/non-free/f/firmware-nonfree/firmware-qlogic_0.43_all.deb
	dpkg-deb -x firmware-qlogic_0.43_all.deb "${TEMP_DIR}"/mkinitrd

	# Download iwlwifi
	#wget http://ftp.fr.debian.org/debian/pool/non-free/f/firmware-nonfree/firmware-iwlwifi_20170823-1_all.deb -O firmware-iwlwifi_all.deb
	wget --quiet http://ftp.fr.debian.org/debian/pool/non-free/f/firmware-nonfree/firmware-iwlwifi_20170823-1_all.deb -O firmware-iwlwifi_all.deb
	dpkg-deb -x firmware-iwlwifi_all.deb "${TEMP_DIR}"/mkinitrd

	# Make a new initrd
	mv initrd.gz initrd_orig.gz
	pushd "${TEMP_DIR}"/mkinitrd/ > /dev/null
	find . -print0 | cpio -0 -H newc -ov | gzip -c > ../initrd.gz
	popd > /dev/null

	# Move it to PXE Debian installer
	mkdir -p ${TFTP_DIRECTORY}/installer/debian/${DISTRO}/amd64/
	mv initrd.gz ${TFTP_DIRECTORY}/installer/debian/${DISTRO}/amd64/initrd_firm.gz

	popd > /dev/null

	# Clean temp file
	rm -rf "${TEMP_DIR}"

done

exit 0
