Kernel Patching & Recompiling-5

Ecco la quinta parte della guida su come patchare e ricompilare il kernel 2.6.21. Ripassiamo i concetti…

  • Stiamo facendo un lavoro per Ubuntu, ma i comandi per Debian sono quasi identici.
  • Abbiamo già fatto:
    1. elencato i comandi per sapere quale hardware c’è nel nostro computer » primo articolo
    2. installato i pacchetti per la compilazione del kernel in Ubuntu (per i pacchetti Debian vedere Come ricompilare il kernel su Debian (guida di DebianClan)) » primo articolo
    3. scaricato da kernel.org l’ultimo kernel “vanilla” disponibile ed estratto in /usr/src » primo articolo
    4. applicato la patch di Con kolivas e fatto un link simbolico /usr/src/linux alla directory di smanettamento » secondo articolo
    5. preso il vecchio file di configurazione e adattato al nuovo kernel tramite oldconfig » terzo articolo
    6. ottimizzato il kernel per il nostro processore tramite make xconfig » quarto articolo

In questo articolo incollerò il contenuto del mio file .config finale: sarebbe troppo lungo descrivere tutto come ho fatto per ottimizzare il processore, in fondo ora si tratta non di far andare più veloce il computer ma di togliere un mucchio di moduli inutili che verranno caricati ma mai usati.

Pronti?

SETTIMO PASSO: Muoia Sansone con tutti i moduli

Avete già capito che dobbiamo andare nella nostra directory:
cd /usr/src/linux

Lì si trova il vostro file .config (visibile tramite ls -a); lanciando nuovamente make xconfig sarete in grado di togliere tutta la roba inutile per il vostro sistema dal kernel.

Se avete un Pentium4, Asusp4p800SE, nidia GeForce 5500FX AGP, meno di 2000GB HD come me potete prendere come esempio il

mio file .config

(è improbabile che il vostro sia uguale al 100%).

