On 29/11/19 18:31, Portobello wrote:
Il 29/11/19 16:47, Davide Prina ha scritto:
$ tar Jxvf /usr/src/linux-source-$(uname -r | cut -d '.' -f 1-2).tar.xz
prova a vedere se così risolvi o se ho fatto altri errori in altri punti.
Ora il comando ha funzionato. Ma ancora non c'è l'architettura di Amd64.
/home/src/linux-source-4.19 (e quindi non c'è la parte di Amd64)
no, è corretto. infatti il comando che ho indicato dovrebbe individuare
proprio quel file.
Poi mi sono accorto che avevo fatto un altro errore, togliere il
certificato da usare per firmare la compilazione... la mancanza di
questo impedisce di compilare generando un errore. Avevo indicato una
chiave sbagliata, quella corretta è la seguente:
$ scripts/config --set-str SYSTEM_TRUSTED_KEYS ""
riporto qui le istruzioni modificate e aggiornate:
# apt update
# apt -u upgrade; apt -u dist-upgrade
per amd64 installare i pacchetti (per altre architetture hardware
dovrebbero essercene altri simili):
# apt install linux-headers-amd64 linux-image-amd64
# apt install linux-source
# apt install build-essential fakeroot rsync git
# apt build-dep linux
Nota: questi passi qui sopra è meglio eseguirli ogni volta che si
compila una nuova versione di Linux
Se è stata installata una nuova versione del pacchetto linux-image-XYZ,
allora bisogna riavviare la macchina (questo perché non funzionerebbero
i vari uname -r e simili e quindi, se non si riavvia, dovrebbero essere
compilati a mano)
Linux non deve essere più compilato in /usr/src o creato il link
simbolico /usr/src/linux. È meglio crearsi una directory src nella
propria home e compilare da li.
$ mkdir ~/src
$ cd ~/src
$ tar Jxvf /usr/src/linux-source-$(uname -r | cut -d '.' -f 1-2).tar.xz
$ ln -sf ~/src/linux-source-$(uname -r | sed
"s/\([0-9]*\.[0-9]*\)\..*/\1/") ~/src/linux
$ cd linux
A questo punto bisogna impostare la configurazione che imposta tutto ciò
che deve essere compilato dentro Linux, come modulo o non compilato.
Ci sono diverse strade:
1) se è la prima volta che si compila, allora si può partire dalla
configurazione di Linux in esecuzione con il seguente comando:
$ cp /boot/config-$(uname -r) .config
2) se si è già compilato precedentemente, allora si può:
2.1) prendere il .config precedente e copiarlo nella directory corrente,
dopo di che è meglio eseguire:
$ make oldconfig
Per poter rispondere interattivamente su come impostare tutte le
modifiche della configurazione del nuovo Linux
In alternativa è possibile usare olddefconf, per impostare al
default tutte le nuove configurazioni, o ...
2.2) copiare il .config come nel punto 1 e impostare le variabili di
configurazione con uno script ed eseguirlo (una lista di comandi
eseguiti con scripts/config)
Questa probabilmente è la scelta migliore perché permette di
partire sempre dalla configurazione del DD e impostare solo le variabili
volute.
es: se si crea tale script "imposta_config.sh" e lo si salva in ~/src
$ ../imposta-config.sh
Per i casi 1 e 2.1 si possono eseguire alcune operazioni manualmente:
Disabilitazione delle informazioni di debug (se servono, allora si può
lasciare abilitato)
$ scripts/config --disable DEBUG_INFO
Disabilitazione della firma di Linux (come discritto nel punto 1 qui sotto)
$ scripts/config --set-str SYSTEM_TRUSTED_KEYS ""
Impostare la LOCALVERSION con la data attuale (al posto di xx si possono
mettere le proprie iniziali):
$ scripts/config --set-str LOCALVERSION "-xx-$(date +%Y%m%d)"
Questo fa in modo che i compilati abbiano un nome diverso da quello
Debian e tale diversità è visibile anche usando il comando uname
Se si vuole modificare la configurazione di Linux
$ make nconfig
ATTENZIONE: in ogni caso bisogna entrare e
1) modificare CONFIG_SYSTEM_TRUSTED_KEYS che indica di firmare il
pacchetto con la chiave di un DD
in alternativa si può disabilitare il modulo signing:
$ scripts/config --set-str SYSTEM_TRUSTED_KEYS ""
2) mettere una stringa che identifichi la propria compilazione in
LOCALVERSION
in alternativa si può impostare con
$ scripts/config --set-str LOCALVERSION "-xx-$(date +%Y%m%d)"
Consigliato impostare per lo meno:
* la propria CPU in "-> Processor type and features" -> "Processor family"
* il tipo di processore (se tra quelli presenti) -> "Processor type and
features" -> "Supported processor vendors"
disabilitando quelli che non si hanno
* il numero massimo di CPU supportate "Processor type and features" ->
"Maximum number of CPUs"
questo fa usare circa 8k di memoria per CPU indicata (io ho messo 16,
per non sbagliare, anche se in teoria ho 4 CPU con 2 core)
* impostare a 1000, uso desktop, la frequenza del timer per CPU:
"Processor type and features" -> "Timer frequency"
$ scripts/config --enable HZ_1000
* la latenza in "General setup" -> "Preemption Model" per velocizzare il
proprio sistema.
in realtà questa volta ho lasciato il default (PREEMPT_VOLUNTARY)
perché sto facendo qualche test. Mi sembra che quando avevo iniziato a
ricompilarmi Linux non c'era questa opzione o non era impostata di default
Già con solo queste impostazioni, se il compiuter non è recentissimo, si
dovrebbero vedere ad occhio dei miglioramenti, soprattutto quando il
sistema è carico: il sistema dovrebbe essere più reattivo e responsivo;
cioè non dovrebbero esserci rallentamenti o blocchi momentanei (di
frazioni di secondo o 1-2 secondi quando il sistema sta eseguendo
qualcosa di pesante), con l'aggravante che operazioni pesanti dovrebbero
impiegare leggermente un po' più tempo ad essere eseguite.
Impostare il parametro j al numero di processori ($ cat /proc/cpuinfo)+1
mentre il time permette di sapere quanto tempo ha impiegato
$ time make -j 5 deb-pkg
Se si vuole/deve ricompilare conviene dare prima un clean di tutto prima
di ricompilare
$ make clean
si otterranno i .deb sotto ~/src.
Io installo, con dpkg -i <elenco pacchetti>:
* linux-image
* linux-header
* linux-libc-dev
Ciao
Davide
--
Dizionari: http://linguistico.sourceforge.net/wiki
Browser: http://www.mozilla.org/products/firefox
GNU/Linux User: 302090: http://counter.li.org
Non autorizzo la memorizzazione del mio indirizzo su outlook