# Aiuto per la configurazione

## Windmill

Salve, sono un nuovo utente (abbastanza nabbo) di gentoo. Ho provato alcune distribuzioni linux negli ultimi 2 anni, e ora ho deciso di "fare il grande passo". Premetto che ci capisco ben poco di informatica, sistemi operativi, o GNU/Linux, quindi per favore siate paziente. Quello di cui ho bisogno ora è di aiuto nella configurazione del kernel e del make.conf.

Questo è il mio make attuale

```

  GNU nano 2.3.2                      File: make.conf                                                   

# These settings were set by the catalyst build script that automatically

# built this stage.

# Please consult /usr/share/portage/config/make.conf.example for a more

# detailed example.

CFLAGS="-march=native -O2 -pipe"

CXXFLAGS="${CFLAGS}"

# WARNING: Changing your CHOST is not something that should be done lightly.

# Please consult http://www.gentoo.org/doc/en/change-chost.xml before changing.

CHOST="x86_64-pc-linux-gnu"

# These are the USE flags that were used in addition to what is provided by the

# profile used for building.

USE=""

PORTDIR="/usr/portage"

DISTDIR="${PORTDIR}/distfiles"

PKGDIR="${PORTDIR}/packages"

MAKEOPTS="-j4"

GENTOO_MIRRORS="http://gentoo.inode.at/ ftp://gentoo.inode.at/source/ http://gd.tuwien.ac.at/opsys/linu$

SYNC="rsync://rsync.fr.gentoo.org/gentoo-portage"
```

Ho bisogno di aiuto in particolare per CFLASG e USE. Il mio processore (i5 650)da quanto ho capito avrebbe come march corei7, che differenze c'è tra -march=corei7 e -march=native? C'è qualche altra opzione che posso inserire per ottimizzare? Inoltre, che paremetri sarebbe meglio inserire in USE? Ho bisogno di questo in particolare. INoltre altri consiglio riguardo a come configurare e ottimizzare make.conf sono ben accetti,

Ora veniamo al kernel. Io ho scaricato gentoo-sources, ma il problema è che non so come configurarlo al meglio, perchè non ci capisco quasi nulla di tutte quelle opzioni.

----------

## loxdegio

Allora.. Andiamo con ordine.

Quanto all'ottimizzazione -march=native setta tramite autorilevazione le variabili -march e -mtune adatte al tuo processore, ha un ottima capacità di riconoscimento dell'hardware quindi, se non ti senti sicuro a settare a mano tali parametri, puoi già sentirti tranquillo. Dall'altro canto -march=corei7 è il settaggio corretto e specifico per il processore in tuo possesso, ma non setta nessun'altra variabile di ottimizzazione. Consiglio mio è per ora tenere native poi, quando ne saprai un po' di più, settare le variabili a tuo piacere.

Ci sarebbe un'altra opzione che puoi usare per ottimizzare ed è -mfpu, ma avrei bisogno di dettagli contenuti in /proc/cpuinfo, che non possiedo avendo tutti processori più datati, per darti un indicazione più precisa.

Per le USE puoi trovare alcune descrizioni qui e ovviamente i vari modi per settarli li trovi nel handbook, senza contare che per l'installazione di ogni pacchetto trovi anche le varie flags da settare nella pagina dedicata sul wiki

Quanto al kernel puoi usare una configurazione generica dal kernel già esistente nella live (/etc/kernels della live) o usando genkernel con l'opzione "oldconfig" attiva, giusto per far partire la macchina, quando ci avrai preso un po' più la mano ricordati dei comandi

```
# lspci -k

# lsmod

# make localmodconfig
```

Saranno molto utili  :Wink:  Buona permanenza e uso di Gentoo!

----------

## Windmill

Grazie per aver risposto. Allora l'output di cpuinfo è questo 

```
processor       : 3

vendor_id       : GenuineIntel

cpu family      : 6

model           : 37

model name      : Intel(R) Core(TM) i5 CPU         650  @ 3.20GHz

stepping        : 5

microcode       : 0x2

cpu MHz         : 3211.134

cache size      : 4096 KB

physical id     : 0

siblings        : 4

core id         : 2

cpu cores       : 2

apicid          : 5

initial apicid  : 5

fpu             : yes

fpu_exception   : yes

cpuid level     : 11

wp              : yes

flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr pdcm pcid sse4_1 sse4_2 popcnt aes lahf_lm ida arat dtherm tpr_shadow vnmi flexpriority ept vpid

bogomips        : 6422.26

clflush size    : 64

cache_alignment : 64

address sizes   : 36 bits physical, 48 bits virtual

power management:
```

