Re: Compilare Linux (ERA: Re: cortese domanda su apt-listbugs)

2019-11-30 Per discussione Portobello

Il 30/11/19 09:08, Davide Prina ha scritto:

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

Ciao Lista,
Sono riuscito a creare il link mettendo :
ln -sf /home/src/linux-source-$(uname -r | sed 
"s/\([0-9]*\.[0-9]*\)\..*/\1/") /home/src/linux , questo comando senza 
la tilde.

Ed ha funzionato.


$ cd linux

Ora sono nella dir
/home/src/linux e qui la dir :
linux-source-4.19



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

Ho eseguito questo comando e non mi ha dato errori:
Ma pero è normale che venga copiato un file nascosto ?
Perché ora in questa dir c'è un link ed un file nascosto .config
Ho provato a rinominarlo in config.
Ma se eseguo :
make config
da sempre errore:
make: Nessuna operazione da eseguire per "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

Se eseguo questo mi dà errore:
make: ***  Nessuna regola per generare l'obiettivo "oldconfig".  Arresto.

  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

Qui dice :
-bash: scripts/config: File o directory non esistente


Disabilitazione della firma di Linux (come discritto nel punto 1 qui sotto)
$ scripts/config --set-str SYSTEM_TRUSTED_KEYS ""

ed anche qui:
-bash: scripts/config: File o directory non esistente.

Ora mi fermo, per ora mi sembra inutile andare avanti, senza risolvere i 
problemi precedenti.

Dico ancora una cosa.
Ho trovato anche questa immagine, ma non è installata.
linux-image-4.19.0-6-amd64-unsigned.
Forse si può usare questa invece di modificare il parametro 
SYSTEM_TRUSTED_KEYS, per non firmare una immagine ?




Ciao
Davide


Grazie
Saluti



Re: Compilare Linux (ERA: Re: cortese domanda su apt-listbugs)

2019-11-30 Per discussione Portobello

Il 30/11/19 09:08, Davide Prina ha scritto:

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:

Ciao Lista,
Ma in quale dir si fa questo ?
Io quando apro un terminale do su -l
e quindi questi comandi li eseguo nella dir di root.
su -l
Password:
root@debian64:~#



# 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

Ok. Questi ora sono tutti installati.


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

Ok. Qui ho creato la dir nella mia home.
/home/src



$ tar Jxvf /usr/src/linux-source-$(uname -r | cut -d '.' -f 1-2).tar.xz

Questo funziona.
$ ln -sf ~/src/linux-source-$(uname -r | sed 
"s/\([0-9]*\.[0-9]*\)\..*/\1/") ~/src/linux

Questo invece mi dà errore.
home/src# ln -sf ~/src/linux-source-$(uname -r | sed 
"s/\([0-9]*\.[0-9]*\)\..*/\1/") ~/src/linux
ln: creazione del collegamento simbolico '/root/src/linux' non riuscita: 
File o directory non esistente



$ 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 

Re: Compilare Linux (ERA: Re: cortese domanda su apt-listbugs)

2019-11-30 Per discussione Davide Prina

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