Configurazione Internet Key da terminale.

Ritratto di daxter92
daxter92
(Junior)
Offline
Junior
Iscritto: 28/02/2013
Messaggi: 40

Mh, quindi in sostanza per come sono le cose ora la chiavetta è impossibile me la veda se non ho capito male.. Ad ogni modo non si potrebbe aggiungere il driver?

Se non è possibile, e a questo punto penso che non lo sia, compilare il Kernel può portare a danni irreversibili? Perché male che mi va potrei provare a compilare il kernel e al limite, se dovessi vedere che non funziona ricompilo il kernel quello e abbandono definitivamente l'idea di mettere una chiavetta, o meglio, abbandono quel tipo di Hardware.

Perché se no non ci può essere un modo per prendere il kernel suo, modificarlo aggiungendoci i driver e poi buttarci su il kernel personalizzato? Che quindi varierebbe dal kernel originale solo per l'aggiunta di quei driver...

Cioè io non so se è una cosa fattibile

Emilio

Ritratto di mcortese
mcortese
(Moderatore)
Offline
Moderatore
Iscritto: 27/02/2009
Messaggi: 2918

"Aggiungere il driver" vuol dire "compilare il driver". Non è molto diverso da compilare il kernel. Devi comunque scaricarti il kit direttamente dal sito Phidgets, navigare nei sorgenti fino a drivers/usb/serial, controllare che ci sia il file option.c, compilare tutti i moduli della directory con un comando tipo:

$ make -C /lib/modules/3.1.6/build M=$PWD modules
e infine provare quello che ti interessa con "insmod option.ko".

Se funziona, dovrai copiarlo in /lib/modules/3.1.6/kernel/drivers/usb/serial e dare un depmod per rendere il tutto definitivo.

Almeno, questo è quello che farei in una distribuzione normale...

Ritratto di daxter92
daxter92
(Junior)
Offline
Junior
Iscritto: 28/02/2013
Messaggi: 40

Cioè in sostanza scarico sul PC (uso Windows, dovrei usare linux?) quello che c'è qui, ma poi come faccio a navigare tra le cartelle? Cioè purtroppo non ho mai fatto una cosa simile...

Emilio

Ritratto di mcortese
mcortese
(Moderatore)
Offline
Moderatore
Iscritto: 27/02/2009
Messaggi: 2918

No, io parlo di fare tutto sul Phidgets SBC. Scarica il kit, scompattalo da qualche parte (la directory canonica su Debian è /usr/src, sulla tua distro personalizzata non so) ed entraci con cd.

Compilare il kernel su di una macchina diversa ("cross-compile") è ancora più difficile, sotto Windows è pressoché impossibile.

Ritratto di daxter92
daxter92
(Junior)
Offline
Junior
Iscritto: 28/02/2013
Messaggi: 40

Rischio di fare danni irreversibili? Perché se male che mi va ripristino tutto ci provo Smile qui, mi ero dimenticato l'URL!

Emilio

Ritratto di mcortese
mcortese
(Moderatore)
Offline
Moderatore
Iscritto: 27/02/2009
Messaggi: 2918

La compilazione vera e propria (make) la fai da utente non privilegiato, quindi non rischi nulla fino a quando non carichi il modulo con "insmod option.ko" e anche a quel punto, in caso di "freeze" basta un reset.

Il punto di non ritorno è quando installi il modulo nella directory con gli altri moduli per rendere la cosa definitiva.

Ritratto di daxter92
daxter92
(Junior)
Offline
Junior
Iscritto: 28/02/2013
Messaggi: 40

