MAC で hello.c をARMバイナリにクロスコンパイルする


(1) Ubuntuの環境をつくる
MAC で Ubuntu を動かす (VirtualBox)

以降、Ubuntu環境です
(2) ARMの開発環境をインストールする

$ sudo apt-get install g++-arm-linux-gnueabihf

(3) hello.c をクロスコンパイルする
hello.c

#include <stdio.h>
int main(int argc, char *args[])
{
    printf("Hello, world!\n");
}

クロスコンパイルする

$ arm-linux-gnueabihf-gcc hello.c -o hello

実行すると、実行できないよというメッセージが出る

$ ./hello
bash: ./hello: cannot excute binary file:

(4) ARMの実行環境をインストールする

$ sudo apt-get install qemu-user qemu-user-static

環境設定する

$ update-binfmts --display qemu-arm
$ cd /lib/
$ sudo ln -s /usr/arm-linux-gnueabihf/lib/ld-linux-armhf.so.3 .
$ sudo ln -s /usr/arm-linux-gnueabihf/lib arm-linux-gnueabihf

実行すると、今度はOK

$ ./hello
Hello, world

(5) ラズパイで実行する
ラズパイに転送して、実行します。OKでした。

参考
Ubuntu 12.04 で hello.c をARMバイナリとしてコンパイルして実行してみる

debian – binfmt-support
binfmt_misc というカーネルモジュールは、システム管理者がファイル拡張子をベースにして各種バイナリ 形式をインタプリタに登録し、該当するファイルが実行された時には適切な インタプリタが呼び出されるようにできます。


VirtualBox ホストOSからゲストOSにアクセスする


ホストOSはMACで、からゲストOSはUbuntuです。

VirtualBox は初期状態では、NATに設定されています。
この状態では、ゲストOSからホストOSにアクセスできます。

$ ping 10.0.2.2
PING 10.0.2.2 (10.0.2.2) 56(84) bytes of data.
64 bytes from 10.0.2.2: icmp_seq=1 ttl=63 time=0.164 ms

ホストOSからゲストOSにアクセスするには、「ホストオンリーネットワーク」を追加します。
VirtualBox -> ゲストOSの設定 -> ネットワーク -> アダプタ2
20160420_virtualbox_host_only

ゲストOSにて、sshをインストールする。

$ sudo apt-get install ssh

ゲストOSにて、IPアドレスを調べる。

$ Ipconfig
enp0s8    Link encap:イーサネット  ハードウェアアドレス 08:00:27:d5:17:a1  
          inetアドレス:192.168.99.100  ブロードキャスト:192.168.99.255  マスク:255.255.255.0

ホストOSからアクセスする

$ ping 192.168.99.100
PING 192.168.99.100 (192.168.99.100): 56 data bytes
64 bytes from 192.168.99.100: icmp_seq=0 ttl=64 time=0.531 ms
$ ssh user@192.168.99.100
user@192.168.99.100's password: 
Welcome to Ubuntu 16.04 LTS (GNU/Linux 4.4.0-21-generic x86_64)

参考
VirtualBoxでホストOS<->ゲストOS間 ゲストOS->インターネット間の通信を行う方法
VirtualBox ネットワーク設定


VBoxManage


VBoxManage は、VirtualBox のコマンドラインインターフェースです。

コマンドの例
仮想マシン (Virtual Memory System) の一覧

$ VBoxManage list vms

仮想マシンの起動

$ VBoxManage startvm "vm名"

仮想マシンの電源オフ

$ VBoxManage controlvm  "vm名" poweroff

参考
VBoxManage
VBoxManageコマンド


MAC で Ubuntu を動かす (VirtualBox)


20130617ubuntu_virtulabox

MAC で Ubuntu を動かす手順は、
Windows を動かす手順 と、ほぼ同じです。

1. VirtualBox
無料の仮想化ソフトです。

(1) VirtualBox をダウンロードして、インストールする。
(2) Linux 用の仮想マシンを設定する。
 HDD 40GB, メモリ2GB

2. Ubuntu
Linux ディストリビューションのひとつで、オープンソースです。

