|
|
(35 versioni intermedie di 10 utenti non mostrate) |
Riga 1: |
Riga 1: |
| ==Introduzione== | | {{Repository |
| Questa guida � dedicata all'installazione dei modem USB contenenti il chipset Conexant su Debian Sarge, ma pu� essere utile anche per l'installazione in release diverse (o, con opportune modifiche di configurazione, in distribuzioni diverse).
| | |precedente=Immagini iso Debian da usare come repository |
| I driver utilizzti provengono dal progetto [http://accessrunner.sourceforge.net/ Accessrunner], sono stati rilasciati con licenza GPL e recentemente inclusi nell'albero principale del kernel Linux (dalla versione 2.6.13).
| | |successivo=Gestione di un repository con debarchiver |
| | }} |
| | {{Versioni compatibili|Squeeze|Wheezy|Jessie}} |
| | == Introduzione == |
| | La creazione di un repository Debian personale può essere utile nel caso si vogliano rendere disponibili per l'installazione tramite l'[[Introduzione all'APT System|APT System]] i pacchetti <code>.deb</code> creati da noi. Il repository così creato può essere utilizzato all'interno della nostra LAN, oppure reso accessibile a un gran numero di utenti tramite Internet. |
|
| |
|
| I modem con questo chipset necessitano per funzionare di un modulo del kernel (prima chiamato driver) di nome cxacru che � stato scritto per versioni del kernel Linux dalla 2.6.10 in poi.
| | Esistono fondamentalmente due diversi approcci alla creazione di un repository: |
| Esistono versioni precedenti dello stesso progetto funzionanti per kernel della serie 2.4 e anche qualche adattamento per kernel della serie 2.6 precedenti al 2.6.10, ma non sono pi� mantenuti e pertanto se ne consiglia l'utilizzo solo ad utenti esperti o molto coraggiosi.
| | * '''Repository Automatico''': ha una struttura complessa, gestisce un pool di pacchetti e supporta architetture (i386, sparc, ecc.) multiple. A fronte di un maggior lavoro lato server permette un uso altamente automatizzato lato client; |
| | * '''Repository Semplice''': gestisce una sola architettura. È il più indicato per i piccoli repository, specie quelli personali, perché richiede un minor lavoro lato-server. |
|
| |
|
| Oltre al driver, questi modem necessitano per funzionare anche di un firmware, che in questo caso non � altro che un sistema operativo real-time (si, potrebbe funzionare anche linux, esiste un progetto a riguardo, ma al momento nessuno ha avuto successo con esso. Trovate qualche riferimento alla homepage gi� citata).
| | In questa guida vedremo come realizzare il secondo tipo di repository. |
| A complicare il tutto c'� il fatto che sono state rilasciate, sotto forma di binari gi� compilati, due versioni differenti di questo firmware: una usa "celle ATM impacchettate in frame USB" mentre l'altra usa "frame ethernet su USB". Il progetto Accessrunner supporta solo il primo di questi protocolli.
| |
| Se vi capitasse di avere un modem che viene equipaggiato solo con il firmware del secondo tipo (di solito nei CD di installazione ci sono tutti e due), allora per usare il driver accessrunner dovete procurarvi un firmware del primo tipo da qualche parte in rete (eventualmente provate a postare nel forum).
| |
|
| |
|
| ==Verificare se il modem � supportato== | | == Repository semplice == |
| Prima di iniziare l'installazione � necessario verificare che il modem in possesso sia supportato dal progetto. Per fare questo � necessario collegare il modem ad una porta usb. In un terminale digitiamo
| | === La Struttura === |
| | | Per prima cosa dovremo scegliere dove risiederà fisicamente il nostro repository. Una buona scelta può essere una directory all'interno della nostra home, come anche una directory all'interno di <code>/usr/share</code>. In questa guida creeremo il repository nella nostra home, ma sentitevi liberi di posizionarlo dove più vi aggrada. |
| <pre>$ less /proc/bus/usb/devices </pre>
| |
| | |
| si otterr� una serie di informazioni su tutte le periferiche usb che avete nel pc.
| |
| La parte che ci interessa � questa:
| |
| <pre>
| |
| T: Bus=01 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#= 2 Spd=12 MxCh= 0
| |
| D: Ver= 1.10 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs= 1
| |
| P: Vendor=0572 ProdID=cb00 Rev= 0.01
| |
| S: Manufacturer=-
| |
| S: Product=ADSL USB MODEM
| |
| S: SerialNumber=55473201
| |
| C:* #Ifs= 1 Cfg#= 1 Atr=80 MxPwr=500mA
| |
| I: If#= 0 Alt= 0 #EPs= 7 Cls=00(>ifc ) Sub=00 Prot=00 Driver=none
| |
| E: Ad=81(I) Atr=02(Bulk) MxPS= 64 Ivl=0ms
| |
| E: Ad=01(O) Atr=02(Bulk) MxPS= 64 Ivl=0ms
| |
| E: Ad=82(I) Atr=02(Bulk) MxPS= 64 Ivl=0ms
| |
| E: Ad=02(O) Atr=02(Bulk) MxPS= 64 Ivl=0ms
| |
| E: Ad=83(I) Atr=02(Bulk) MxPS= 64 Ivl=0ms
| |
| E: Ad=03(O) Atr=02(Bulk) MxPS= 64 Ivl=0ms
| |
| E: Ad=84(I) Atr=03(Int.) MxPS= 8 Ivl=200ms
| |
| </pre>
| |
| | |
| Prendiamo nota dalla riga <tt>P:</tt> dei campi <tt>Vendor</tt> e <tt>ProdID</tt> che identificano il chipset del modem e notiamo che alla voce <tt>Driver</tt> c'� scritto <tt>none</tt>, segno che in effetti state seguendo questa guida per qualcosa ;-).
| |
| Controllate se Vendor e Product ID del vostro modem corrispondono ad uno dei [http://accessrunner.sourceforge.net/modems.shtml modem supportati].
| |
| Se corrispondono ad un modem non supportato, provate a fare una ricerca nella [http://sourceforge.net/mailarchive/forum.php?forum_id=43894 mailing list del progetto] per vedere se (ed eventualmente come) qualcun altro � riuscito a risolvere il vostro problema.
| |
| | |
| ==L'occorrente per l'installazione==
| |
| Se il � modem supportato possiamo procedere, ma saranno necessarie ancora alcune cose:
| |
| *Il compilatore gcc funzionante. Se non l'avete installatelo (� presente nel primo cd di installazione, non vi serve internet):
| |
| <pre>
| |
| aptitude install gcc
| |
| </pre>
| |
| *Il driver per Wi.. (mi spiace non riesco a scriverlo ;-)) che dovreste avere in dotazione al modem. Se non l'avete cercate in rete un firmware compatibile per esempio alla Hamlet e saltate il prossimo punto.
| |
| *L'utility per estrarre il firmware dal driver Wi... (� pi� forte di me :-D). Se avete una connessione ad internet funzionante potete mettervi in una directory in cui avete diritto di scrittura e digitate
| |
| <pre> | |
| $ cvs -z3 -d:server:anonymous@cvs.sourceforge.net:/cvsroot/accessrunner co -P utils
| |
| </pre> | |
| altrimenti dovrete usare un'altro computer connesso ad internet, aprire [http://cvs.sourceforge.net/viewcvs.py/accessrunner/ questa pagina] (che � la simulazione web del cvs) e scaricare i quattro file contenuti nella cartella <tt>utils</tt>.
| |
| Ad ogni modo dopo esserci procurati le utils dobbiamo compilarle:
| |
| <pre>
| |
| $ cd utils # o dovunque avete messo i file
| |
| $ make
| |
| </pre>
| |
| *Nel caso in cui il modem si identifichi con il'ID <tt>0xcafe</tt> (<tt>0x</tt> sta per esadecimale), vi serve anche la ROM di boot che scaricate ad esempio cos�
| |
| <pre>
| |
| $ wget http://www.olitec.com/pub/USBADSLV151-1008fr.tar.gz
| |
| </pre>
| |
| ora estraete il file WBoot.hex
| |
| <pre>
| |
| $ tar xvfz USBADSLV151-1008fr.tar.gz && cp USBADSL/WBoot.hex .
| |
| </pre>
| |
| e poi create un programmino C per convertire il file esadecimale in binario cos�:
| |
| <pre> | | <pre> |
| $ echo "int main(int argc, char ** argv) | | $ mkdir ~/debian |
| {
| |
| unsigned int bp[] = {
| |
| #include "WBoot.hex"
| |
| };
| |
| write(1, bp, sizeof(bp));
| |
| }
| |
| " > programmino.c
| |
| </pre> | | </pre> |
| compilatelo e rendetelo eseguibile:
| | Ora dobbiamo creare le due sottodirectory <code>binary</code> e <code>source</code> che conterranno rispettivamente le versioni binarie e sorgenti dei nostri pacchetti: |
| <pre> | | <pre> |
| $ gcc programmino.c -o programmino | | $ mkdir ~/debian/binary |
| $ chmod +x programmino | | $ mkdir ~/debian/source |
| </pre> | | </pre> |
| ed eseguitelo in questo modo:
| | In questo modo avremo una struttura di questo tipo: |
| <pre> | | <pre>$ tree debian |
| ./programmino > cxacru-bp.bin
| | debian |
| | |-- binary |
| | `-- sources |
| </pre> | | </pre> |
| *Purtroppo nella attuale stable (sarge) trovate il kernel 2.6.8 quindi, a meno che non abbiate gi installato un kernel 2.6.13 o superiore dovrete usare un PC connesso ad internet per scaricare uno dei seguenti pacchetti:
| |
| **il sorgente di un kernel >=2.6.10 nella forma di un pacchetto kernel-source (o linux-source, nella nomenclatura pi recente)
| |
| **un pacchetto kernel-image >=2.6.10 (o linux-image) gi compilato, e il pacchetto linux-headers corrispondente, per compilare il modulo fuori dal kernel
| |
| **un pacchetto linux-image >=2.6.13 da installare direttamente
| |
| *Nel caso si decida per la compilazione di un kernel <2.6.13 (ma, ribadisco, sempre >=2.6.10) o anche del solo modulo cxacru necessario scaricare la patch usbatm che trovate [http://sourceforge.net/project/showfiles.php?group_id=47406 qui]. Conviene sempre prendere l'ultima versione disponibile, che al momento il file usbatm-20050216.tar.bz2.
| |
|
| |
|
| Se siete poco pratici di debian, e installare il modem � una delle prime cose che fate sulla vostra nuova sarge, devo avvisarvi che il fatto di aggiornare il kernel da 2.6.8 a 2.6.12 o superiori comporta qualche difficolt� tecnica. A breve vedr� di scrivere una piccola guida per questa migrazione, ma nel frattempo, prima di avventurarvi per questa strada: cercate informazioni nel forum ;-)
| | === I file di indice === |
| | Ultimata la creazione della struttura del repository e popolati binary e source (se abbiamo anche le versioni sorgenti) con i nostri pacchetti, dobbiamo creare i relativi file di indice. Questi file vengono scaricati da APT quando impartiamo il comando <code>'''apt-get update'''</code> e contengono la lista di tutti i pacchetti presenti in un repository. Quando effettuiamo la ricerca di un pacchetto o quando desideriamo installarlo, APT consulta questi file per stabilire in quale repository esso è contenuto. |
|
| |
|
| Da questo punto in avanti supporremo di aver messo tutti i file necessari all'installazione in una directory di lavoro all'interno della vostra home: ~/work/
| | La creazione dei file di indice è ottenuta tramite due utility: <code>'''dpkg-scanpackages'''</code> e <code>'''dpkg-scansources'''</code>. Il funzionamento dei due programmi è identico, ma il primo esamina i file binari ed il secondo quelli sorgenti. |
|
| |
|
| ==Installazione di linux-image==
| | Entrambi gli strumenti restituiscono i loro risultati sullo standard output (<code>stdout</code>): questo significa che di default vedremo l'output a schermo. Per questo motivo è necessario reindirizzare il risultato di <code>dpkg-scanpackages</code> e <code>dpkg-scansources</code> su file appositi. Per convenzione questi file sono compressi in formato <code>gzip</code> e chiamati <code>'''Packages.gz'''</code> all'interno di <code>binary</code> e <code>'''Sources.gz'''</code> all'interno di <code>source</code>. |
| Nel caso abbiate optato per l'installazione di un pacchetto linux-image non vi resta altro da fare che installarlo (da root):
| |
| <pre> | |
| # dpkg -i ~/work/linux-image-2.6.x-xx-xxx.deb
| |
| </pre> | |
|
| |
|
| Nota: qui si � supposto che il modem in questione rappresenti il vostro unico collegamento ad internet. Se invece avete accesso direttamente ad internet potete fare affidamento per l'installazione ad [[Indice_Guide#Gestione_dei_Pacchetti | apt]], che gestir� automaticamente le eventuali dipendenze.
| | Nell'esempio di questa guida il nostro repository contiene due pacchetti di tipo binario (apt e apt-best) ed un pacchetto di tipo sorgente (apt). Vedremo ora come creare i relativi file <code>Packages.gz</code> e <code>Sources.gz</code> |
|
| |
|
| Verificate che il bootloader, lilo o grub, punti alle giuste immagine del kernel e dell'initrd (vedi [[Debian_Kernel_Howto#Installazione_nuovo_kernel | installazione nuovo kernel]]) e fate un reboot con il nuovo kernel.
| | La struttura del repository di esempio è questa: |
| Se non ci sono errori, a seconda della versione del kernel che avete installato, potete continuare con la compilazione del modulo cxacru, o passare all'installazione del firmware.
| |
| | |
| ==Compilazione e installazione del solo modulo cxacru==
| |
| Se il kernel che avete installato non comprende ancora il modulo cxacru, potete compilarlo e installarlo a parte. Per questo sono sufficienti gli headers del kernel, ma vanno bene anche i sorgenti completi.
| |
| | |
| Nota: alcuni kernel tendono ad essere particolarmente esigienti riguardo la versione del compilatore con cui compilate il modulo, e rifiuteranno di caricarlo se usate una versione di gcc diversa da quella con cui � stato compilato il kernel (controllate con <tt>cat /proc/version</tt> per il kernel corrente). In particolare il 2.6.12 richiede che usiate il gcc-3.3.
| |
| | |
| Se avete scaricato i pacchetti deb con gli headers (di solito sono due pacchetti: uno generico e uno relativo alla vostra architettura) dovete installarli:
| |
| <pre> | | <pre> |
| # dpkg -i ~/work/linux-headers*.deb
| | $ tree debian |
| | debian |
| | |-- binary |
| | | |-- apt-best-0.3.deb |
| | | |-- apt-doc_0.5.28.6_all.deb |
| | | |-- apt-utils_0.5.28.6_i386.deb |
| | | |-- apt_0.5.28.6_i386.deb |
| | | |-- libapt-pkg-dev_0.5.28.6_i386.deb |
| | | `-- libapt-pkg-doc_0.5.28.6_all.deb |
| | `-- source |
| | |-- apt_0.5.28.6.dsc |
| | `-- apt_0.5.28.6.tar.gz |
| </pre> | | </pre> |
| | | Procediamo con la creazione del file <code>Packages.gz</code>: |
| ora si pu� procedere con la compilazione e installazione del modulo, dopo averlo scompattato:
| |
| <pre> | | <pre> |
| # cd ~/work/
| | $ cd ~/debian |
| # tar xvfj ~/work/usbatm-20050216.tar.bz2
| | $ dpkg-scanpackages binary /dev/null | gzip -9c > binary/Packages.gz |
| # cd ~/work/drivers/usb/atm
| | apt apt-best apt-doc apt-utils libapt-pkg-dev libapt-pkg-doc |
| # make -C /usr/src/linux-headers-2.6.1x M=$PWD CONFIG_USB_CXACRU=m modules
| | Wrote 6 entries to output Packages file. |
| # install -g root -o root -m 644 cxacru.ko usbatm.ko \
| | $ ls ~/debian/binary/ |grep Packages |
| /lib/modules/2.6.1x/kernel/drivers/usb/atm/
| | Packages.gz |
| # depmod -a
| |
| </pre> | | </pre> |
| | | Per la creazione del file indice <code>Packages.gz</code> in Wheezy: |
| Se tutto � andato bene potete saltare il paragrafo sulla compilazione e passare all'installazione del firmware.
| |
| | |
| ==Compilazione e installazione del kernel==
| |
| Nel caso abbiate deciso di compilare un nuovo kernel installate il pacchetto <tt>kernel-source</tt> (<tt>linux-source</tt>).
| |
| Qui supporremo che un utente non privilegiato non abbia diritto di scrittura nella directory <tt>/usr/src</tt> (come imho dovrebbe essere), quindi tutti i comandi successivi devono essere dati da root oppure usando un programma che vi dia pari diritti per queste azioni (per es. <tt>sudo</tt>).
| |
| <pre> | | <pre> |
| # dpkg -i ~/work/linux-source-2.6.x-xx-xxx.deb
| | $ cd ~/debian |
| | $ apt-ftparchive packages binary | gzip > binary/Packages.gz |
| | $ ls ~/debian/binary/ |grep Packages |
| | Packages.gz |
| </pre> | | </pre> |
| questo installer� un archivio compresso contenente il kernel nella directory <tt>/usr/src/</tt>. Andiamo a scompattarlo e applichiamo la patch:
| | e del file <code>Sources.gz</code> |
| <pre> | | <pre> |
| # cd /usr/src
| | $ cd ~/debian |
| # tar xvfj linux-source-2.6.x-xx-xxx.tar.bz2
| | $ dpkg-scansources source /dev/null | gzip -9c > source/Sources.gz |
| # cd linux-source-2.6.x-xx-xxx
| | $ ls ~/debian/source/ |grep Sources |
| # tar xvfj ~/work/usbatm-20050216.tar.bz2
| | Sources.gz |
| </pre> | | </pre> |
|
| |
|
| C'� chi sostiene che scompattare il file usbatm direttamente nel kernel sia assolutamente sbagliato, per il rischio di sovrascrivere qualcosa. Ma considerando che l'operazione ha senso solo per 3 versioni del kernel, e successivamente i file contenuti nel pacchetto sono stati inclusi nell'albero dei sorgenti esattamente nella stessa posizione in cui li abbiamo messi noi, penso che siano timori infondati, a patto di non sbagliare la versione del kernel ;-).
| | === I file di Release === |
| | Se volete poter usare il [[pinning]] o permetterne l'uso agli utenti del vostro repository, una volta creati i file <code>Packages.gz</code> e <code>Sources.gz</code>, dovete necessariamente creare un file apposito in ciascuna directory del vostro repository. |
|
| |
|
| '''nota bene''': mentre sperimentate con la compilazione del kernel <u>non usate mai</u> la directory <tt>/usr/src/linux</tt> che dovrebbe essere un link simbolico (<tt>man ln</tt>) ai sorgenti del kernel attualmente in uso. Se tutto il nostro procedimento funzioner�, alla fine cambierete il link in modo che punti ai sorgenti giusti. Per approfondimenti sull'argomento vedere il [[Debian_Kernel_Howto | debian kernel howto]] | | Questi file sono chiamati file <code>'''Release'''</code>, sono normali file di testo ed hanno una struttura del tipo: |
| | <pre> |
| | Archive: archivio |
| | Component: componente |
| | Origin: origine |
| | Label: etichetta |
| | Architecture: architettura |
| | </pre> |
| | dove: |
| | * <code>archivio</code>: è l'archivio Debian a cui i pacchetti appartengono (ad es.: stable, testing. ecc.); |
| | * <code>componente</code>: indica il tipo di componente (ad es.: main, contrib, non-free); |
| | * <code>origine</code>: specifica il proprietario del repository; |
| | * <code>etichetta</code>: identifica il repository: potete inserire descrizioni, ecc.; |
| | * <code>architettura</code>: l' architettura dei pacchetti contenuti nel repository (ad es.: i386, sparc, source, ecc.). |
| | Vediamo i file Release per i repository di questa guida. |
|
| |
|
| Invece di compilare un kernel da zero (impresa a dir poco titanica) conviene recuperare il config relativo al kernel che state usando, che dovrebbe essere presente nella directory <tt>/boot</tt>, e dovrebbe chiamarsi <tt>config-<versione del kernel></tt> o simili: sempre dalla directory principale dei sorgenti del kernel digitate
| | Per l' archivio ''binary'' abbiamo: |
| <pre> | | <pre> |
| # cp /boot/config<qualcosa> .config
| | $ cat ~/debian/binary/Release |
| | Archive: unstable |
| | Component: main |
| | Origin: keltik |
| | Label: Repository di esempio |
| | Architecture: i386 |
| </pre> | | </pre> |
| in questo modo avrete un albero dei sorgenti configurato esattamente come il vostro attuale kernel, e da qui potete fare solo le modifiche che vi servono.
| | e per quello ''source'': |
| | |
| A questo punto prima di compilare dobbiamo abilitare alcune opzioni del kernel. Digitate
| |
| <pre> | | <pre> |
| # make menuconfig
| | $ cat ~/debian/source/Release |
| | Archive: unstable |
| | Component: main |
| | Origin: keltik |
| | Label: Repository di esempio |
| | Architecture: source |
| </pre> | | </pre> |
|
| |
|
| Andate alla voce <tt>Device Drivers -> USB support -> USB DSL modem support</tt> ed attivate <tt>USB DSL modem support</tt> e <tt>Conexant AccessRunner USB support</tt>.
| | === Uso del repository === |
| | ==== Uso in locale ==== |
| | Finalmente è venuto il momento di mettere alla prova il nostro repository. |
|
| |
|
| '''Nota''': il driver cxacru deve essere compilato come modulo perch�, probabilmente a causa di un bug, se compilato nel kernel in molti casi viene inizializzato prima che il firmware sia disponibile, e restituisce l'errore "<tt>firmware not found</tt>" anche se in realt� l'avete messo nel posto giusto. Il fatto � che non potendo fare "<tt>rmmod cxacru && modprobe cxacru</tt>", per farlo reinizializzare non vi resterebbe che staccare fisicamente il modem dalla porta usb e riattaccarlo, dopo ogni reboot, e questo pu� essere parecchio seccante! | | Già fin d'ora possiamo utilizzarlo così com'è in locale sulla nostra macchina: tutto quello che dobbiamo fare consiste nell'aggiungere al nostro file <code>/etc/apt/sources.list</code> l'[[URI]] attraverso il quale reperire i pacchetti. |
|
| |
|
| Il resto della configurazione dovrebbe essere gi� a posto, ma controllate per sicurezza.
| | In questo esempio abbiamo creato il repository nella directory <code>~/debian</code> e cioè nella directory <code>debian</code> all'interno della nostra home. Dovremo quindi aggiungere al file <code>/etc/apt/sources.list</code> due linee così composte: |
| Alla voce <tt>Device Drivers -> Networking support </tt>
| |
| <pre> | | <pre> |
| <M> PPP support
| | deb [allow-insecure=yes] file:///home/utente/debian binary/ |
| <M> PPP support for async serial ports
| | deb-src [allow-insecure=yes] file:///home/utente/debian source/ |
| <M> PPP support for sync tty ports
| |
| <M> PPP deflate compression
| |
| <M> PPP BSD-Compress compression
| |
| <M> PPP over ATM
| |
| </pre> | | </pre> |
| | dove, alla parola ''utente'' dovete sostituire lo username dell'utente nella cui home risiede il repository. L'uso di <code>allow-insecure=yes</code> permette l'uso di un repository non firmato e/o la cui chiave pubblica corrispondente non è stata aggiunta alle chiavi fidate di APT. |
|
| |
|
| Ala voce <tt>Networking options</tt>
| | Una volta fatto questo lanciate: |
| <pre> | | <pre> # apt-get update</pre> |
| <M> Asyncronous Transfer Mode
| | per rigenerare la lista degli indici di APT. |
| <M> Classical IP over ATM
| |
| [*] Do NOT send ICMP if no neighbour
| |
| </pre> | |
|
| |
|
| A questo punto uscite salvando la configurazione attuale e costruite il pacchetto <tt>kernel-source-2.6.x-xx-xxx-Custom.deb</tt> (per approfondimenti vedere [[Debian_Kernel_Howto#Compilazione_del_kernel | Compilazione del kernel]] nel Debian kernel howto):
| | Ora vediamo se il nostro repository funziona. Iniziamo con il cercare il pacchetto '''apt'''. Il comando da impartire è: |
| <pre> | | <pre> |
| # make-kpkg clean
| | $ apt-cache show apt |
| # make-kpkg --initrd kernel-image
| |
| </pre>
| |
| e installate il pacchetto ottenuto:
| |
| <pre>
| |
| # dpkg -i ../kernel-image-2.6.x.xx.xxx-Custom.deb
| |
| </pre> | | </pre> |
|
| |
|
| Ora verificate che il bootloader (lilo o grub) punti alle immagini giuste di kernel e initrd e poi riavviate.
| | Se tutto ha funzionato dovremmo ottenere come risultato due diversi pacchetti: entrambi si chiamano apt, entrambi hanno numero di versione 0.5.28.6, ecc. Per capire se e quale proviene dal nostro repository dobbiamo andare a controllare la voce <code>Filename</code>. |
|
| |
|
| | | Nel caso del pacchetto proveniente dal repository ufficiale di Debian avremo: |
| '''Aggiornamento''': solo recentemente (23/11/2005) sono riuscito nell'intento di far funzionare correttamente il driver cxacru anche se � compilato all'interno del kernel :-D. Questo permette di costruire un kernel monolitico e di disabilitare il supporto per i moduli, cosa senz'altro desiderabile nelle situazioni in cui � necessario un certo grado di sicurezza (per es. per un PC che fa da firewall-router).
| |
| Poich� la cosa non � per niente banale, e comporta la compilazione di un kernel recente (minimo 2.6.12, ma io ho testato il 2.6.14) e la creazione di un initramfs personalizzato (oltre a qualche configurazione minore in udev), consiglio la cosa solo ad utenti particolarmente avventurosi. Chi vuole cimentarsi mi pu� contattare sul forum.
| |
| | |
| ==Installazione del firmware==
| |
| Qualunque metodo abbiate seguito, dopo il reboot dovreste trovare disponibile il modulo <tt>cxacru</tt>, verificate con
| |
| <pre> | | <pre> |
| # modprobe -l |grep cxacru
| | [ ... omissis ...] |
| | Filename: pool/main/a/apt/apt_0.5.28.6_i386.deb |
| | [ ... omissis ...] |
| </pre> | | </pre> |
| il comando dovrebbe restituire un output simile a: | | mentre per il pacchetto proveniente dal nostro repository avremo: |
| <pre> | | <pre> |
| /lib/modules/2.6.x/kernel/drivers/usb/atm/cxacru.ko | | [ ... omissis ...] |
| | Filename: binary/apt_0.5.28.6_i386.deb |
| | [ ... omissis ...] |
| </pre> | | </pre> |
| se non restituisce nulla significa che c' stato un errore nei precedenti passaggi.
| |
|
| |
|
| Se tutto � andato per il meglio proseguiamo andando a recuperare il CD dei driver per w... ehm, quell'altro S.O.
| | Per fare in modo che il nostro repository sia usato come preferenziale rispetto agli altri possiamo inserire nel file <code>/etc/apt/sources.list</code> le linee ad esso relativo all'inizio del file, prima di tutti gli altri repository. |
| Cercate nel CD il file <tt>CnxEtU.sys</tt> e copiatelo nella Cartella di lavoro. Ora estraete il firmware e copiatelo nella directory dove hotplug (o udev se usate un sistema pi� recente) si aspetta di trovarlo:
| |
| <pre>
| |
| # cd ~/work
| |
| # ./utils/cxacru-fw CnxEtU.sys cxacru-fw.bin
| |
| # cp ~/work/cxacru-fw.bin /lib/firmware
| |
| </pre> | |
| Se il vostro modem ha il chipset <tt>0xcafe</tt> copiate nella stessa directory anche la ROM di boot, cio� il file <tt>cxacru-bp.bin</tt>.
| |
|
| |
|
| A questo punto togliete il modulo <tt>cxacru</tt>, nel caso sia caricato:
| | In questo modo, quando impartiamo il comando: |
| <pre> | | <pre> # apt-get install nome_pacchetto</pre> |
| # rmmod cxacru
| | APT provvederà ad installare quello fornito dal repository elencato per primo in <code>/etc/apt/sources.list</code>. Ecco l'esempio sempre relativo ad ''apt'': |
| </pre> | |
| staccate il modem dalla porta USB nel caso sia attaccato, e poi riattaccate il modem alla porta usb e ricaricate il driver. Tutto questo perche � sempre megio togliere il modulo dal kernel prima di staccare il modem.
| |
| Ora controllate che sia stato trovato il firmware:
| |
| <pre> | | <pre> |
| $ dmesg | tail
| | # apt-get install apt -s |
| | Lettura della lista dei pacchetti in corso... Fatto |
| | Generazione dell'albero delle dipendenze in corso... Fatto |
| | Pacchetti suggeriti: |
| | aptitude apt-doc |
| | I seguenti pacchetti saranno aggiornati: |
| | apt |
| | 1 aggiornati, 0 installati, 0 da rimuovere e 1 non aggiornati. |
| | Inst apt [0.5.28.6] (0.5.28.6 Repository di esempio:unstable) |
| | Conf apt (0.5.28.6 Repository di esempio:unstable) |
| </pre> | | </pre> |
| il comando dovrebbe restituire qualcosa di simile a
| | Nelle ultime due linee possiamo notare come la provenienza del pacchetto sia '''Repository di esempio:unstable''' come indicato nel nostro file '''Release'''. |
| <pre>
| |
| usbcore: registered new driver cxacru
| |
| cxacru 1-1:1.0: found firmware cxacru-fw.bin
| |
| </pre>
| |
| Nel caso, una volta caricato il firmware, riceviate, sempre in <tt>dmesg</tt>, il messaggio:
| |
| <pre>
| |
| cxacru 1-1:1.0: poll status: error -5
| |
| </pre>
| |
| significa che occorre una versione pi� recente del vostro firmware. In effetti non � assolutamente detto che i driver forniti dal produttore del modem siano aggiornati, ma potete senz'altro trovare un firmware aggiornato in rete (o eventualmente postando nel forum).
| |
|
| |
|
| Ora il driver del modem dovrebbe gi� essere in funzione e il led relativo alla linea ADSL dovrebbe lampeggiare, segno che sta cercando la sincronizzazione con la linea. Mentre il led lampeggia avrete che:
| | ==== Uso in rete (http) ==== |
| <pre> | | Rendere disponibile in rete il repository che abbiamo appena creato è un'operazione estremamente semplice. Non dovremo fare altro che copiare la root del repository in una directory accessibile al nostro server web ed indicare l'[[URI]] corretto nei file <code>/etc/apt/sources.list</code> delle macchine che dovranno accedere ad esso. |
| $ cat /proc/net/atm/cxacru\:0
| |
| ADSL USB MODEM (usb-0000:00:07.2-1)
| |
| MAC: xx:yy:zz:bla bla bla
| |
| AAL5: tx 9363 ( 0 err ), rx 14299 ( 0 err, 0 drop )
| |
| Line down
| |
| </pre> | |
| e anche:
| |
| <pre>
| |
| $ tail /var/log/messages
| |
| Oct 5 08:06:00 muretto kernel: ATM dev 0: ADSL line: attempting to activate
| |
| Oct 5 08:06:10 muretto kernel: ATM dev 0: ADSL line: down
| |
| Oct 5 08:06:15 muretto kernel: ATM dev 0: ADSL line: attempting to activate
| |
| Oct 5 08:06:35 muretto kernel: ATM dev 0: ADSL line: down
| |
| Oct 5 08:06:40 muretto kernel: ATM dev 0: ADSL line: attempting to activate
| |
| Oct 5 08:08:00 muretto kernel: ATM dev 0: ADSL line: channel analysis
| |
| Oct 5 08:08:05 muretto kernel: ATM dev 0: ADSL line: up (4832 kb/s down | 320 kb/s up)
| |
| </pre>
| |
| qui alle 8.08.00 il modem si � sincronizzato con il segnale ADSL .
| |
|
| |
|
| Una volta agganciato il segnale ADSL si avr�:
| | Nel caso in cui stiamo usando Apache e la DocumentRoot sia <code>/var/www</code> sarà sufficiente impartire: |
| <pre> | | <pre> |
| $ cat /proc/net/atm/cxacru\:0
| | # cp -R /home/utente/debian/ /var/www/ |
| appariranno di seguito queste informazioni
| |
| ADSL USB MODEM (usb-0000:00:07.2-1)
| |
| MAC: xx:yy:zz:bla bla bla
| |
| AAL5: tx 9363 ( 0 err ), rx 14299 ( 0 err, 0 drop )
| |
| Line up
| |
| </pre> | | </pre> |
| Ci siamo: il driver del modem perfettamente funzionante.
| |
|
| |
|
| ==Impostazione della connessione==
| | Ora dobbiamo modificare i file <code>/etc/apt/sources.list</code> in modo che puntino a questo repository. |
| Prima di iniziare dovete sapere:
| |
| *userid e password forniti dal provider (di solito per Telecom Alice l'userid e la password sono entrambi uguali a <tt>aliceadsl</tt>)
| |
| *VPI e VCI del provider (nel caso di Telecom Alice sono 8 e 35).
| |
| *IP e DNS del nostro provider nel caso di una connessione con IP statico.
| |
|
| |
|
| Iniziamo con la configurazione.
| | Poniamo che il server che mette a disposizione il repositry abbia il [[FQDN]] debian.prova.net. La sintassi da utilizzare in <code>/etc/apt/sources.list</code> è la seguente: |
| Create il file <tt>/etc/ppp/peers/adsl</tt> in questo modo:
| |
| <pre> | | <pre> |
| # echo "noauth
| | deb http://debian.prova.net/debian/ binary/ |
| noipdefault
| | deb-src http://debian.prova.net/debian/ source/ |
| usepeerdns
| |
| defaultroute
| |
| persist
| |
| plugin pppoatm.so 8.35
| |
| user \"userid\"
| |
| " > /etc/ppp/peers/adsl
| |
| </pre> | | </pre> |
| oppure copiate nella directory <tt>/etc/ppp/peers/</tt> il file <tt>/usr/share/doc/ppp/examples/peers-pppoa</tt>
| | Dobbiamo fare '''estrema''' attenzione agli slash ("/") perché hanno un uso preciso all'interno di <code>/etc/apt/sources.list</code>. Nel nostro caso è '''necessario''' che sia l'URL (http://debian.prova.net/debian) sia l' archivio (binary o source) termini con un "/", altrimenti otterremo un errore di questo tipo: |
| <pre> | | <pre> |
| # cp /usr/share/doc/ppp/examples/peers-pppoa /etc/ppp/peers/ | | # apt-get update |
| | E: La linea x in /etc/apt/sources.list (dist parse) non è corretta |
| </pre> | | </pre> |
| In entrambi i casi modificate la riga <tt>user "userid"</tt> mettendo il vostro userid ;-), con o senza le virgolette: non ha importanza.
| | Se abbiamo invece scritto correttamente, quando lanceremo <code>apt-get update</code>, vedremo APT dialogare con il nostro web server e reperire l'elenco dei nostri pacchetti: |
| | |
| Inserite userid e password nei file <tt>/etc/ppp/pap-secrets</tt> e <tt>/etc/ppp/chap-secrets</tt>:
| |
| <pre> | | <pre> |
| # echo "userid * password" >> /etc/ppp/pap-secrets | | # apt-get update |
| # echo "userid * password" >> /etc/ppp/chap-secrets
| | Get:1 http://debian.prova.net binary/ Packages [1377B] |
| | Get:2 http://debian.prova.net binary/ Release [97B] |
| | Get:3 http://debian.prova.net source/ Sources [412B] |
| | Get:4 http://debian.prova.net source/ Release [100B] |
| </pre> | | </pre> |
| | Per il test e l'ordine con cui i pacchetti vengono installati da APT, vi rimando alla lettura del [[#Uso_in_locale|paragrafo precedente]] |
|
| |
|
| A questo punto fate partire la connessione con il comando
| | == Repository ufficiale == |
| <pre> | | === Configurazione repository === |
| # pon adsl
| | Per creare un repository ufficiale (fatto a regola d'arte, come quello di debian) per prima cosa installiamo il programma reprepro con il comando: |
| | <pre># apt-get install reprepro</pre> |
| | in seguito scegliamo il percorso dove creare il nostro repo (nella guida sarà indicato come ~/debian/) quindi creiamo la cartella e posizioniamovici dentro: |
| | <pre>$ mkdir ~/debian/ |
| | $ cd ~/debian/</pre> |
| | Ora dobbiamo creare un file di configurazione per reprepro quindi: |
| | <pre>$ mkdir conf |
| | $ cd conf</pre> |
| | dentro creiamo un file chiamato distributions e riempiamolo nel seguente modo: |
| | <pre>Origin: nomeMioRepo |
| | Label: Etichetta nomeMioRepo |
| | Suite: unstable |
| | Codename: sid |
| | Architectures: amd64 |
| | Components: main |
| | Description: Unofficial Debian packages |
| | SignWith: myKeyId |
| </pre> | | </pre> |
| ed il gioco � fatto.
| | {{Warningbox|Al posto di myKeyId bisogna insere l'id della chiave GPG creata appositamente per firmare i pacchetti.}} |
| | ora riposizioniamoci nella cartella debian dando il comando: |
| | <pre>cd ~/debian</pre> |
| | facciamo creare i file necessari con: |
| | <pre>reprepro check</pre> |
| | per aggiungere un pacchetto al repo: |
| | <pre>reprepro includedeb unstable /tmp/mypackage_1.1.1-1_all.deb</pre> |
| | per rimuoverlo: |
| | <pre>reprepro remove unstable mypackage</pre> |
| | |
| | Provvedere a mettere online il repository rendendo accessibile da un server web la cartella debian escludendo le directory db e conf, quindi modificare il file <code>/etc/apt/sources.list</code> aggiungendo la seguente riga: |
| | <pre>deb http://www.tuSito.do/debian/ sid main</pre> |
| | {{Suggerimento|Per impedire l'accesso alle directory db e conf si potrebbe creare all'interno di ciascune di essa un file .htaccess contentente:<pre>deny from all</pre>}} |
|
| |
|
| Controllate in <tt>/var/log/messagges</tt> se tutto funziona regolarmente:
| | === Creazione pacchetto chiave GPG === |
| | Per prima cosa esportiamo la nostra chiave con |
| | <pre>gpg --export myKeyId > myrepo-debian-key.gpg</pre> |
| | In seguito creiamo il seguente alvero di directory (si ricorda che control e myrepo-debian-key.gpg sono files): |
| <pre> | | <pre> |
| # tail /var/log/messagges
| | ├── DEBIAN |
| Jun 3 00:07:40 localhost pppd[5101]: Plugin /usr/lib/pppd/2.4.2/pppoatm.so loaded.
| | │ └── control |
| Jun 3 00:07:40 localhost kernel: PPP generic driver version 2.4.2
| | └── etc |
| Jun 3 00:07:40 localhost pppd[5101]: PPPoATM plugin_init
| | └── apt |
| Jun 3 00:07:40 localhost pppd[5101]: PPPoATM setdevname_pppoatm - SUCCESS:8.35
| | └── trusted.gpg.d |
| Jun 3 00:07:40 localhost pppd[5126]: pppd 2.4.2 started by root, uid 0
| | └── myrepo-debian-key.gpg |
| Jun 3 00:07:40 localhost pppd[5126]: Using interface ppp0
| |
| Jun 3 00:07:40 localhost pppd[5126]: Connect: ppp0 <--> 8.35
| |
| Jun 3 00:07:43 localhost pppd[5126]: PAP authentication succeeded
| |
| Jun 3 00:07:43 localhost pppd[5126]: local IP address 82.59.0.222
| |
| Jun 3 00:07:43 localhost pppd[5126]: remote IP address 192.168.100.1
| |
| Jun 3 00:07:43 localhost pppd[5126]: primary DNS address 80.17.212.208
| |
| Jun 3 00:07:43 localhost pppd[5126]: secondary DNS address 151.99.125.1
| |
| </pre> | | </pre> |
| | | Inserire all'interno del file control: |
| Controllate in <tt>/etc/resolv.conf</tt> se i DNS sono corretti altrimenti li dovrete inserire a mano. Per esempio un <tt>/etc/resolv.conf</tt> con i DNS di libero sarebbe:
| | <pre>Package: myrepo-archive-keyring |
| | Version: 2014.4 |
| | Architecture: all |
| | Maintainer: yourNick <mail@domain.do> |
| | Depends: gpgv |
| | Recommends: gnupg |
| | Breaks: apt (<< 0.7.25.1) |
| | Section: misc |
| | Priority: important |
| | Multi-Arch: foreign |
| | Description: GnuPG archive keys of the archive archive |
| | The archive project digitally signs its Release files. This package |
| | contains the archive keys used for that. |
| | </pre> |
| | Il file myrepo-debian-key.gpg è il file precedentemente creato con GPG. |
| | Posizionarsi all'esterno della directory pkg e lanciare i seguenti comandi: |
| <pre> | | <pre> |
| $ cat /etc/resolv.conf
| | # chown -R root:root ./pkg |
| search libero.it
| | $ dpkg-deb -b ./pkg myrepo-archive-keyring_2014.4_all.deb |
| nameserver 193.70.192.25
| |
| nameserver 193.70.152.25
| |
| </pre> | | </pre> |
| | Il pacchetto contiene la chiave per autenticare il repository. |
| | {{Autori |
| | |Autore=[[Utente:Keltik|Keltik]] 09:20, Giu 26, 2005 (EDT) |
| | |Verificata_da= |
| | : [[Utente:Tima|Tima]] 10:41, 16 mag 2013 (CEST) |
| | : [[Utente:Marcomg|marcomg]] 17:50, 23 mag 2014 (CEST) |
| | |Estesa_da= |
| | : [[Utente:Marcomg|marcomg]] |
| | |Numero_revisori=2 |
| | }} |
|
| |
|
| Buona navigazione!
| | [[Categoria:Creare repository]] |
| ----
| |
| : [[Utente:Tindal|Tindal]]
| |