Arsip

Posts Tagged ‘raspberry pi’

Mengemulasi Raspberry Pi di PC Biasa

Agustus 25, 2013 1 komentar

Raspberry Pi, siapa yang tak kenal dengan benda kecil mungil namun luar biasa ini? Board yang digadang-gadang sebagai komputer mini ini ditenagai oleh ARM dan RAM 512MB (model B). Benda ini juga sedang santer di kalangan lab sistem terdistribusi ITB sebagai mainan yang asyik :).

Harga Raspberry Pi memang tak terlalu mahal, sekitar $35 (model B). Bagaimana kalau kita masih belum bisa mengopreknya karena suatu hal tapi sudah sangat mengidamkannya? Masih ada jalan!

Di artikel ini kita akan mencoba mengemulasikan “Raspberry Pi” di PC kita dengan bantuan QEMU. Meskipun emulasi memungkinkan, tapi jangan terlalu mengandalkannya. Ingat bahwa emulasi mencoba mengimitasi benda tapi tidak akan pernah menjadi seperti benda tersebut ^^. Dan juga yang kita emulasikan tidak akan sama persis, hanya board dengan prosesor ARM yang akan kita emulasikan.

OK, penulis di kesempatan ini menggunakan peralatan sebagai berikut:

  1. Slackware64 14.0 sebagai host
  2. QEMU 1.4.0
  3. Soft-Float Debian Wheezy versi 2013-05-29.
  4. OpenVPN

Obtain the Material

Pastikan QEMU sudah terinstall ๐Ÿ˜‰

Silahkan cari tutorialnya, tidak akan dibahas di kesempatan ini. Salah satu link yang bisa dijadikan rujukan: artikel dari xathrya.web.id (English) .

Sekarang download image OS yang dibutuhkan (Soft-float Debian Wheezy). Download langsung dariย halaman download di situs resmi Raspberry Pi. Versi yang kita gunakan adalah 2013-05-29 atau versi terkini per 25 Agustus 2013. Bisa juga download langsung di sini.

Selanjutnya kita juga perlu kernel Linux untuk QEMU. Download di sini.

The Hardware – Overview

Sebelum melangkah lebih jauh, alangkah baiknya kita menjelajah sistem yang akan kita oprek, Raspberry Pi.

System yang akan kita emulasikan di QEMU adalah:

  1. ARM1176JZF-S, datasheet dapat dibaca di sini
  2. Ethernet

Satu hal yang ditekankan, QEMU tidak bisa mengemulasikan GPIO dan GPU. Dan nampaknya belum ada yang dapat mengemulasikannya.

Untuk mengemulasikan jaringan, kita butuh TAP network untuk dukungan jaringan penuh.

Preparing the environment

Bikin direktori kerja. Kita sebut saja qemu-raspberry.

Buka terminal dan masuk ke working direktory kita.

Ekstrak image yang telah diunduh dan letakkan dalam qemu-raspberry bersama dengan kernel linux.

Periksa apakah ada direktori /dev/net dan /dev/net/tun. Kalau tidak ada, lakukan sebagai berikut:

mkdir /dev/net
mknod /dev/net/tun c 10 200
/sbin/modprobe tun

Buat dua file, /etc/qemu-ifup dan /etc/qemu-ifdown. Pastikan file tersebut dapat dieksekusi.

Berikut untuk /etc/qemu-ifup

#!/bin/bash
ETH0IPADDR=192.168.1.100
GATEWAY=192.168.1.1
BROADCAST=192.168.1.255

# First take eth0 down, then bring it up with IP address 0.0.0.0
/sbin/ifconfig eth0 down
/sbin/ifconfig eth0 0.0.0.0 promisc up

# Bring up the tap device (name specified as first argument, by QEMU)
/usr/sbin/openvpn --mktun --dev $1 --user `id -un`
/sbin/ifconfig $1 0.0.0.0 promisc up

# Create the bridge between eth0 and the tap device
/usr/sbin/brctl addbr br0
/usr/sbin/brctl addif br0 eth0
/usr/sbin/brctl addif br0 $1

# Only a single bridge so loops are not possible, turn off spanning tree protocol
/usr/sbin/brctl stp br0 off

# Bring up the bridge with ETH0IPADDR and add the default route

/sbin/ifconfig br0 $ETH0IPADDR netmask 255.255.255.0 broadcast $BROADCAST
/sbin/route add default gw $GATEWAY

dan berikut ini untuk /etc/qemu-ifdown

#!/bin/bash

# Bring down eth0 and br0
/sbin/ifconfig eth0 down
/sbin/ifconfig br0 down

# Delete the bridge
/usr/sbin/brctl delbr br0

# Bring up eth0 in "normal" mode
/sbin/ifconfig eth0 -promisc
/sbin/ifconfig eth0 up

# Delete the tap debice
/usr/sbin/openvpn --rmtun --dev $1

Pastikan OpenVPN terinstall ๐Ÿ˜‰

Booting the disc image

Perlu TAP interface untuk mendapatkan dukungan jaringan penuh. Untuk mendapatkannya, cukup jalankan script ini sekali saja sampai puas bermain-main dengan QEMU. Lakukan ini:

/etc/qemu-ifup tap0

Boot QEMU, jalankan perintah berikut:

qemu-system-arm -kernel kernel-qemu -cpu arm1176 -m 256 -M versatilepb \
-no-reboot -serial stdio -append "root=/dev/sda2 panic=1" -hda 2013-05-29-wheezy-raspbian.img \
-net nic -net tap,ifname=tap0,script=no,downscript=no

Setelah puas, lakukan ini untuk menghentikan interface:

/etc/qemu-ifdown

Daaaan, ini hasilnya:

pi_qemu_linux

Iklan