Wiki Ubuntu-it

Indice
Partecipa
FAQ
Wiki Blog
------------------
Ubuntu-it.org
Forum
Chiedi
Chat
Cerca
Planet
  • Immutable Page
  • Info
  • Attachments

STOP! Perché questa guida si trova sotto la pagina Cestino?. Una guida può essere cestinata dal Gruppo Documentazione se contiene istruzioni compatibili solo con rilasci non più supportati di Ubuntu oppure perché non si ha certezza che lo siano per i rilasci attualmente supportati. Queste pagine richiedono un aggiornamento e una verifica delle istruzioni contenute. Se vuoi riesumare una di queste guide contatta il Gruppo Documentazione nella board sul forum.



Questa guida è stata verificata solo con versioni obsolete di Ubuntu, potrebbe non essere più valida. Vuoi contribuire ad aggiornarla? Clicca qui!

Problemi in questa pagina? Segnalali in questa discussione

Introduzione

Questa pagina descrive come creare un file system di root Debian/Ubuntu per armel. Ciò consiste nel partire da zero, dato che non verrà usato un programma di installazione e non sarà necessario hardware specifico per costruirlo; il codice non viene ricostruito dato che pacchetti .deb precompilati verranno scaricati ed installati al suo posto.

Utilizzo di rootstock

Il modo più semplice e raccomandabile per creare la rootfs è quello di usare Rootstock.

Rootstock automatizza la creazione di un archivio rootfs e propone alcune opzioni di configurazione per modificare il file content/setup.

Con Ubuntu 9.10 o successive è possibile installare il pacchetto rootstock, il quale installerà anche le appropriate librerie.

Per l'installazione manuale o tramite un controllo bzr di rootstock, è necessario installare anche:

Per creare un archivio rootfs armel, per esempio, di ubuntu-desktop:

sudo rootstock \
        --fqdn ubuntu \
        --login ubuntu \
        --password ubuntu \
        --imagesize 3G \
        --seed ubuntu-desktop

Connettendosi alla rete, alcuni tipici flag per lo sviluppo senza intestazione sono:

--seed build-essential,openssh-server

Sarà necessario modificare il file /etc/network/interfaces ed impostare opportunamente il vostro dispositivo di rete.

Per utilizzare un ambiente grafico veramente leggero potreste scegliere Lxde, in questo caso il flag da utilizzare sarà:

--seed lxde,gdm

Le opzioni --fqdn (oppure -f), --login (oppure -l) e password (-p) vengono richieste per l'impostazione iniziale. L'avvio dello script con --help vi mostrerà tutte le opzioni addizionali per variare le impostazioni dell'archivio rootfs creato.

/!\ Cambiare la password al primo login. Le password usate nei sopraelencati esempi sono troppo semplici e vi espongono al rischio che altri utilizzatori possano accedere alla macchina dove viene eseguito rootstock.

Costruzione dell'immagine del filesystem di root invece dell'archivio

Per creare il solo filesystem di root da utilizzare in qemu senza un archivio rootfs, inserite --notarball in rootstock:

sudo rootstock --fqdn qemu-test \
        --login qemu \
        --password qemupwd \
        --notarball

È anche possibile la creazione di un filesystem di root da un archivio:

  • Creare un file immagine vuoto usando dd; questo esempio crea un immagine da 1 GB; impostare seek=3072 per una immagine da 3 GB oppure seek=2048 per una immagine da 2 GB, ecc.:

    dd if=/dev/zero of=ubuntu-arm.img bs=1MB count=0 seek=1024
  • Creare un filesystem linux nell'immagine appena creata:

    mkfs.ext4 -F ubuntu-arm.img
  • È possibile passare a mkfs alcuni flag addizionali per modificare i blocchi riservati, le etichette, o altre opzioni del filesystem).
  • Ciclo per montare la nuova immagine:

    sudo mount -o loop ubuntu-arm.img /mnt
  • Estrarre l'archivio rootfs nella directory montata e quindi smontarla:

        sudo tar -C /mnt -zxf armel-rootfs-200904151837.tgz
        sudo umount /mnt
  • Il filesystem è pronto per l'uso di ubuntu-arm.img.

Utilizzo di una immagine qemu

Dopo aver creato l'immagine qemu, per avviare un ambiente di lavoro (per compilare paccheti o svilupare applicazioni) scaricare il kernel

wget http://ports.ubuntu.com/ubuntu-ports/dists/lucid/main/installer-armel/current/images/versatile/netboot/vmlinuz

