HimaJyunどうも、ビンの王冠をスプーンで開けようとして指を怪我したニンゲンです。(怠慢ヨクナイネ)ちなみにビンの王冠と芥川龍之介は同い年なんですよ、知らなくて良い雑学ですね、脳の容量の無駄遣いです(参考:Wikipediaの王冠と芥川龍之介ページ)どうでも良い雑学はさておき、今回はRaspbianをQEMUで動かす方法でもご紹介しようと思います。Piで動作するRaspbian、これはいわゆるDebian系のLinuxなので普通にUbuntuなんかと同じソフトウェアが動作します。(パッケージがあれば)延いてはサーバ目的での利用も可能ですし、実際にサーバとして利用している例が言わずもがな私です。(GitやMunin用のサーバとして利用)とは言え、使えるなら全て同じかと言われるとそういう訳でもなく、パッケージのバージョンによって設定ファイルが微妙に異なっている事があります。そんなこんなで実際にインストールする前に動作テストを行いたいなんてのは良くあることです。いう訳で、RaspbianがQEMUで動作すると言う情報を手に入れたので実際に試してみました。10(64bit)ですが極論QEMUさえ動けば後はどうでも良いです。Lite(2017-01-11)で試しています。途中でRaspbianのimgファイルを書き換えるのに仮想環境のUbuntuを使います、ここの所はLinuxなら何でも良いでしょう。(fdiskとmountさえ使えりゃOK)Windows向けQEMUはこことかここからコンパイル済みが手に入ります、それが(信頼性的に)嫌なら仮想環境上のUbuntuとかでaptを使えば信頼出来そうなQEMUが手に入ります。QEMUでRaspbianとは言えQEMUで動かせば動く、というわけにはいかないみたいです。いくつかの下準備と小細工が必要なのでそちらを先に済ませてやりましょう。QEMU用Raspbianカーネルを手に入れるどうやらQEMUでRaspbianを動かすにはそれ用のカーネルを手に入れる必要があるみたいです。用意されたものがGitHubで公開されているみたいなのでそちらから手に入れると良いでしょう。バージョンがいくつかありますが、Raspbian側のバージョンと合わせれば良いかと(大抵の場合最新版を選んでおけばOK......かな?)Raspbianのimgに小細工RaspbianのimgファイルをそのままQEMUに渡しても上手く行かないみたいです。(?)起動させて修正する方法があったみたいですが、手元のRaspbianではそれが出来なかったのでmountして編集します。仮想環境上のUbuntuで試しますが、先の通りfdiskとmountが使えればOKです。Windowsで出来るかは未確認)まずはRaspbianのimgファイルに対してfdiskします。size」と、rootパーティション(./pi.img2)のセクター開始位置、これは後でoffsetを計算するのに必要Raspbianのrootパーティションをマウントして読み書き出来る様にします。/mnt/offsetの値はセクタサイズ*rootパーティションの開始位置です。$((512*137216))のようにしてBashで計算しても良いでしょう。マウントされたRaspbianの/etc/fstab(すなわち今回の例だと/mnt/etc/fstab)をエディタで開きます。/mnt/etc/ld.so.preload#/usr/lib/arm-linux-gnueabihf/libarmmem.soこれでOK、念のためにumountしておきたいなら以下の通り。先程細工を施したRaspbianのimgと、QEMU用のカーネルを利用して以下のコマンドで起動します。Raspbianのイメージ.imgその他、特定のポートを使用したい場合は以下の様な引数を追加してリダイレクトさせます。tcp:8080::80これでlocalhost::2222でRaspbianのSSHにアクセス出来ます。ユーザーモードエミュレーション先程の手法はハードウェアエミュレーションと言って動作を完全にエミュレーションするモードだそうです。それとは別に、ユーザーモードエミュレーションという物があります。早い話がWineがexeを動かす手法なんかと同じように、ホストOS側のマシンスペックをフルに活用しつつ、エミュレーションが必要なarmのバイナリだけをQEMU越しに実行するみたいです。16.04です、chrootとかが必要になるのでWindowsでは出来ません(多分GUIは出来るかどうか分かりません、手元で試した分では上手く行かなかったのでとりあえずLite版で。下準備Ubuntuの場合は以下のコマンドでユーザーモードエミュレーション用のQEMUをインストールが必要です。qemu-user-static今回の記事では「/mnt/raspbian」に環境を構築していく(例示なのでどこでも構わない)のですが、imgをそのまま使うと容量周りで面倒なのでimgの中身をrsyncで移してしまいます。Raspbian用のimgをマウントします、ここでは/mnt/tmpにマウントします。/mnt/tmprsyncで中身をまるっと移します。/mnt/tmpハードウェアエミュレーションの時と同じように「/etc/ld.so.preload」の1行目をアンコメントします。/mnt/raspbian/etc/ld.so.preload#/usr/lib/arm-linux-gnueabihf/libarmmem.soいくつかのファイルを移す先程マウントしたRaspbianに対していくつかのファイルを移していきます。/mnt/raspbianちなみに「arm11mpcore」を「arm1176」にするとシングルコア動作になるみたいです。~Raspbianのバイナリを動作させている証拠として、unameしたり/etc/issueを見たりすれば以下の結果が得られます。Piを手に入れた様な実験が出来る。終わりにハードウェアエミュレーションのRaspbianはCPUやメモリを増やせない、超重いソフトウェアの動作確認なんかはユーザーモードエミュレーションで十分かと思う。何はともあれ、これで前までみたいに失敗するたびに何度も何度もSDカードにddしなおす必要がなくなった。レビューZen2はともかくとして、X570が熱すぎてマザー選びに苦労してる。Zeroを買ってみた、買い方要る物その他諸々ナカのヒト:HimaJyun​散って美しいのは桜だけです、情報はまとまっていた方が美しいのです。