Mac, Raspberry Pi

Raspberry Pi i QEMU na Mac OS X

Od pewnego czasu próbuję uruchomić emulację Raspberry Pi na Mac OS X. Niestety cały czas bez powodzenia (aż do dzisiaj 🙂 ). Ostatnio znalazłem tutaj instrukcję jak podejść do tego tematu skutecznie.

Co będziemy potrzebowali?

  • środowiska Xcode to 4.3 lub nowszego.
  • narzędzi Xcode Command Line Tools (jeżeli już posidamy Xcode to w celu instalacji narzędzi możesz wydać polecenie xcode-select –install).
  • najnowszą wersję Homebrew. Starsze wersje Homebrew posiadają starą wesję QEMU, która nie wspiera zestawu instrukcji 1176 procesora ARM wykorzystywanego przez Rasberry Pi .

Xcode

Pierwsze dwa punkty pominąłem ponieważ korzystam na codzień z Xcode oraz narzędzi Xcode Command Line Tools.

Homebrew

Jeśli chodzi o Homebrew, to posiadałem już zainstalowaną poprzednią wersję – przystąpiłem więc zgodnie z instrukcją do jego aktualizacji:

brew update
brew outdated
brew upgrade

czasami, gdy nie wszystko pójdzie zgodnie z planem, pomaga wydanie polecenia

brew doctor

QEMU

Ponieważ kilka poprzednich moich podejść do instalacji QEMU na Mac OS X zakończyło się niepowodzeniem, zgodnie z radą postanowiłem skorzystać z wersji QEMU 1.1.0.

cd /usr/local/ # lub inny katalog, w którym został zainstalowany Homebrew

git checkout 2b7b4b3 Library/Formula/qemu.rb

Aby skompilować poprawnie QEMU potrzebujemy odpowiedniej wersji gcc (wersja kompilatora llvm dostarczana razem z Xcode posiada podobno jakiś bug, który uniemożliwia poprawną kompilację QEMU).

brew install https://raw.github.com/Homebrew/homebrew-dupes/master/apple-gcc42.rb

Przystępujemy do kompilacji QEMU.

brew install qemu --env=std --cc=gcc-4.2

Na koniec potrzebujemy jeszcze plików z systemem, który będziemy chcieli uruchomić w ramach QEMU. Można je pobrać tutaj. Podaję też bezpośrednie linki do plików:

zImage

rootfs

Po ściągnięciu plików, aby uruchomić QEMU należy w linii poleceń wpisać:

/usr/local/Cellar/qemu/1.1.0/bin/qemu-system-arm -M versatilepb -cpu arm1176
-m 256 -hda rootfs.ext2 -kernel zImage -append "root=/dev/sda" -serial stdio

Koniec

Z założenia zamierzam korzystać z kilku środowisk, więc każdorazowe wpisywanie w terminalu takiej długiej komendy może być uciążliwe. Postanowiłem rozwiązać ten problem w sposób następujący.

Po pierwsze przyjąłem, że pary plików (zImage oraz rootfs – bez żadnych rozszerzeń!) będę umieszczał w różnych folderach. I tak utworzyłem w swoim katalogu domowy utworzyłem foldery RaspberryPi oraz CustomKernel. Do obydwu folderów skopiowałem pliki zImage oraz rootfs (usunąłem rozszerzenie .ext2). Docelowo w katalogu CustomKernel będę posiadał inną wersję plików zImage i rootfs. Nic oczywiście nie stoi na przeszkodzie aby w kolejnych folderach (np. Raspbian) umieścić kopie plików zImage oraz rootfs z odpowiedniej dystrybucji ściągniętej ze strony Raspberry Pi.

W narzędziu Edytor AppleScript przygotowałem następujący skrypt, który pomoże mi uruchamiać wybrane środowisko.

tell application "Finder"
set userFolder to choose folder with prompt "Please select directory."
set folderlist to name of every folder of entire contents of userFolder
end tell

set userFolder to POSIX path of userFolder
set res to (choose from list folderlist with prompt "Choose a File:" OK button name "Select" cancel button name "Quit")
do shell script "/usr/local/Cellar/qemu/1.1.0/bin/qemu-system-arm -M versatilepb -cpu arm1176 -m 256 -hda " & userFolder & res & "/rootfs -kernel " & userFolder & res & "/zImage -append 'root=/dev/sda' > /dev/null 2>&1 &"

 

Standard

Dodaj komentarz