Configurazione kernel Linux
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:
- https://wiki.archlinux.org/index.php/DSDT
e i suoi rimandi:
- http://acpi.sourceforge.net/dsdt/
e
- 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 <<