CW
Netswimmer
Da ich sehr oft neue Kernelkonfigurationen ausprobiere und ebenfalls auch das ganze System baue, habe ich mir ein quick-and-dirty Shell-Script gebastelt.
Und dieses möchte ich natürlich auch allen anderen anbieten, die keine Lust mehr auf config KERNEL && make depend && make && make install usw. haben
Wenn es Verbesserungsvorschläge gibt, dann baut sie doch sofort ein
Ich werde sie dann sofort ausprobieren.
Das Script habe ich als buildall.sh abgespeichert und führe es mit einem einfachen sh buildall.sh KERNELDATEI aus.
Dabei spielt es keine Rolle, in welchen Verzeichnis ich mich befinde.
Man muss aber in der Gruppe wheel sein und die jeweiligen SUDO-Rechte in der /etc/sudoers haben.
Das dürfte aber allen, die Kernel/Systeme bauen wohl klar sein
Das Script erledigt neben der Kompilierarbeit auch die ganze Reinigung des Quellcodes.
-------------------------------------------------------------------------------------------
Und dieses möchte ich natürlich auch allen anderen anbieten, die keine Lust mehr auf config KERNEL && make depend && make && make install usw. haben
Wenn es Verbesserungsvorschläge gibt, dann baut sie doch sofort ein
Ich werde sie dann sofort ausprobieren.
Das Script habe ich als buildall.sh abgespeichert und führe es mit einem einfachen sh buildall.sh KERNELDATEI aus.
Dabei spielt es keine Rolle, in welchen Verzeichnis ich mich befinde.
Man muss aber in der Gruppe wheel sein und die jeweiligen SUDO-Rechte in der /etc/sudoers haben.
Das dürfte aber allen, die Kernel/Systeme bauen wohl klar sein
Das Script erledigt neben der Kompilierarbeit auch die ganze Reinigung des Quellcodes.
-------------------------------------------------------------------------------------------
Code:
#!/bin/sh
#
# OpenBSD AutoBuild
#
# Datum: 03.09.2003
# Autor: CW
######################
#######################
#
# Scriptablauf:
#
# Zuerst wird überprüft, ob eine Datei namens datum im Homeverzeichnis
# vorhanden ist. Wenn ja, wird in die Datei geschaut und das abgespeicherte
# Datum wird mit dem aktuellen verglichen. Solle es sich um dasselbe handeln,
# bricht der Vorgang ab. Wir wollen ja nicht mehr als einmal am Tag das
# komplette System neu bauen.
#
#
# Danach wird überprüft, ob überhaupt eine Kernel-Config-Datei angegeben
# worden ist. Wenn nicht, wird ein Listing von /sys/arc/i386/conf
# gemacht und der weitere Vorgang abgebrochen.
#
#
# Wenn ein Dateiname angegeben worden ist, wird überprüft, ob diese vorhanden
# ist. Wenn nicht, dann gibt es eine Dateiauflistung von /sys/arch/i386/conf.
#
#
# Wenn die Datei vorhanden ist, laufen folgende Vorgänge ab:
#
# a) Alte Objektdateien im Compile-Verzeichnis werden gelöscht
# b) Konfiguration der Kernel-Konfig-Datei
# c) Wechsel nach ../compile/DATEINAME & Kernel-Kompilierung
# d) Alte Objektdateien und herumliegende Binaries in /usr/src werden gelöscht
# e) Neue Objektverzeichnisse werden angelegt
# f) Das System wird neu kompiliert
# g) Eine neue Datum-Datei wird angelegt
# h) 10 Sekunden lang warten und danach rebooten
#
###################################################
# der erste Parameter wird als Dateiname übernommen
MACHINE=$1
# Wann ist zum letzten Mal alles gebaut worden?
if [ -a $HOME/datum ]; then
if [ `date +"%Y-%m-%d"` = `cat $HOME/datum` ]; then
# Wenn heute, dann Ende!
echo "\nDas System ist bereits up-to-date!\n"
exit 0
fi
fi
# Ohne eine Dateiangabe machen wir nicht weiter.
if [ -z $MACHINE ];
then
echo "\nFEHLER: Der Kernel-Config-Name fehlt!\n"
echo "\n Folgende Kernel-Config-Dateien können angegeben werden:"
echo "------------------------------------------------------------"
# Die Liste aller Kernel-Configs
ls -la -1 /sys/arch/i386/conf
exit 0
fi
# Ist die angegebene Datei vohanden?
if ! [ -a /usr/src/sys/arch/i386/conf/$MACHINE ]; then
echo "\nDie angegebene Kernel-Config-Datei $MACHINE existiert nicht!\n"
echo "\n Folgende Kernel-Config-Dateien können angegeben werden:"
ls -la -1 /sys/arch/i386/conf
exit 0
fi
if [ -d /usr/src/sys/arch/i386/compile/$MACHINE ]; then
echo -n "\n Alte Objektdateien werden gelöscht ..."
cd /usr/src/sys/arch/i386/compile/$MACHINE
sudo make clean > /dev/null 2>&1
echo " erfolgreich!"
echo -n "\n Die Kernel-Konfiguration $MACHINE wird generiert ..."
cd /usr/src/sys/arch/i386/conf
sudo config $MACHINE > /dev/null 2>&1 && echo " erfolgreich!"
cd ../compile/$MACHINE
echo -n "\n Der neue Kernel $MACHINE wird kompiliert ..."
sudo make depend > /dev/null 2>&1 && sudo make > /dev/null 2>&1 && sudo make install > /dev/null 2>&1
echo " erfolgreich!"
cd /usr/src
echo -n "\n Der System-Quellcodebaum wird bereinigt ..."
sudo rm -rf /usr/obj/*
find . -type l -name obj | sudo xargs rm
sudo make clean > /dev/null 2>&1
echo " erfolgreich!"
echo -n "\n Neue Objektverzeichnisse werden angelegt ..."
sudo make obj > /dev/null 2>&1
echo " erfolgreich!"
echo -n "\n Das System wird neu gebaut ..."
sudo make build > /dev/null 2>&1
echo " erfolgreich!"
echo "\n\n Das komplette System $MACHINE ist gebaut worden ... NEUSTART erfolgt in 10 Sekunden!"
cd && echo `date +"%Y-%m-%d"` > `pwd`/datum
sleep 10 && sudo reboot
###############################################
# Ansonsten wird eine Fehlermeldung generiert.#
###############################################
else
echo "\nDie angegebene Kernel-Config-Datei $MACHINE existiert nicht!\n"
echo "\n Folgende Kernel-Config-Dateien können angegeben werden:"
echo "------------------------------------------------------------"
ls -la -1 /sys/arch/i386/conf
exit 0
fi
Zuletzt bearbeitet: