PowerPC

Da Wiki :: openmamba.
Jump to navigation Jump to search

openmamba su PowerPC

L'architettura PowerPC è attualmente supportata in openmamba attraverso un apposito kit di sviluppo (sdk) che può essere scaricato dalla home page del sito principale.

La distribuzione sdk consiste in un archivio contenente un filesystem di root, un kernel comprensivo di initramfs universale, e l'emulatore in modalità utente qemu.

Installazione ambiente in emulazione sul PC

Occorre creare un'apposita cartella nel filesystem del sistema ospite (tipicamente un PC) nel quale verrà scompattato l'archivio di openmamba sdk. Per l'accesso al sistema in modalità chroot è possibile scegliere una cartella qualunque, ma esiste un percorso speciale che qemu utilizza per trovare il loader dinamico e le librerie quando si esegue, anche senza aver effettuato il chroot, un binario per un'architettura differente da quella del sistema ospite. Tale cartella per l'architettura PowerPC è /usr/gnemul/qemu-ppc, pertanto la procedura da utilizzare è la seguente (sostituire il percorso dell'archivio con quello disponibile):

mkdir /usr/gnemul/qemu-ppc
cd /usr/gnemul/qemu-ppc
tar xzf /tmp/openmamba-sdk-root-en-snapshot-20100822.ppc.tar.gz

Installazione ambiente di cross-compilazione sul PC

In alternativa alla compilazione in emulazione con il sistema SDK è possibile effettuare l'installazione di una cross-toolchain per lo sviluppo. Partire installando i pacchetti necessari eseguendo il seguente comando:

sudo smart install cross-ppc-openmamba-linux-gnu-environment \
cross-ppc-openmamba-linux-gnu-binutils cross-ppc-openmamba-linux-gnu-gcc \
cross-ppc-openmamba-linux-gnu-glibc

Viene installato un ambiente di sviluppo a partire dal percorso /usr/ppc-openmamba-linux-gnu e dei link simbolici nel percorso di sistema per i tool della cross-toolchain. E' quindi possibile eseguire il compilatore con il comando

ppc-openmamba-linux-gnu-gcc

Analogamente gli altri comandi della cross-toolchain sono disponibili anteponendo ppc-openmamba-linux-gnu- al nome del comando.

L'ambiente per la cross-compilazione contiene un database RPM per l'installazione di librerie e tool in formato RPM per PowerPC.

Per installare un pacchetto RPM eseguire il comando seguente, in questo esempio si suppone di installare la libreria libxml2 con i file per lo sviluppo:

rpm -r /usr/ppc-openmamba-linux-gnu -i libxml2-2.7.7-2mamba.ppc.rpm \
libxml2-devel-2.7.7-2mamba.ppc.rpm

I pacchetti RPM per PowerPC sono attualmente disponibili nel repository devel.

Per visualizzare l'elenco dei pacchetti installati digitare:

rpm -r /usr/ppc-openmamba-linux-gnu -qa

Installazione su supporto storage USB per l'esecuzione nativa

Questa procedura descrive la preparazione di un dispositivo di storage USB (pendrive, compact flash o altro) da utilizzare per l'avvio del sistema su un computer con processore PowerPC a 32 bit e meccanismo di boot basato su openfirmware. Nella fattispecie la procedura è stata testata su un computer Apple iBook G4.

Prerequisiti

  • un computer con processore PowerPC e sistema di boot openfirmware (procedura testata su un iBook G4)
  • un computer con un sistema GNU/Linux e i tool standard di sistema
  • il tool mac-fdisk (installabile con smart install mac-fdisk)
  • il boot loader yaboot (installabile con smart install yaboot)
  • pendrive USB o altro dispositivo di storage della dimensione minima di 1GB

Partizionamento

Inserisci il dispositivo di storage USB e individua il device corrispondente nel sistema GNU/Linux (es. /dev/sde):

[root@openmambaPC /]# mac-fdisk /dev/sde
/dev/sde
Command (? for help):

Crea una nuova tabella delle partizioni di tipo mac:

Command (? for help): i
size of 'device' is 4194304 blocks: 
new size of 'device' is 4194304 blocks
Command (? for help): p
/dev/sde
        #                    type name                length   base    ( size )  system
/dev/sde1     Apple_partition_map Apple                   63 @ 1       ( 31.5k)  Partition map
/dev/sde2              Apple_Free Extra              4194240 @ 64      (  2.0G)  Free space

Block size=512, Number of Blocks=4194304
DeviceType=0x0, DeviceId=0x0

Crea una partizione di bootstrap:

Command (? for help): b
First block: 64
Command (? for help): p
/dev/sde
        #                    type name                length   base    ( size )  system
/dev/sde1     Apple_partition_map Apple                   63 @ 1       ( 31.5k)  Partition map
/dev/sde2         Apple_Bootstrap bootstrap             1600 @ 64      (800.0k)  NewWorld bootblock
/dev/sde3              Apple_Free Extra              4192640 @ 1664    (  2.0G)  Free space
 
Block size=512, Number of Blocks=4194304
DeviceType=0x0, DeviceId=0x0

Ed una partizione Linux utilizzando lo spazio rimanente:

