Emular la Raspberry-pi, o practicamente
cualquier máquina.
En Linux
--
Todos para uno y uno para todos
No se puede correr el Sistema Operativo
de una Raspberry Pi en un pc x86 corriente y moliente utilizando una
simple máquina virtual como pudiera ser VirtualBox o VMWare, ya que
la arquitectura del procesador de la RP es ARM y las maquinas
virtuales “normales” solo permiten ejecutar un S.O. diseñado para
la misma clase de procesador que tiene nuestra maquina.
Para poder hacer esto vamos a servirnos
de Qemu, un programa que permite emular directamente el Hardware de practicamente cualquier maquina.
Haré la explicación trabajando con
Ubuntu, pero debería ser similar para cualquier otro sistem linux...
con las típicas diferencias dependiendo de la distribución (yum
en lugar de apt-get y demás).
Empecemos:
Muchas de las cosas que voy a hacer
ahora se podrían conseguir sin usar la terminal, pero... bueno, ya
sabeis...
1) Abrimos una terminal. Para ello
pulsamos las teclas Ctrl+Alt+t.
2) Navegamos hasta el escritorio. Mi
sistema está en inglés así que donde pongo Desktop deberías
escribir Escritorio si el vuestro está en español:
cd Desktop
3) Ahora creamos una nueva carpeta:
mkdir Raspberrypi
4) Y ponemos en ella la imagen del
Sistema Operativo que queramos usar, en mi caso pondré Fedora-Remix-14, pero podeis usar el que querais (Raspbian, Archlinux, RMBC...).
Para bajarte la
imagen más nueva lo mejor es que uses el navegador que quieras; ve
a la web oficial de Raspberry-pi, bajate la imagen y pegala en la
carpeta que creaste.
5) Ahora vamos a instalar Git, una
herramienta que utilizaremos para luego instalar y configurar Qemu más
cómodamente.
sudo apt-get install git
6) Una vez instalado git entramos en
nuestra carpeta Raspberrypi:
cd Raspberrypi/
7) E instalamos Qemu:
git clone
git://git.linaro.org/qemu/qemu-linaro.git
8) Comprobamos que está en la carpeta
todo lo que necesitamos:
ls
Deberíamos
ver una carpeta llamada quemu y un .zip con la imagen del SO
9) Como vamos a utilizar Qemu para
emular la RP no hace falta que consideremos otras configuraciones mas
que la de ARM.
./configure
--target-list=arm-softmmu
9b) Si al realizar el paso anterior
nos da este error
zlib check failed
Make sure to have the zlib libs and headers installed.
Significa que no tenemos instaladas las librerías o c abeceras necesarias para construir Qemu. Si esto pasa haz lo siguiente:
sudo apt-get --no-install-recommends -y build-dep qemu
sudo apt-get --no-install-recommends -y build-dep qemu
Y repite el paso 9)
9c) Si aparece un error diciendo algo
sobre DTC
ERROR:
DTC not present. Your options:
(1)
Preferred: Install the DTC devel package
(2)
Fetch the DTC submodule, using:
git
submodule update --init dtc
Es
porque ubuntu parece que no soporta el paquete DTC devel. Intenté
instalar device-tree-compiler y libfdt-dev, pero no funcionó, asi
que lo mejor es instalar el modulo que necesita Qemu con:
git submodule
update –init dtc
Hazlo y repite el paso 9)
10) Ahora toca montarlo todo:
make
Si tu PC tiene varios procesadores
puedes hacer que vaya un poco más rápido modificando un poco la
orden:
make -j 8
Yo puse 8 porque mi PC tiene 8
procesadores, pero tu debes usar el numero que tengas.
11) Y ahora completamos la instalacion
de Qemu.
sudo make install
12) Toca trabajar con la imagen.
Empecemos descargando esta imagen del kernel preparada para Qemu.
http://www.linuxleech.com/downloads/
y copiandola en nuestra carpeta Raspberrypi.
----A TRABAJANDO CON .IMG
A1) Hay que descomprimir la imagen:
gzip -d
NOMBRE-DE-TU-ARCHIVO.img.gz
A2) Toca ahora crear un espacio de
memoria. Esto puede tardar, asi que paciencia:
dd if=/dev/zero of=rootfs.ext3
count=6M
Escribiendo count=6M (6.000.000)
obtenemos unos 3.2Gb, lo cual es suficiente, pero si quieres más
espacio solo tienes que cambiarlo por un numero mayor
A3) Ahora hay que formatear el archivo
que acabamos de crear usado ext3:
/sbin/mkfs.ext3 rootfs.ext3
A4) Vamos a crear un par de directorios
para poder montar la imagen y rootfs.ext3:
mkdir original
mkdir final
A5) Necesitamos encontrar el offset del
root file system de la imagen. Para ello:
fdisk -l NOMBRE-DE-TU-ARCHIVO.img
Te interesa el número marcado.
(correspondiente al inicio del img2).
A6) Ahora podemos montar la imagen con:
sudo mount -o
loop,offset=$[206848*512] raspberrypi-NOMBRE-DE-TU-ARCHIVO.img
original
Nota que 206848 es el numero que
buscamos antes, debes usar el tuyo.
A7) Es el momento de motnar el archivo
que creamos antes.
sudo mount -o loop rootfs.ext3
final
A8) Tenemos que copiar el contenido de
la imagen montada en original a final. Paciencia:
sudo cp original/* final -a
A9) Ahora que ya está hecho hay que
desmontarlo todo:
sudo umount original
sudo umount final
---- B TRABAJANDO CON .ZIP (NOOBS)
NOOBS no viene como una imagen (.img). Cuando descargamos el SO para la Raspberry-pi nos encontremos con un .zip que, para usar con la RP, bastaría con descomprimir y pegar en la tarjeta SD previamente formateada.
B1) Tenemos que descomprimir el NOOBS, para ello:
cd ..
unzip NOMBRE-DE-TU-ARCHIVO.zip
B2) Toca ahora crear un espacio de
memoria. Esto puede tardar, asi que paciencia:
dd if=/dev/zero of=rootfs.ext3
count=6M
Escribiendo count=6M (6.000.000)
obtenemos unos 3.2Gb, lo cual es suficiente, pero si quieres más
espacio solo tienes que cambiarlo por un numero mayor
B3) Hay que formatear el archivo que
acabamos de crear usado ext3:
/sbin/mkfs.ext3
rootfs.ext3
B4) Tenemos que
crear un directorio para poder montar el archivo que acabamos de
crear:
mkdir final
B5) Es el momento de motnar el archivo
que creamos antes.
sudo mount -o
loop rootfs.ext3 final
Puedes comprobar
que ha salido bien abriendo la carpeta y pulsando Ctrl+h. Debe haber
una carpeta dentro llamada lost+found. Vuelve a pulsar Ctrl+h
B6) Ahora debes
copiar todo el contenido que surgió al descomprimir NOOBS a Final
Volvemos al modo grafico. Abrelo,
copialo todo y pegalo dentro de final
B7) Cuando se
termine de copiar ya puedes desmontar final:
sudo umount
final
Y ya debería estar
todo listo. Ahora toca lanzar Qemu y rezar por que todo haya salido bien:
qemu-system-arm -M
versatilepb -cpu arm1176 -m 256 -hda rootfs.ext3 -kernel LLKImage
-append "root=/dev/sda" -serial stdio -redir tcp:2255::22
Puedes usar otras
configuraciones, pero esa es la de RP ver.A.
Fuente: 1
No hay comentarios:
Publicar un comentario