AzureVM上でRaspberryPiのカーネルをコンパイルしてみた

いつもなら手元の環境にVMを作成して作業するのですが、時間があったので、その存在を知りつつも触ったことがなかった、AzureVMを使って試してみました。

なんで、カーネルコンパイルをやってみようと思ったのかというと、家に使っていない小型のUSBモニタがあって、お試しで遊ぶくらいならメインPCのモニタを間借りしなくてもいいのでは?と、調べてみると、ひと手間かかりそうですが、まぁ、なんとかなりそうな雰囲気だったのでやってみることに。

AzureVMイメージの準備

まずは、管理ポータルを開き、サイドメニューから"仮想マシン"を選択し、下部の新規ボタンを押します。

今回はUbuntuを使ってみようと思うので、"簡易作成"を選択しました。 入力項目は、以下のような感じで。

  • DNS名.(お好きな名前で)
  • イメージ.(Ubuntu Server 14.10)
  • サイズ.(どれでもいいですが、今回は Basic A2)
  • パスワード.(ご自由に)
  • 地域.(どれでもいいですが、今回は 日本(西) )

あとは、仮想マシンの作成をポチっと押せば完了です。インスタンスが作成されるまで、数分程度かかるので少し待ちましょう。

インスタンスの作成が完了したら、ダッシュボードを開きます。

ダッシュボードを開くと、ページ内の右側に"SSH の詳細"という情報があります。接続先のアドレスとポート番号なので、以後はターミナル等で接続して進めていきます。

※使うツールはTeraTermでもPuTTYでもなんでも構いません。ちなみに私はRLoginを使っています。

ユーザ名は"azureuser"、パスワードは自分で設定した値でログインできるはずなので、ちゃんと接続できることを確認しておきましょう。

カーネルコンパイル

手順はこの辺りを参考にしつつ進めていきました。

ただ、上記のサイトはどれも昨年(かそれ以前)の情報なのと、素の環境だと、aptでセットアップするパッケージも足りなかったりしたので、そこだけピックアップしてメモしておきます。

クロス・コンパイル環境の準備

最初に参考にした手順通りだと、makeとかがなくて詰まったので。たぶん、最低限必要なのは以下くらいだと思います。

apt-get install git-core gcc-4.6-arm-linux-gnueabi build-essential ncurses-dev

ビルド・オプションの設定

他記事とはメニュー階層が若干違っていました。RaspberryPi2だから?

Device Drivers
  Graphics support
    Frame buffer Devices
      Displaylink USB Framebuffer support

コンパイル実行

スレッドは3つ(-j3)にしてみました。コア2個のインスタンスだったので、もう少し多くてもよかったかも。

make ARCH=arm CROSS_COMPILE=/usr/bin/arm-linux-gnueabi- -k -j3

モジュールのビルド

これは参考サイトそのままで完了。

カーネルとモジュールを取得

これも手順通りで問題ないかと。私はtarで固めたあとはWinSCPを使って手元にダウンロードしておきました。

ここから先はRaspberryPi側の作業となります。

後始末

管理ポータルから、仮想マシンインスタンスを停止(シャットダウン)させておきましょう。最近はなにかと物騒ですし・・

余談

AzureVMは使ったことが無かったので無料枠をどのくらい消費するのかドキドキしていましたが、翌日確認した感じでは約70円分くらいしか消費していませんでした^^;;

使い終わったらちゃんとインスタンスを停止しておくのを忘れさえしなければ、ちょっとした実験?くらいであれば気軽に使えそうなだということが分かったのは、自分の中で一つの収穫でした。