Command (? for help): c
First block: 1664
Length (in blocks, kB (k), MB (M) or GB (G)): 4192640
Name of partition: openmamba
Command (? for help): p
/dev/sde
        #                    type name                length   base    ( size )  system
/dev/sde1     Apple_partition_map Apple                   63 @ 1       ( 31.5k)  Partition map
/dev/sde2         Apple_Bootstrap bootstrap             1600 @ 64      (800.0k)  NewWorld bootblock
/dev/sde3         Apple_UNIX_SVR2 openmamba          4192640 @ 1664    (  2.0G)  Linux native

Block size=512, Number of Blocks=4194304
DeviceType=0x0, DeviceId=0x0

Prima di uscire occorre salvare le modifiche:

Command (? for help): w
IMPORTANT: You are about to write a changed partition map to disk. 
For any partition you changed the start or size of, writing out 
the map causes all data on that partition to be LOST FOREVER. 
Make sure you have a backup of any data on such partitions you 
want to keep before answering 'yes' to the question below!  

Write partition map? [n/y]: y
The partition map has been saved successfully!

Syncing disks.

Partition map written to disk. If any partitions on this disk 
were still in use by the system (see messages above), you will need 
to reboot in order to utilize the new partition map.

Command (? for help): q

Preparazione del root filesystem

L'archivio della distribuzione sdk sarà scompattato nella partizione Linux creata nel passaggio precedente, ovvero nella terza partizione (nell'esempio /dev/sde3).

Occorre prima di tutto formattare la partizione:

[root@openmambaPC /]# mkfs.ext3 /dev/sde3
mke2fs 1.41.12 (17-May-2010)
Etichetta del filesystem=
Tipo SO: Linux
Dimensione blocco=4096 (log=2)
Dimensione frammento=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
131072 inode, 524080 blocchi
26204 blocchi (5.00%) riservati per l'utente root
Primo blocco dati=0
Maximum filesystem blocks=536870912
16 gruppi di blocchi
32768 blocchi per gruppo, 32768 frammenti per gruppo
8192 inode per gruppo
Backup del superblocco salvati nei blocchi: 
        32768, 98304, 163840, 229376, 294912

Scrittura delle tavole degli inode: fatto                           
Creating journal (8192 blocks): fatto
Scrittura delle informazioni dei superblocchi e dell'accounting del filesystem: fatto

Questo filesystem verrà automaticamente controllato ogni 25 mount, o
180 giorni, a seconda di quale venga prima. Usare tune2fs -c o -i per cambiare.

Dopodiché se ne effettua il mount e si scompatta l'archivio al suo interno. L'operazione di scompattazione può richiedere alcuni minuti:

[root@openmambaPC /]# mount /dev/sde3 /mnt/p
[root@openmambaPC /]# cd /mnt/p
[root@openmambaPC p]# tar xzf /var/makedist/openmamba-sdk-root-it.ppc.tar.gz 
[root@openmambaPC p]#

Utilizza yabootconfig per installare il boot loader:

[root@openmambaPC p]# yabootconfig -t /mnt/p -b /dev/sde2 -r /dev/sde3 --kernel-args "root=/dev/sda3"
yaboot is the Linux Loader for PowerPC.  yabootconfig sets up your system to boot directly
from your hard disk, without the need for a boot CD, floppy or a network boot.
Install yaboot bootstrap on /dev/sde2 to boot Linux from /dev/sde3? [Yes] 
Creating a simple /mnt/p/etc/yaboot.conf...
yabootconfig: Cannot find a kernel, please provide one
Enter path to a kernel image (not including chroot): /boot/vmlinux-2.6.33mamba-ppc
Enter path to an initrd image (hit Enter for none, don't include the chroot): /boot/initramfs-2.6.33mamba-ppc.img.gz
Running mkofboot to make the disk bootable...
mkofboot: Warning: `nvsetenv' could not be found, nvram will not be updated
Done
[root@openmambaPC p]#

Ora è possibile smontare il dispositivo:

[root@openmambaPC p]# cd ..
[root@openmambaPC mnt]# umount p
[root@openmambaPC mnt]#

Avvio del sistema dalla console di openfirmware

Inserisci il dispositivo USB in una porta del computer basato su processore PowerPC. Occorre avviare il computer in modo da accedere alla console di openfirmware. Su un Apple iBook G4 questo è possibile tenendo premuti contemporanamente i tasti Alt-Command(tasto Mela)-O-F nel momento in cui si accende il computer. Se la procedura ha funzionato, pochi secondi dopo il suono di accensione comparirà una schermata con sfondo bianco ed una serie di scritte di presentazione della console:

Apple PowerBook3,1 2.1f1 BootROM built on 01/29/00 at 22:38:07
Copyright 1994-2000 Apple Computer, Inc.
All Rights Reserved

Welcome to Open Firmware.
[...]
0 > _

Occorre individuare la stringa con cui viene identificata la partizione di boot del dispositivo USB, solitamente questa corrisponde a ud:2 e digitare il comando:

boot ud:2,\\yaboot

Se tutto è andato bene, verrà avviato il boot loader yaboot e successivamente il kernel fornendo, al termine di questa fase, un accesso attraverso la console di sistema in modalità di login automatico. A questo punto è possibile proseguire leggendo le istruzioni generiche per openmamba sdk.