(1) ISO イメージ をダウンロードします。
(2) 仮想マシンを起動します。
(3) 起動するデバイスを聞かれるので、 ISO イメージを指定します。
(4) Ubuntu のインストール画面になります。
(5) 以降、質問に答えて、先に進むと、インストールは完了します。

不具合
私の環境では、USBメモリを認識しません。
仕方ないので、デュアルブート方式にしました。


VirtualBox の HDD 容量を大きくする


VirtualBox に Windows をインストールすると、標準のままだと、HDD容量は20GBになる。
ちょっとプログラムを入れたら満杯になってしまった。
そこで、HDD 容量を大きくしたが、次の2つのステップを踏む必要があった。
(1) VBoxManage を使用して、仮想HDDの容量を大きくする。
(2) gparted を使用して、ゲストOS (Windwos) のHDDの容量を大きくする。

VBoxManage
MACのターミナルで下記のコマンドを実行する。この例は 100GB。容量の単位はMB。

VBoxManage modifyhd "/Users/xxx/VirtualBox VMs/windows/windows7.vdi" --resize 102400

Gparted
(1) Gparted (ISOイメージ) をダウンロードする。
(2) 仮想CD-ROMにISOイメージを設定して、ブート元をCD-ROMにする。
(3) ブートすると、Linux と gparted が立ち上がる。
(4) HDDの容量を大きくする。
(5) Linux を終了する。
(6) ブート元をHDDに戻す。
(7) ブートすると、Windows の Disk Ckeck が走る。
(8) しばらくすると、Windows が立ち上がる。


参考
VirtualBoxのゲストOSのストレージサイズ(HDD)を拡大する方法
VirtualBox User Manual – VBoxManage
Gparted


MAC で Windows 8 を動かす (VirtualBox)


1. VirtualBox
無料の仮想化ソフトです。

(1) VirtualBox をダウンロードして、インストールする。
(2) Windows 8 用の仮想マシンを設定する。
 HDD 80GB, メモリ4GB

2. Windows 8 Release Preview
無料の開発者バージョンです。

(1) ISO イメージをダウンロードする。
(2) Windows 7 環境で DVD に焼く。
(3) MAC に DVD を挿入する。
(4) 1-(2) で作成した仮想マシンを起動する。
(5) 以降、Windows 8 のインストール画面になるので、インストール作業を継続する。

参考
VirtualBox
Windows 8 Release Preview


MAC で Windows7 を動かす (Windows 7)


Windows 7 Professional
有償ソフト (¥39,690) です。

(1) Microsoft Store より購入する
(2) ISO イメージをダウンロードする。
(3) Windows 7 ( あるいは Windows XP ) 環境で DVD に焼く。
(4) MAC に DVD を挿入する。
(5) MAC で Windows を動かす (VirtualBox) で作成した仮想マシンを起動する。
(6) 以降、Windows 7 のインストール画面になるので、インストール作業を継続する。

参考
Windows 7 Professional


MAC で Windows7 を動かす (VirtualBox)


MAC で Windows を動かすには、大きく2つの方法がある。

(1) マルチブート
1台のコンピュータに複数のOSを載せる仕組みです。
利点: 高速です。
欠点: 同時に複数のOSを使用することが出来ない。

MAC では BootCamp という仕組みが用意されています。

(2) 仮想化ソフト
1つのOSの上に複数のOSを載せる仕組みです。
利点: 同時に複数のOSを使用することが出来ます。
欠点: マルチブートに比べて、低速です。
欠点: 同時に複数のOSを使用することが出来ない。

(2-1) VirtualBox
無償の仮想化ソフトです。
VMware や Parallels に比べて、低速です。

(2-2) VMware
有償の仮想化ソフトです。
仮想化ソフトの定番で、用途に応じて、複数の製品があります。
Windows では VMware Player という無償ソフトもあります。

(2-3) Parallels
有償の仮想化ソフトです。
VMware に比べて、高速という評判です。

今回はちょっと試すというレベルなので、VirtualBox を採用しました。
(1) VirtualBox をダウンロードして、インストールする。
(2) Windows 7 用の仮想マシンを設定する。
 HDD 20GB, メモリ2GB

参考
Mac用仮想PCソフト対決