2013年4月25日木曜日

Raspberry Pi の Arch Linux で使用領域を拡張する

 

 

Raspberry Piにsshで接続するところまでできたわけですが、ディスクが1.7GBしか認識されていなかったため、拡張することにします。

OSにRaspbianを選択していると、Raspi-configで簡単に設定できるようですが、ArchLinuxではちょっと手間がかかります。

今回は、8GBのSDカードを使用しているので、限界まで拡張したいと思います。

まずは、拡張前の df -hの結果です。

[root@alarmpi ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/root 1.7G 665M 924M 42% /
devtmpfs 83M 0 83M 0% /dev
tmpfs 231M 0 231M 0% /dev/shm
tmpfs 231M 244K 231M 1% /run
tmpfs 231M 0 231M 0% /sys/fs/cgroup
tmpfs 231M 0 231M 0% /tmp
/dev/mmcblk0p1 90M 25M 66M 28% /boot

 
それでは、拡張手順です。
まず、

fdisk mmcbblk0

を実行し、Commandにpをタイプし、パーティションリストを表示します。

[root@alarmpi dev]# fdisk mmcblk0
Welcome to fdisk (util-linux 2.22.2).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.

Command (m for help): p
Disk mmcblk0: 7948 MB, 7948206080 bytes, 15523840 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0004f23a
Device Boot Start End Blocks Id System
mmcblk0p1 * 2048 186367 92160 c W95 FAT32 (LBA)
mmcblk0p2 186368 3667967 1740800 83 Linux

二番目のパーティションを削除します。

Command (m for help): d
Partition number (1-4): 2
Partition 2 is deleted

新たにパーティションを作成します。

Command (m for help): n
Partition type:
p primary (1 primary, 0 extended, 3 free)
e extended
Select (default p): p
Partition number (1-4, default 2): 2
First sector (186368-15523839, default 186368):
Using default value 186368
Last sector, +sectors or +size{K,M,G} (186368-15523839, default 15523839):
Using default value 15523839
Partition 2 of type Linux and of size 7.3 GiB is set

編集結果を書き込みます。

Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
The kernel still uses the old table. The new table will be used at
the next reboot or after you run partprobe(8) or kpartx(8)
Syncing disks.


ここで一回再起動をかけます。

reboot


起動したら、再度sshで接続し、resize2fsで拡張します。

[root@alarmpi ~]# resize2fs /dev/mmcblk0p2
resize2fs 1.42.7 (21-Jan-2013)
Filesystem at /dev/mmcblk0p2 is mounted on /; on-line resizing required
old_desc_blocks = 1, new_desc_blocks = 1
The filesystem on /dev/mmcblk0p2 is now 1917184 blocks long.


また再起動します。

reboot


ここまで問題なく設定できていれば、/が拡張されているはずです。
そして拡張後のdf -hの結果です。

[root@alarmpi ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/root 7.3G 667M 6.3G 10% /
devtmpfs 83M 0 83M 0% /dev
tmpfs 231M 0 231M 0% /dev/shm
tmpfs 231M 236K 231M 1% /run
tmpfs 231M 0 231M 0% /sys/fs/cgroup
tmpfs 231M 0 231M 0% /tmp
/dev/mmcblk0p1 90M 25M 66M 28% /boot


ばっちり拡張されています。

Raspberry PiにArchLinuxをインストールしてみた

誕生日プレゼントとして、友人から『なんに使うの?』と言われながらもRaspberry Piをいただきました。
IMG 20130405 212459
Raspberry Piって何?って人は、下記リンクを参照
http://ja.wikipedia.org/wiki/Raspberry_Pi

さすがに、むき出しのまま使うのも気が引けるので、みんな大好きAmazonでそれっぽいケースを探して装着してみました。
IMG 20130414 024205
こういう小物はスケルトンが良い感じです。

○Raspberry Piを動かすために必要なもの

  1. 700mA確保できるmicroUSB
  2. SDカード
  3. 有線LAN

本来は更に、

  • USBキーボード
  • HDMIケーブル&ディスプレイ

なんかが必要になるんですが、余剰がなかったのと、別に無くても困らなかったので、接続してません。

○Arch LinuxのイメージをSDカードに焼く

Raspberry PiにはOSが入っていません。そのため、OSをインストールしたSDカードを用意し、それをRaspberryPiに設置する必要があります。
インストール可能なOSとして

  • DebianをカスタムしたRaspbian
  • soft float版Debian
  • Arch Linux

などがあります。
他にも、AndroidやFirefoxOSのインストールを行なっている猛者もいますが、今回はArchLinuxを選択してます。
Arch Linuxを選択した理由としては、初期状態でsshが設定されており、LANケーブルさえ挿さっていれば、ディスプレイもキーボードも必要ないという理由からです。

ということで、下記サイトから、ArchLinuxイメージをダウンロードしてきます。
http://www.raspberrypi.org/downloads

zipファイルで、容量は200MBそこそこなので、そこまで時間はかからないと思います。
ここからは、MacOSを前提として、手順を記載します。

・MacにSDカードを挿入
自分の場合は、MacBookAirの11インチのため、USB接続のカードリーダ経由でSDカードを接続します。
・dfコマンドでSDカードのディレクトリを確認する
スクリーンショット 2013 04 14 3 24
面倒なので、詳細な探し方は流します。大体容量でわかると思いますが・・・。

・先ほどダウンロードしてきたArch Linuxのイメージファイルを解凍します。
 ダウンロードしてそのままであれば、ダウンロードディレクトリに入っていると思うので、

unzip ~/Downloads/archlinux-hf-2013-02-11.zip

とします。
 うまく解凍出来れば、Downloadsディレクトリに、archlinux-hf-2013-02-11.img ファイルができているはずです。

・イメージの焼き込み
 ddコマンドを使用して、SDカードへの書き込みを行います。
 コマンド例は、下記の状態を前提としています。

  • ~/Downloads/archlinux-hf-2013-02-11.img が存在する。
  • SDディスクが /dev/disk1s1 として認識されている。
sudo dd if=~/Downloads/archlinux-hf-2013-02-11.img of=/dev/disk1s1 bs=1m

自分の環境では、約2分ほどで書きあがりました。
 あとは、このSDカードを、RaspberryPiに挿せばOKです。

○sshでのログインから、パッケージの最新化

先ほどArchLinuxイメージを書き込んだSDカード、LANケーブル、電源ケーブルをRaspberryPiに接続します。
電源ケーブル差し込むと、勝手に起動が始まります。電源ボタンなるものは存在しません。

なお、電源ケーブルを挿したあと、USBコネクタ脇にあるLEDを確認しましょう。
IMG 20130414 033950
OSが正常に起動されている場合は、5つすべてのLEDが点灯している状態となります。
今回は大丈夫なようなので、このまま進めます。

次に、DHCPサーバのIP払い出しログを確認します。
ディスプレイもキーボードも接続していないため、RaspberryPiのArchLinuxに設定されているIPを確認するためです。
IPが確認できたら、いよいよsshでログインします。

ssh root@[IPアドレス]

パスワードを聞かれることがあるので、『root』と入れておきます。

ログインが出来たら、環境をアップデートしておきましょう

$ pacman -Syu


自分の環境では、パッケージ数も多く30分くらいかかったので、そのまま放置しておきます。

○固定IPを設定する

DHCPのままでは、リブートするたびにIPが変わってしまい、sshで使う上で不便極まりないため、IPを固定にします。
まずは不要になるDHCPサービスを止める

 systemctl disable dhcpcd@eth0.service


そして必要なパッケージをインストール

pacman -S netcfg


パッケージに含まれるサンプルのプロファイルをコピー

cp /etc/network.d/examples/ethernet-static /etc/network.d/raspberrypi


プロファイルの書き換え

vi /etc/network.d/raspberrypi

で、自分の環境では下記の項目を書き換えました。

  • ADDR='[IPアドレス]'
  • GATEWAY='[ルータのIPアドレス]'
  • DNS=('8.8.8.8')

最後のDNSはGooglePublicDNSを利用しています。

起動時にIPの設定を行うように登録

systemctl enable netcfg@raspberrypi


そして最後に再起動

reboot


本体のLEDの点滅が収まったら、設定したIPにsshで接続しIPが設定されていることを確認します。


とりあえず、インストールからSSH接続までできたので、そろそろ使用用途を考え始めることにします。
いろいろなサイトで、いろんな使い方を紹介されているので、迷ってしまいますね・・・。

CentOSからWindows共有ディレクトリをマウントする

CentOSから、Windows共有のディレクトリにアクセスしたくなったので、調べてみました。

Samba-Clientをインストール

Linux + Windows共有 ということで、 samba-client をインストール
yum install samba-client

マウントポイントを作っておく

root でログインしておいて
mkdir /mnt/win_share
とマウントポイントを作っておきます。

マウントコマンド

前提として、Windows共有は
サーバIP :192.168.0.1
共有名  :share
ユーザ名 :user
パスワード:user
で設定されているものとします。
早速マウントします
mount -t cifs -o username=user,password=user //192.168.0.1/share /mnt/win_share
マウントができたら
ls /mnt/win_share/
で、確認してみましょう。
共有されているファイルやディレクトリが参照出来ればマウント成功です。

Windows 2008 R2のHyper-V上に、CentOS6.3をインストールしてみた


社内ネットワーク内に、Linuxの検証環境が必要になったので、Windows 2008 Server R2のHyper-V上にCentOS 6.3をインストールしてみました。

ネットワーク周りが手間だったので、そのあたりを中心に備忘録として残しておこうと思います。


ISOの取得

まずは、インストールを行うためのCentOSのISOイメージを落としてきます。
今回はGUIも不要なため、minimal-EFIで行います。
上記のリンクから適当なミラーサーバを選んで、 CentOS-6.3-x86_64-minimal-EFI.iso をダウンロードしてきます。

仮想マシンイメージの作成

--省略--
というのも不親切なので、注意点だけ
  • メモリの設定は、使用する条件によって差があると思いますが、今回は大した用途に使わないので、512MBくらい振っておきます。
  • インストール時はネットワークが無いほうが後々面倒くさくなくていいので、『ネットワークの構成』では『接続しない』を選択しておきます。
  • 『インストールオプション』で『ブートCD/DVD-ROMからオペレーティング システムをインストールする』にチェックを入れて、先ほどダウンロードしたイメージファイルを設定しておきます。

CentOSのインストール

--省略--
他の親切なサイトを参照して下さい 今回の記事の趣旨はここではないので・・・。

レガシーネットワークの追加

CentOSのインストールが完了したら、仮想マシンをシャットダウンしておきます。
Hyper-Vマネージャー上から『停止』でもしておけばOKです。
停止状態になったら、『設定』を開きます。
設定画面の『ハードウェアの追加』→『レガシーネットワークアダプタ』を選択し、『追加』をクリック 設定画面の『ハードウェアの追加』→『レガシーネットワークアダプタ』を選択し、『追加』をクリック
レガシーネットワークにネットワークアダプタを設定して、OKをクリック MACアドレスは動的でも問題ないとおもいます。 レガシーネットワークにネットワークアダプタを設定
とりあえずここまで終わったら、設定画面を閉じて、CentOSを立ち上げます。

CentOSのネットワーク設定

とりあえずrootでログインしておきます。 ネットワーク用の設定ファイルを作成していきます。
/etc/sysconfig/network
NETWORKING=yes
NETWORKING_IPV6=no
HOSTNAME=[ホスト名をお好みで
GATEWAY=[デフォルトゲートウェイアドレス]
/etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
ONBOOT=yes
TYPE=Ethernet
IPADDR=[設定するIPアドレス]
NETMASKS=[サブネットマスク]
GATEWAY=[デフォルトゲートウェイアドレス]
DEFROUTE=yes
IPV6INIT=no
で、ここまで済んだら、
service network restart
を実行して、ネットワークを活性化させます。
確認のために、デフォルトゲートウェイにpingでも投げておきましょう。
うまくつながらない場合は、設定が間違っているっぽいので、上記のファイルを見直します。
さてこのままですと、DNSが引っ張ってこれませんので、使用するDNSサーバの設定を行います。
 
/etc/resolv.conf
nameserver 8.8.8.8
nameserver 8.8.4.4
今回はIPアドレスも覚えやすいGoogle Public DNSを使用していますが、ここは環境に応じて設定して下さい。
で、再度
service network restart
を実行します。
DNSが効いているかの確認のために、
yum update
でも投げてみてください。
あとはお好きに設定して遊んでみるといいと思います。

Seleniumをソースからビルドする


Seleniumを使用して、Webアプリを自動操作するC#コードを書くお仕事をしておりますが、
公式からダウンロードできるIEDriverServerがちょくちょく落ちてしまい、イライラしていたところ、

『ダウンロードバイナリがダメなら、ソースからビルドすればいいじゃない』

と思いたち、やってみました。


○Seleniumのソースをゲットする

まずは、Seleniumのソース一式を

http://selenium.googlecode.com/svn/trunk

からSVN使ってダウンロードしてきます。


○JDKをゲットする

不覚にも作業用のPCにJDKが入っていなかったため、ダウンロードしてきます。
自分の場合は、何も考えずに JDK 7u9のx64をダウンロード&インストール&PATH設定。
とりあえずは、javaコマンドとjarコマンドが使えればOKのようです。


○README.mdを流し読みする。

英語への苦手意識を取っ払って読んでみましょう。

とりあえず、

  1. go.bat がビルドをおこなうスクリプト
  2. go -T で、タスクの一覧が出てくる
ってことだけわかれば、あとは何とかなります。


○ビルドする

タスクの一覧を眺めてみて、

go //dotnet:dotnet

とコマンドを発行すると、.net framework 4.0用のDLLが作成されるようです。
早速実行します。

D:\src\selenium>go dotnet
(in D:/src/selenium)
Compiling: //dotnet:dotnet as build\dotnet\unmerged\net40\WebDriver.dll
Merging: //dotnet:dotnet as build\dotnet\net40\WebDriver.dll
Compiling: //dotnet:support as build\dotnet\net40\WebDriver.Support.dll
Compiling: //dotnet:core as build\dotnet\net40\ThoughtWorks.Selenium.Core.dll
Compiling: //dotnet:webdriverbackedselenium as build\dotnet\net40\Selenium.WebDriverBackedSelenium.dll

D:\src\selenium>

とりあえず、DLLの方はできたようです。

ちなみに、.net framework 3.5用を作成したい場合は、

go //dotnet:dotnet35

と発行すれば良いっぽいです。(やってませんが・・・。)



合わせてIEDriverServer.exeを作成します。

作成には、下記のコマンドでいけるっぽいです。

go build/cpp/x64/Release/IEDriverServer.exe

今回は64bitで作成しますが、32bitが欲しい場合は、

go build/cpp/Win32/Release/IEDriverServer.exe

で生成されます。

早速実行!

D:\src\selenium>go build/cpp/x64/Release/IEDriverServer.exe
in D:/src/selenium)
Falling back to cpp/prebuilt/x64/Release/IEDriverServer.exe

D:\src\selenium>

あとは、生成したファイルをプロジェクトに組み込んで実行してみましょう。

そのへんのレポートはまた追々。

Macbook Air late 2012を買ってやったこと[アプリ編]



二代目MacbookAirの基本的な設定は済んだので、アプリの復旧です。

基本的にはAppStoreから再度インストールするだけなので、楽ちん



開発用


Xcode Appカテゴリ: 開発ツール
価格: 無料


Macで開発をするにあたって必要なツール類を一気にインストールできる素敵な開発環境



SourceTree (Git/Hg) Appカテゴリ: 開発ツール
価格: 無料


GitのGUIツール。自分はコマンド叩きたい派ですが、これはべんり



Marked Appカテゴリ: 仕事効率化
価格: ¥350


Github形式のmarkdownにも対応していて、ソースのシンタックスハイライトも素敵



ユーティリティ

DoublePane Appカテゴリ: ユーティリティ
価格: ¥450


Windows7でお馴染みのウィンドウを、右半分/左半分/全画面にショートカットキーから設定できるツール。
ターミナル開きながらエディタで編集したい時とか、ディスプレイスペースを有効活用できて便利。



Skitch Appカテゴリ: 仕事効率化
価格: 無料

スクリーンショットなんかに注釈をいれるのに便利。



ドキュメントの作成/管理


MindNode Pro Appカテゴリ: 仕事効率化
価格: ¥850

マインドマップ作成ツール。
操作感もよく、日本語も問題ないので、さくっとマインドマップ書いて、Dropboxへって使い方ができて便利。



Evernote Appカテゴリ: 仕事効率化
価格: 無料

言わずと知れたドキュメントやメモの管理ソフト。
はてなブックマークが対応してから、頻度が激増。ちなみにGalaxySを買った時からプレミアムアカウントで使用してます。


AppStoreから入れているものはこんなものでしょうか。
あとは、AppStore外で入れたものをリストアップ。


JavaScriptの開発には必須のIDE(らしい)。半額キャンペーンで購入しました。
まだあんまり使いこなしていないので、なんとも言えない・・・。


プラグインでの拡張が便利な万能エディタ。
最近のコーディングはもっぱらこいつ。キーバインドを自分好みに変更できるのがGood


iTerm2
MacOS標準のターミナルがあまりにダサイので、即効でインストールするものの一つ。
iTerm2とRictyはもう手放せない組み合わせ。


その他、もろもろインストールしていますが、手放せないアプリはこんなかんじでしょうか。
あとはHomebrewで諸々インストールしていますが、Macというよりは*nix系の話なので、別の機会にでも。

Macbook Air late 2012を買ってやったこと


お盆休みに実家に帰った際に、先代Macbook Air (late 2010)が水没してしまい、お亡くなりになられたので、二代目を買って来ました。
まだ完全復旧してませんが、設定したことのメモを残しておこうと思います。

その1 OS X Mountain Lion Up-to-Date

期限ギリギリで有効だったので、ヨドバシカメラで貰ったチラシを元に、Appleのサイトにアクセス。
個体シリアルを入力すると、AppStore用のコードがメールで送られて来ますので、AppStoreにてサクッとインストール。


その2 EvernoteとDropboxをインストール

それぞれAppStoreと、Dropboxの公式ページから落として来て、同期させます。
特にDropbox上にはドットファイル系を上げているので、重要です。
同期完了を待ちながら、次の工程へ


その3 Xcodeのインストール

開発用端末なので、Xcodeが必須です。
先代MacbookAirはディスクが64GBしかなかったため、コマンドラインツールのみインストールしていましたが、今回は倍の128GBもあるため、遠慮なくインストールします。
やはり物量は正義だと思います。
このあたりで、同期の遅さとXcodeのダウンロードの遅さにイライラしてきたため、Mountain Lionの設定に入ります。


その4 Mountain Lionの設定

このへんは好き好きだと思うので、設定内容だけ

システム環境設定→キーボード
  • キーリピート を最速に設定
  • リピート入力認識までの時間 を最速に設定
  • F1、F2などのすべてのキーを標準のファンクションキーとして使用 にチェック
  • 発光した状態でコンピュータが待機する時間の設定 を『しない』に設定

システム環境設定→共有
  • コンピュータ名 標準だとダサい名前になっているので、好きな名前に変更

システム環境設定→Dock
  • 画面上の位置 ワイドスクリーンなので『左』に設定

システム環境設定→セキュリティとプライバシー
  • ダウンロードしたアプリケーションの実行許可 標準だと動かないアプリがあるので、『すべてのアプリケーションを許可』にチェック

とりあえずこんなかんじで設定してみました。


その5 Javaのインストール

ターミナルから下記コマンドを発行すると、初回のみインストールするダイアログが表示されるので、表示にしたがってインストール
java -version


その6 Homebrewのインストール

そろそろXcodeのインストールが終わっている段階だと思うので、Homebrewのインストール
ターミナルから下記コマンドを発行して、完了です。
ruby <(curl -fsSk https://raw.github.com/mxcl/homebrew/go)


その7 iTerm2をインストール

至高のターミナル。下記サイトからダウンロードして、さくっとインストール
http://www.iterm2.com/#/section/home


その8 zshをインストール

iTerm2にて

brew install zsh

で終わり。ちょーかんたん
iTerm2の設定で、zshを指定しておく。


とりあえず設定はここまで。
アプリは選定中なので、ある程度固まってきたらまたまとめてみます。