Aby zwiększyć prędkość działania systemu i oprogramowania warto przekompilować pakiety, z wykorzystaniem odpowiednich parametrów, flag charakterystycznych dla posiadanego procesora.
Kod: Zaznacz cały
Spis treści
1. Zdobycie źrodeł pakietu
2. Flagi procesora
3. Modyfikacja skryptu Slackbuild
4. Kompilacja źródeł, instalacja/uaktualnienie pakietu
5. Uwagi
1. Zdobycie źródeł pakietu
Po wybraniu pakietu, który chcemy przekompilować/zoptymalizować, musimy zdobyć jego dystrybucyjne źródła. W tym celu z serwera lustrzanego (np.: http://slackware.at/), ściągamy całą zawartość katalogu ze źródłami, dotyczącego wybranego programu (np.: GIMP /data/slackware-current/source/xap/gimp/). Oczywiście wybieramy odpowiednią wersję wydania Slackware. Ważne również, aby pobrać wszystkie znajdujące się tam pliki.
2. Flagi procesora
Podstawą optymalizacji kompilacji jest dobranie odpowiednich parametrów, flag właściwych dla posiadanego procesora, które będą wykorzystywane kompilator. Pomocą w tej dziedzinie służy podręcznik kompilatora gcc. Drogą na skróty jest skorzystanie ze skryptu gcccpuopt, który wyświetli charakterystyczne cechy naszego procesora. Można go ściągnąć ze strony http://www.pixelbeat.org/scripts/. Skrypt uruchamiamy w terminalu, poleceniem:
# sh gcccpuopt
Przykładowo, w przypadku procesora "Pentium4 1.6 GHz" wynik był następujący:
Kod: Zaznacz cały
-march=pentium4 -mfpmath=sse -msse2 -mmmx
Kod: Zaznacz cały
-march=athlon-xp -mfpmath=sse -msse -mmmx -m3dnow
3. Modyfikacja skryptu Slackbuild, kompilacja źródeł
Po wybraniu odpowiednich flag, przystępujemy do edycji skryptu Slackbuild. W naszym przykładzie będzie to plik gimp.SlackBuild. Najczęściej będzie nas interesowała sekcja podobna do poniższej:
Kod: Zaznacz cały
# Set initial variables:
CWD=$(pwd)
TMP=${TMP:-/tmp}
PKG=$TMP/package-gimp
rm -rf $PKG
mkdir -p $PKG
VERSION=2.2.13
ARCH=${ARCH:-i486}
BUILD=1
if [ "$ARCH" = "i386" ]; then
SLKCFLAGS="-O2 -march=i386 -mcpu=i686"
elif [ "$ARCH" = "i486" ]; then
SLKCFLAGS="-O2 -march=i486 -mtune=i686"
elif [ "$ARCH" = "s390" ]; then
SLKCFLAGS="-O2"
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2"
fi
Kod: Zaznacz cały
# Set initial variables:
CWD=$(pwd)
TMP=${TMP:-/tmp}
PKG=$TMP/package-gimp
rm -rf $PKG
mkdir -p $PKG
VERSION=2.2.13
ARCH=${ARCH:-i686}
BUILD=1
if [ "$ARCH" = "i386" ]; then
SLKCFLAGS="-O2 -march=i386 -mcpu=i686"
elif [ "$ARCH" = "i686" ]; then
SLKCFLAGS="-O2 -march=pentium4 -mfpmath=sse -msse2 -mmmx"
elif [ "$ARCH" = "s390" ]; then
SLKCFLAGS="-O2"
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2"
fi
Zazwyczaj, w Slackware, paczki kompilowane i przygotowywane są katalogu tymczasowym /tmp. Wskazuje na niego zmienna TMP w skrypcie. Niekiedy może się zdarzyć, że katalog ten znajduje sie na partycji/dysku, na którym jest mało miejsca, co uniemożliwi przygotowanie paczki. Należy wtedy zmienić wartość zmiennej TMP i podać odpowiedni, inny katalog z wystarczającą ilością miejsca. Czyli:
Kod: Zaznacz cały
TMP=${TMP:-/tmp}
Kod: Zaznacz cały
TMP=${TMP:-/katalog/dla/paczki}
Po dokonaniu zmian w skrypcie. Nadajemy mu prawo wykonywalności poleceniem:
# chmod +x gimp.SlackBuild
i uruchamiamy:
# ./gimp.SlackBuild
Nastąpi proces automatycznego rozpakowania źródeł, kompilacji i przygotowania nowego, zoptymalizowanego wg flag, pakietu. Będzie sie on znajdował w katalogu wskazywanym przez zmienną TMP.
Po tym zabiegu będzie można uaktualnić dotychczasową paczkę, wykorzystując polecenie # upgradepkg pakiet.tgz
5. Uwagi
- Przekompilowane/zoptymalizowane paczki działają szybciej, co ma pozytywny wpływ na prace z programami.
- Nie warto kompilować całego systemu (wszystkich paczek). Jeśli Ktoś ma ochotę to warto zainteresować sie dystrybucją Gentoo
- Zaleca się przekompilować kluczowe paczki, takie jak: kernel (mimo, że jego konfiguracja wygląda zupełnie inaczej), Xorg, KDE, Gnome, Xfce, QT, GTK i inne najczęściej wykorzystywane programy/biblioteki.
Autorzy: Skyscraper, 1973_PL, loop0