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上でエミュレーションできたら多少は快適にならないかと思えてきたので、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。
_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で置き換えたら、少なくともダウンロードは止まらなくなった。
/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
ということで、比較的新しい版で動かしてみる。以下の解説記事に従って作業。ありがたや。
_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
run_raspbian.bat を実行。raspbian が起動した。
_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行目に「#」を打ってコメントアウト。
/etc/udev/rules.d/90-qemu.rules を作成。
sudo shutdown -h now でシャットダウンしてから、バッチファイルを再度実行して起動するか確認。一応動いている模様。
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 というファイルを新規作成。
run_raspbian.bat 内の、 *.img を raspbian-stretch.img に変更。
qemu + raspbianを起動後、sudo fdisk /dev/sda を実行。
sudo shutdown -h now でシャットダウン。run_raspbian.bat を実行して raspbianを再起動。
sudo resize2fs /dev/sda2 を実行してパーティションをリサイズ。
_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 を新規作成。
中に以下を記述。
_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
◎ その他参考ページ。 :
[ ツッコむ ]
#2 [raspberrypi] Raspberry Pi用のスペーサが届いた
スイッチサイエンスさんに注文してた、
_Raspberry Pi用のスペーサセット(SSCI-022682。長さ11mmスペーサ x 4、M2.6ネジ x 8)
がネコポスで届いた。
M3.0のネジなら近所のホームセンターでも入手できるのだけど、Raspberry Piの固定用の穴はM2.6じゃないと入らないらしいので、それだと入手しにくかったわけで…。通販で入手するしかないな、と。
とりあえずコレで、Raspberry Pi3 とブレッドボードを、 _TAMIYA ユニバーサルプレートL の上に固定できた。Raspberry Pi3 が電動雲台の上に固定してあっても、USB端子、HDMI端子、電源端子に、ケーブルを差せるから、動作確認等に流用できる。ていうか自分の場合、ケースは要らなかったな…。こういう状態のほうが全然便利だったかも。最初からこうしておけばよかった。
関係ないけど、ユニバーサルプレートをニッパーで無理矢理切っていく最中に、プレートの切断面で親指を切ってしまった。痛い。もっと簡単に、好きな形で切り出せる製品があればいいのに。いや、強度が足りなくなるから難しいか。…本来、このプレートは何で切るべきなんだろう。
M3.0のネジなら近所のホームセンターでも入手できるのだけど、Raspberry Piの固定用の穴はM2.6じゃないと入らないらしいので、それだと入手しにくかったわけで…。通販で入手するしかないな、と。
とりあえずコレで、Raspberry Pi3 とブレッドボードを、 _TAMIYA ユニバーサルプレートL の上に固定できた。Raspberry Pi3 が電動雲台の上に固定してあっても、USB端子、HDMI端子、電源端子に、ケーブルを差せるから、動作確認等に流用できる。ていうか自分の場合、ケースは要らなかったな…。こういう状態のほうが全然便利だったかも。最初からこうしておけばよかった。
関係ないけど、ユニバーサルプレートをニッパーで無理矢理切っていく最中に、プレートの切断面で親指を切ってしまった。痛い。もっと簡単に、好きな形で切り出せる製品があればいいのに。いや、強度が足りなくなるから難しいか。…本来、このプレートは何で切るべきなんだろう。
[ ツッコむ ]
以上、1 日分です。