Post  |  Commenti

Post più letti

5th
DIC

Attenzione! Non aggiornate quel kernel… [SOLVED]

1 Star2 Stars3 Stars4 Stars5 Stars (Nessun voto)
Loading ... Loading ...

Posted by deepred | Filed under Appunti, BugFix, Hardware, Linux, Programming

Come molti di voi avranno letto in giro, anche su gentoo è ora disponibile la versione del kernel 2.6.23, sia nella versione originale (vanilla-source), sia nella versione patchata appositamente per gentoo (gentoo-sources). Ma fate molta attenzione a quello che fate…

Infatti questa versione del kernel (gentoo-sources-2.6.23-r3) risulta incompatibile con i driver per schede nvidia obsolete (<=nvidia-drivers-1.0.9639). Nel caso possediate tale configurazione la ricompilazione del driver con il nuovo driver fallirà.

Data la recente uscita di tale nuova versione del kernel non sono disponibili ancora soluzioni per questo problema. Pertanto quello che vi consiglio di fare è di rimandare l’aggiornamento del kernel e consultare di tanto in tanto questo post per sapere se ci sono eventuali cambiamenti (potete eventualmente sottoscrivervi ai commenti grazie alla nuova funzionalità aggiunta dal caro redsend).

Appena so qualcosa di più (per ora solo forum in tedesco che riportano il problema ma non soluzioni) vi farò sapere.

La soluzione è la seguente:

Leggi il resto…

Tags: > > >

3rd
OTT

Installare la scheda Hauppauge WinTV-PVR-USB2 su linux

1 Star2 Stars3 Stars4 Stars5 Stars (Nessun voto)
Loading ... Loading ...

Posted by RedSend | Filed under Hardware, Linux

Tempo fà vi parlavo di un possibile acquisto di una scheda di acquisizione e in questo articolo mostravo vari modelli di cui avevo valutato i pro e i contro e infine la scelta era finita sull’Hauppauge WinTV-PVR-USB2, un attima scheda davvero… con codifica hardware mpeg2, ingresso TV, Composite, S-Video e con la radio.

tux-tv-hauppaugepvr.jpg

Uno dei motivi principale per cui è stata scelta questa scheda era il supporto completo dei driver presenti addirittura all’interno del kernel dalla versione >=2.6.18 . Infatti la sua installazione si è rilevata molto semplice e veloce…

Leggi il resto…

Tags: > > > > > > > > > > > > >

13th
SET

Gentoo su Asus A8Sc

1 Star2 Stars3 Stars4 Stars5 Stars (Nessun voto)
Loading ... Loading ...

Posted by deepred | Filed under Laptop, Linux, Programming

Come forse qualcuno già sa, ho comprato un notebook dell’Asus, in particolare si tratta di un modello A8Sc. Si tratta di un 14″ con scheda video nVidia (le caratteristiche che maggiormente mi interessavano) ad un buon prezzo (che potrebbe ancora scendere al momento del rimborso di Windows di cui vi parlerò in un prossimo post) e soprattutto ricco di funzionalità:

  • Card Reader SD/MMC/MS/MS PRO
  • Web-cam 0.35 Mega-Pixel
  • Bluetooth V2.0+EDR
  • 1 porta VGA port/Mini D-sub 15-pin
  • 5 x porte USB 2.0
  • porta IEEE 1394
  • uscita TV (S-Video composito)
  • porta per Express Card
  • porta Infrarossi (supporto SIR-115.2Kbps)
  • porta DVI

