Tutorial ancora in costruzione...
Questo tutorial sarà raggiungibile (non ho ancora segnalato la pagina) anche dai due seguenti siti, ove sono presenti installazioni di Linux su vari notebooks:
Per esigenze di lavoro, mi ritrovo ad acquistare questo un netbook nel Luglio 2009: ciò che cercavo era un PC di dimensione e peso ridotti che comunque avesse una buona potenza. La mia scelta è ricaduta sulla seconda generazione dei netbook di Toshiba. Pienamente soddisfatto dell'acquisto, questo NB200 si dimostra grintoso, dual-core e molto curato nei materiali. Sicuramente dopo un Acer (pessimo!) e un HP (rifiniture scadenti, ma più resistente) le caratteristiche dei materiali sono ottime.
stylee@trinityssd:~$ lspci 00:00.0 Host bridge: Intel Corporation Mobile 945GME Express Memory Controller Hub (rev 03) 00:02.0 VGA compatible controller: Intel Corporation Mobile 945GME Express Integrated Graphics Controller (rev 03) 00:02.1 Display controller: Intel Corporation Mobile 945GM/GMS/GME, 943/940GML Express Integrated Graphics Controller (rev 03) 00:1b.0 Audio device: Intel Corporation N10/ICH 7 Family High Definition Audio Controller (rev 02) 00:1c.0 PCI bridge: Intel Corporation N10/ICH 7 Family PCI Express Port 1 (rev 02) 00:1c.1 PCI bridge: Intel Corporation N10/ICH 7 Family PCI Express Port 2 (rev 02) 00:1c.2 PCI bridge: Intel Corporation N10/ICH 7 Family PCI Express Port 3 (rev 02) 00:1c.3 PCI bridge: Intel Corporation N10/ICH 7 Family PCI Express Port 4 (rev 02) 00:1d.0 USB Controller: Intel Corporation N10/ICH 7 Family USB UHCI Controller #1 (rev 02) 00:1d.1 USB Controller: Intel Corporation N10/ICH 7 Family USB UHCI Controller #2 (rev 02) 00:1d.2 USB Controller: Intel Corporation N10/ICH 7 Family USB UHCI Controller #3 (rev 02) 00:1d.3 USB Controller: Intel Corporation N10/ICH 7 Family USB UHCI Controller #4 (rev 02) 00:1d.7 USB Controller: Intel Corporation N10/ICH 7 Family USB2 EHCI Controller (rev 02) 00:1e.0 PCI bridge: Intel Corporation 82801 Mobile PCI Bridge (rev e2) 00:1f.0 ISA bridge: Intel Corporation 82801GBM (ICH7-M) LPC Interface Bridge (rev 02) 00:1f.1 IDE interface: Intel Corporation 82801G (ICH7 Family) IDE Controller (rev 02) 00:1f.2 SATA controller: Intel Corporation 82801GBM/GHM (ICH7 Family) SATA AHCI Controller (rev 02) 00:1f.3 SMBus: Intel Corporation N10/ICH 7 Family SMBus Controller (rev 02) 03:00.0 Network controller: Atheros Communications Inc. AR9285 Wireless Network Adapter (PCI-Express) (rev 01) 04:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8101E/RTL8102E PCI Express Fast Ethernet controller (rev 02) stylee@trinityssd:~$ lsusb Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub Bus 001 Device 003: ID 04f2:b128 Chicony Electronics Co., Ltd Bus 002 Device 002: ID 05fe:1011 Chic Technology Corp. Bus 005 Device 002: ID 0930:0508 Toshiba Corp. Integrated Bluetooth HCI stylee@trinityssd:~$
Segue la tabella della compatibilità dell'hardware (di seguito lo schema del sommario generato da hardinfo):
| Componente | Descrizione | Stato |
|---|---|---|
| CPU | 2x Intel(R) Atom(TM) CPU N280 @ 1.66GHz |
OK - meglio ricompilare il kernel settando Processor type adAtom (se il kernel lo permette, opzione introdotta col kernel 2.6.38)
|
| Memoria | 1GB | OK |
| Display | 1024x600 pixels | OK - Testato anche l'aggiunta di un monitor esterno (Asus VH242 1920x1080) |
| Grafica | Intel(R) 945GME x86/MMX/SSE2 | OK - Driver open Intel i915. Sono presenti delle opzioni che, a detta di Phoronix, migliorano sia le prestazioni che i consumi |
| Audio | HDA-Intel / Intel Corporation N10/ICH 7 Family High Definition Audio Controller | OK |
| Dispositivi di input | AlpsPS/2 ALPS GlidePoint | OK |
| Ethernet Controller | Realtek Semiconductor Co., Ltd. RTL8101E/RTL8102E PCI Express Fast Ethernet controller | OK |
| Network Controller | Atheros Communications Inc. AR9285 Wireless Network Adapter |
OK - Driver ath9k
|
Inizialmente era presente un hard-disk meccanico da 250Gb: 2 partizioni di cui una di recupero per il s.o. Windows. Lo schema di partizionamento è come sempre Windows/ntfs - dati/fat32 - Debian/ext4, ma alla fine, non molto felice delle prestazioni del netbook, ho acquistato un hard-disk di tipo SSD (Solid State Disk). Ora sono soddisfatto, ho un'unica partizione Debian/btrfs da 64Gb.
fsck.btrfs per il controllo del disco. Ho anche provato sulla mia pelle il rischio di perdita di tutti i dati così, dall'oggi al domani (ma alla fine me la sono cavate). Quindi se vi interessa l'affidabilità scegliete magari l'ottima ext4
La fissa continua per la Debian Testing. A Febbraio 2011 c'è stato anche il freeze di Squeeze (la fase di transizione che vede il passaggio dei pacchetti da testing alla nuova stabile e infine il rilascio ufficiale). Ora la nuova testing ha nome in codice Wheezy.
Sono partito dal kernel 2.6.32 e attualmente utilizzo il 3.0.0. Mi rifornisco dei pacchetti del kernel linux-source-X.X.XX provenienti dalla unstable poichè mi piace utilizzare le nuove caratteristiche del kernel (e sfruttare il mio nuovo hardware). Non appena vi è un qualsiasi aggiornamento (sia di versione di pacchetto - tipo 2.6.32-X - che di versione di kernel - tipo 2.6.YY) scarico, ricompilo e installo. Vi posso assicurare che ricompilare un kernel generico i386 variando la configurazione standard anche e solo per il parametro tipologia di processore vi permette di ottenere in incremento di prestazioni a mio avviso anche del 20-30%!
Riporto il ciclo di ricompilazione del kernel che intraprendo (uso come esempio il 3.0.3).
linux-source-3.0.0_3.0.0-3_all.deb. Allora scarico manualmente il nuovo pacchetto.
$ sudo dpkg -i linux-source-3.0.0_3.0.0-3_all.deb
/usr/src/ con utente nominale (stylee); dopodichè rimuovo il link linux che punta ai sorgenti correnti e ripulisco la directory dei sorgenti correnti. Infine estraggo dal file compresso i sorgenti:
$ rm linux $ rm -fr linux-source-3.0.0/ $ tar xjf linux-source-3.0.0.tar.bz2
$ cp /boot/config-3.0.0-nb200 ./.config $ make oldconfig
altrimenti, se si proviene da un cambio di versione di kernel (tipo da 2.6.28 a 2.6.29), bisogna digitare i seguenti:
$ cp /boot/config-2.6.38-nb200 ./.config $ make menuconfig
make menuconfig e passare con buona pazienza tutte le opzioni del kernel, avendo cura di leggere le sezioni help in linea e i vari documenti sotto /usr/src/linux/Documentation/.
make-kpkg si va a ricompilare il kernel e creare un pacchetto Debian contenente il nostro kernel compilato comprensivo di tutti i moduli esterni:
$ time nice make-kpkg --config oldconfig --append-to-version -nb200 --initrd --revision 20110904 --rootcmd fakeroot --jobs 2 linux-image linux-headers
--config oldconfig si può omettere se si è lanciato precedentemente il comando make oldconfig oppure se avete bisogno di modificare la configurazione del kernel con make menuconfig--append-to-version serve per contraddistinguere la nostra versione del kernel personalizzata. Spesso si usa la sigla del modello del notebook.--initrd serve per permettere il boot tramite ramdisk: il grub crea una partizione su RAM all'avvio che contiene solitamente i driver più comuni per poter caricare il kernel vero e proprio. Spesso se si ha hardware nuovo è bene metterlo, altrimenti il boot si blocca.--revision server per contraddistinguere la versione del pacchetto dell'immagine del kernel che si sta compilando. Se si è appena installato il nostro kernel ricompilato e ci si accorge per esempio che nella fase di configurazione si è dimenticato di includere un modulo vitale per il nostro sistema, ri-ricompilando il kernel si può variare solo la revisione. In tal modo si crea un nuovo pacchetto con l'immagine del kernel che, se installato, va a sostituire e non ad aggiungersi a quello installato. Comodo, no?--rootcmd opzione che indica un metodo per poter "fingere" di diventare root. Una volta, quando non esisteva questa opzione, si usava lanciare fakeroot make-kpkg ....--jobs 2 nell'era dei processori multi-core, indica il numero di processi paralleli di compilazione che si possono usare. Di solito si pone uguale al numero di core del processore presente nel sistema.
/usr/src/ il pacchetto bell'e pronto linux-image-3.0.0-nb200_20110904_i386.deb. Ora, se si è ricompilato un kernel con stessa versione ma differente revisione, si deve per sicurezza lanciare anche la prima riga, altrimenti si lancia solo la seconda:
$ sudo mv /lib/modules/3.0.0-nb200 /lib/modules/3.0.0-nb200 $ sudo dpkg -i linux-image-3.0.0-nb200_20110904_i386.deb linux-headers-3.0.0-nb200_20110904_i386.deb
Col primo comando rinominiamo la directory contenente tutti i moduli del kernel attuale, per evitare di sovrascriverli ed eventualmente poter ripristinare la situazione precedente se qualcosa dovesse andare storto. Inoltre, se si necessita la ricompilazione di moduli esterni all'alberatura del kernel (tipo il driver nvidia), siamo "costretti" a farlo visto che al riavvio nella nuova directory manca (spesso è difficile capire perché trova problemi in un modulo piuttosto di ottenere un messaggio tipo "il modulo nvidia manca"). Se tutto va a buon fine l'installazione del pacchetto dell'immagine del kernel va a piazzare tutto nel posto giusto e va ad aggiornare anche il boot loader (GRUB nel mio caso).
update-initramfs -c -k 2.6.32-dv5-1060el oppure update-initramfs -u -k 2.6.32-dv5-1060el rispettivamente se mantengo la stessa versione di kernel (varia solo la revisione) oppure se cambio versione di kernel (tipo da 2.6.31 a 2.6.32). Se non viene creato o aggiornato quest'immagine ramdisk si rischia di avere al boot un blocco del sistema.
$ reboot
da riga di comando oppure da interfaccia grafica. Se avete bisogno di ricompilare ulteriori moduli esterni all'alberatura del kernel, meglio effettuare l'accesso dopo il reboot nella modalità single user anche conosciuta come recovery mode. Dopo il riavvio vi troverete ad inserire la password di root per accedere al sistema in modalità non grafica. Il sistema caricato è minimale in modo tale non ci sia bisogno di caricare l'eventuale modulo che dovete ancora sistemare. Nel mio caso per far fuzionare per esempio il modulo bluetooth ho bisogno di compilare il modulo omnibook.
Anche qui la ricompilazione dei moduli esterni all'alberatura del kernel alla Debian-way è tutt'altro che complicata: utilizzando il comodo sistema Dynamic Kernel Module System (DKMS). Per utilizzarlo basta installare il pacchetto dkms ed avere una versione dei sorgenti del modulo compatibile con DKMS, per esempio il pacchetto omnibook-dkms, che non è altro che il pacchetto classico dei sorgenti omnibook-module-source con all'interno le direttive per la compilazione per DKMS.
Tutto il processo si semplifica in pochi passi, addirittura anche più semplici dell'uso di module-assistant, con in pi` il vantaggio che ad ogni update dell'immagine del kernel il sistema DKMS ci compila automaticamente il modulo!
Aggiungiamo ill modulo al sistema DKMS
$ dkms add -m omnibook -v 2.20070211+git20110115.208d01c
Compiliamo specificando la nostra versione del kernel
$ dkms build -m omnibook -v 2.20070211+git20110115.208d01c -k 3.0.0-nb200
Installiamo il modulo compilato nell'alberatura dei moduli (/lib/modules/...)
$ dkms install -m omnibook -v 2.20070211+git20110115.208d01c -k 3.0.0-nb200
Alla fine verifichiamo che tutto sia a posto con
$ dkms status
Allego la mia attuale configurazione del kernel, relativo alle versioni che vanno fino alla 3.0.0. Altre configurazioni di kernel successivi saranno aggiunte in allegato a questo post.
| Attachment | Size |
|---|---|
| config-2.6.32-nb200 | 101.05 KB |
| config-2.6.37-nb200 | 110.56 KB |
| config-2.6.38-nb200 | 112.34 KB |
| config-2.6.39-nb200 | 113.98 KB |
| config-3.0.0-nb200 | 111.23 KB |