Io avevo precedentemente installato gentoo, e avevao lasciato tutto intatto, avevo solo tolto dai driver ciò che non mi serviva e aggiunto il driver della scheda ethernet, il resto della configurazione ho lasciato di default quello che dava make menuconfig. INoltre vorrei chiedere una cosa, ho trovato questa patch https://github.com/graysky2/kernel_gcc_patch/blob/master/enable_additional_cpu_optimizations_for_gcc.patch#L18 che aggiunge altre famiglie di cpu nella configurazione del kernel, è sicuro applicarla? serve a qualcosa? nel gentoo sources c'è core2/newer xeon che a quanto pare sarebbe adatto per il mio processore.Last edited by Windmill on Sat Feb 22, 2014 11:45 am; edited 1 time in total

----------

## loxdegio

Ottimo... Quanto alla patch, emergendo le gentoo-sources dovresti già averla, comunque essa imposta -march=core2 per ogni processore dal core 2 in su, quindi non so quanto ottimizzi davvero...

Per impostare l'ottimizzazione per il kernel a mano puoi cercare questa sezione nel makefile generale e settare le flags che ti interessano (limitati a -Ox -march e -mtune, altrimenti rischi che non si avvii il kernel):

```
CFLAGS_MODULE   = # puoi impostare le flags su questa variabile ...

AFLAGS_MODULE   =  # ... su questa ...

LDFLAGS_MODULE  = # ... (qui lascia stare) ...

CFLAGS_KERNEL   = # ...  su questa ...

AFLAGS_KERNEL   = # ... e su quest'ultima
```

Quando avrai preso un po' di dimestichezza potresti provare anche le geek-sources che ti permettono di applicare al kernel vanilla un sacco di patch a tua scelta  :Smile: 

Quanto alle flags di compilazione ora che ho il contenuto del tuo /proc/cpuinfo (la prossima volta usa uno tra i tag Quote o Code per postare qualche output, in modo che il tutto rimanga più ordinato  :Wink:  ) IMHO puoi aggiungere alle CFLAGS:

```
CFLAGS=" ... -mmmx -mfpmath=sse -msse4.2 ... "
```

In modo ce la stringa completa diventi:

```
CFLAGS="-O2 -march=corei7 -mtune=corei7 -mmmx -mfpmath=sse -msse4.2 -pipe"
```

Per il resto mi pare tutto a posto. Una volta che avrai impostato il profilo e le tue personali USE (o anche prima   :Razz:   ) puoi tornare a chiedere qui per delucidazioni

----------

## Windmill

No, non c'è nessuna patch in gentoo sources, ci sono solo:

-Opteron/Atlhon64/Hammer/K8https://forums.gentoo.org/index.php

-Intel P4 / older Netburst based Xeon

-Core 2/newer Xeon  

-Intel Atom

-Generic-x86-64

Comunque ho scelto il profilo KDE e aggiunto queste altre USE flags 

USE="bash-completion vdpau -gnome -gtk -gtk2 -gtk3 -wifi"

Comunque le opzioni che hai postato vengono già attivato da -march=native

----------

## loxdegio

Non tutte... Solo -march=corei7 e -mtune=corei7 vengono settate da -march=native. Io comunque ti ho postato la configurazione esplicita per trasparenza, poi decidi tu la notazione  :Wink: 

Quanto alla patch, mi ricordavo ci fosse... Boh... Comunque basta che segui le mie indicazioni per l'ottimizzazione del kernel e non dovrebbe nemmeno servirti  :Razz: 

----------

## Windmill

Io ho provato 

```
gcc -march=native -E -v - </dev/null 2>&1 | grep cc1
```

e mi da tutto questo output

```
 /usr/libexec/gcc/x86_64-pc-linux-gnu/4.7.3/cc1 -E -quiet -v - -march=corei7 -mcx16 -msahf -mno-movbe -maes -mpclmul -mpopcnt -mno-abm -mno-lwp -mno-fma -mno-fma4 -mno-xop -mno-bmi -mno-bmi2 -mno-tbm -mno-avx -mno-avx2 -msse4.2 -msse4.1 -mno-lzcnt -mno-rdrnd -mno-f16c -mno-fsgsbase --param l1-cache-size=32 --param l1-cache-line-size=64 --param l2-cache-size=4096 -mtune=corei7
```

Comunque non so come modificare il file di configurazione, per ora lascio così, vorrei evitare casini

----------

## loxdegio

Come preferisci... Già così è una bestia  :Very Happy: 

Ah, un'altra cosa: alla variabile SYNC ti conviene settare un server circolare al posto di uno specifico in questo modo

```
SYNC="rsync.europe.gentoo.org"
```

che in pratica è un alias che seleziona automaticamente il primo server rsync disponibile a livello europeo. Questo perché tali server NON sono SEMPRE online e quindi non è sicuro riuscire a sincronizzare portage con un server specifico

----------

