/etc/make.conf

strict warning: Only variables should be passed by reference in /app/www/honza/www/drupal-new/modules/book/book.module on line 559.
Soubor /etc/make.conf slouží pro obecné nastavení přepínačů pro program make. Je určen hlavně pro kompilaci systémů, ale používá se při vytváření binárního kódu z portů (pokud není přepínači uvedeno jinak).
V případě potřeby nastavit přepínače v tomto souboru je tu jedna "filozofická" otázka. Je lepší používat na konkrétní stroj odladěný kernel a systém, nebo raději něco univerzálnějšího? Při výpadku hardware, potřebu přechodu na jiné železo nebo i z jiných důvodů může být přílišná optimalizace na škodu. Při použití přepínačů pro daný typ procesoru je upgrade bezproblémový, ale downgrade končí často na "panic". Proto je nutné si rozvážit, zda chci mít systém možná o jedno procento rychlejší, zda chci na 1GB RAM zabrat o 4MB paměti méně, nebo zda zůstanu u obecných nastavení. Prostě jsou situace kdy to má význam (omezené zdroje, bezpečnost, bezpodmínečná nutnost co nejvyššího výkonu) a jsou situace kdy to význam nemá.


CPUTYPE je proměnná určující cílovou platformu pro kompilaci. Platformy jsou seřazeny abecedně, v ramci platformy jsou jednotlivé verze CPU od nejsilnější k nejslabší. Zdroj /usr/share/examples/etc/make.conf. Pro pomoc určení aktuální platformy doporučuji program cpuid, který je možné zkompilovat v portech na /usr/ports/misc/cpuid. Jinou možností je použít následující příkazový řádek:
# sysctl -a | egrep -i 'hw.machine|hw.model|hw.ncpu'

Alpha/AXP:
ev67 ev6 pca56 ev56 ev5 ev45 ev4
AMD:
opteron athlon64 athlon-mp athlon-xp athlon-4 athlon-tbird athlon k8 k6-3 k6-2 k6 k5
AMD64:
opteron, athlon64, nocona, prescott, core2
Intel:
core2 core nocona pentium4m pentium4 prescott pentium3m pentium3 pentium-m pentium2 pentiumpro pentium-mmx pentium i486 i386
Intel ia64:
itanium2, itanium
Via:
c3 c3-2

KERNCONF ukazuje název nebo cestu a název konfiguračního souboru kernelu. Do této proměnné lze vložit více názvů konfiguračních souborů, takže je možné zkompilovat více jader najednou. Jediné, na co je nutné si dát pozor, instaluje se pouze kernel generovaný pomocí prvního konfiguračního souboru. Konfigurační soubory jsou standardně uloženy v cestě /usr/src/sys/platform/conf/. Zde jsou standardně uloženy předdefinované konfigurační soubory jako je GENERIC a další dle konfigurace.
Doporučuji při úpravách konfiguračního souboru soubor GENERIC zkopírovat a následně upravovat. Úpravy přímo v GENERIC mohou vést k problémům kdy není možný návrat jinak, než smazáním a znovunačntením GENERIC ze zdrojů freebsd.org.

CFLAGS a CxxxFLAGSřídí nastavení kompileru. CFLAGS je pro klasické C, kdežto pro C++ jsou to CxxxFLAGS. Jednotlivé parametry a jejich význam se lze dočíst ve stránkach manuálu k programům gcc a cc.
Pro kompilaci kernelu se nedoporučují parametry jiné, než "-O" nebo "-O2 -fno-strict-aliasing"
Není vhodné zadávat do uvedených proměnných hodnotu -march= . Je daleko jednodušší využít proměnné CPUTYPE a nastavení generovaných programem make.


Já nejčastěji používám jako základ toto nastavení. Ve většině případů se snažím kompilovat jádro na verzi procesoru o jednu nižší (pro core2 nejčastěji core nebo pentium4, pro pentium4 pentium3 a podobně). Pokud je potřeba downgrade, vyhnu se tak problémům. Jinou možností je nechat původní generic kernel kompilovaný pro i386 někde stranou. Parametr 'WITH_LIB32' je určený pouze pro 64-bit platformu, na ostatních ho nepoužívám.
KERNCONF=kernel_name
CFLAGS= -O2 -pipe
COPTFLAGS= -O2 -pipe
WITH_LIB32=yes
CPUTYPE= core2

Zdroje:
FreeBSD Handbook
FreeBSD Wiki
SilverWraith FreeBSD kernel

Powered by Drupal - Design by artinet