Alcune note:

  • il comando sensors-detect può aiutarvi a capire quali moduli tenere e quali eliminare nella sezione “I2C support”:
    luca@DarkKnight:~$ sudo sensors-detect
    # sensors-detect revision 4171 (2006-09-24 03:37:01 -0700)
    This program will help you determine which kernel modules you need
    to load to use lm_sensors most effectively. It is generally safe
    and recommended to accept the default answers to all questions,
    unless you know what you're doing.
    We can start with probing for (PCI) I2C or SMBus adapters.
    Do you want to probe now? (YES/no):
    Probing for PCI bus adapters...
    Use driver `i2c-i801' for device 0000:00:1f.3: Intel 82801EB ICH5 # da qui capiamo che dovremo selezionare Intel 8201 (ICH) nella configurazione
    We will now try to load each adapter module in turn.
    Module `i2c-i801' already loaded.
    If you have undetectable or unsupported adapters, you can have them
    scanned by manually loading the modules before running this script.We are now going to do the I2C/SMBus adapter probings. Some chips may
    be double detected; we choose the one with the highest confidence
    value in that case.
    If you found that the adapter hung after probing a certain address,
    you can specify that address to remain unprobed.Next adapter: SMBus I801 adapter at 0400
    Do you want to scan it? (YES/no/selectively):
    Client found at address 0x08 Client found at address 0x44
    Probing for `Maxim MAX6633/MAX6634/MAX6635'... No
    Client found at address 0x50
    Probing for `Analog Devices ADM1033'... No
    Probing for `Analog Devices ADM1034'... No
    Probing for `SPD EEPROM'... Success!
    (confidence 8, driver `eeprom')

    Probing for `EDID EEPROM'... No
    Probing for `Maxim MAX6900'... No
    Client found at address 0x52
    Probing for `Analog Devices ADM1033'... No
    Probing for `Analog Devices ADM1034'... No
    Probing for `SPD EEPROM'... Success!
    (confidence 8, driver `eeprom')

    Client found at address 0x69
    Next adapter: NVIDIA i2c adapter 2 at 1:00.0
    Do you want to scan it? (YES/no/selectively):
    Next adapter: NVIDIA i2c adapter 1 at 1:00.0
    Do you want to scan it? (YES/no/selectively):
    Next adapter: NVIDIA i2c adapter 0 at 1:00.0
    Do you want to scan it? (YES/no/selectively):
    Client found at address 0x37
    Client found at address 0x50
    Probing for `Analog Devices ADM1033'... No
    Probing for `Analog Devices ADM1034'... No
    Probing for `SPD EEPROM'... Success!
    (confidence 1, driver `eeprom')

    Probing for `EDID EEPROM'... Success!
    (confidence 8, driver `eeprom')
    , other addresses: 0x51 0x52 0x53 0x54 0x55 0x56 0x57
    Probing for `Maxim MAX6900'... No
    Some chips are also accessible through the ISA I/O ports. We have to
    write to arbitrary I/O ports to probe them. This is usually safe though.
    Yes, you do have ISA I/O ports even if you do not have any ISA slots!
    Do you want to scan the ISA I/O ports? (YES/no):
    Probing for `National Semiconductor LM78' at 0x290... No
    Probing for `National Semiconductor LM78-J' at 0x290... No
    Probing for `National Semiconductor LM79' at 0x290... No
    Probing for `Winbond W83781D' at 0x290... No
    Probing for `Winbond W83782D' at 0x290... No
    Probing for `Winbond W83627HF' at 0x290... No
    Probing for `Silicon Integrated Systems SIS5595'... No
    Probing for `VIA VT82C686 Integrated Sensors'... No
    Probing for `VIA VT8231 Integrated Sensors'... No
    Probing for `AMD K8 thermal sensors'... No
    Probing for `IPMI BMC KCS' at 0xca0... No
    Probing for `IPMI BMC SMIC' at 0xca8... No
    Some Super I/O chips may also contain sensors. We have to write to
    standard I/O ports to probe them. This is usually safe.
    Do you want to scan for Super I/O sensors? (YES/no):
    Probing for Super-I/O at 0x2e/0x2f
    Trying family `ITE'... No
    Trying family `National Semiconductor'... No
    Trying family `SMSC'... No
    Trying family `VIA/Winbond/Fintek'... Yes
    Found `Winbond W83627THF Super IO Sensors' Success!
    (address 0x290, driver `w83627hf')

    Probing for Super-I/O at 0x4e/0x4f
    Trying family `ITE'... No
    Trying family `National Semiconductor'... No
    Trying family `SMSC'... No
    Trying family `VIA/Winbond/Fintek'... No
    Now follows a summary of the probes I have just done.
    Just press ENTER to continue:
    Driver `eeprom' (should be inserted):
    Detects correctly:
    * Bus `SMBus I801 adapter at 0400'
    Busdriver `i2c-i801', I2C address 0x50
    Chip `SPD EEPROM' (confidence: 8)
    * Bus `SMBus I801 adapter at 0400'
    Busdriver `i2c-i801', I2C address 0x52
    Chip `SPD EEPROM' (confidence: 8)
    * Bus `NVIDIA i2c adapter 0 at 1:00.0'
    Busdriver `UNKNOWN', I2C address 0x50 (and 0x51 0x52 0x53 0x54 0x55 0x56 0x57)
    Chip `EDID EEPROM' (confidence: 8)
    EEPROMs are *NOT* sensors! They are data storage chips commonly
    found on memory modules (SPD), in monitors (EDID), or in some
    laptops, for example.
    Driver `w83627hf' (should be inserted)
    Detects correctly:
    * ISA bus address 0x0290 (Busdriver `i2c-isa')
    Chip `Winbond W83627THF Super IO Sensors' (confidence: 9)
    I will now generate the commands needed to load the required modules.
    Just press ENTER to continue:
    To make the sensors modules behave correctly, add these lines to
    /etc/modules:
    #----cut here----
    # I2C adapter drivers
    i2c-i801
    # modprobe unknown adapter NVIDIA i2c adapter 0 at 1:00.0
    # modprobe unknown adapter NVIDIA i2c adapter 1 at 1:00.0
    # modprobe unknown adapter NVIDIA i2c adapter 2 at 1:00.0
    # Chip drivers
    eeprom
    w83627hf
    #----cut here----
    Do you want to add these lines to /etc/modules automatically? (yes/NO)

    Nel mio caso è chiaro che devo selezionare i moduli Intel 82801 (ICH) (I2C_I801) nella sezione “I2C support” e Winbond W83627HF, W83627THF, W83637HF, W83687THF, W83697HF (SENSORS_W83627HF) nella sezione “Hardware Monitoring Support”.
  • Per chi ha una scheda nVidia recente: bisogna disabilitare il supporto per le nVidia RIVA!
  • Nella sezione “Multimedia devices” sono elencate molte schede che fanno da radio o ingresso/uscita TV. E poi le webcam USB. Non ho nessuna scheda radio nè TV (disabilitate tutte), ma ho una webcam USB diMMerda:
    luca@DarkKnight:~$ lsusb
    Bus 005 Device 001: ID 0000:0000
    Bus 004 Device 002: ID 0ac8:0302 Z-Star Microelectronics Corp. ZC0302 WebCam
    Bus 004 Device 001: ID 0000:0000
    Bus 003 Device 001: ID 0000:0000
    Bus 002 Device 001: ID 0000:0000
    Bus 001 Device 004: ID 046d:c517 Logitech, Inc.
    Bus 001 Device 001: ID 0000:0000
    Ma quale sarà il driver? Ho chiesto al sistema di dirmi quello che aveva fatto negli ultimi secondi:
    luca@DarkKnight:~$ dmesg | tail
    [ 9991.134059] ACPI: PCI Interrupt 0000:00:1f.3[B] -> GSI 17 (level, low) -> IRQ 22
    [ 9998.545058] i2c /dev entries driver
    [10220.722192] w83627hf 9191-0290: Reading VID from GPIO5
    [12550.695457] usb 4-1: new full speed USB device using uhci_hcd and address 2
    [12550.910437] usb 4-1: configuration #1 chosen from 1 choice
    [12551.027664] Linux video capture interface: v2.00
    [12551.050341] ubuntu/media/gspcav1/gspca_core.c: USB SPCA5XX camera found.(ZC3XX)
    [12551.313357] usbcore: registered new interface driver gspca
    [12551.313705] ubuntu/media/gspcav1/gspca_core.c: gspca driver 01.00.12 registered
    [12551.402523] usbcore: registered new interface driver snd-usb-audio

    …ma non sono riuscito a trovare alcuna voce adatta in xconfig. Ho praticamente eliminato tutti i moduli delle webcam sperando in bene :)

È stata una faticaccia orrenda! E probabilmente c’è ancora spazio per ottimizzare… Quando uscirà il kernel 2.6.22 potremo suicidarci in massa :)

Ok, la prossima parte sarà la compilazione vera e propria che per fortuna sarà fatta dal computer.

Lascia un commento

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...

%d blogger cliccano Mi Piace per questo: