2014年12月7日日曜日

DELL XPS 13 9333 に Ubuntu 14.04 を入れてみた

一日の仕事の 95%くらいが Eclipseで Javaを書くような案件だと、自分の場合、わりと経験が長く、また工夫も蓄積されている分、Windows PCでも別段問題を感じる事もなく、割と自由に思ったことができる。

ただ最近の職務内容が Linuxベースのクラウド環境やマイコンボードの上で、IDE を使わず LL言語でプロトタイピングするようなタスクが多くなってきて、現場で貸与されている Windows7 デスクトップ機だとミスマッチを感じる状況がかなり多い。

そこで自前で、非 Windows機を持ち込む事にした。

またミーティングなどに持ち歩けるように、ラップトップにしたい。ただし、遊び限定で使ってる MacBook Air はすでに持っているものの、自分の場合、ショートカットに加えて、コンテキストメニューキー(またはShift+F10)と、ニーモニックも最大限活用するタイプなので、OSX は必然的に却下。

となると Linux、特に自宅の開発環境で親しんでいる Ubuntu が相応しかろうという事になる。

入れたマシン
DELL XPS 13 9333 (Windows 8.1 プリインストール版)

XPS 13 には 9333以前に、L321x と L322x というバージョンがあり、これらについてはドライバやら何やら一通り検証済みの Sputnikという DELL 謹製の Ubuntu ディストリビューションが提供されていて、iso をダウンロードすることもできる。

ただ、後継の 9333 については、どうも Sputnik的なものが無いらしく(日本では買えないプリインストール版を除けば)、なので普通の Ubuntuを、ドライバとか足りてるのかどうかわからないまま、試しにインストールしてみることにした。Windows は可愛そうだがつぶす事にしたが、ダメだった場合の時に備えて、購入時にリカバリメディアも付けてもらった。

やったこと

以下、動かすまでにやったこと。唯一の手順では無いだろうし、正しいかどうかすら定かではないけど、参考まで。

* Ubuntu をダウンロードする
ここを見ると、Dell XPS 13 9333 は、Ubuntu 12.04で認証されているらしい。BIOS に Legacy と UEFI があるが、preinstall 版と同じ Legacy を選んでダウンロードした。

* USB メモりに書き込む
16GB の USBメモリに UNetBootin で書き込んだ。ディスクイメージにチェックを入れて、ダウンロードしたイメージを選択。タイプは USBドライブで、ドライブに USBを指定しておく。

あと忘れてはいけないのが、「スペースは、リブートしてもファイルを維持するために使用(Ubuntuのみ)」の欄に、適当な容量を指定しておくこと。 ここを見ると、展開するファイルのサイズ総計より少し多いくらいと書いているので、8192MB を指定してみた。で、「OK」を押下すると、書き込みが始まる。時間は結構かかる。

(ちなみに、この指定を忘れて 0MB のまま作業すると、usb からの live ではちゃんと起動してネットワークもタッチパッドも問題なく動くのに、インストールするとキーボード以外うんともすんとも反応しなくなる。lsmod してみると、何もリストアップされない。)


* live USB で起動する
USB ポートに USBメモリを挿して電源を入れる。起動中に適当なタイミングで F12 を押すと、起動オプションを選べるようになるので、"LEGACY BOOT"の下の"USB Storage Device"を選択。次の画面で "Try Ubuntu without installing" を選択。

問題なく起動。画面が結構きれいなので、少し感動する。

* インストールする
USB から上手く立ち上がったら、ここで wifiを設定しておく。ネットワークに繋がって、トラックパッドとかも使えることを確認したら、"Install Ubuntu 12.04.5 LTS"のアイコンをクリックしてインストール開始。

言語を日本語に指定、「インストール中のアップデートのダウンロード」にチェック、「サードパーティのソフトウェアのインストール」にもチェック。 インストールの種類では、自分の場合、直前に失敗したインストールがあったので、「削除してインストール」を選択。ドライブは一個しか無いのでそのまま。 で、「インストール」押下。

インストール中、所在地、キーボードレイアウト、ユーザ情報などを聞かれるので、適当に指定。かなーり待つが、問題なくインストール終了。

* 再起動
「インストールが完了しました」メッセージボックスで、「今すぐ再起動する」を押下。すぐに立ち上がる。live USB 起動の時に設定した wifi も効いているので、すぐにネットワークにつながる。

* 14.04 にアップグレード
しばらく画面をみてボーっとしていると、14.04にアップグレードできるというポップアップが表示されるので、言われるままに「今すぐアップデート」。
またしばらく待つとアップグレードが終わる。

再起動すると 14.04が立ち上がるが、System program problem detected と表示され、report problem を押下すると gtk-update-icon-cache-3.0が予期せず停止したとのこと。「問題を報告」して続行。再び再起動すると、今度は出ない。その後、特に変わった様子はない。

やらなかったこと

DELLのドライバダウンロードサイトで、XPS 13 9333 用のドライバが提供されてるようだけど、Ubuntu 12.04用らしいので、インストールするのはやめておいた。今のところ特に差し障りない。何かあったら、書き足しておく。

2014年12月4日木曜日

EC2 (Ubuntu) に Yesod を入れてみたメモ

AWSの EC2インスタンス上で、Yesod を動かすのに手間取ったので、メモしておく。

----
EC2 は、Ubuntu を使ってみた。Ubuntu Server 14.04 LTS (HVM), SSD Volume Type - ami-e74b60e6 というものを使用。

Security Group の設定では、TCP の 3000を 開けておく。キーペアもちゃんとログインできる奴を指定する。ちなみに Ubuntu の場合、ユーザ名は ec2-user ではなくて ubuntu になる。

ここまでが前提。以下、本題。

■ Haskell Platform のインストール
まずバイナリを持ってきて、チェックサムを確認する。
$ wget https://www.haskell.org/platform/download/2014.2.0.0/haskell-platform-2014.2.0.0-unknown-linux-x86_64.tar.gz
$ sha256sum haskell-platform-2014.2.0.0-unknown-linux-x86_64.tar.gz
tar の中身が、絶対パスになっているので、/ に移動してから展開する。展開したら、activate-hs を実行する。
cd /
sudo tar xvf /home/ubuntu/haskell-platform-2014.2.0.0-unknown-linux-x86_64.tar.gz
sudo /usr/local/haskell/ghc-7.8.3-x86_64/bin/activate-hs
ここまで、Haskell Platform の指示に従った。

■ 追加ライブラリ等のインストール
Haskell Platform の 指示の中に、「追加のライブラリのインストールが必要かも知れない」、「libgmp.so.10 は必要だ」などとある。いろいろ試行錯誤したところ、以下の追加インストールで上手くようだ。
cd ~
sudo apt-get update
sudo apt-get install gcc
sudo apt-get install libgmp3-dev
sudo apt-get install libz-dev

■ Yesod のインストール
cabal update して、指示通りに cabal-install を入れなおし、yesod-bin をインストールする。

基本的には Yesod サイトの quick start guide の記述と同じだが、--force-reinstalls を指定している。このオプションを付けないと、「--force-reinstalls を付けてやり直せ」といった内容のメッセージと共にインストールが失敗する。

しばらく待つとインストールが終わるが、パスが通ってないので設定しておく。
cabal update
cabal install cabal-install
cabal install yesod-bin --force-reinstalls --max-backjumps=-1 --reorder-goals
PATH=$PATH:/home/ubuntu/.cabal/bin

■ scaffoldを起動してみる
まず適当にワークスペースを作っておく。
mkdir workspace
cd workspace/
yesod init を実行すると、プロジェクト名と永続化のタイプを聞いてくる。ここでは yesod01 、simple とした。
yesod init
yesod init が終わると、最後に起動するためのコマンドが表示されるが、ここでは敢えて別けて実行してみた(意味は変わらない)。
まず生成されたディレクトリに入って、次にビルド。ビルドできたら実行。
cd yesod01/
cabal install -j --enable-test --max-backjumps=-1 --reorder-goals
yesod devel
上手く行けば、コンソールにポート3000で起動したというログが出力され、ブラウザを開くと Welcome to Yesod! のページが表示されるはず。

----
本当は、hsenv か cabal sandbox で動かすつもりだったけど難航したので、とりあえず素で動かしてみた。サンドボックス環境が上手くいったら、続きを書く。