Ovviamente su questo portatile ho installato Gentoo (gentoo-kernel) riuscendo in maniera rapida a configurare ciascuna di queste funzionalità:

  • Scheda video: trattandosi di una nVidia ho installato i driver nvidia forniti dal vendor e configurando in maniera semplice il tutto seguendo anche le indicazioni della Guida nVidia per Gentoo Linux. Anche la configurazione di xorg è stata estremamente semplice: ho lanciato il comando X -configure e la configurazione risultante già era perfettamente funzionante.
  • Scheda di rete: si tratta della Realtek Gigabit Ethernet 8168. Nel kernel sono presenti i driver per la versione 8169 funzionanti anche con questa scheda. Tuttavia, in virtù dei problemi suggeriti in questo wiki e di personali disfunzioni verificatesi con il kernel 2.6.21, ho optato per l’apposito driver r8168 fornito dal vendor, anche se questo mi ha richiesto un pò di lavoro. I risultati del lavoro svolto sono descritti nel precedente post Driver fuori da Gentoo!!!
  • Scheda wireless: si tratta di un Intel Wireless WiFi Link 4965AGN. L’installazione del driver relativo ha richiesto il passaggio alla versione del kernel 2.6.22, in quanto si basa sulla nuova implementazione dello stack wireless presente in questa versione, denominata mac80211. Dopo aver aggiornato il kernel ed aver abilitato il modulo mac80211, ho installato il driver iwlwifi. Questo driver nel portage è masked, e quindi mi è stato necessario smascherarlo. AGGIORNAMENTO: dopo un uso più frequente (e dopo svariate ricerche sul Web che me lo hanno confermato) il driver iwlwifi non gestisce il led e il killswitch. Cioè la scheda è attiva indipendentemente dal fatto che il led sia acceso o meno (potrebbe essere sempre spento); inoltre se si preme il radio tower button (quello per attivare/disattivare la wireless, ndr) questo porta l’interfaccia in uno stato incongruente che non permette di eseguire maggiori operazioni. La soluzione sarebbe utilizzare i driver windows con ndiswrapper, ma personalmente preferisco continuare a navigare con il mio driver opensource, seppure con queste limitazioni, ed aspettare che nelle versioni future tali bug siano risolti.
  • Touchpad: sebbene già perfettamente funzionate ho installato i driver synaptics che ne abilitano funzionalità aggiuntive. Ho quindi modificato anche il file xorg.conf come indicato dal Gentoo wiki.
  • Bluetooth: seguendo la Guida Gentoo Linux al Bluetooth anche il sistema bluetooth. La configurazione ha previsto di selezionare nel kernel i driver per adattatori USB (HCI USB driver). Infine, data la mia personale preferenza per il DE KDE, ho installato anche l’utility kdebluetooth per la gestione delle operazioni effettuate.
  • Infrarossi: in questo caso ho seguito l’Howto IrDA, individuando il driver a me relativo nel driver SMC_IRCC. Ho anche provveduto ad installare un’applicazione grafica che mi cestisce le comunicazione e il trasferimento file via infrarossi: la scelta è ricaduta su un progetto KDE ancora in fase di sviluppo chiamato kbeam (molto ridotto ma funzionale). AGGIORNAMENTO: qualora il caricamento del modulo smsc-ircc2 generasse problemi, ossia si verificasse un errore di tipo “No Such Device”, sarà necessario emergere l’applicazione setserial e eseguire il comando “setserial /dev/ttyS1 uart none” prima di ricaricare il modulo (il numero del device dipende da quanto vi appare all’esecuzione di dmesg | grp tty).
  • Web Cam: per la web cam ho seguito l’HOWTO Install a webcam del Gentoo Wiki. I driver relativi al notebook sono i linux-uvc, tipici di molti USB Video Class device. NOTA BENE: il driver da indicare nelle applicazioni non è v4l, ma v4l2, dato che le ultime versioni del kernel hanno l’implementazioni di questo driver. Inoltre qualora si verificassero problemi di permessi, bisogna ricordare che per utilizzare la webcam bisogna essere nel gruppo video (controllate in ogni caso i permessi di /dev/video0). Infine faccio notare che da mplayer è richiesto di indicare come parametro anche i fps (non so con altre applicazioni cosa accade utilizzando mplayer sia per il viewing che per il recording).
  • Card Reader: il lettore di schede anche è stato correttamente configurato semplicemente abilitando i moduli del kernel relativi come indicato in questo HOWTO SD and MMC card readers. In realtà non ho ancora avuto la possibilità di provare in alcun modo il lettore, tuttavia esso è correttamente riconosciuto dal kernel e la cosa mi fa ben sperare.
  • Express Card: come per i card reader, anche in questo caso è bastato abilitare il supporto kernel relativo seguendo quanto indicato dal Express Card. Tuttavia, anche in questo caso la verifica sul funzionamento si ferma al fatto che esso l’Express Card reader sia effettivamente riconosciuto dal kernel.
  • IEEE 1394: ancora una volta la configurazione consisteva semplicemente nel configurare gli opportuni moduli kernel secondo quando suggerito dal Gentoo Wiki. Così come per i precedenti dispositivi, reali verifiche sul funzionamento non sono stati possibili data l’assenza di device fireware.
  • TV out: per abilitare l’uscita TV è stato necessario inserire alcune linee al file xorg.conf, in base a quando indicato dalla guida TV-Out with GeForce. Ancora una volta il funzionamento non è garantito data l’impossibilità di provarlo.
  • Audio: per la configurazione audio ho utilizzato i driver alsa presenti nel kernel (vedi la Guida ad Alsa su Gentoo Linux) selezionando in particolare il driver PCI “Intel HD Audio”. Con le successive regolazioni fatte attraverso alsamixer è stato possibile rendere funzionante sia l’audio sia il microfono già presente nel portatile.

