mieki256's diary



2017/11/03(金) [n年前の日記]

#1 [windows][raspberrypi] Windows上でRaspberry Piのエミュレータを動かしてみたり

Raspberry Pi Zero Wを使って何かしら動作確認をするたびに、Raspberry Pi Zero W機の電源を入れたりキーボードを引っ張り出すのが面倒臭いなと。

Windows上でエミュレーションできたら多少は快適にならないかと思えてきたので、Raspberry Piのエミュレータとやらを動かしてみようかなと。環境は、Windows10 x64。

どうやら、QEMUなる仮想PCを使うとエミュレーションができるらしい。

簡単に動かす方法。 :

以下が参考になった。

_Windows 用ラズパイエミュレータを使ってみた : まだプログラマーですが何か?

以下から、qemu.zip をDL。2012/07/26と古いけど…。

_Raspberry Pi emulation for Windows download | SourceForge.net

解凍して、D:\qemu として置いてみた。run.bat を実行。Raspberry Piの画面がたしかに出てきた。

raspbian のバージョンは wheezy らしい。ちなみに、wheezy → jessie → stretch の順で新しい。最新版は stretch。

source.listを変更。 :

手元の環境では、sudo apt-get update だの sudo apt-get upgrade 等を実行するとダウンロードの段階で固まってしまう。

/etc/apt/source.list を変更して、日本国内のサーバを指定すれば改善する時があるらしいので試したり。

_rasbianでapt-get updateがうまく行かない場合の可能性について - Live the Life you Love

ミラーサイトは以下。

_RaspbianMirrors - Raspbian

JAIST や Yamagata University のURLで置き換えたら、少なくともダウンロードは止まらなくなった。

比較的新しいQEMUとraspbian stretchのimgで試してみる。 :

どうせなら raspbian stretch を動かしてみるか…。と思ったけれど、stretch用のkernelが見つからない。jessie用で動くかな…。qemu も新しい版を試してみたいな…。

ということで、比較的新しい版で動かしてみる。以下の解説記事に従って作業。ありがたや。

_Windows+QEMUでRaspberry Piをエミュレートする | junkato.jp
_Raspberry Pi emulator for WindowsでRaspbian最新版を動作させる手順 - Qiita

必要なファイルを入手。 :

以下から qemu をダウンロード。

_QEMU for Windows - Installers (64 bit)

qemu-w64-setup-20171006.exe をDLして実行するとインストールされる。今回は、D:\qemu\ にインストールした。

raspbian stretch の img (2017-09-07-raspbian-stretch.zip) もDL。解凍して、中に入ってた .img を使う。

_Download Raspbian for Raspberry Pi

kernel は、kernel-qemu-4.4.34-jessie を使ってみた。

_dhruvvyas90/qemu-rpi-kernel: Qemu kernel for emulating Rpi on QEMU

2017-09-07-raspbian-stretch.img と kernel-qemu-4.4.34-jessie を、D:\qemu\qemu 以下に入れる。バッチファイルを作成。

run_raspbian.bat
@set PATH=D:\qemu;%PATH%
qemu-system-arm.exe -kernel kernel-qemu-4.4.34-jessie -cpu arm1176 -m 256 -M versatilepb -no-reboot -serial stdio -append "root=/dev/sda2 panic=1 rootfstype=ext4 rw" -hda 2017-09-07-raspbian-stretch.img -net nic -net user,hostfwd=tcp::2222-:22
  • qemu-system-arm.exe は、ARM CPUのエミュレータ。
  • *-arm.exe と *-armw.exe の違いは、実行時にコンソール(DOS窓?)を出すか出さないか、らしい。
  • -kernel hoge でカーネルファイルを指定。
  • -cpu arm1176 -m 256 で、ARM CPU(の種類)、メモリ容量を指定してる。
  • -hda hoge.img で、HDDイメージを指定。
  • -net user,hostfwd=tcp::2222-:22 で、SSHのポート(22番) を 2222番に変更、しているのではないかな…。昔は -redir で指定してたらしいが、その指定方法は非推奨になったらしい。

