<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>橋本商会 &#187; Ubuntu</title>
	<atom:link href="http://shokai.org/blog/archives/tag/ubuntu/feed" rel="self" type="application/rss+xml" />
	<link>http://shokai.org/blog</link>
	<description>なんか作ったりした記録を忘れないうちに書くblog</description>
	<lastBuildDate>Mon, 06 Feb 2012 13:32:44 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
<atom:link rel="hub" href="http://pubsubhubbub.appspot.com/" />
			<item>
		<title>SFCにVPSがやってきた</title>
		<link>http://shokai.org/blog/archives/5705</link>
		<comments>http://shokai.org/blog/archives/5705#comments</comments>
		<pubDate>Fri, 11 Nov 2011 18:11:18 +0000</pubDate>
		<dc:creator>shokai</dc:creator>
				<category><![CDATA[未分類]]></category>
		<category><![CDATA[ERNS-VPS]]></category>
		<category><![CDATA[Tech]]></category>
		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://shokai.org/blog/?p=5705</guid>
		<description><![CDATA[大学で仮想サーバーが無料で借りれる時代が来てしまった。 電源とか配線とか置き場所の問題をクリアして、グローバルIPありport全開root権限ありのサーバーが手に入る。 最近はすごい重い計算をさせるとかはあんまり無くて、 [...]]]></description>
			<content:encoded><![CDATA[<p>
大学で仮想サーバーが無料で借りれる時代が来てしまった。<br />
電源とか配線とか置き場所の問題をクリアして、グローバルIPありport全開root権限ありのサーバーが手に入る。<br />
<br />
最近はすごい重い計算をさせるとかはあんまり無くて、単にどこからでも参照できるwebサーバーが必要だったり、node.js使うのにportがたくさん必要だったり、webサイトをクロールするためにずっと起動しているマシンが必要だったりするわけで実に研究設備として有益ですばらしい。ERNSの人ありがとう。<br />
<br />
<br />
SFCの大学院生は<a href="http://www.mag.keio.ac.jp/erns/news/vps-500b4eba75284eee60f330b530fc-30b530fc30b9306e8a669a13904b7528958b59cb306b306430443066">VPS (個人用仮想サーバ)サービスの試験運用開始について — Erns web site</a>の要項を埋めてメールで申し込める。学内からしか見れないページだけど。<br />
<br />
ちょうどサーバーが2台必要だったので申し込んだ。<br />
<br />
<br />
<br />
スペックはこれ。<br />
<ul>
  <li>CPU : 2.67GHz 1コア</li>
  <li>メインメモリ：512MB</li>
  <li>ネットワーク：動的IPv4アドレス　1アドレス</li>
  <li>ストレージ：20GB</li>
  <li>OSもLinux系から選べる。UbuntuやDebianやFedoraCoreやCentOSなど</li>
</ul>
<br />
<br />
<br />
<a href="https://www.mag.keio.ac.jp/form/vps/">コントロールパネル</a>からサーバー起動できる。<br />
<a href="http://www.flickr.com/photos/shokai/6335207488/" title="SFC ERNS VPS by shokai, on Flickr"><img src="http://farm7.static.flickr.com/6095/6335207488_468598c08c_z.jpg" width="640" height="597" alt="SFC ERNS VPS"></a><br />
<br />
<br />
起動して、右のTerminalのアイコンを押したらJavaのVNCコンソールが起動して、Ubuntuのインストール画面が出た。ハイテク！！<br />
<a href="http://www.flickr.com/photos/shokai/6335207542/" title="SFC ERNS VPS by shokai, on Flickr"><img src="http://farm7.static.flickr.com/6217/6335207542_a53de978f8_o.png" width="670" height="562" alt="SFC ERNS VPS"></a><br />
<br />
<br />
ふつうにUbuntuをセットアップして、sshdを起動して<br />
<pre class="prettyprint">
sudo apt-get install sshd<br />
sudo ifconfig<br />
</pre>
でIP確認して、sshで外から接続できるようにした。<br />
<br />
<br />
あとは自分のMacから<br />
<pre class="prettyprint">
ssh yourname@133.27.xx.xxx<br />
</pre>
で接続できる。<br />
</p>
]]></content:encoded>
			<wfw:commentRss>http://shokai.org/blog/archives/5705/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>BeagleBoard上でmoxaを開発する</title>
		<link>http://shokai.org/blog/archives/4954</link>
		<comments>http://shokai.org/blog/archives/4954#comments</comments>
		<pubDate>Wed, 23 Dec 2009 05:02:59 +0000</pubDate>
		<dc:creator>shokai</dc:creator>
				<category><![CDATA[未分類]]></category>
		<category><![CDATA[BeagleBoard]]></category>
		<category><![CDATA[Mac]]></category>
		<category><![CDATA[moxa]]></category>
		<category><![CDATA[Tech]]></category>
		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://shokai.org/blog/?p=4954</guid>
		<description><![CDATA[Ubuntu 9.04をインストールしたBeagle Boardの上でtalkticのコンパイルとmoxaへ書き込みを行う。刺しっぱなしで開発できるようになるのでとても便利。 xtel technical informa [...]]]></description>
			<content:encoded><![CDATA[<p>
<a href="http://shokai.org/blog/archives/4938">Ubuntu 9.04をインストールしたBeagle Board</a>の上でtalkticのコンパイルとmoxaへ書き込みを行う。刺しっぱなしで開発できるようになるのでとても便利。<br />
<br />
<a href="http://www.uc.sfc.keio.ac.jp/xtel/download/">xtel technical information ＞ download＞ ダウンロード</a>から「開発用エクリプスパッケージ for Mac」をダウンロードしてくる。<br />
<br />
xtel-eclipseの中の<br />
<ul>
  <li>jsc/jsc.jar<br />
    talkticコンパイラ</li>
  <li>avrdude/bin/avrdude<br />
    avrdude実行ファイル。mac portsでインストールできるavrdudeだと書き込みが怪しい。<br />
Ubuntu9.04のaptでインストールできるavrdudeは普通に動くのでこれは必要ない。</li>
  <li>avrdude/etc/avrdude.conf<br />
    avrdudeの設定ファイル</li>
</ul>
この3つを手に入れて適当にアクセスしやすい場所に置いておく。<br />
<br />
<br />
■talkticのコンパイル<br />
javaをインストールする<br />
<pre class="prettyprint">
sudo apt-get install default-jre<br />
which java<br />
</pre>
<br />
コンパイル。source.jsからsource.binを作る<br />
<pre class="prettyprint">
java -jar path/to/jsc.jar -Bsource.bin source.js<br />
</pre>
macでも同じようにバイナリを作れる。<br />
<br />
<br />
■moxaへの書き込み<br />
avrdudeをインストールしておく。Macはeclipseについてるavrdudeを使う。<br />
<pre class="prettyprint">
sudo apt-get install avrdude<br />
which avrdude<br />
</pre>
<br />
BeagleBoardではUSBデバイス名を書き込んであっても /dev/ttyUSB0 になってしまい、しかもrootしかアクセスできないのでsudoを使って書き込む。<br />
<pre class="prettyprint">
sudo avrdude -C path/to/avrdude.conf -p m128 -c stk500v1 -b 9600 -P /dev/ttyUSB0 -F -U eeprom:w:source.bin:r<br />
</pre>
<br />
<br />
Macだとsudoが必要なくて、デバイス名が認識されてるのでこうなる。<br />
<pre class="prettyprint">
avrdude -C path/to/avrdude.conf -p m128 -c stk500v1 -b 9600 -P /dev/tty.usbserial-gemsbok -F -U eeprom:w:source.bin:r<br />
</pre>
<br />
<br />
こんな風に書き込んだりプログラム書いたりしてる<br />
<a href="http://www.flickr.com/photos/shokai/4208176866/" title="ピクチャ 1 by shokai, on Flickr"><img src="http://farm3.static.flickr.com/2764/4208176866_cb0e8b0387_o.png" width="969" height="1147" alt="ピクチャ 1" /></a><br />
<br />
<a href="http://www.flickr.com/photos/shokai/4207412711/" title="ピクチャ 2 by shokai, on Flickr"><img src="http://farm5.static.flickr.com/4049/4207412711_d55fb4a490_o.png" width="961" height="1147" alt="ピクチャ 2" /></a><br />
</p>
]]></content:encoded>
			<wfw:commentRss>http://shokai.org/blog/archives/4954/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Beagle Board rev.BにUbuntu9.04 ARM版をインストール</title>
		<link>http://shokai.org/blog/archives/4938</link>
		<comments>http://shokai.org/blog/archives/4938#comments</comments>
		<pubDate>Wed, 23 Dec 2009 00:22:41 +0000</pubDate>
		<dc:creator>shokai</dc:creator>
				<category><![CDATA[未分類]]></category>
		<category><![CDATA[BeagleBoard]]></category>
		<category><![CDATA[Tech]]></category>
		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://shokai.org/blog/?p=4938</guid>
		<description><![CDATA[既に9.04を動かしてたんだけど、Arduinoにつないだセンサーの値をずっと読ませていたらkernel panicになってブート不能になっていたので再インストールした。大量のセクタエラーが出ていたので、SDカードに何度 [...]]]></description>
			<content:encoded><![CDATA[<p>
既に<a href="http://d.hatena.ne.jp/shokai/20090714/1247572943">9.04を動かしてた</a>んだけど、<a href="http://d.hatena.ne.jp/shokai/20090716/1247733038">Arduinoにつないだセンサーの値をずっと読ませていた</a>らkernel panicになってブート不能になっていたので再インストールした。大量のセクタエラーが出ていたので、SDカードに何度も書き込みすぎて壊れた気がする。<br />
<br />
<a href="http://d.hatena.ne.jp/shokai/20090708/1247052207">前回のインストール方法はメモを取っておいた</a>んだけど、公開されていたrootfsが削除されていてインストール方法も変わっていたのでメモしなおしておく。<br />
同じ9.04なのにUSBシリアル変換チップのFT232RLやemobileや、300GBのUSB外付けHDDが接続できた。ファームウェアをアップデートしたからか、Ubuntuのせいかは不明。<br />
<br />
USBメモリとemobileを接続して動いているところ<br />
<a href="http://www.flickr.com/photos/shokai/4188638510/" title="beagleboard + emobile by shokai, on Flickr"><img src="http://farm3.static.flickr.com/2695/4188638510_83eeaa150a.jpg" width="500" height="375" alt="beagleboard + emobile" /></a><br />
<br />
WiFiとmoxaとUSBメモリ<br />
<a href="http://www.flickr.com/photos/shokai/4176052233/" title="USBメモリ、WiFi、moxaを接続 by shokai, on Flickr"><img src="http://farm3.static.flickr.com/2767/4176052233_8c3b6a2e73.jpg" width="500" height="375" alt="USBメモリ、WiFi、moxaを接続" /></a><br />
<br />
手順<br />
<ol>
  <li>Beagle Boardのファームウェアをアップデート</li>
  <li>SDカードにパーティションを切る</li>
  <li>Ubuntu9.04 ARM版のrootfsを作る</li>
  <li>uImageを作る</li>
  <li>boot.scrを作る</li>
  <li>UbuntuをSDカードに書き込む</li>
  <li>起動する</li>
  <li>emobileやWiFi、Arduino、USB外付けHDDとかを接続してみる</li>
</ol>
<br />
■Beagle Boardの起動手順おさらい<br />
まずボード自体のファームウェアがあって、専用シリアルケーブルで接続して設定できる。ファームウェアはSDカードにu-boot.binという名前にして入れておくとアップデートできる。色々改善されてるみたいなので今回は最初にアップデートしておいた。<br />
<br />
起動は、まずボードのファームウェア→第1パーティションのboot.scr→第1パーティションのuImage→第2パーティションのLinux OS<br />
の順で行われる。<br />
uImageはOS毎に違う物を使う。第2パーティションのOSは自分でビルドして作る物で、rootfsとも呼ばれる。<br />
<br />
つまりboot.scrとuImageとrootfsを用意して、SDカードに書き込まなければならない。<br />
ARM用イメージをビルドするツールはLinuxでしか動かないのと、ファイルシステムの関係でここから先の作業は全てUbuntuデスクトップマシンで行った。でもVMWareのUbuntでも問題なくできる。<br />
<br />
<br />
■Beagle Boardのファームウェアをアップデート<br />
新しいSDカードを用意して、先頭に50MB程度のFAT32パーティションを切る。<br />
SDカードのフォーマットはUbuntuのgpartedでやった。<br />
<br />
<a href="http://elinux.org/BeagleBoardUbuntu#Upgrade_U-Boot">http://elinux.org/BeagleBoardUbuntu#Upgrade_U-Boot</a>に書いてあるとおりにやればいい<br />
<br />
SDカードは/media/boot に自動的にマウントされた。<br />
されなかったら<br />
<pre class="prettyprint">
sudo mkdir /media/boot<br />
sudo mount /dev/sdb1 /media/boot<br />
</pre>
でマウントする。<br />
<br />
アップグレード用のu-boot.binをSDカードの第1パーティションに置く。<br />
<pre class="prettyprint">
wget http://rcn-ee.net/deb/tools/u-boot-beagleboard-2009.08+r37+gitr1590f84007e2b50ad346a482fff89195cb04ff4e-r37.bin<br />
sudo mv u-boot-beagleboard-2009.08+r37+gitr1590f84007e2b50ad346a482fff89195cb04ff4e-r37.bin /media/boot/u-boot.bin<br />
sudo umount /media/boot<br />
</pre>
<br />
Beagle Boardの基板上のシリアルポートピンに専用のケーブルで接続してから、電源を入れる。<br />
WindowsならTeraterm、MacならZTerm、Linuxならminicomで接続するといい。<br />
<br />
で、u-boot.binを読ませてファームをアップグレードするのだけど俺の使ってるのはrev.Bなので、命令名がwikiに掲載されているのとはちょっと違った。helpコマンドで出てくるのを参考にしてこう打ち込んだ<br />
<a href="http://d.hatena.ne.jp/shokai/20091210/1260434249">U-Bootのアップグレード &#8211; 橋本詳解</a>より<br />
<pre class="prettyprint">
mmcinit<br />
fatload mmc 0:1 0x80300000 u-boot.bin<br />
nand unlock<br />
nand ecc sw<br />
nand erase 80000 160000<br />
nand write 0x80300000 80000 160000<br />
nand erase 260000 20000<br />
reset<br />
</pre>
<br />
<br />
■SDカードにパーティションを切る<br />
Ubuntuマシンを持ってるので、gpartedでSDカードを3つのパーティションに分けた。4GBのSDカードを使った。あんまり怪しいメーカーのは使わない方がよさそう。<br />
先頭から順に<br />
<ul>
  <li>FAT32で100MB程度、名前はboot</li>
  <li>ext3で3GBちょっと、名前はubuntu</li>
  <li>swapで700MBぐらい</li>
</ul>
のパーティションを作ったと思う。<br />
<br />
<br />
■Ubuntu9.04 ARM版のrootfsを作る<br />
<a href="http://elinux.org/BeagleBoardUbuntu">http://elinux.org/BeagleBoardUbuntu</a>を参考にビルドする。<br />
<br />
<a href="https://launchpad.net/project-rootstock">rootstock</a>の最新版をダウンロードしてきて、rootstockのバイナリを手に入れる。<br />
<pre class="prettyprint">
sudo apt-get install qemu<br />
wget http://ports.ubuntu.com/pool/main/d/debootstrap/debootstrap_1.0.20~jaunty1_all.deb<br />
sudo dpkg -i debootstrap_1.0.20~jaunty1_all.deb<br />
wget http://launchpad.net/project-rootstock/trunk/0.1/+download/rootstock-0.1.3.tar.gz<br />
tar -zxvf rootstock-0.1.3.tar.gz<br />
cd rootstock-0.1.3<br />
</pre>
<br />
<br />
ARM用ubuntu9.04(jaunty)のビルド。4GBのSDカードに作った3GBのパーティションに入れるのでimagesizeで指定している。<br />
<pre class="prettyprint">
sudo ./rootstock --fqdn beagleboard --login ubuntu --password ubuntu --imagesize 3G --seed gcc,make,linux-firmware,wireless-tools,usbutils --dist jaunty --serial ttyS2 --kernel-image http://rcn-ee.net/deb/kernel/beagle/jaunty/v2.6.29-58cf2f1-oer44.1/linux-image-2.6.29-oer44.1_1.0jaunty_armel.deb<br />
</pre>
デスクトップ環境が欲しければ、&#8211;seedにubuntu-desktopやxfce4を追加指定する。<br />
<br />
それなりに時間がかかる。CPU2.7GHzの環境で2時間ぐらいかかった。<br />
これでarmel-rootfs-[日付].tgzとvmlinuz-2.6.29-oer44.1できる。vmlinuz-*はuImageを作るのに使う。<br />
<br />
<br />
■uImageを作る<br />
vmlinuz-*からuImageを作る。<br />
<pre class="prettyprint">
sudo apt-get install uboot-mkimage<br />
which mkimage<br />
mkimage -A arm -O linux -T kernel -C none -a 0x80008000 -e 0x80008000 -n "Linux" -d ./vmlinuz-* ./uImage<br />
</pre>
できた。<br />
<br />
<br />
■boot.scrを作る<br />
ブートスクリプトを作る。<br />
<br />
ubuntu.cmd というテキストファイルを作る<br />
<pre class="prettyprint">
setenv bootcmd 'mmc init; fatload mmc 0:1 0x80300000 uImage; bootm 0x80300000'<br />
setenv bootargs 'console=ttyS2,115200n8 console=tty0 root=/dev/mmcblk0p2 rootwait rootfstype=ext3 ro vram=12M omapfb.mode=dvi:1024x767MR-16@60'<br />
boot<br />
</pre>
dvi:の所の解像度は自分の画面環境に合わせないと出ない。<br />
<br />
<br />
beagle boardのbootパーティションに書き込むバイナリ形式にする<br />
<pre class="prettyprint">
mkimage -A arm -O linux -T script -C none -a 0 -e 0 -n "Ubuntu 9.04" -d ./ubuntu.cmd ./ubuntu.scr<br />
</pre>
<br />
<br />
<br />
■UbuntuをSDカードに書き込む<br />
SDカードを刺したらマウントされると思うけど、手動マウントの場合<br />
<pre class="prettyprint">
sudo mkdir /media/boot<br />
sudo mkidr /media/ubuntu<br />
sudo mount /dev/sdb1 /media/boot<br />
sudo mount /dev/sdb2 /media/ubuntu<br />
</pre>
でマウント。<br />
<br />
uImage, ubuntu.scr, rootfsの3つを書き込む<br />
<pre class="prettyprint">
sudo cp uImage /media/boot/<br />
sudo cp ubuntu.scr /media/boot/boot.scr<br />
sudo tar xfp armel-rootfs-*.tgz -C /media/ubuntu<br />
</pre>
<br />
<br />
最初からキーボードは認識するが、ネットワークに接続できないとemacsがインストールできないので、SDカード上でUbuntuの設定をいじっておく。<br />
/media/ubuntu/etc/netowrk/interfaces を編集<br />
<pre class="prettyprint">
auto lo<br />
iface lo inet loopback<br />
<br />
auto eth0<br />
iface eth0 inet dhcp<br />
</pre>
これでUSBイーサネットアダプタが認識する。<br />
<br />
<br />
/media/ubuntu/etc/fstab を編集。swapを有効にする<br />
<pre class="prettyprint">
proc /proc proc defaults 0 0<br />
/dev/mmcblk0p3 swap swap defaults 0 0<br />
</pre>
<br />
取り外す<br />
<pre class="prettyprint">
cd /media/boot<br />
sync<br />
cd /media<br />
sudo umount /media/boot<br />
cd /media/ubuntu<br />
sync<br />
cd /media<br />
sudo umount /media/ubuntu<br />
</pre>
うちのSDカードリーダだと手動でsyncしないとなかなか書き込んでくれなかった<br />
<br />
<br />
■起動する<br />
USBにハブ経由でLANとキーボードを接続、HDMIで画面も起動、SDカードを入れてbeagle boardを起動する。<br />
念のためにシリアルケーブルを接続しておいて見ておいた方がいい。カウントダウンを10秒待つか自分でbootって打ちこんでUbuntu9.04を起動させる。<br />
<br />
rootstockでイメージ作った時に指定したusername,passwordでログインする。<br />
パスワードを変更してsshdを起動すれば、あとは普通のLinuxとして使える。<br />
<br />
<br />
■emobileやWiFi、Arduino、USB外付けHDDとかを接続してみる<br />
USBデバイスがちゃんと認識するようになったのでいろいろできる。特にHDDかUSBメモリを付けてそっちに作業領域とswapを置くと、SDカードが壊れる事が少なくなってよいかもしれない。<br />
<ul>
  <li><a href="http://d.hatena.ne.jp/shokai/20090714/1247572943">BeagleBoardにUbuntuセットアップ(GUIなし)、sshdを入れてリモートログインしてみる &#8211; 橋本詳解</a></li>
  <li><a href="http://d.hatena.ne.jp/shokai/20090714/1247573774">いろいろインストールして環境を整える &#8211; 橋本詳解</a></li>
  <li><a href="http://d.hatena.ne.jp/shokai/20091210/1260459564">WiFiを使う &#8211; 橋本詳解</a></li>
  <li><a href="http://d.hatena.ne.jp/shokai/20091210/1260477622">WiFiを起動時に接続する &#8211; 橋本詳解</a></li>
  <li><a href="http://d.hatena.ne.jp/shokai/20091211/1260480479">外付けHDD、USBメモリをマウント &#8211; 橋本詳解</a></li>
  <li><a href="http://d.hatena.ne.jp/shokai/20091211/1260481798">USBシリアル変換（FT232RLチップ）でシリアル通信する &#8211; 橋本詳解</a></li>
  <li><a href="http://d.hatena.ne.jp/shokai/20091211/1260554931">USBメモリを作業領域とswapにマウント &#8211; 橋本詳解</a></li>
  <li><a href="http://d.hatena.ne.jp/shokai/20091215/1260909320">BeagleBoardにemobileを接続する &#8211; 橋本詳解</a><br />
</ul>
</p>
]]></content:encoded>
			<wfw:commentRss>http://shokai.org/blog/archives/4938/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Cでgearman workerを書いてRubyのclientから呼び出す</title>
		<link>http://shokai.org/blog/archives/4919</link>
		<comments>http://shokai.org/blog/archives/4919#comments</comments>
		<pubDate>Mon, 14 Dec 2009 19:18:32 +0000</pubDate>
		<dc:creator>shokai</dc:creator>
				<category><![CDATA[未分類]]></category>
		<category><![CDATA[C言語]]></category>
		<category><![CDATA[gearman]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[Tech]]></category>
		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://shokai.org/blog/?p=4919</guid>
		<description><![CDATA[gearmandをソースからインストールして、Cライブラリのlibgearmanが使えるようになった。 これでC言語でworkerを作ってRubyのclientから呼び出せる。環境はUbuntu9.04とgearmand [...]]]></description>
			<content:encoded><![CDATA[<p>
<a href="http://d.hatena.ne.jp/shokai/20091214/1260740507">gearmandをソースからインストール</a>して、Cライブラリのlibgearmanが使えるようになった。<br />
<br />
これでC言語でworkerを作ってRubyのclientから呼び出せる。環境はUbuntu9.04とgearmand0.11<br />
<br />
<br />
■Cでworkerを書く<br />
str_reverseというアビリティを持つworkerを作る。<br />
ほぼ<a href="http://gearman.org/docs/api/">APIドキュメント</a>のままだが、jobの引数を受け取るのと、値を返せるようにがんばった。ジョブ失敗した時とかのエラー処理全然書いてない。たぶん<a href="http://gearman.org/docs/api/group__gearman__constants.html#g200f3d324fd4c4bfee16143c8f7b672a">enum gearman_return_t</a>を返せばいいんだろうけど<br />
<br />
strreverse-worker.c<br />
<pre class="prettyprint">
//&nbsp;文字列をreverseして返すworker<br />
#include&nbsp;&lt;stdio.h&gt;<br />
#include&nbsp;&lt;stdlib.h&gt;<br />
#include&nbsp;&lt;string.h&gt;<br />
#include&nbsp;&lt;unistd.h&gt;<br />
#include&nbsp;&lt;libgearman/gearman.h&gt;<br />
<br />
void&nbsp;*job_str_reverse(gearman_job_st&nbsp;*job,&nbsp;void&nbsp;*cb_arg,&nbsp;size_t&nbsp;*result_size,<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;gearman_return_t&nbsp;*ret_ptr)<br />
{<br />
&nbsp;&nbsp;char&nbsp;*str&nbsp;=&nbsp;(char&nbsp;*)gearman_job_workload(job);<br />
&nbsp;&nbsp;int&nbsp;len&nbsp;=&nbsp;strlen(str);<br />
&nbsp;&nbsp;printf("str:%s&nbsp;&nbsp;length:%d\n",&nbsp;str,&nbsp;len);<br />
<br />
&nbsp;&nbsp;char&nbsp;reverse[len];<br />
&nbsp;&nbsp;for(int&nbsp;i&nbsp;=&nbsp;0;&nbsp;i&nbsp;&lt;&nbsp;len;&nbsp;i++){<br />
&nbsp;&nbsp;&nbsp;&nbsp;reverse[i]&nbsp;=&nbsp;str[len-i-1];&nbsp;//&nbsp;文字列を逆にする<br />
&nbsp;&nbsp;}<br />
<br />
&nbsp;&nbsp;char&nbsp;*result&nbsp;=&nbsp;strdup(reverse);&nbsp;//&nbsp;結果の文字列はコピーしてポインタで返す<br />
&nbsp;&nbsp;*result_size=&nbsp;gearman_job_workload_size(job);<br />
&nbsp;&nbsp;*ret_ptr=&nbsp;GEARMAN_SUCCESS;<br />
&nbsp;&nbsp;return&nbsp;result;<br />
}<br />
<br />
<br />
int&nbsp;main(int&nbsp;argc,&nbsp;char&nbsp;*argv[])<br />
{<br />
&nbsp;&nbsp;gearman_return_t&nbsp;ret;<br />
&nbsp;&nbsp;gearman_worker_st&nbsp;worker;<br />
<br />
&nbsp;&nbsp;gearman_worker_create(&amp;worker);<br />
&nbsp;&nbsp;gearman_worker_add_server(&amp;worker,&nbsp;"127.0.0.1",&nbsp;7003);<br />
&nbsp;&nbsp;gearman_worker_add_function(&amp;worker,&nbsp;"str_reverse",&nbsp;0,&nbsp;job_str_reverse,&nbsp;NULL);<br />
&nbsp;&nbsp;<br />
&nbsp;&nbsp;while(1)&nbsp;gearman_worker_work(&amp;worker);&nbsp;//&nbsp;ジョブ登録したらループで待つ<br />
<br />
&nbsp;&nbsp;gearman_worker_free(&amp;worker);<br />
&nbsp;&nbsp;return&nbsp;0;<br />
}<br />
</pre>
<br />
<br />
Makefile<br />
<pre class="prettyprint">
# Linux用Makefile<br />
SRC = strreverse-worker.c<br />
DST = strreverse-worker<br />
<br />
prefix=/usr/local<br />
INCPATH=$(prefix)/include<br />
LIBPATH=$(prefix)/lib<br />
<br />
GEAR_LIBS=$(LIBPATH)/libgearman.a<br />
<br />
all:<br />
	g++ -O $(SRC) -o $(DST) -I$(INCPATH)/libgearman -L. -L$(LIBPATH) $(GEAR_LIBS)<br />
</pre>
makeするとstrreverse-workerができる。<br />
<br />
<br />
■Rubyでclientを書く<br />
xing-gearman-serverを使うといい<br />
<ul>
  <li><a href="http://d.hatena.ne.jp/shokai/20091126/1259242737">Gearmanインストール、Rubyから使う &#8211; 橋本詳解</a></li>
  <li><a href="http://d.hatena.ne.jp/shokai/20091128/1259398270">shellのコマンドをtask登録してworkerに実行させる &#8211; 橋本詳解</a></li>
</ul>
<br />
client書く。実行時引数を一つずつstr_reverseに登録するclient。<br />
strreverse-client.rb<br />
<pre class="prettyprint">
#!/usr/bin/env&nbsp;ruby<br />
require&nbsp;'rubygems'<br />
require&nbsp;'gearman'<br />
<br />
c&nbsp;=&nbsp;Gearman::Client.new(['localhost:7003'])<br />
taskset&nbsp;=&nbsp;Gearman::TaskSet.new(c)<br />
<br />
ARGV.each{|str|<br />
&nbsp;&nbsp;puts&nbsp;"add&nbsp;task&nbsp;#{str}"<br />
&nbsp;&nbsp;task&nbsp;=&nbsp;Gearman::Task.new('str_reverse',&nbsp;str)<br />
&nbsp;&nbsp;task.on_complete{|result|<br />
&nbsp;&nbsp;&nbsp;&nbsp;puts&nbsp;"return:&nbsp;#{str}&nbsp;=&gt;&nbsp;#{result}"&nbsp;#&nbsp;文字列が逆になって返ってくる<br />
&nbsp;&nbsp;}<br />
&nbsp;&nbsp;taskset.add_task(task)<br />
}<br />
taskset.wait(100)&nbsp;#&nbsp;wait&nbsp;100(sec)<br />
</pre>
<br />
<br />
■動かしてみる<br />
worker動かす<br />
<pre class="prettyprint">
./strreverse-worker<br />
</pre>
<br />
clientから3つ文字列登録<br />
<pre class="prettyprint">
ruby strreverse-client.rb hello konitiwa asdfhujiko<br />
</pre>
<br />
すると文字列返ってくる<br />
<pre class="prettyprint">
add task hello<br />
add task konitiwa<br />
return: hello => olleh<br />
add task asdfhujiko<br />
return: konitiwa => awitinok<br />
return: asdfhujiko => okijuhfdsa<br />
</pre>
<br />
worker側の標準出力はこうなってた<br />
<pre class="prettyprint">
str:hello  length:5<br />
str:konitiwa  length:8<br />
str:asdfhujiko  length:10<br />
</pre>
<br />
<br />
workerを3つバックグラウンドで起動しておく<br />
<pre>
./strreverse-worker&#038;<br />
./strreverse-worker&#038;<br />
./strreverse-worker&#038;<br />
</pre>
<br />
<br />
凄い勢いで処理されてるので非同期になってるのかよくわからない<br />
<pre class="prettyprint">
ruby strreverse-client.rb hello konitiwa asdfhujiko aaiiaaiiaaii hogehogehogehoge mmmasdffajkl23rwdfv ahsdga9sd8uf9p8u nbjkasdoif98pu<br />
</pre>
<pre class="prettyprint">
add task hello<br />
add task konitiwa<br />
return: hello => olleh<br />
add task asdfhujiko<br />
return: konitiwa => awitinok<br />
add task aaiiaaiiaaii<br />
return: asdfhujiko => okijuhfdsa<br />
add task hogehogehogehoge<br />
return: aaiiaaiiaaii => iiaaiiaaiiaa<br />
add task mmmasdffajkl23rwdfv<br />
return: hogehogehogehoge => egohegohegohegoh<br />
add task ahsdga9sd8uf9p8u<br />
return: mmmasdffajkl23rwdfv => vfdwr32lkjaffdsammm<br />
add task nbjkasdoif98pu<br />
return: ahsdga9sd8uf9p8u => vfdu8p9fu8ds9agd<br />
return: nbjkasdoif98pu => vfdu8up89fiods<br />
</pre>
</p>
]]></content:encoded>
			<wfw:commentRss>http://shokai.org/blog/archives/4919/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Inspiron Mini9に外付けUSB RAID HDDをつけてファイルサーバー化した</title>
		<link>http://shokai.org/blog/archives/4839</link>
		<comments>http://shokai.org/blog/archives/4839#comments</comments>
		<pubDate>Sat, 24 Oct 2009 12:00:47 +0000</pubDate>
		<dc:creator>shokai</dc:creator>
				<category><![CDATA[未分類]]></category>
		<category><![CDATA[InspironMini9]]></category>
		<category><![CDATA[Tech]]></category>
		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://shokai.org/blog/?p=4839</guid>
		<description><![CDATA[Ubuntuが入ってるDellのInspiron Mini9を回収してきたので、IO DATAの外付けRAID HDDをつけてファイルサーバーにした。 もともとうちではGLANTANKを使ってたんだけど、部屋の掃除をした [...]]]></description>
			<content:encoded><![CDATA[<p>
Ubuntuが入ってるDellのInspiron Mini9を回収してきたので、IO DATAの外付けRAID HDDをつけてファイルサーバーにした。<br />
もともとうちではGLANTANKを使ってたんだけど、部屋の掃除をしたら急にファンの音が気になるようになったので、もう3年以上使ってるし入れ替える事にした。<br />
inspironは4GBのSSDでファンレス。外付けHDDもファンレスなのでとても静かになった。<br />
<br />
<br />
<div class="amazlet-box" style="margin-bottom:0px;"><div class="amazlet-image" style="float:left;"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/B001AG5OAE/shokai-22/ref=nosim/" name="amazletlink" target="_blank"><img src="http://ecx.images-amazon.com/images/I/31miUJULNsL._SL160_.jpg" alt="I-O DATA ミラーリング/ストライピング RAID対応USBハードディスク 2TB HDC2-U2.0" style="border: none;" /></a></div><div class="amazlet-info" style="float:left;margin-left:15px;line-height:120%"><div class="amazlet-name" style="margin-bottom:10px;line-height:120%"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/B001AG5OAE/shokai-22/ref=nosim/" name="amazletlink" target="_blank">I-O DATA ミラーリング/ストライピング RAID対応USBハードディスク 2TB HDC2-U2.0</a><div class="amazlet-powered-date" style="font-size:7pt;margin-top:5px;font-family:verdana;line-height:120%">posted with <a href="http://www.amazlet.com/browse/ASIN/B001AG5OAE/shokai-22/ref=nosim/" title="I-O DATA ミラーリング/ストライピング RAID対応USBハードディスク 2TB HDC2-U2.0" target="_blank">amazlet</a> at 09.10.24</div></div><div class="amazlet-detail">アイ・オー・データ (2008-06-20)<br />売り上げランキング: 675<br /></div><div class="amazlet-review" style="margin-top:10px; margin-bottom:10px"><div class="amazlet-review-average" style="margin-bottom:5px">おすすめ度の平均: <img src="http://images-jp.amazon.com/images/G/09/x-locale/common/customer-reviews/stars-4-0.gif" alt="4.0" /></div><img src="http://images-jp.amazon.com/images/G/09/x-locale/common/customer-reviews/stars-5-0.gif" alt="5" /> Cost-Efficient &#038; Convenient!<br /><img src="http://images-jp.amazon.com/images/G/09/x-locale/common/customer-reviews/stars-4-0.gif" alt="4" /> 結構いいｗｗ<br /><img src="http://images-jp.amazon.com/images/G/09/x-locale/common/customer-reviews/stars-5-0.gif" alt="5" /> 順調です<br /><img src="http://images-jp.amazon.com/images/G/09/x-locale/common/customer-reviews/stars-5-0.gif" alt="5" /> ミラーでのフォーマットが時間がかかる<br /><img src="http://images-jp.amazon.com/images/G/09/x-locale/common/customer-reviews/stars-4-0.gif" alt="4" /> 動画専門で使っています<br /></div><div class="amazlet-link" style="margin-top: 5px"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/B001AG5OAE/shokai-22/ref=nosim/" name="amazletlink" target="_blank">Amazon.co.jp で詳細を見る</a></div></div><div class="amazlet-footer" style="clear: left"></div></div>
<br />
<br />
■ほしい機能<br />
ただのNASではなく<br />
<ul>
  <li>音が静か</li>
  <li>RAID1でミラーリングしてデータが消えないようにしたい</li>
  <li>家のdynamic dnsを更新</li>
  <li>家の外からもe-mobileでsshでログインできたり、mercurialやgitのリポジトリを置ける</li>
  <li>rsyncで大学にある巨大なファイルをダウンロードさせておく作業を任せられる</li>
  <li>sambaでwindowsのファイル共有にも参加する</li>
  <li>念のためモニタとキーボードも付いていて、ネットワークが壊れている時も操作しやすい</li>
  <li>Inspiron Mini9と外付けHDDどちらが壊れても迅速に入れ替え・復旧できる構成にしたい</li>
  <li>apacheとhgweb.cgiを動かしてmercurialのリポジトリビューアを置きたい</li>
  <li>巨大ファイルのやりとりのためにapacheは動かしておきたい</li>
</ul>
<br />
<br />
■HDC2-U2.0の設定<br />
まずRAID1に設定し直す。後でやると中身がフォーマットされるので。<br />
<br />
パソコンに接続しないで、ACアダプタだけ刺す。<br />
電源モードスイッチをONに切り替える。起動する。<br />
<br />
裏にあるRAID SETUPボタンを3秒押し続けると電源LEDが点滅しはじめる。<br />
前側のFUNCボタンを押す毎に電源LEDの色が変わる。<br />
<br />
青：RAID0 ストライピング<br />
紫：RAID1 ミラーリング<br />
緑：マルチディスクモード<br />
なので、紫にする。裏側のRAID SETUPボタンを押して設定終了。<br />
<br />
パソコンに接続して容量が1TBに減っている事を確認。これでミラーリングモードになった<br />
<br />
<br />
■HDC2-U2.0のフォーマット<br />
inspiron mini9に接続して起動。<br />
<pre>
sudo apt-get install gparted<br />
which gparted<br />
sudo gparted<br />
</pre>
gpartedでHDDのパーティションをフォーマットする。ubuntuをインストールする時に出てくるツール。<br />
<br />
全部ext3でフォーマットした。しばらく待つ。<br />
<br />
<br />
■HDC2-U2.0をマウントする<br />
マウントポイントを作っておく<br />
<pre>
mkdir /home/sho/ex<br />
</pre>
<br />
<br />
/dev/sdb1としてHDC2-U2.0が認識されていたので<br />
/etc/fstab を編集<br />
<pre class="prettyprint">
/dev/sda2		/			ext3 defaults	0 0<br />
proc			/proc			proc defaults	0 0<br />
/dev/sdb1		/home/sho/ex		ext3 defaults	0 0<br />
</pre>
自分のホームディレクトリの下に置く。<br />
<br />
マウントする<br />
<pre>
sudo mount -a<br />
</pre>
<br />
これで/home/sho/ex/ 以下はRAIDで守られる。<br />
<br />
<br />
■sambaのインストールと設定<br />
<pre>
sudo apt-get install samba<br />
</pre>
<br />
/etc/samba/smb.conf を編集<br />
<pre class="pretty-print">
[global]<br />
   workgroup = MSHOME<br />
<br />
   coding system = UTF-8<br />
   doc charset = cp932<br />
   unix charset = UTF-8<br />
   wins support = yes<br />
<br />
[ex]<br />
   path = /home/sho/ex<br />
   comment = ex<br />
   browseable = yes<br />
   read only = no<br />
   create mask = 0755<br />
   directory mask = 0755<br />
</pre>
<br />
sambaからはHDC2-U2.0の中以外は見える必要が無いので、[homes]とかは ; で全部コメントアウトした。<br />
<br />
<br />
samba再起動<br />
<pre>
sudo /etc/init.d/samba restart<br />
</pre>
<br />
<br />
■Dynamic DNSの更新<br />
<a href="http://www.mydns.jp/">mydns.jp</a>を使っているんだけど、ここはDiCEとかを使わなくてもBasic認証で更新できる。<br />
<br />
crontab -e で設定追加<br />
<pre class="prettyprint">
*/10 * * * * wget --spider http://mydns-username:password@www.mydns.jp/login.html<br />
</pre>
10分おきに更新する。<br />
<br />
<br />
■その他<br />
あとはまあ普通のLinuxなので、mercurialとかgitとかapacheをインストールしておしまい。<br />
SSDの容量を稼ぐために、Inspiron Mini9に入ってたゲームやGIMPやEvolutionメールやOpenOfficeを全部消した。<br />
</p>
]]></content:encoded>
			<wfw:commentRss>http://shokai.org/blog/archives/4839/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ML115 + Ubuntu9.10 64bit環境で音を出す</title>
		<link>http://shokai.org/blog/archives/4832</link>
		<comments>http://shokai.org/blog/archives/4832#comments</comments>
		<pubDate>Sat, 17 Oct 2009 14:30:09 +0000</pubDate>
		<dc:creator>shokai</dc:creator>
				<category><![CDATA[未分類]]></category>
		<category><![CDATA[64bit]]></category>
		<category><![CDATA[ML115]]></category>
		<category><![CDATA[sound]]></category>
		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://shokai.org/blog/?p=4832</guid>
		<description><![CDATA[元サーバーマシンを、開発用のデスクトップマシンにした。 Windowsをインストールするとすんなりいくらしいんだけど、64bit版Ubuntuで音を出そうとすると大変だった。 PCIスロットが3.3V用で、5V用のサウン [...]]]></description>
			<content:encoded><![CDATA[<p>
元サーバーマシンを、開発用のデスクトップマシンにした。<br />
Windowsをインストールするとすんなりいくらしいんだけど、64bit版Ubuntuで音を出そうとすると大変だった。<br />
PCIスロットが3.3V用で、5V用のサウンドカードだと切り欠きが合わなくて刺さらない。そして刺さっても64bitでのまともなサウンドドライバが無くて音がホワイトノイズだらけになる。<br />
<br />
このUSBスピーカーを刺して他のサウンドデバイスを刺さないようにすれば音が出る。音質はたぶんそんなに良くないけど。<br />
<br />
<div class="amazlet-box" style="margin-bottom:0px;"><div class="amazlet-image" style="float:left;"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/B0002KV3UY/shokai-22/ref=nosim/" name="amazletlink" target="_blank"><img src="http://ecx.images-amazon.com/images/I/316REACW1FL._SL160_.jpg" alt="SANWA SUPPLY MM-SPU2WH USBスピーカー ホワイト" style="border: none;" /></a></div><div class="amazlet-info" style="float:left;margin-left:15px;line-height:120%"><div class="amazlet-name" style="margin-bottom:10px;line-height:120%"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/B0002KV3UY/shokai-22/ref=nosim/" name="amazletlink" target="_blank">SANWA SUPPLY MM-SPU2WH USBスピーカー ホワイト</a><div class="amazlet-powered-date" style="font-size:7pt;margin-top:5px;font-family:verdana;line-height:120%">posted with <a href="http://www.amazlet.com/browse/ASIN/B0002KV3UY/shokai-22/ref=nosim/" title="SANWA SUPPLY MM-SPU2WH USBスピーカー ホワイト" target="_blank">amazlet</a> at 09.10.17</div></div><div class="amazlet-detail">サンワサプライ <br />売り上げランキング: 798<br /></div><div class="amazlet-review" style="margin-top:10px; margin-bottom:10px"><div class="amazlet-review-average" style="margin-bottom:5px">おすすめ度の平均: <img src="http://images-jp.amazon.com/images/G/09/x-locale/common/customer-reviews/stars-4-0.gif" alt="4.0" /></div><img src="http://images-jp.amazon.com/images/G/09/x-locale/common/customer-reviews/stars-3-0.gif" alt="3" /> ちょっと不便。<br /><img src="http://images-jp.amazon.com/images/G/09/x-locale/common/customer-reviews/stars-4-0.gif" alt="4" /> 安いし簡単<br /><img src="http://images-jp.amazon.com/images/G/09/x-locale/common/customer-reviews/stars-4-0.gif" alt="4" /> 値段以上の価値はあります<br /><img src="http://images-jp.amazon.com/images/G/09/x-locale/common/customer-reviews/stars-3-0.gif" alt="3" /> 音は及第点（値段の割には）<br /><img src="http://images-jp.amazon.com/images/G/09/x-locale/common/customer-reviews/stars-5-0.gif" alt="5" /> 価格以上の音質<br /></div><div class="amazlet-link" style="margin-top: 5px"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/B0002KV3UY/shokai-22/ref=nosim/" name="amazletlink" target="_blank">Amazon.co.jp で詳細を見る</a></div></div><div class="amazlet-footer" style="clear: left"></div></div>
<br />
<br />
他にも、Creative Sound Blaster 5.1 VXを使うと音が全部ホワイトノイズになってしまうが、<br />
<pre>
alsamixer -Dpulse<br />
alsamixer -Dhw<br />
</pre>
で音量をギリギリまで絞ると一応聞こえなくもなかった。<br />
参考：<a href="https://lists.ubuntu.com/archives/ubuntu-jp/2009-April/001748.html">[ubuntu-jp:1749] Jaunty において Creative Sound Blaster 5.1 VX 上で再生する音声が全てホワイトノイズに</a><br />
<br />
<br />
あとはAppleのMac用の小さいキーボードと、Microsoftの光学式マウスの安い奴を使ってる。<br />
<br />
<br />
<br />
</p>
]]></content:encoded>
			<wfw:commentRss>http://shokai.org/blog/archives/4832/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>AspireOneにUbuntuをインストールして使っている</title>
		<link>http://shokai.org/blog/archives/4802</link>
		<comments>http://shokai.org/blog/archives/4802#comments</comments>
		<pubDate>Sun, 20 Sep 2009 10:59:23 +0000</pubDate>
		<dc:creator>shokai</dc:creator>
				<category><![CDATA[未分類]]></category>
		<category><![CDATA[AspireOne]]></category>
		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://shokai.org/blog/?p=4802</guid>
		<description><![CDATA[春頃にTeleshadowの実装のために、修理品のAspireOneをNTTストアで2万ちょっとで買って使ってたんだけど、修論が終わってまあTeleshadow動かす為だけに置いておくのももったいないのでUbuntu9. [...]]]></description>
			<content:encoded><![CDATA[<p>
春頃にTeleshadowの実装のために、修理品の<a href="http://www2.acer.co.jp/one/">AspireOne</a>をNTTストアで2万ちょっとで買って使ってたんだけど、修論が終わってまあTeleshadow動かす為だけに置いておくのももったいないのでUbuntu9.04を入れてみた。<br />
これけっこうよかった。最近は開発がLinux中心なので、持ち歩く事も多い。<br />
<br />
せっかくなのでセットアップをまとめておく<br />
<br />
<br />
■Windows<br />
Windowsはもうあまり使ってない。<br />
AspireOneの起動時に winlogon.exe がエラーを出してたんだけどこれは「アプリケーションの追加と削除」からLaunch Managerを削除したら出なくなった。<br />
そもそもメモリが1GBだけなので、Windows動かすのがけっこうつらい。<br />
<br />
<br />
■インストール<br />
参考：<a href="http://d.hatena.ne.jp/shokai/20090904/1252013003">AspireOneにUbuntu9.04インストール &#8211; 橋本詳解</a><br />
CD-ROMドライブが無いので<a href="http://unetbootin.sourceforge.net/">UNetboot</a>を使ってインストールした。<br />
デスクトップ版Ubuntu9.04のisoイメージをダウンロードしてきて、UNetbootのWindows版で空のUSBメモリ(1GB)をUbuntuインストールディスク化した。<br />
AspireOneに刺して、BIOS起動時にF12押してUSBデバイスからbootするようにすると、GUIのインストーラが出てくる。<br />
パーティションをUbuntu 60GB、Windows 40GBに切り直してインストールした。<br />
<br />
内臓カメラ、キーボード、無線もすぐ使えた。<br />
<br />
<br />
インストール中<br />
<a href="http://www.flickr.com/photos/shokai/3896401006/" title="Ubuntuインストール中 by shokai, on Flickr"><img src="http://farm3.static.flickr.com/2489/3896401006_9d8d7ac470.jpg" width="500" height="375" alt="Ubuntuインストール中" /></a><br />
<br />
<br />
■e-mobile<br />
最近イーモバイルのD23HWを買った。<br />
GUIとCUIそれぞれから使える。電波強度が表示できないけど実用上問題は無い。<br />
pon, poffコマンドの場合：<a href="http://d.hatena.ne.jp/shokai/20090904/1252014255">emobile D23HWを使う（CUIで） &#8211; 橋本詳解</a><br />
<br />
gnome-pppの場合：<a href="http://d.hatena.ne.jp/shokai/20090904/1252014255">emobile D23HWを使う（CUIで） &#8211; 橋本詳解</a><br />
<br />
<br />
<br />
■デスクトップの設定<br />
ワークスペースを2&#215;2に増やして、ウィンドウをキーボードショートカットでワークスペース間移動できるようにする。<br />
<br />
キーボードショートカットの設定から、ctrl+上下左右キーで上下左右のワークスペースに移動するよう設定。ctrl+shift+上下左右キーでウィンドウを上下左右のワークスペースに移動するように設定。<br />
<br />
左上Firefoxとemacs、右上Terminal、左下ThunderbirdとSkypeとPidgin、右下予備というふうに置いておくと、全部フルスクリーンにしておいても画面切り替えでなんとかなるので小さい画面でも戦える。<br />
<br />
あとapt関係のアップデートと、ssh, zsh, emacs、mercurial、ruby関連、opencv、boostなどのインストールをする。<br />
参考：<a href="http://d.hatena.ne.jp/shokai/20090401/1238614959">Thinkpad X32にUbuntu 8.10 Desktop版をCDから入れた &#8211; 橋本詳解</a><br />
<br />
<br />
<br />
■キーボード<br />
キーボードの設定から「capslockをもう一つのctrlキーに設定」を選択<br />
日本語入力。SCIMの全体設定で開始に変換キー、終了に無変換キーを割り当てる。他は全部キーを削除する。<br />
<br />
これでMacと同じように、ホームポジションに置いた時親指で日本語入力をON/OFFできるようになる。<br />
<br />
キータッチはネットブックの中ではけっこういいと思う。キーも大きくて押しやすいし、記号キーの配列も変態じゃないからコード書くのにも支障ない。<br />
<br />
<br />
■電源<br />
バッテリーは2時間もつ。ACアダプタはinspiron miniのが同じ電圧だったのでそっちを持ち歩いている。<br />
<br />
<br />
■WiFi<br />
Gnome標準の最初からついてるやつでばっちり<br />
<br />
<br />
■サスペンド<br />
ちゃんとできる。よく使ってます<br />
<br />
<br />
■Firefox<br />
最初から入ってる。拡張のHideMenubarを入れると画面を有効活用できる。<br />
あとはGreasemonkeyでLDRize、Autopagerize、minibuffer<br />
拡張のIt&#8217;s all text、Adblock plus、SBMカウンタ、TabMixPlux、Tomblooなど。<br />
ブックマークは普段使ってるMacbookProからHTML形式でエクスポート・インポートした。<br />
FlashPlayer10もAdobeのサイトでインストールできる。<br />
<br />
スムーズスクロールはoffにする。<br />
<br />
■Thunerbird<br />
<pre>
sudo apt-get install thunderbird<br />
</pre>
Windowsからもってきたプロファイルがそのまま使えた。<br />
~/.mozilla-thunderbird/の下にコピーすれば読み込まれる。<br />
<br />
<br />
■IM<br />
PidginでMSNメッセンジャーとGoogleTalkが使える。Skypeはダウンロードしてきてインストール。<br />
Pidginはすぐ[ツール]→[個人情報]で「コンタクトリスとの人のみ許可」に設定しないとspamがいっぱい来る。<br />
<br />
<br />
■Gyazo<br />
<a href="http://yaa.no-ip.org/~yaa/diary/20071108.html#p04">Linux版</a>がある。<br />
/usr/local/bin/gyazo として置いて、画面の上のパネルにショートカットを追加してすぐ使えるようにする。<br />
<br />
<br />
■DropBox<br />
<a href="http://www.getdropbox.com/">Linux版</a>がある。インストール後に再起動すると使える。<br />
メニューにも登録されるし、dropboxコマンドからも動かせる。<br />
<pre>
dropbox start<br />
dropbox stop<br />
dropbox status<br />
</pre>
<br />
<br />
<br />
■Office<br />
OpenOffice.orgが入っている。Word/Excel/PowerPointを見るのは問題ない。excelの高度なマクロなどは再現されてるか不安で、結局あまり使ってない。<br />
<br />
<br />
■プロジェクタ<br />
設定が難しい。10分ぐらいかけても画面が出せなかった。<br />
プレゼン前に確認しておいた方がいい。<br />
<br />
<br />
<br />
<br />
というわけで長時間プログラミングはしたくない環境だけど、おでかけしながらサーバーのタスクを監視したり簡単なスクリプトを書いたりする環境はできた。<br />
よかったよかった<br />
</p>
]]></content:encoded>
			<wfw:commentRss>http://shokai.org/blog/archives/4802/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>BeagleBoard(Ubuntu9.04)とArduinoやmoxaを接続し、シリアル通信でやりとりする</title>
		<link>http://shokai.org/blog/archives/4617</link>
		<comments>http://shokai.org/blog/archives/4617#comments</comments>
		<pubDate>Mon, 20 Jul 2009 17:58:10 +0000</pubDate>
		<dc:creator>shokai</dc:creator>
				<category><![CDATA[未分類]]></category>
		<category><![CDATA[Arduino]]></category>
		<category><![CDATA[BeagleBoard]]></category>
		<category><![CDATA[moxa]]></category>
		<category><![CDATA[PhysicalComputing]]></category>
		<category><![CDATA[Tech]]></category>
		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://shokai.org/blog/?p=4617</guid>
		<description><![CDATA[BeagleBoardはTIの作ったオープンソースハードウェア。こっそり春頃からいじっていたんだけど書いてなかった。 スペックに難はあるが、ディスプレイとサウンド出力つきの組み込み環境が俺でも作れるのは魅力。作品のレベル [...]]]></description>
			<content:encoded><![CDATA[<p>
<a href="http://beagleboard.org/">BeagleBoard</a>はTIの作ったオープンソースハードウェア。こっそり春頃からいじっていたんだけど書いてなかった。<br />
スペックに難はあるが、ディスプレイとサウンド出力つきの組み込み環境が俺でも作れるのは魅力。作品のレベルをプロダクトに近い所まで引き上げられる。<br />
<br />
最近CRESTでのプロジェクト用にARM版Ubuntu9.04をbuildしてインストールして、Arduinoと接続する所までやったので書いておこう。<br />
<br />
今はApache2とruby1.8.7（いずれもaptでインストールした）を使って、外付けしたArduinoとmoxaからデータを読み取っている。とりあえず大学院棟の明るさをCdSで取得してwebに公開している → <a href="http://shokai-b.mag.keio.ac.jp/light">http://shokai-b.mag.keio.ac.jp/light</a><br />
<br />
<br />
<a href="http://www.flickr.com/photos/shokai/3725447171/" title="R0012112 by shokai, on Flickr"><img src="http://farm3.static.flickr.com/2595/3725447171_cd9746e829.jpg" width="500" height="375" alt="R0012112" /></a><br />
<br />
<br />
■準備<br />
BeagleBoardと、インストール時にパソコンとBeagleBoard間でシリアルコンソールを使うのに必要なBeagleケーブルはdigikeyで購入できる。他の部品は国内で全て入手可能。<br />
<a href="http://www.flickr.com/photos/shokai/3726360852/" title="BeargleBoard 周辺機器 by shokai, on Flickr"><img src="http://farm3.static.flickr.com/2665/3726360852_ce2bddd184.jpg" width="500" height="470" alt="BeargleBoard 周辺機器" /></a><br />
<br />
<br />
■Ubuntu9.04をBeagleBoardにインストール<br />
OSはSDカードにインストールする。<br />
最初デスクトップ版をインストールしてみたけど重すぎた。AngstromやHandheld Mojoならそれなりに動くけど、フルのUbuntuデスクトップはウィンドウマネージャをtwmにしても無理だった。<br />
今回の用途にはCUIがあれば十分だったので、最低限のbuildツールを含んだARM用イメージを作って起動させた。<br />
<br />
なお作業はext3のファイルシステムが読み書きできる必要があるので全て別のUbuntu Desktopで行った。<br />
<ol>
  <li><a href="http://d.hatena.ne.jp/shokai/20090708/1247052207">BeagleBoardにUbuntu Desktop版インストール &#8211; 橋本詳解</a></li>
  <li><a href="http://d.hatena.ne.jp/shokai/20090714/1247572943">BeagleBoardにUbuntuセットアップ(GUIなし)、sshdを入れてリモートログインしてみる &#8211; 橋本詳解</a></li>
  <li><a href="http://d.hatena.ne.jp/shokai/20090714/1247573774">いろいろインストールして環境を整える &#8211; 橋本詳解</a></li>
  <li><a href="http://d.hatena.ne.jp/shokai/20090714/1247577340">Rubyまわりをインストール &#8211; 橋本詳解</a></li>
</ol>
<br />
これで、ApacheやRubyやsshdはもちろん、emacsと各種elisp、gemとeasy_install、rails2やsinatra、mongrel_clusterとapache2でmod_proxy_balancerなどがaptとgemでさくっとインストールできた。<br />
このへんのサーバサイドアプリ開発環境のセットアップの容易さはubuntuさすが。<br />
<br />
処理速度は体感でDebian化した白箱より速い。SDカードなのであまりR/Wしたくないがたぶん外付けUSB-HDDも認識できるんじゃないだろうか。そうすると、クローラ作ったり簡単なbotを動かす程度の俺は自宅サーバ環境はBeagleBoardで十分という可能性もある。<br />
<br />
<br />
<br />
処理速度とストレージ読み書きに不安はあるが小型かつバッテリーでも動かせるUbuntu Linux環境ができた。<br />
<br />
<br />
■Arduino / moxaとの通信<br />
BeagleBoard基板上のシリアルコンソールに使ったポートをArduinoやmoxaとの通信を使った。<br />
<br />
本当はUSBで接続したかったけどできなかった。<br />
FTDIチップのドライバはaptでインストールできるが、USBに接続しても認識されない（/dev/ttyUSB0に現れない）<br />
同じバージョンのUbuntuデスクトップを別のAMD64マシンで用意して、同じようにセットアップをしたがこちらは認識した。ARM版Ubuntuが何かおかしいのかもしれない。<br />
<br />
64bitAMDマシンではlsmodした時にFTDIチップを監視してるプロセスがいるんだけど、BeagleBoardではlsmodしてもいない。<br />
誰かLinux詳しい人教えてくれるとうれしいです・・・<br />
<br />
<br />
しかたないのでセットアップに使ったBeagleケーブルのオス版を作って通信に使う。<br />
シリアルポートの9つのピンには<a href="http://shokai.org/blog/archives/107">よく見ると番号が振ってあり</a>、それをBeagleBoardの基板上の1～9ピン（10は無視する）と接続する。<br />
シリアルポート側は<br />
</p>
<blockquote><p>12345<br />
6789</p></blockquote>
<p>
のようになるが、BeagleBoard上のコネクタは<br />
</p>
<blockquote><p>13579<br />
2468</p></blockquote>
<p>
となっているのでとても捻れる。気合いではんだづけする。基板上のシルク印刷をよく見てね。<br />
<br />
<br />
<a href="http://www.flickr.com/photos/shokai/3726251750/" title="R0012102 by shokai, on Flickr"><img src="http://farm4.static.flickr.com/3470/3726251750_7ed5ddfcca.jpg" width="375" height="500" alt="R0012102" /></a><br />
<a href="http://www.flickr.com/photos/shokai/3726252136/" title="R0012104 by shokai, on Flickr"><img src="http://farm4.static.flickr.com/3659/3726252136_7956c5652a.jpg" width="500" height="375" alt="R0012104" /></a><br />
<a href="http://www.flickr.com/photos/shokai/3726252318/" title="R0012106 by shokai, on Flickr"><img src="http://farm3.static.flickr.com/2485/3726252318_db39260871.jpg" width="500" height="375" alt="R0012106" /></a><br />
<a href="http://www.flickr.com/photos/shokai/3725446073/" title="R0012107 by shokai, on Flickr"><img src="http://farm3.static.flickr.com/2432/3725446073_81b5282398.jpg" width="500" height="375" alt="R0012107" /></a><br />
<br />
<br />
これで、Arduinoの外側にあるRX / TXピンにMAX232(ADM3202)を接続すればBeagleBoardとシリアル通信できる。<br />
<a href="http://www.flickr.com/photos/shokai/3725446767/" title="R0012110 by shokai, on Flickr"><img src="http://farm4.static.flickr.com/3457/3725446767_41233f4a93.jpg" width="500" height="375" alt="R0012110" /></a><br />
<br />
ArduinoにCdS（明るさのセンサ）なんかを接続して数値をBeagleBoardに送り続ければいい。<br />
<br />
<br />
/etc/event.d/ttyS2 を削除して再起動すると、/dev/ttyS2がシリアルコンソールではなくシリアルポートとして開ける。<br />
</p>
<blockquote><p>screen /dev/ttyS2</p></blockquote>
<p>でモニタできる。<br />
UNIX系なので、シリアルポートもFileとして簡単に読み出せた。<br />
<a href="http://d.hatena.ne.jp/shokai/20090716/1247733038">Arduino + BeagleBoard(Ubuntu) シリアルポートを読んでたまにファイルに書き出す &#8211; 橋本詳解</a><br />
<br />
通信できる手段が整えばあとは好きにできる。<br />
</p>
]]></content:encoded>
			<wfw:commentRss>http://shokai.org/blog/archives/4617/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

