Configurazione kernel Linux


Legenda

  • Tipo di PC o scheda madre e microprocessore
  • Distribuzione GNU/Linux
  • Output di lspci
  • Output di lspnp
  • Contenuto di /proc/cpuinfo
Configurazione per versione del kernel
Abaco Dual - Atom D525
Ubuntu 11.10 oneiric 64 bit
abaco_dual_lspci
abaco_dual_lspnp
abaco_dual_cpuinfo
3.1.7
3.2.12
3.3.6
HP Mini 210-1015sl - Atom N450
Debian 6.0 Squeeze 64bit
hp_mini-210_lspci
hp_mini-210_lspnp
hp_mini-210_cpuinfo
3.0.8
3.1.10
3.2.12
3.3.5
Acer TravelMate 2300 - PentiumM 1400
Fedora 16
acer_tm2300_lspci
acer_tm2300_lspnp(3)
acer_tm2300_cpuinfo
2.6.39.4
3.0.31(1)(2)
3.1.10
3.3.0
ASUSTeK P4S8X-X - Pentium III 1000 (PC guastatosi a novembre 2011)
Fedora 16
asus_p4s8x-x_piii_lspci
asus_p4s8x-x_piii_cpuinfo
2.6.39.4
3.0.4
3.1.0(4)
ASUSTeK TUV4X - Pentium III 1000
Debian 6.0 Squeeze
asus_tuv4x_piii_lspci
asus_tuv4x_piii_lspnp
asus_tuv4x_piii_cpuinfo
2.6.39.4
3.0.8
3.1.10
3.2.13
3.3.6
BioStar P4M90-M4 - Pentium IV 2800
Fedora 16
biostar_p4m90-m4_piv_lspci
biostar_p4m90-m4_piv_lspnp(3)
biostar_p4m90-m4_piv_cpuinfo
3.0.9
3.1.10
3.2.12
3.3.6
Note:
I kernel 2.6.39.2 sono stati riconfigurati nei primi di luglio 2011 per effettuare questi cambiamenti (mantenuti nei kernel successivi):

opzione vecchia opzione nuova
CONFIG_VMSPLIT_2G_OPT=y CONFIG_VMSPLIT_3G_OPT=y
CONFIG_VM86=y CONFIG_VM86 is not set

La prima modifica si è resa necessaria perché Wine ad ogni esecuzione abortiva con il laconico messaggio: Ucciso (Killed, usando una localizzazione inglese del terminale).  La modifica abbandona il modello di memoria 2G/2G user/kernel split (for full 2G low memory) (nome della voce in Linux/i386 2.6.39.2 Kernel Configuration ---> Processor type and features ---> Memory split) per passare a quella 3G/1G user/kernel split (for full 1G low memory) del supporto RAM fino a 4GiB (voce High Memory Support (4GB)).

La seconda modifica è stata apportata semplicemente perché inutile: non ha impatto sul corretto funzionamento di Wine e serve a poter eseguire codice a 16 bit, che sui miei sistemi non è presente o non serve (la pagina di aiuto della relativa voce di configurazione del kernel dice che potrebbe essere necessaria all'interfaccia grafica per eseguire il BIOS di certe schede grafiche quando le inizializza).

1) Si è dovuto impostare l'opzione CONFIG_ZONE_DMA per permettere il funzionamento della scheda di rete Broadcom (modulo b44), del touchpad integrato e del mouse USB.  La relativa voce di guida spiega che questa voce serve per abilitare il supporto DMA (Direct Memory Access) per i dispositivi dotati di uno spazio di indirizzi a meno di 32 bit:

DMA memory allocation support allows devices with less than 32-bit addressing to allocate within the first 16MB of address space.
Disable if no such devices will be used.

Questa opzione non si è rivelata necessaria per il PC Atom N450.

2) I kernel successivi alla serie 3.0 non funzionano su questo portatile per il noto problema delle tabelle DSDT (Differentiated System Description Table), facenti parte del sistema ACPI (Advanced Configuration and Power Interface), che non osservano fedelmente le specifiche ACPI e che sono state compilate con il compilatore Microsoft, piuttosto permissivo con i loro errori di sintassi.  Inoltre i kernel Linux più recenti evidentemente hanno perso qualcosa della vecchia capacità di raggirare questi errori sintattici.  Ancora non mi è riuscito di farli funzionare senza disattivare l'ACPI (parametro del kernel acpi=off).  Nel mio caso il problema si manifesta con il kernel che scrive a ripetizione righe come questa senza procedere oltre nella fase di avvio:

udevd[411]: timeout: killing '/sbin/modprobe -bv acpi:ACPI0002:' [565]

Per ulteriori informazioni in proposito e tecniche di soluzione si legga:
  1. https://wiki.archlinux.org/index.php/DSDT e i suoi rimandi:
  2. http://acpi.sourceforge.net/dsdt/ e
  3. http://en.gentoo-wiki.com/wiki/ACPI/Fix_common_problems
3) Per ottenere questi dati, non avendo la Fedora un pacchetto pnputils, sono stati copiati da una Debian i file /sbin/lspnp, /usr/share/misc/pnp.ids e /usr/share/man/man8/lspnp.8.gz.

4) Per poter compilare il kernel 3.1 (e altri successivi, anche su altre macchine) si è dovuto disabilitare la voce (nuova) CONFIG_DEBUG_STRICT_USER_COPY_CHECKS, situata in: Kernel hacking -> Strict copy size checks.  La descrizione di questa opzione è riportata nel quadro seguente:

Strict copy size checks
CONFIG_DEBUG_STRICT_USER_COPY_CHECKS:

Enabling this option turns a certain set of sanity checks for user
copy operations into compile time failures.

The copy_from_user() etc checks are there to help test if there
are sufficient security checks on the length argument of
the copy operation, by having gcc prove that the argument is
within bounds.

If unsure, or if you run an older (pre 4.4) gcc, say N.

  In fase di compilazione la sua attivazione causava questo messaggio d'errore:

  CHK     include/linux/version.h
  CHK     include/generated/utsrelease.h
  CALL    scripts/checksyscalls.sh
  CHK     include/generated/compile.h
  CC [M]  fs/binfmt_misc.o
In file included from /tmp/linux-3.1/arch/x86/include/asm/uaccess.h:573:0,
                 from include/linux/uaccess.h:5,
                 from include/linux/highmem.h:7,
                 from include/linux/pagemap.h:10,
                 from fs/binfmt_misc.c:26:
/tmp/linux-3.1/arch/x86/include/asm/uaccess_32.h: In function ‘parse_command.part.0’:
/tmp/linux-3.1/arch/x86/include/asm/uaccess_32.h:211:26: error: call to ‘copy_from_user_overflow’ declared with attribute error: copy_from_user() buffer size is not provably correct
make[1]: *** [fs/binfmt_misc.o] Errore 1
make: *** [fs] Errore 2


Ultimo aggiornamento: 19/05/2012

< Torna al livello superiore <
<< Torna alla pagina iniziale <<