Ok, allora in sostanza io scarico da qui il pacchetto SBC Kernel Development Package. Lo metto in /usr/src (se non c'è scelgo un altra cartella, male che va la creo) scompatto il tutto e mi colloco nella cartella drivers/usb/serial, controllo che in questa cartella ci sia il file option.c e se c'è do il comando:

$ make -C /lib/modules/3.1.6/build M=$PWD modules
"M=$PWD" significa "M=miapassword"?

Fatto questo provo a fare "insmod option.ko", se me lo prende è positivo, ma dovrebbe già crearmi il ttyUSB o basta che prenda il comando? (se dovesse diciamo morire mi a questo punto mi basta un bel reset se ho capito bene)

Ad ogni modo verificato questo devo copiare il file option.c nella cartella /lib/modules/3.1.6/kernel/drivers/usb/serial e dopo ciò dare il comando depmod ed incrociare le dita perché se qui dovesse soccombere dovrei buttare via tutto, giusto?

Abbi pazienza, in sostanza dovrebbe essere quello che mi hai detto, ma vorrei essere sicuro di aver capito tutto bene Smile

E in linea tutta teorica questo procedimento dovrebbe lasciare tutto il resto invariato, cioè mi aggiunge solo il driver di cui ho bisogno vero?

Emilio

Ritratto di mcortese
mcortese
(Moderatore)
Offline
Moderatore
Iscritto: 27/02/2009
Messaggi: 2918

daxter92 ha scritto:

"$PWD" significa "M=miapassword"?

No, $PWD significa il contenuto della variabile PWD, che contiene il percorso completo della directory corrente.

daxter92 ha scritto:

Fatto questo provo a fare "insmod option.ko", se me lo prende è positivo, ma dovrebbe già crearmi il ttyUSB o basta che prenda il comando?

Questo è il comando che dice al kernel di caricare il modulo option.ko, il quale a sua volta crea i file ttyUSB.

daxter92 ha scritto:

dopo ciò dare il comando depmod ed incrociare le dita perché se qui dovesse soccombere dovrei buttare via tutto, giusto?

Nota che tutto quello che segue (copiare il modulo, depmod...) non è indispensabile. Puoi benissimo lanciare a mano "insmod /tutto/il/path/fino/a/option.ko" ogni volta che inserisci la chiavetta, almeno finché non ti senti abbastanza sicuro. Copiare il modulo nella directory in cui risiedono tutti gli altri moduli (e rigenerare l'elenco delle mutue dipendenze) serve solo a rendere il caricamento automatico.

I veri problemi stanno altrove. Ricorda sempre che io do per scontato che tu abbia un'installazione Debian standard. Ad esempio, prima di lanciare il make controlla che esista davvero /lib/modules/3.1.6/build e che contenga un Makefile.

Naturalmente per compilare devi avere make, il compilatore gcc e altri ammennicoli vari, il che di solito si ottiene installando il singolo pacchetto build-essential.

Ritratto di daxter92
daxter92
(Junior)
Offline
Junior
Iscritto: 28/02/2013
Messaggi: 40

Ok, premetto che non ho ancora scaricato nulla, adesso provo, ma la cartella build non c'è, oppure dovrebbe essere tra le varie cartelle che adesso vado a scaricare?

Emilio

Ritratto di daxter92
daxter92
(Junior)
Offline
Junior
Iscritto: 28/02/2013
Messaggi: 40

All'interno del file scaricato c'è un file README (che ti posto) e file .PATH, io credevo ci fosse tutto il sistema operativo!

                    PhidgetSBC2 Kernel Development
                     Version 1.0.1,  27 March 2012
 
   The PhidgetSBC2 kernel can be modified and rebuilt by users when
support for hardware/features not included in the stock release are
required.
 
   Phidgets Inc. does not directly support kernel development. We
provide our Kernel patch and some suggestions/recommendations in this
readme.
 
Getting the Kernel
==================
 
   Download the kernel version matching the patchfile from:
 
     http://www.kernel.org
 
   And unarchive it:
 
     tar -jxf linux-3.1.6.tar.bz2
 
Patching the Kernel
===================
 
   To patch the kernel:
 
     cd linux-3.1.6
     patch -p1 < ../linux-3.1.6-phidget_sbc2.patch
 
Configuring the Kernel
======================
 
   The kernel needs to be configured for the PhidgetSBC2:
 
     make phidget_sbc2_defconfig
 
   This copies the kernel config file for PhdigetSBC2 to .config
 
Customizing the Kernel
======================
 
   To customize the Kernel:
 
     make menuconfig
 
   This brings up the kernel configuration interface, where you can add
support for whatever new hardware/features you may require. Many drivers
can be compiled as modules - this is generally preferred because you can
then load/unload/set parameters from userspace, and it also keeps the
kernel size down.
 
   Try not to disable or change any features enabled by Phidgets Inc. -
this could cause the kernel not to boot and require a board reset.
 
 
Cross-Compiling Info
====================
 
   The kernel Makefile is setup to cross-compile for ARM:
 
     ARCH               ?= arm
     CROSS_COMPILE      ?= arm-linux-gnueabi-
 
   You must have an EABI capable ARM cross compiler installed and
available on your system path. The cross-compiler tools prefix is
expected to be 'arm-linux-gnueabi-' but you can change this if
required.
 
   Setting up a cross-compiler is beyond the scope of this readme. There
are many pre-build/easy to build cross compilers available. You can also
use the cross-compiler that is build as part of the PhidgetSBC1
Buildroot download.
 
   Some resources:
 
     http://www.scratchbox.org/
     http://www.emdebian.org/tools/crosstools.html
 
 
Building the Kernel
===================
 
   To build the kernel (once configured/customized):
 
     make uImage
 
   This build the kernel image here:n
 
     arch/arm/boot/uImage
 
   NOTE: The kernel image must be less then 3MiB - this is the size of
the on-flash kernel partition. If you compiled kernel is too large, try
compiling more things as modules.
 
 
Installing Kernel Modules
=========================
 
   You need to build and install the kernel modules before flashing and
booting your new Kernel - otherwise the board may not boot because of
missing/mismatched modules.
 
   To build the modules:
 
     make modules
 
   You then need to 'install' them to a temporary location from which
you will manually transfer them to your SBC.
 
     mkdir ../modules
     make INSTALL_MOD_PATH=../modules modules_install
 
   This gives you the '../modules/lib/modules/3.1.6' which needs to
be copied to the SBC - for example (assuming ssh is enabled):
 
     (cd ../modules/lib/modules; tar -zcf mods.tar.gz 3.1.6)
     scp ../modules/lib/modules/mods.tar.gz \
        root@phidgetsbc.local:/lib/modules/
     ssh root@phidgetsbc.local "cd /lib/modules/; rm -rf 3.1.6; \
        tar -zxf mods.tar.gz; rm mods.tar.gz; depmod"
 
   There may also be a '../modules/lib/firmware' folder, which should
be transferred in a similar manner.
 
Installing the Kernel
=====================
 
   There are two ways to install the kernel. The easiest is via the web
interface:
 
     1. Place the kernel uImage on a USB drive and plug it into the SBC.
     2. Go to 'System->Backup & Restore'
     3. Click 'Go' under 'Upgrade / Factory Reset'
     4. Choose the uImage and Click 'Upgrade'
     5. Confirm the 'Upgrade'
     6. Click 'Reboot' to boot back into the main system.
 
   The second method is to flash the kernel directly via SSH:
 
     1. Copy the kernel uImage to the SBC
     2. flash_eraseall /dev/mtd3
     3. nandwrite -p /dev/mtd3 uImage
     4. reboot

Emilio