ed avviare qemu con il seguente comando (è necessario rinominare rootfs img con ciò che avete scelto per l'immagine):

qemu-system-arm -M versatilepb -cpu cortex-a8 -kernel ./vmlinuz -hda arm-rootfs.img -m 256 -append "root=/dev/sda mem=256M devtmpfs.mount=0 rw"

Avviare l'immagine e autenticarsi con il nome e la password impostati durante la creazione dell'immagine.

  • /!\ Per poter copiare file da e per il sistema ospitante è utile installare il pacchetto openssh-server sul sistema ospitante ed usare il comando scp da qemu.

Connettere la macchina virtuale ad una rete reale

In via predefinita qemu usa per lo stack di rete la modalità utente non privilegiato in modo da consentire alla macchina virtuale l'accesso all'esterno. Per poter invece raggiungere la macchina virtuale dall'esterno dobbiamo usare la modalità tap e fare il bridging tra l'interfaccia tap e l'interfaccia di rete del sistema ospitante. Per prima cosa fare un bridge sul sistema ospitante modificando il file /etc/network/interfaces come qui specificato:

Prima

auto eth0
iface eth0 inet dhcp

Dopo

auto br0
iface br0 inet dhcp
  bridge_ports eth0
  bridge_maxwait 0

Installare il pacchetto bridge-utils e riavviare l'interfaccia di rete:

ifdown eth0
ifup br0

Creare uno script call /etc/qemu-ifup da eseguire all'avvio di QEMU:

echo "Executing /etc/qemu-ifup"
echo "Bringing up $1 for bridged mode..."
sudo /sbin/ifconfig $1 0.0.0.0 promisc up
echo "Adding $1 to br0..."
sudo /usr/sbin/brctl addif br0 $1
sleep 2

Data la pericolosità dell'esecuzione di Qemu da superutente, bisogna creare il gruppo utente qemu ed autorizzare i comandi brctl e ifconfig da superutente. Per fare ciò aggiungere le seguenti linee a /etc/sudoers (editare il file usando visudo)

...
Cmnd_Alias QEMU = /usr/sbin/brctl, /sbin/ifconfig
%qemu ALL=NOPASSWD: QEMU

L'utilizzo di tap, in rete, richiede che il modulo tun sia caricato:

sudo modprobe tun

Per caricarlo automaticamente all'avvio, editare il file /etc/modules ed aggiungere la linea tun:

# /etc/modules: kernel modules to load at boot time.
#
# This file contains the names of kernel modules that should be loaded
# at boot time, one per line. Lines beginning with "#" are ignored.

lp
tun

Avviare la macchina virtuale usando il seguente comando:

$ qemu-system-arm -M versatilepb -kernel ./vmlinuz-2.6.28-versatile -hda arm-rootfs.img -m 256 -append "root=/dev/sda mem=256M ro" -net nic,macaddr=00:16:3e:00:00:01 -net tap

Nel caso di utilizzo di una sola macchina virtuale non e necessario fornire alcun Mac address poichè QEMU userà quelo predefinito. Nel caso di utilizzo di più macchine virtuali (ricordiamo che QEMU può emulare anche altre architetture oltra ad ARM) bisognerà specificare un univoco MAC address per ogni macchina virtuale. È raccomandabile scegliere l'indirizo nella gamma 00:16:3e:xx:xx:xx, che è stata assegnata a Xen.

Utilizzo di Qemu per l'emulazione in modalità utente (con chroot)

Se non si desisera usare Qemu in emulazione completa, è possibile utilizzarlo in modalità di emulazione 'utente' con chroot, che rende possibile la compilazione di pachetti e la creazione di applicazioni.

Innanzitutto estrarre l'archivio tar rootfs

mkdir /tmp/rootfs
sudo tar -C /tmp/rootfs -zxf armel-rootfs-200904151837.tgz

Copiare qemu-arm-static in rootfs, ciò consentirà l'utilizzo di Qemu

sudo cp $(which qemu-arm-static) /tmp/rootfs/usr/bin/

Montare il filesystem /proc:

sudo mount -t proc proc /tmp/rootfs/proc

Configurare resolv.conf

sudo cp /etc/resolv.conf /tmp/rootfs/etc/resolv.conf

Quindi entrare nell'ambiente emulato, con chroot

sudo chroot /tmp/rootfs /bin/bash

Ora è possibile installare applicazioni tramite apt-get e creare applicazioni.

Scaricare una immagine precostruita

È possibile ottenere una immagine precostruita di Ubuntu 9.10,è stata costruita seguendo i passi sopracitati. Contiene alcuni strumenti per la compilazione e l'esecuzione di software quali gcc, g++, X libraries, FLTK, sqlite3, ma non vi è WM. È possibile aggiungere software tramite apt-get. È utilizzabile tramite Qemu o chroot. Nell'archivio è incluso uno script per avviare Qemu senza dover scrivere l'intero comando.

wget -c http://w3.impa.br/~gabrield/data/click.php?id=4
tar jxfv ubuntu-arm-development-rootfs.tar.bz2
chmod +x run.sh
./run.sh

Al login l'utente è ubuntu e la password temppwd.

Bugs e problemi

Per qualsiasi problema contattare "ogra" sul canale #ubuntu-arm su irc.freenode.net oppure inviare una mail a ogra@ubuntu.com

In caso di errore vi preghiamo di riportare il log della costruzione errata.

La gestione dei pacchetti linguaggio non è ancora implementata, è possibile comunque installarli manualmente in un secondo tempo.

Risorse


CategoryDaCancellare