Prima di concludere voglio sottolineare altri due elementi importanti della configurazione di Gentoo sul mio portatile:

  • Power Management: ho configurato il mio sistema in modo tale da ridurro lo spreco di energia quando uso il notebook con la batteria. Per fare ciò ho seguito la Guida alla Gestione Energetica di Gentoo, anche se non ho configurato il sistema per supportare le operazioni di suspend e di hibernate. (Probabilmente lo farò in futuro.)
  • Special key: la gestione dei tasti speciali non è stata semplice. Per ottenerla è stato necessario attivare nel kernel il supporto Asus, che è stato reinserito nella versione 2.6.22, dopo essere scomparso in quella precedente. Questa versione, seppur precedente a quella presente nel portage (acpi4asus) ha lavorato molto meglio, riuscendomi a gestire in maniera corretta sia appunto i bottoni sia il controllo della potenza. Oltre a questo nel kernel è stato necessario abilitare il supporto ai button. Con il monitor acpi già usato per verificare le azioni relative al passaggio da alimentazione a batteria, sono state verificate anche le azioni corrispondenti ai tasti speciali non automaticamente funzionanti (in pratica solo quelli relativi al volume). Infine in maniera simile a quanto già eseguito per il power management è stata creata una coppia evento azione simile a quella indicata al seguente link. Oltre che all’abilitazione dei tasti volume si è provveduto anche ad assegnare un tasto speciale all’abilitazione/disabilitazione del touchpad.
  • Framebuffer e splash: sono riuscito anche ad abilitare il framebuffer e ad ottenere una splendida console grafica. Per farlo mi è bastato seguire le indicazioni dell’HOWTO gensplash. Come sottolineato anche in questa guida, se si utilizzano i driver proprietari nvidia non è possibile abilitare il driver framebuffer nvidia presente nel kernel: tra i driver bisognerà selezionare i driver vesa. Tra le due scelte, vesa e vesa-tng, mi è sembrato che la prima funzionasse meglio. ATTENZIONE: se non volete incorrere nello spiacevole problema di ottenere un blank screen alla terminazione della vostra sessione x (o equivalentemente, quando premete Ctrl+Alt+Fn) dovete ricordarvi di indicare nel vostro make.conf, tra le VIDEO_CARDS anche vesa (oltre a nvidia) e ricompilare tutte le applicazioni relative (emerge -Nav world potrebbe essere utile per questo).

Credo che questa guida possa essere d’aiuto a coloro che acquisteranno questo portatile ed anche a coloro che invece, anche con portatili diversi avranno modo di affrontare problemi simili a quelli a cui mi sono trovato di fronte io.
Voglio infine concludere con una nota d’ironia. Nel post precedente si parlava di distribuzioni che impiegano mezzora o poco più ad installarsi e funzionare perfettamente: invece a me per far funzionare tutto quanto detto sopra mi ci è voluta più di una settimana. Ma come tutti i bravi gentooisti di questo ne vado orgoglioso… Leggi il resto…

Tags: > > > > > > > > > > > > > > > > > >

8th
AGO

Driver fuori da Gentoo!!!

1 Star2 Stars3 Stars4 Stars5 Stars (Nessun voto)
Loading ... Loading ...

Posted by deepred | Filed under Linux, Programming

Sottolineo già da queste prime righe che questo articolo si rivolge esclusivamente ad utenti Gentoo!!!

Problema: il mio nuovo computer ha una scheda ethernet della Realtek RTL8168. Durante l’installazione scopro che questa scheda non è supportata dal kernel Linux (2.6.21). Poco male, penso, i driver saranno nel Portage: e invece no. I driver per questa scheda di rete sono fuori da Gentoo. Girando per Internet trovo comunque i driver linux sul sito della Realtek, li scarico, li installo e tutto è ok! O quasi! Nel senso che trattandosi di un driver questo deve essere installato ogni volta che si ricompila il kernel. Gentoo, per ovviare al problema di dover ricordarsi tutti i moduli esterni e reinstallarli, offre un tool module-rebuild che provvede a fare ciò. Ma module-rebuild funziona solo per driver che sono presenti nel Portage e il driver della mia scheda di rete non c’è!!! Come devo fare?

Soluzione: Creare una ebuild (uno script che permette di installare un pacchetto con emerge, ndr) e aggiungerla al database di module-rebuild.
Per la prima parte della soluzione ho provveduto ad aprire il mio PORTAGE_OVERLAY e dentro ho inserito la porzione di portage tree presente qui. Siccome ho utilizzato una nuova categoria (net-eth) non ancora nel Portage, ho dovuto aggiungere questa al file /usr/portage/categories.
Per aggiungerla a module-rebuild nulla è stato più semplice: è bastato digitare il comando $ module-rebuild add net-eth/r8168-0.1_alpha1.