run_raspbian.bat を実行。raspbian が起動した。

raspbian上での初期設定。 :

qemu + raspbian起動後、/etc//etc/ld.so.preload を編集。1行目に「#」を打ってコメントアウト。
sudo nano /etc/ld.so.preload

/etc/udev/rules.d/90-qemu.rules を作成。
sudo nano /etc/udev/rules.d/90-qemu.rules
中身を以下に。
KERNEL=="sda", SYMLINK+="mmcblk0"
KERNEL=="sda?", SYMLINK+="mmcblk0p%n"
KERNEL=="sda2", SYMLINK+="root"

sudo shutdown -h now でシャットダウンしてから、バッチファイルを再度実行して起動するか確認。一応動いている模様。

imgの容量を増やす。 :

以下の記事を参考にして、imgを2GBほど増加。

_Raspberry Pi のイメージファイルを拡張する - ymyzk’s blog
Windows上のDOS窓で作業。2GB の temp.img を作成して、raspbian stretch の img にくっつけて、raspbian-stretch.img というファイルを新規作成。
qemu-img create -f raw temp.img 2G
copy /b 2017-09-07-raspbian-stretch.img+temp.img raspbian-stretch.img

run_raspbian.bat 内の、 *.img を raspbian-stretch.img に変更。

qemu + raspbianを起動後、sudo fdisk /dev/sda を実行。
  • パーティション2の開始セクタをメモしておく。
  • パーティション2を削除してから、プライマリーパーティションとして再作成。
  • 開始セクタは、先ほど削除したパーティションの値を指定。
  • パーティションテーブルを書き込んで fdisk終了。

sudo shutdown -h now でシャットダウン。run_raspbian.bat を実行して raspbianを再起動。

sudo resize2fs /dev/sda2 を実行してパーティションをリサイズ。

SWAP領域を追加。 :

SWAP領域も追加。run_raspbian.bat 内で、temp.img を -hdb temp.img で追加して。raspbianを起動して以下を実行。
sudo mkswap /deb/sdb
sudo swapon /dev/sdb

問題点。 :

色々問題があるようで。
  • とにかく遅い。何かするたびに十数秒〜数十秒待たされる。
  • メモリ容量の指定は256MBが上限らしい。厳しい。代わりにSWAPを指定すると言ってもHDDにアクセスさせる時点で速度的に厳しいわけで。ユーザモードなるモードで動かせばもっとメモリを増やせるらしいけど、それはそれで何かしら制限があるだろうし…。
  • ガンガンフリーズする。sudo apt-get upgrade ですら、ところどころでフリーズする…。
  • マウスカーソルが妙なところを指す。位置が合わない。

これでは実機を動かしたほうがマシだなあ、という気分になってきた。

画面解像度を変更。 :

デフォルトでは 640x480 の画面になってしまうが、以下のページで画面解像度の変更方法が書いてあった。800x600,16bit であれば変更できるらしい。

_Raspberry PI Emulation | Southend Linux User Group (web archive)

/etc/X11/xorg.conf を新規作成。
sudo nano /etc/X11/xorg.conf

中に以下を記述。
Section "Screen"
  Identifier "Default Screen"
  SubSection "Display"
   Depth 16
   Modes "800x600" "640x480"
  EndSubSection
EndSection

その他参考ページ。 :


以上です。

過去ログ表示

Prev - 2017/11 - Next
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30

カテゴリで表示

検索機能は Namazu for hns で提供されています。(詳細指定/ヘルプ


注意: 現在使用の日記自動生成システムは Version 2.19.6 です。
公開されている日記自動生成システムは Version 2.19.5 です。

Powered by hns-2.19.6, HyperNikkiSystem Project