[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Installer Frage nach weiterer CD/DVD per preseed ausschalten



Am 21.03.2017 um 17:02 schrieb Stefan Baur:
Am 21.03.2017 um 16:55 schrieb Matthias Taube:
Ich habe ein eigenes Script, welches die netinstall-cd aus dem Netz
zieht (falls noch nicht lokal vorhanden), dort mein preseed, die
benötigte Firmware sowie weitere eigene Installationsdateien reinmixt
und daraus dann wieder ein eigenes install-iso baut.

Mit hilfreichen Kommentaren versehen und hier auf die Liste gepostet
könnte das vielleicht auch noch für andere Debianer (und solche die es
werden wollen) nützlich sein.

Dass mit den Kommentaren ist so eine Sache, da bisher nur für die eigene Verwendung vorgesehen (und über einige Jahre gewachsen).

Hier mal ein Auszug, vielleicht hilft es ja:

Zunächst die Quellen festlegen:

LOCATION='http://cdimage.debian.org/cdimage/daily-builds/daily/arch-latest/amd64/iso-cd/'
DNAME='debian-testing-amd64-netinst.iso'
DNAME1='debian-testing-amd64-netinst1.iso'
> FLAVOR="amd"

echo "1 = Debian stable amd64 (jessie, 8.2.0)";
echo "2 = Debian testing amd64 (daily build)";
echo "3 = Debian stable i386 (jessie, 8.2.0)";
read version
if [ "$version" = "1" ]
  then
     LOCATION='http://cdimage.debian.org/debian-cd/current/amd64/iso-cd/'
     DNAME='debian-8.2.0-amd64-netinst.iso'
     DNAME1='debian-8.2.0-amd64-netinst1.iso'
  else
     LOCATION='http://cdimage.debian.org/cdimage/daily-builds/daily/arch-latest/amd64/iso-cd/'
     # LOCATION='http://cdimage.debian.org/cdimage/weekly-builds/amd64/iso-cd/'
     DNAME='debian-testing-amd64-netinst.iso'
     DNAME1='debian-testing-amd64-netinst1.iso'

fi
if [ "$version" = "3" ]
  then
     LOCATION='http://cdimage.debian.org/debian-cd/current/i386/iso-cd/'
     DNAME='debian-8.2.0-i386-netinst.iso'
     DNAME1='debian-8.2.0-i386-netinst1.iso'
     FLAVOR="386"
fi

Nun die netinstall-iso und Firmware holen (falls die nicht schon aktuell auf der Platte sind, deshalb wget -N:

wget -N "$LOCATION""$DNAME"
mkdir -p firmware
cd firmware
wget -N http://cdimage.debian.org/cdimage/unofficial/non-free/firmware/jessie/current/firmware.tar.gz
tar xvfz firmware.tar.gz
rm firmware.tar.gz

mittels eines loop das ISO direkt als Dateisystem mounten und die darin enthaltenen Dateien in ein Verzeichnis unterhalb /tmp kopieren:

mkdir -p loopdir
mount -o loop $DNAME loopdir
rm -rf /tmp/cd-neu
mkdir /tmp/cd-neu
rsync -a -H --exclude=TRANS.TBL loopdir/ /tmp/cd-neu
umount loopdir

Nun die Firmware-Dateien in das ISO-Verzeichnis kopieren

cp firmware/* /tmp/cd-neu/firmware/

Es reicht nicht aus, dass preseed auf der CD vorliegt, die Datei muss auch in der initrd drin sein. Deshalb wird nun auch die initrd entpackt, preseed dazu kopiert und wieder eine neue initrd erstellt:

rm -rf /tmp/irmod/
mkdir /tmp/irmod
cd /tmp/irmod
gzip -d < /tmp/cd-neu/install.$FLAVOR/initrd.gz | cpio --extract --verbose --make-directories --no-absolute-filenames
cp $PRESEED preseed.cfg
find . | cpio -H newc --create --verbose | gzip -9 > /tmp/cd-neu/install.$FLAVOR/initrd.gz
cd /tmp/cd-neu
rm -rf /tmp/irmod/

Die preeseed-Datei sowie weitere Scripte, welche durch den Debian-Installer aufgerufen werden sollen, auf die CD packen:

cp $PRESEED /tmp/cd-neu/preseed.cfg
cp -L $INAME/ssh_pre.sh $INAME/*.pub /tmp/cd-neu/install/
cp -L $INAME/ssh_pre.sh $INAME/*.pub /tmp/cd-neu/install.$FLAVOR/

In der Datei ssh_pre.sh werden bei mir die erforderlichen authorized_keys für ssh im Zielsystem gesetzt, so dass unmittelbar nach der Installation ein Zugriff per script auf das neue System möglich ist.

Nun die Prüfsummen anpassen und die neue CD erstellen:

md5sum `find -follow -type f` > md5sum.txt
cd /tmp
genisoimage -o $DNAME1 -r -J -no-emul-boot -boot-load-size 4 -boot-info-table -b isolinux/isolinux.bin -c isolinux/boot.cat /tmp/cd-neu




Reply to: