Compilare Stackless Python su Linux PowerPC (PPC)

Pubblicato il Pubblicato in #sysadmin

IMHO una delle cose più affascinanti del mondo dell’Open Source e del Free Software è che per il 95% delle problematiche c’è già un folle che se ne sta occupando. Per il restante 5% pure, ma è solo questione di tempo… il tempo che i motori di ricerca reindicizzino blog e mailing list.

Io non so quanta gente (in Italia) usi GNU/Linux su processori PowerPC e non so nemmeno quanta gente abbia voglia di smanettare con Netsukuku su processori PowerPC… ma se qualcuno c’è (e mi ci gioco le palle che c’è) e sta sbattendo la testa a cercare di compilare Stackless Python ottenendo solamente un Segmentation Fault… beh forse questo mio post potrebbe essergli utile!

Prima di tutto devo ringraziare Mads Darø Kristensen Aarhus che con il suo post Building Stackless Python on a PS3 (PPC Linux) mi ha dato una direzione sulla quale continuare a smanettare… perchè se lui sulla PS3 ci era riuscito io su un PowerBook G4 no :(

Bene. Non importa se avete scaricato i tarball dei sorgenti o fatto il checkout SVN… spostatevi nella dir dei sorgenti e date un:

./configure --prefix=/test --enable-stacklessfewerregisters

Io ho impostato il prefix in /test per stare tranquillo, di default viene impostato /usr/local ma se avete altra roba installata li forse preferite anche voi installlarlo in una dir separata per non inquinare /usr/local qualora vorreste cancellare del tutto stackless python…

Una volta terminato il ./configure dovete editare il Makefile nella root dei sorgenti (le subdir lo erediteranno) e modificare le var OPT e SLPFLAGS:

  • in OPT cambiare -O2 in -Os
  • in SLPFLAGS modificare -fno-omit-frame-pointer in  -fomit-frame-pointer e -O2 in -Os.

make && sudo make install e poi su /$PREFIX/bin/python avrete il vostro Stackless Python!

Non chiedetemi il perchè… a me ha l’ha compilato solamente così… anzi, se qualche programmatore C passa di qui e me lo spiega gliene sarò grato :)

Ubuntu 10.04 e la Tastiera del PowerBook G4: LA SOLUZIONE DEFINITIVA

Pubblicato il 1 commentoPubblicato in #floss-stuff

 

C’è mancato poco oggi per sfuggire alla tentazione di ridurre il mio PowerBook G4 12″ come quello nella foto sopra… queste tastiere Apple sono davvero odiose! Mi chiedevo: ma se sulla tastiera apple un tasto CTRL c’è ed il tasto ALT su OSX fa da AltGr… perchè non mappare il tasto ALT come AltGr anche su Linux e mappare i dannati tasti MELA come ALT?!? Tutto sarebbe più facile!

 

Cercando su Internet ho trovato un paio di discussioni interessanti che non linko perchè ne ho le scatole piene ma che in pratica -riassumendo- dicevano questo: «Quella strana è Apple, non il resto dell’umanità. Perchè dobbiamo piegarci noi alla mappa sua?». E’ vero!

 

Non c’è bisogno di impostare in GNOME il selettore del terzo livello per poi ritrovarti una sessione Xterm senza la possibilità di digitare @ [ ] {} ¡ ` e la stessa cosa in una console fuori da X! (Si perchè AltGr non serve solo a fare la maledetta simpatica chiocciola! E la chiocciola non serve solo a spedire le email!)

 

Bene, l’incubo è finito:

 

dev.mac_hid.keyboard_sends_linux_keycodes=1

 

Io ho creato il file /etc/sysctl.d/60-apple-keyboard.conf e ci ho messo dentro quella riga. Come si evince la mappa della tastiera verrà tradotta direttamente dal kernel ed il tasto MELA tramutato in AltGr per sempre ed ovunque… senza bisogno di .Xmodmap e palle varie.

Ubuntu 10.04 e le ventole di raffreddamento del PowerBook G4

Pubblicato il Pubblicato in #floss-stuff

In effetti mi sembrava strano che le ventole del mio PowerBook girassero sempre a velocità fissa… ma lì per lì pensavo “beh quantomeno girano, sempre meglio di niente”.

Poi facendo un giro in /proc e /sys mi sono accorto che non c’erano informazioni riguardo alla temperatura rilevata dai sensori ne riguardo alla velocità delle ventole. Infatti c’è bisogno di caricare un modulo che su Ubuntu 10.04/PPC di default non viene caricato: therm-adt746x.

Infatti è basato un

sudo modprobe therm-adt746x

per farle rallentare immediatamente e farle girare a velocità dinamica, con una notevole diminuzione dell’inquinamento acustico della mia stanza.

Facendo qualche ricerca mi sono inbattuto sul wiki di Arch GNU/Linux ed ho scoperto che a pbuttonsd (il demone che si occupa di gestire i tasti speciali del powerbook, e non solo) serviva anche il modulo i2c-dev e -stranamente- nel mio sistema non era caricato nemmeno quello… nonostante i tasti speciali funzionassero.

Per sicurezza dunque li ho aggiunti entrambi al file /etc/modules per caricarli all’avvio.


		
			

Non solo FireWire: boot USB esterno da OpenFirmware (PPC)

Pubblicato il 14 commentiPubblicato in #sysadmin

E’ risaputo che tranne alcuni modelli i Mac PPC non possono fare il boot da periferiche USB esterne ma solamente da periferiche FireWire… la cosa è in parte vera: i Mac possono avviarsi da qualsiasi filesystem che sia leggibile da OpenFirmare – solo che purtroppo non ci sono tasti da tenere premuti all’avvio che faccino questo per noi :(

Nel mio caso ho il lettore DVD integrato del mio PowerBook che è un po’ difettoso ed ho la necessità di reinstallare sia Mac OSX che UBUNTU avviando da lettore DVD esterno USB.

Vediamo dunque come fare ad identificare in OpenFirware il percorso della nostra periferica rinnegata ed avviare da essa!
(nel mio caso è un lettore DVD esterno, ma va bene anche per avviare un’hard disk o anche una chiavetta USB)

PREMESSA: ho tagliato le righe di output non interessanti

Prima di tutto una cosa che ci tornerà utile più avanti: identificare la partizione del media da avviare! Da terminale e con il CD/DVD inserito:

$ mount
/dev/disk2s3 on /Volumes/Mac OS X Install DVD (local, nodev, nosuid, read-only)

Dunque ci interessa la partizione numero 3 del media disk2.
(quest’ultima numerazione è variabile in base al numero di periferiche collegate al sistema)

ok, riavviamo in OpenFirmware (CMD+ALT+O+F) e diamo un’occhiata…

il comando dev è un po’ come cd, in pratica cambia percorso nella gerarchia dei device.
Spostiamoci nella radice e diamo un ls:

0 > dev /
0 > dev /  ok
0 > ls
ff978d90: /pci@f2000000
ff9a06a0:   /usb@1a
ffa046e8:     /device@1
ffa04898:       /keyboard@0
ffa04bd8:       /mouse@1
ffa04f10:     /mouse@2
ff9a88d8:   /usb@1b
ffa036c8:     /hub@1
ffa038d8:       /disk@1
ffa03be8:       /hub@2
ffa03df8:         /device@1
ffa03f58:         /device@2
ffa040b0:       /disk@3
ffa043c0:       /mouse@4
ff9b0b68:   /usb@1b,1
ff9b8df8:   /usb@1b,2
ok
0 >

Ho un hub USB al quale sono collegate altre periferiche oltre al lettore DVD: disk@1 è un hard disk esterno mentre disk@3 è proprio il mio lettore.

vediamo se c’è un alias che ci facilita evitando di dover scrivere l’intero percorso dalla radice

0 > devalias
pci                 /pci@f2000000
usb0                /pci@f2000000/usb@1b,1
usb1                /pci@f2000000/usb@1b
usb-1a              /pci@f2000000/@18
usb-1b              /pci@f2000000/@19
usb-1c              /pci@f2000000/@1a
usb-2a              /pci@f2000000/@1b
usb-2b              /pci@f2000000/@1b,1
usb-2c              /pci@f2000000/@1b,2
hd                  /pci@f4000000/ata-6@d/disk@0
cd                  /pci@f2000000/mac-io@17/ata-3@20000/disk@0
ok
0 >

Trovato: nel mio caso è usb1! A questo punto facciamo un test con il comando dir che lista il contenuto di un filesystem. Nella sintassi disk@3:3, dopo i due punti intendiamo la partizione che abbiamo identificato prima e dopo la virgola il percorso sul media!

0 > dir usb1/hub@1/disk@3:3,
0 > dir usb1/hub@1/disk@3:3, 
Size/        GMT                      File/Dir
bytes   date     time   TYPE CRTR     Name
82 09/24/2007 00:45:14              ._Instructions
82 09/24/2007 00:45:14              ._Optional%20Installs
12292 10/12/2007 07:24:19              .DS_Store
10/12/2007 07:27:21              .fseventsd
10/12/2007 04:59:12              .HFS+%20Private%20Directory%20Data%0                                d
09/24/2007 07:08:49              .vol
08/15/2007 19:18:56              Applications
10/12/2007 06:01:52              bin
09/23/2007 21:37:30              dev
11 10/12/2007 05:55:18  slnk rhap   etc
09/24/2007 03:47:20              Install%20Mac%20OS%20X.app
10/12/2007 07:24:19              Instructions
10/12/2007 05:55:18              Library
10243756 10/10/2007 04:38:29              mach_kernel
10/12/2007 07:24:19              Optional%20Installs
10/12/2007 05:55:18              private
10/12/2007 06:01:16              sbin
10/12/2007 05:12:55              System
11 10/12/2007 05:55:19  slnk rhap   tmp
10/12/2007 05:12:55              usr
11 10/12/2007 05:55:19  slnk rhap   var
09/24/2007 07:08:49              Volumes
01/01/1904 00:00:00              HFS+%20Private%20Data
ok
0 >

Abbiamo visto che OpenFirmware è riuscito a leggere il filesystem della periferica e quindi potrà avviare un loader da esso! Lo stesso procedimento va bene per qualsiasi altra periferica… in questo caso è il DVD di installazione di Mac OSX Leopard, facciamolo avviare:

0 > boot usb1/hub@1/disk@3:3,SystemLibraryCoreServicesBootx
0 > boot usb1/hub@1/disk@3:3,SystemLibraryCoreServicesBootx load-size=2a8c4 adler32=86b8074c
parsing <CHRP-BOOT>
evaluating <BOOT-SCRIPT>

Voilà ;)

Adesso che ho installato Leopard mi serve installare Ubuntu/PPC, quindi inserito il CD di installazione vediamo stavolta su quale partizione sta il filesystem che ci interessa!

$ mount
/dev/disk2s2 on /Volumes/Ubuntu_PowerPC_karmic (hfs, local, nodev, nosuid, read-only, noowners)

stavolta sta sulla partizione numero 2, stesso procedimento: diamo un’occhiata al filesystem

0 > dir usb1/hub@1/disk@3:2,
Ubuntu_PowerPC_karmic
Size/        GMT                     File/Dir
bytes   date     time   TYPE CRTR    Name
01/01/1904 00:00:00             .disk
01/01/1904 00:00:00             casper
01/01/1904 00:00:00             dists
01/01/1904 00:00:00             etc
01/01/1904 00:00:00            *install
4047 10/27/2009 22:01:10  ???? ????  md5sum.txt
01/01/1904 00:00:00             pics
01/01/1904 00:00:00             pool
01/01/1904 00:00:00             ppc
01/01/1904 00:00:00             preseed
231 10/27/2009 22:00:55  ???? ????  README.diskdefines
ok
0 >

Perfetto, riesce a leggerlo… avviamolo:

0 > boot usb1/hub@1/disk@3:2,installyaboot

Welcome to Ubuntu 9.10 (Karmic Koala)!

This is an Ubuntu live CDROM,
built on 20091027.2.

The default option is 'live'.
If the system fails to boot at all (the typical
symptom is a white screen which doesn't go away),
use 'live video=ofonly'.
Press the tab key for a list of options, or type
'help' for help.

************************************
If in doubt, just press Enter, and if that
doesn't work, type 'live video=ofonly'.
************************************
Welcome to yaboot version 1.3.13
Enter "help" to get some basic usage information
boot: live

Please wait, loading kernel...
Elf32 kernel loaded...
Loading ramdisk...
ramdisk loaded at 01c00000, size: 5332 Kbytes
OF stdout device is: /packages/telnet
Preparing to boot Linux version 2.6.31-14-powerpc (buildd@adare) (gcc version 4.4.1 (Ubuntu 4.4.1-4ubuntu8) ) #48-Ubuntu Fri Oct 16 14:11:44 UTC 2009 (Ubuntu 2.6.31-14.48-powerpc)
command line:
memory layout at init:
alloc_bottom : 02136000
alloc_top    : 20000000
alloc_top_hi : 20000000
rmo_top      : 20000000
ram_top      : 20000000
found display   : /pci@f0000000/NVDA,Parent@10/NVDA,Display-A@0, opening... done

Certamente non è una cosa velocissima ed intuitiva, ma in caso di emergenza/necessità è così che si fa ;)

‘njoy ;)


Grazie a questo interessante link ho potuto telnettarmi all’openfirmware del mio powerbook da un’altra macchina per poter copiare ed incollare l’output dei comandi!

Ubuntu 9.10 e Tastiera PowerBook G4 12″

Pubblicato il Pubblicato in #floss-stuff

Se anche voi avete sbattuto la testa provando tutte le combinazioni cercando di far funzionare il selettore del terzo livello [alt_gr] sulla tastiera del vostro powerbook g4 su ubuntu 9.10/ppc…

…basta aggiungere

clear mod4

al vostro .Xmodmap o, se non ce lo avete gia, crearlo con:

echo clear mod4 > ~/.Xmodmap
xmodmap ~/.Xmodmap
 

in attesa che questa antipatica imperfezione venga risolta ufficialmente da qualche futuro aggiornamento, visto che le scorse release non ne erano affette e funzionava tutto subito.