E per altri driver fuori da Gentoo?
Sebbene la soluzione proposta sia di validità generale, affinchè sia possibile inserire nel Portage il proprio driver è necessario costruire correttamente l’ebuild. Cercherò in breve di spiegare i passi da compiere per ottenere questo risultato, illustrando a titolo di esempio quanto fatto da me per il driver suddetto.

  1. All’interno del proprio PORTAGE_OVERLAY creare una cartella che indichi la categoria (net-eth nel mio caso), quindi al suo interno una cartella che indica il pacchetto (r8168 nel mio caso).
  2. Nella cartella creata genereare il file {nome_pacchetto}-{versione}_{stato}{num}, dove {nome_pacchetto} è il nome anche della directory contenitrice, {versione} è la versione del pacchetto a disposizione, {stato} è usato per indicare informazioni aggiuntive com “alpha” o “beta” version o release canidate (”rc”) (seguite eventualmente da un numero). Quindi nel mio caso un nome accettabile era r8168-0.1_alpha1, anche se sarebbe stato più corretto (attenendosi alla versione del driver presente sul sito) il nome r8168-8.002.00_alpha1.
  3. Per scrivere da 0 l’ebuild bisogna cominciare dall’header: questo può essere recuperato dal file /usr/portage/header.txt.
  4. In secondo luogo bisogna settare le variabili necessarie: SLOT=”0″, LICENSE (indicare la licenza con cui sono forniti i driver), KEYWORDS (solitamente i fornitori del driver indicano che tipo di architeetture sono supportate), DESCRIPTION, SRC_URI (dove scaricare i driver), HOMEPAGE, IUSE (potrebbe rimanere vuoto). Se sono richieste particolari dipendenze potrebbero essere espresse attraverso le variabili DEPEND e RDEPEND. Infine, bisogna indicare la variabile S, cioè il nome della cartella all’interno del quale bisognerà lavorare: la cosa più semplice potrebbe essere scomppattare il driver, analizzare il nome della directory creata ed impostare S=${WORKDIR}/nome_directory. Nel mio caso quindi ho impostato S=${WORKDIR}/r8168-8.002.00
  5. Come installare tale driver? per prima cosa leggete il readme contenuto all’interno del file scompattato. Questo conterrà le istruzioni necessarie all’installazione. Possiamo dividere queste istruzioni in 3 macrogruppi: istruzione di compilazione (prima del make install), istruzioni di installazione (make install e simili), istruzioni post-installazione (dopo il make install). Nel mio caso al primo gruppo apparteneva il comando make clean modules, al secondo make install, al terzo depmod -a.
  6. La suddivisione al punto precedente è necessaria per capire dove inserire i comandi all’interno dell’ebuild. le instruzioni di compilazione all’interno di src_compile(), le istruzioni di installazione all’interno di src_install() e le eventuali istruzioni post-installazione in pkg_postinst().
  7. Una attenzione particolare è riservata a make install: quando viene inserito nell’ebuild dovrà essere aggiunto il parametro DESTDIR=${D}. In questo modo il pacchetto sarà installato nella sandbox e solo dopo nella fase di merging nel sistema. Questo, come nel mio caso, potrebbe non bastare: infatti i Makefile del driver potrebbero contenere path assoluti. Per evitare ciò bisogna creare una patch e aggiungerla all’albero di portage all’interno della cartella files.
  8. Se è necessario applicare patch sarà necessario modificare ulteriormente la nostra ebuild, aggiungendo la linea inerith eutils e la funzione src_unpack(). Questa consetrà delle seguenti 3 istruzioni:
    unpack ${A}cd "${S}"
    
    epatch "${FILESDIR}"/nome_patch
  9. Una volta fatto completato l’ebuild bisognerà eseguire il comando: ebuild /path/to/ebuild/nome_ebuild.ebuild digest.
  10. Ora rimane da lanciare emerge e vedere che succede: se tutto funziona avete creato la vostra ebuild.

Creare una patch? E come si fà?
È abbastanza semplice: si copia il file da patchare. Tale nuovo file sarà modificato opportunamente aggiungendo, modificando o eliminando elementi nel file: ad esempio nel caso siano presenti path assolute queste potrebbero essere fatte precedere da ${DESTDIR}. Una volta modificato opportunamente, saremo pronti a creare il nostro patchfile: diff -u origfile newfile > patchfile. Attenzione al path inserito per newfile: deve essere tale che sia possibile riferircisi dalla posizione corrente durante la fase di installazione.

Spero che queste righe possano essere utili a qualche gentooista per risolvere i propri problemi.