アシアルブログ

アシアルの中の人が技術と想いのたけをつづるブログです

kvmでwindows7を入れてみました

kvmwindows7を入れてみました

仮想化といえば、VMWareXenが有名ですが、
今回は割と新しいkvmを使用したいと思います。

kvmと言っても切替器ではなく、KernelbasedVirtualMachineのkvmです。

kvmとは
http://ja.wikipedia.org/wiki/Kernel-based_Virtual_Machine

要は、軽量でシンプルな仮想化システムです。
kvm自身では何もできないので、フロントエンドとしてqemuを使用します。

ぐだぐだ書いてもおもしろくないので、百聞は一見にしかず。ぜひ試してみてください。

0・前提条件
カーネルは2.6.20以降が必要
AMD-V、IntelVTなどの仮想化機構が必要
・~/vm/ にvmのディスクイメージを入れます
・~/win7.iso がwindows7のDVDイメージです

1・kvmのインストール
kvmqemu-utilsをインストールします。
Debian系使っていることを前提とすれば、


$ sudo apt-get install kvm qemu-utils

以上。簡単ですね。

2・ディスクイメージの作成
これはqemu-utilsのqemu-imgを使用して以下コマンドで作成します。


## qcow2で ~/vm/win7.img に 30GBで作成
$ qemu-img create -f qcow2 ~/vm/win7.img 30G


または、ddであらかじめスペースを確保する方法もあります。
(最初から領域を確保するので、若干ディスクアクセスが早くなるかもしれません)


$ dd if=/dev/zero of=~/vm/win7.img bs=1024 count=$((20 * 1024 * 1024))


3・起動
windowsをインストールします


$ sudo kvm -hda ~/vm/win7.img -cdrom ~/win7.iso -boot d -m 1024 -monitor stdio

この一行で仮想マシンが起動します。
(後はwindowsのインストールを道なりに進むだけですので割愛します)

4・その他
・ネットワーク
起動オプションにの-redirでホストの任意のポートにゲストの任意のポートをマッピング出来るので、
例えば以下のようにして起動すると、rdesktopで接続出来ます。


$ sudo kvm -hda ~/vm/win7.img -m 1024 -monitor stdio -redir tcp:3389::3389


・USBデバイス
VMPlayerのようにワンクリックでとはいきませんが、コンソールで以下のようにすれば接続できます。


# -usbオプションをつけてkvmを起動
# ホストのデバイスを確認
(qemu) info usbhost
【省略】
    Class 00: USB device 04fe:000d, HHKB Professional JP
  Device 1.5, speed 1.5	Mb/s
    Class 00: USB device 0458:0048, Wireless Keyboard  &	Mouse
  Device 1.6, speed 480	Mb/s  	      	      	      	      	<= これを追加   
    Class 00: USB device 1307:0163, Flash Disk

# usb_addで追加 
(qemu) usb_add host:1307:0163

# 仮想マシンに接続中のデバイス確認
(qemu) info usb 
  Device 0.2, Speed 480	Mb/s, Product Flash Disk

なお、/proc/bus/usb/devicesがないといわれる場合には以下を実行してマウントしておきます。


$ sudo mount -t	usbfs none /proc/bus/usb



使用感としては、思ったよりサクサク動いています。
kvmを使わないqemuの場合は実用に耐えうるスピードではありませんでしたが、kvmを使用するとほぼネイティブと言ってもいいくらいのスピードですね。
ただし、グラフィック系はあまり速くないので、rdesktopでつないだ方が結果として快適かもしれません。
出来て間もないため、サーバー用途にはまだ不安が残りますが、テスト用マシンなどの用途には実用的かと思います。

EmacsでDvorak配列を使う

キーボード配列といえばqwerty配列デファクトスタンダードですね。
市場に出回る製品でqwerty以外を搭載したものは無いと言っても過言ではないほどです。
普通に使う分にはqwertyだけで十分。他の配列は邪道。qwerty最強!な雰囲気がありますが、
自分はあえて「Dvorak配列」に手を出してみました。



理由は単純で、効率があがる・・・らしい。
ググってみると左右交互打鍵だの連続打鍵などの効率が云々と書いてありますが、読んだところでよくわかりません。
「百聞は一見にしかず」ということで実際に練習してみました。

Dvorakを入力出来ないと話にならないので、$ setxkbmap dvorak を実行して、全体をDvorakにしてみましたが、全然打てないので仕事にならなかったのでシステム全体は諦めました。
多少遅くても問題無い環境と言えば、コーディング中ということで、EmacsだけどうにかしてDvorakか出来ないかとググってみると、

http://dvorak.mwbrooks.com/

このサイトの

http://dvorak.mwbrooks.com/qwerty.el

にたどり着きました。

これをロードして M-x dvorak で実行すれば見事にDvorak配列に。
M-x qwerty でqewrtyにもどります。
(ただし、英語キーボード用なので、日本語キーボード用に少し修正する必要があります)

時間に余裕のある時はちまちまとDvorak練習。時間が無いときはqwertyに切り替えて・・・と繰り返しているうちに、1ヶ月程度で普通に使う分には問題ない速度になりました。
ただし、途中で"r","l"の配置に疑問を感じたときから「どうせ他でDvorak打つことも無いので、普段使いに最適化しよう」と思い立ちカスタマイズしました。

anti-qewrtyの行を編集して、


 (anti-qwerty "';hpykgcu.,:>Zaoeridltnvzq-jfxbmws/\"=$PYKGCUH{}AOERIDLTN^@_*JFXBMWV?[]<SQ+!`"
  "qwertyuiop@:*=asdfghjkl.-zxcvbnm,;/QWERTYUIOP{}ASDFGHJKL'\"_XCVBNM<>?[]`+Z^!$"))

こんな感じに。



こうなった理由は、文字の出現頻度の差です。とあるシステム全体で使用している文字をカウントしたところ、


   5490 Z       64070 D
   6699 J       64229 N
   8022 X       74286 2
   8117 K       78768 .
   8133 \       79870 R
   9733 Q       79955 1
  11526 z       85729 I
  15956 q       86880 S
  15968 V       88447 T
  16066 W       93242 b
  19486 Y       94484 A
  20686 7       98135 E
  21690 9      100104 y
  22641 8      112122 *
  22838 j      137194 ,
  22896 6      151408 g
  25659 G      157805 f
  28387 H      163209 m
  29118 B      169050 (
  30923 U      169075 )
  31112 5      176303 =
  31609 4      194718 '
  35662 M      198600 u
  42190 3      214832 d
  42562 F      226900 h
  47464 }      227166 p
  47497 {      258600 c
  50118 x      260312 $
  51508 L      306474 l
  52031 w      390661 o
  52757 P      406657 n
  54886 k      429489 s
  57478 v      478070 r
  59704 "      503466 i
  61102 O      522085 a
  62715 0      616784 t
  63463 C      760272 e

以上の様になったので、出現頻度の高いものを中段に、それ以外を上段下段の打ちやすい位置に配置。
基本的に大文字と小文字は同じキーですが、"$"だけはHと入れ替えています。
PHPは事あるごとに"$"を打つので良い位置に。

使用感としては、若干効率が上がったかどうははよく分かりませんが、打つのは楽です。
指を動かす距離が明らかに減って、タイプミスも少なくなったような、そうでもないような・・・。(でも、中段に揃っているのはかなり便利ですね)

ちなみに、かな入力の方は全然試していません。(普段がNICOLAなので)

一通り打てるようになったので、出来れば全てDvorakにしたいのですが、vimキーバインドを初め、様々なキーバインドが訳分からなくなるので、Emacs以外はqwertyのまま使っています。
以上、(変則)Dvarakの使用感でした。


余談ですが、私が現在打てる配列は以下6つに。
qwerty
dvorak
qwertyローマ字
・(多分)dvorakローマ字
・JISかな
NICOLA

これだけ打てて何か意味があるかと言うと、全然無いかと。
はっきり言って無駄だとは思いますが、楽しければいいと思います。

つぎは、飛鳥配列でも試してみようかと思っていますので、その時はまた似たようなネタを書くかもしれません。


おまけ「練習方法」

1・よく使うキーを数個ほど覚えてからコーディングなどで練習します。
  (時間制限のあるソフトなどを使うと打てないので嫌になりますので、マイペースに練習出来るものを)
2・一通りキーの配置を覚えたら、一つの単語を一気に打つ指の運びをイメージして打っていきます。

これが出来るようになれば普段使いは問題ないと思いますが、さらに高みを目指すなら、
3・文字を見た瞬間に指が動くまで練習。
(音楽にあわせて歌詞を打っていくのが楽しくていいかもしれません)

以上、自分が練習したときに感じたコツでした。

Debianを使ってシンクライアントっぽいものを作ってみました

この間、開発に使用していたWindows機(Thinkpad T23)のHDDが異音を発してお亡くなりになりました。
カッコン・・・カッコン・・・カッ・・カッ・・・カツン。
となって、何かアクセスしようとするとブルーバックになってしまいました。

こうなれば当然再起動しても無駄、HDD交換しか直す方法はありませんが、当然IDE2.5inなんて予備があるわけもなく、新品HDDを買って復活させるほど価値があるわけでも無いので、机の上に放置していました。

先日、プロジェクトの表示テストのため、リモートデスクトップWindowsにつないでIEのテストをしていましたが、
ひたすら、IE開く->確認->手直し->確認->ローカルのFireFox開く->確認・・・
仮想デスクトップ使っても切り替えが面倒なので、もう一つ画面がほしい。
リモートデスクトップが動く程度のマシンを探してまわりを見渡すと、壊れたThinkPadがふと目に入り、

「たかがハードディスクがやられただけだ!」

と台詞が浮かんできたので、これを使うことにしました。

さて、ハードディスクがやられた程度のThinkPadですが、割と致命的なところがやられています。
メインカメラの比ではありません。
むしろ足がなくなったようなものですが、

「あんなの飾りです!偉い人にはそれがわからんのですよ!」
要は、足の代わりにスラスターを使うと。

ということで、代用品を考えます。
ただし、お金はかけたくないということで自然と、

・ネットワークブート
・LiveCD
USBメモリにインストール
辺りになります。

・ネットワークブート -> DHCPの設定が必要なので、面倒+間違えると危険
・LiveCD -> メモリが128MBしか無いので、軽量化が必要なため面倒
USBメモリにインストール -> Debianからはscsiバイスとして見えるので、インストールは簡単、カスタマイズも簡単。

ということで、USBメモリのインストールを選択。


インストールは普通に、

まずUSBメモリをさします
lennyのCDを入れてます。
普通に最小インストールします。(ただし遅い)
 (゚д゚)ウマー

以上。

あとは細々とカスタマイズしていきます。
リモートデスクトップが使える程度のパッケージをインストールし、
synergyを入れて入力デバイスを共通化します。

インストール中のPC(命名:thinkpad)

マシン名設定


# hostname thinkpad
# echo thinkpad > /etc/hostname


sshのインストール


# apt-get install ssh


ネットワークの設定(/etc/network/interfaces)


auto eth0
iface eth0 inet static
address 192.168.xxx.xxx
network 192.168.yyy.yyy
netmask 255.255.255.0
gateway 192.168.yyy.yyy


(以下、sshで作業)

Xのインストール


# apt-get install xserver-xorg


rdesktopのインストール


# apt-get install rdesktop


synergyのインストール


# apt-get install synergy


起動スクリプトの準備


#!/bin/sh

if [ -z `pidof X` ]
then
  X  &
  sleep 8
fi
export DISPLAY=:0
kill -KILL `pidof synergyc`
synergyc 192.168.xxx.xxx    # メインPCのアドレス
rdesktop 192.168.yyy.yyy -f -u 'hoge-domain\hogeuser' -K -k ja  &   # リモートデスクトップ接続先のWindows機とアカウントを指定


このスクリプトを /usr/local/bin/startrdesktop あたりに配置し、

/etc/rc.localに


/usr/local/bin/startrdesktop  &

を追記すれば完成です。
これで、再起動すると自動的にXとrdesktopとsynergyが立ち上がります。


次に、メインPCにてsynergys(サーバー側)の設定をします。
こんな感じのファイルをホームディレクトリに保存し、


#thinkpad -> インストール中のPC
#main -> メインPC

#使用するスクリーンを指定
section: screens
    thinkpad:
    main:
end

#配置を設定
section: links
    thinkpad:
       right = main
    main:
       left = thinkpad
end

#画面の切り替えをキーボードするための設定
section: options
  keystroke(control+alt+j) = switchInDirection(left)
  keystroke(control+alt+k) = switchInDirection(right)
end


以下のコマンドでサーバー側を起動します。


synergys --config ~/.synergy.conf

.xsession辺りにこのコマンドを追加して自動起動するようにしておけば完成。


早速、thinkpadの方を再起動します。

ブートローダーをロードが遅い。(30秒)

・・・

やっとgrubを読んだと思ったら遅い。(1分)

・・・

カーネル読み込みが遅い(30秒)

・・・

さらにinitrdの読み込みが異様に遅い(2分)

・・・

起動はまあまあ(1分)

多分、USB1.1なため遅いのかと。2.0だったらもう少し早いのかもしれません。
ですが、
出社->起動->飲み物買ってくる->一息つく
辺りでXが起動するので、起動の遅さは許容範囲です。

さらに、起動さえしてしまえばメモリ上の作業なので快適です。


結果
思いつきでインストールしてみましたが、思いのほか快適に動いています。
リモートデスクトップのレスポンスですが、WindowsXP入れていた時よりもサクサク動いている気がします。

rdesktopまで起動後はこんな感じです


hoge@thinkpad:~$ free -m
             total       used       free     shared    buffers     cached
Mem:           122         50         72          0          4         22
-/+ buffers/cache:         23         99
Swap:          196          0        196

hoge@thinkpad:~$ df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda1             749M  490M  221M  69% /
tmpfs                  62M     0   62M   0% /lib/init/rw
udev                   10M  140K  9.9M   2% /dev
tmpfs                  62M     0   62M   0% /dev/shm



おまけ
・rdesktopが起動してから一定時間でログインしないとrdesktopが終了するので注意。
(-p でパスワード設定してもいいですが、セキュリティのため省略してます)

Youtube再生してみました
リモートデスクトップの場合、最大化しなければ普通に再生できます。
Xフォワードの場合は、動きが多い画面の場合はだいぶカクカクします。
予想以上にリモートデスクトップのパフォーマンスにビックリしました。

Debianでbluetooth audio

今回は、Debianにて Bluetooth audio 接続が成功したのでやり方をまとめてみます。

スマートフォンで音楽を聞くため+ハンズフリー通話のため、
BSHSBE06BK ( http://buffalo-kokuyo.jp/products/catalog/multimedia/bshsbe06/ )
を持っていますが、外出時くらいしか使いません。

ただ遊ばせておくのも勿体ないので、Thinkpad X61sからbluetoothでつないでみました。

参考にさせて頂いたサイト
http://d.hatena.ne.jp/yuki_rinrin/20090720/1248107725


インストールするまでに紆余曲折ありましたが、とりあえず手順だけ書きます。
試す場合は自己責任でお願いします。



※注意
私の場合、カーネルが 2.6.26ではうまくいかず、2.6.30(linux-image-2.6.30-1-amd64) にアップデートしたら動作しました。
(もしかしたら、軒並みsidのパッケージを入れたため動いたのかもしれません)
その他のバージョンではこの手順でうまく動作するかはわかりません。
また、(2009/08/03時点で)sidのカーネルなので、何か予期しない不具合が出るかもしれません。


apt-getにて以下をインストール。


$ sudo apt-get install bluez-utils bluez-audio bluez-alsa blueman hcitool


もしかしたら、他にも必要なパッケージがあるかもしれません。
私の場合、bluetooth関連と思われるパッケージは


ii  blueman         1.10-2  A Graphical bluetooth manager
ii  bluetooth       3.36-3  Bluetooth stack utilities
ii  bluez           4.42-1  Bluetooth tools and daemons
ii  bluez-alsa      4.42-1  Bluetooth ALSA support
ii  bluez-audio     3.36-3  Bluetooth audio support
ii  bluez-compat    4.42-1  BlueZ 3.x compatibility binaries
ii  bluez-firmware  1.2-2   Firmware for Bluetooth devices
ii  bluez-utils     4.42-1  Transitional package
ii  libbluetooth2   3.36-1  Library to use the BlueZ Linux Bluetooth sta
ii  libbluetooth3   4.42-1  Library to use the BlueZ Linux Bluetooth sta

こんな感じで入っています。

次にデバイスの設定をします。

PCのbluetoothバイスを有効にしたのち、blueman-managerを起動します。


$ sudo bash -c 'echo enable> /proc/acpi/ibm/bluetooth'
$ sudo blueman-manager


BSHSBE06の方を探索可能にし、
Searchボタンをクリックすると、ヘッドセットのアイコンの横にBSHSBE06と表示されるはずです。
それを右クリックして、Bondをクリックし、デバイスのパスコードを入力すれば設定完了です。簡単ですね。
もう一度右クリックして、Connect A2DP Service をクリックすれば接続できます。

alsaにて音楽を聞くには、 ~/.asoundrc に



pcm.bluetooth {
        type bluetooth
        device 00:00:00:00:00:00
}

こんな感じでbluetoothとアドレスを追加してください。
各再生ソフトにてデバイスをこれにすれば動作するはずです。

audaciousの場合は、
Preferences -> Audio -> Output Plugin Preferences -> Device Settings -> Audio device
に、 bluetooth と入力(ドロップダウンからは出てこないと思うので、手入力してください)

Preferences -> Audio -> Output Plugin Preferences -> Bit Depth
を16に変更すれば設定完了です。

ファイルを指定し、再生ボタンを押せば何か出力されるはずです。


ここまで来るのにまる2日くらいハマっていましたが、何とか解決できました。
その結果、いるか分からないパッケージがいくつか入っているかもしれません。


bluetoothでの使用感は、音質は十分。
それよりも、ワイヤレスが思いのほか便利、いちいち左手に引っかかるコードが消えるのはかなり幸せになれます。

そのうちには起動時に自動的に接続するスクリプトでも研究してみます。

Xen移行・・・ネットワークでハマる

お久しぶりです。門脇です。

最近、自宅サーバーをXenに統合しました。

旧環境は、Atomマシン + ノートPC + 玄箱 で構成していたので消費電力が低いのは嬉しいですが、性能は若干非力なため、新サーバー構築を決意。
一日中秋葉原をまわり、中古パーツをかき集めてきました。
(余談ですが、結局新サーバーの性能はML115の最低スペック+メモリとHDDを増設したものとほぼ同じとなったので、ぶっちゃけML115買った方がお得だったかもしれません)

Xenの構築自体は簡単で、



sudo apt-get install xen-tools linux-image-2.6.26-1-xen-amd64 xen-linux-system-2.6.26-1-xen-amd64 xen-utils-3.2-1 bridge-utils


あたりをインストールして、リブートしてxenを起動し、基本的な設定をすれば準備完了です。

Domain-Uの作成は


sudo xen-create-image --hostname hogehoge --dir=/var/lib/xend --memory 512Mb --size 2GB --dist lenny --ip 0.0.0.0

さくっとこんな感じで作成できます。
Debianは楽でいいですね。

早速起動します。


sudo xm create /etc/xen/hogehoge -c


実際の移行は、


old_machine# dpkg --get-selections > packages #リストを出力
old_machine# scp packages new_machine:        #リストをコピー
new_machine# dpkg --set-selections < packages #リストを入力
new_machine# apt-get dselect-upgrade          #インストール開始

とかすれば、パッケージをまるまるインストールできます。
その他は、rsyncかければ完成。


移行自体は楽にできましたが、ネットワークでハマりました。

旧構成では、

ルーター(172.16.0.1, 172.16.1.1)
ファイルサーバー(172.16.0.100, 172.16.1.100)
HTTPサーバー(172.16.1.10)
その他PCなど(172.16.0.10-100 DHCP)

になっており、
ルーターは 0x <-> 1x の通信は遮断。
1xと通信するときは、ファイルサーバーをルーターにしてアクセスしていました。

Xen構築後は、将来的には、XenにPPPoEをさせて完全にルーター化させるため、

0x -> 0.1(xen) -> 3.1(ルーター)
1x -> 1.1(xen) -> 3.1(ルーター)

とりあえずこんな構成に。


iptablesとrouteとbrctlを使用して、どうにか設定完了。

・・・がしかし。

外部から1xにsshで接続をして、ps aux など、多量に通信をするとフリーズ・・・。

ちなみに、
0x->1xは正常。
3x->1xは正常。

つまり、ルーター -> xen -> http
時だけ発生する模様。

現象の名前が分からないので、

debian パケット 多量 フリーズ
linux パケット フリーズ
ps aux フリーズ ssh

など、思いつく限りで検索をかけて見たところ、

PMTUD Black Hole

と言う言葉に当たる。

参考: http://www.infraexpert.com/info/5.2adsl.htm

要は、MTUの値が大きすぎると。

試しに、httpマシンにて、


sudo ifconfig eth0 mtu 1000

とすると・・・正常に動いた!

あとは、適当に値を設定して試してみると・・・ 1452 に落ち着く。

原因は調査中です。何か分かったら追加するかもしれません。


もし、一度に多量のパケットを扱う処理をしてフリーズするようなら、「PMTUD Black Hole」と言う言葉を思い出して見てください。なにか分かるかもしれません。

Debian + S21HT + ThinkPad X61s でネットに接続

お久しぶりです。門脇です。

先日、熊谷さんから中古でThinkPad X61sを購入しました。
メモリも増備して4GB。いままでのスワップ地獄から開放されます。
ちなみに、XPが入っていたものをVistaにアップグレード(?)してあり若干お得感あり。

早速、にやにやしながら起動し、キーボードを叩きます。

・・・

数分後・・・そこには元気に動くDebianの姿が!

もちろん、今まで使用していたマシンから dpkg --get-selections したものをインストールし、ホームディレクトリと/etcはrsyncをかけ、若干設定をいじってとりあえず使える環境にしました。
(一時間かからない程度で完了。どこぞのOSなら半日かかってます)

余談終了。

さて、せっかく小型PCとemobile S21HTがあるので、USBでつないでみました。

こちらのサイトを参考にさせていただきました
http://d.hatena.ne.jp/nack-jin/20080917/1221668283


まず、ドライバのインストール (usb-rndis-liteを使用します)



$ sudo apt-get install linux-headers-2.6.26-2-amd64
$ cd /usr/local/src
$ svn co https://synce.svn.sourceforge.net/svnroot/synce/trunk/usb-rndis-lite
$ make
$ cd usb-rndis-lite
$ sudo ./clean.sh
$ sudo make install


以上でインストール完了し、モジュールが読まれているはずです。

あとは、S21HT
スタートメニュー->設定->接続タブ->PCへのUSB接続で
Activesyncに設定し、高度なネットワーク機能を有効にします。

スタートメニュー->プログラム->インターネット共有 にて PCとの接続を USB に変更、ケーブルを接続し、dhclientを実行したところ
・・・IPが振られない。

インターネット共有をしない場合は 169.254.2.2 あたりが振られますが、共有を有効にするとDHCPが無反応。
しばらくハマっても解決策がありませんでしたが、Ubuntuで2.6.27xにカーネルをアップデートしたらドライバが組み込まれており、接続されたとの情報があったので、試しにカーネルをアップデートしてみました。



$ wget http://ftp.jp.debian.org/debian/pool/main/l/linux-2.6/linux-image-2.6.29-2-amd64_2.6.29-5_amd64.deb
$ wget http://ftp.jp.debian.org/debian/pool/main/l/linux-2.6/linux-headers-2.6.29-2-amd64_2.6.29-5_amd64.deb

$ sudo dpkg -i linux-image-2.6.29-2-amd64_2.6.29-5_amd64.deb linux-headers-2.6.29-2-amd64_2.6.29-5_amd64.deb


ただし、不安定版なので何か問題が出るかもしれませんが・・・その時はその時ということで。


再起動後USBで接続し、eth2が追加されたのを確認。


$ sudo dhclient eth2

DHCPOFFER from 192.168.0.1
DHCPREQUEST on eth2 to 255.255.255.255 port 67
DHCPACK from 192.168.0.1
bound to 192.168.0.102 -- renewal in 101588 seconds.


取得完了!

とりあえず、速度を計ってみました。

・こちらのサイトで計測。
http://www.usen.com/speedtest/top.html

結果


0.782Mbps


ちなみに、先ほどの linux-image をwgetしてみたところ
160KB/s 〜 24KB/s 辺りでうろうろしていました。

平均すると、70KB/s程度でしょうか。
接続速度自体は結構不安定なようですが、普通にサイトを閲覧したりするだけなら快適にできます。


さて、このX61sですが、Bluetoothが付いています。
せっかくなのでBluetoothでもS21HTとつないでみました。

注意:筐体手前の裏側にある、スイッチをオンにしておかないとBluetooth無線LANが使用できないので注意。

まずは、Bluetoothの設定。

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


$ sudo apt-get install bluetooth bluez-utils


S21HTのCommManagerでBluetoothをオンにしておきます。(他のデバイスからも見えるようにして下さい)



$ hcitool scan


このコマンドを実行すると近くにあるデバイスの一覧からS21HTMACアドレスを探してください。

/etc/bluetooth/rfcomm.conf に書き込みます。


rfcomm0{
		bind yes;
		device 00:FF:FF:FF:BE:EF;
		channel 1;
		comment "s21ht bluetooth device";
}


を追加(内容は適時読み替えてください)



$ sudo /etc/init.d/bluetooth restart


いざ、PANで接続。


$ sudo ifconfig bnep0 0.0.0.0 up
$ sudo pand --listen --role=PANU --connect 00:FF:FF:FF:BE:EF
$ sudo dhclient bnep0

これで接続出来ると思います。


今回はインターネット共有を使用したつなぎ方でした。
いちいち共有を有効にしないといけないので面倒ですが、デフォルトで割と安定しているので私はこれを使っています。
(Bluetoothを入れっぱなしにすると若干消費電力が増えそうで明示的に有効化出来る方が好みなので)

余談。
先日、新幹線で岡山から東京までN700系に乗ることがあり、岡山からずっとつないでいました。
岡山〜新大阪はトンネルも多く割と不安定でしたが、新大阪〜東京は、ほぼ圏内。
AC100V電源のおかげでバッテリー切れにも悩まされず、快適に東京までの旅路を楽しみました。

おまけ
カーネルアップデートしたら、
動かなかった無線LANが動くようになり、
不調だったACPI(USB機器をつないでいるとサスペンド出来なくなる)も動くようになりました。
その点、不具合は今のところThinkpadのショートカットキーが使えなくなった位ですが、

Bluetoothを有効にするのは、


$ sudo bash -c 'echo enable > /proc/acpi/ibm/bluetooth'


スリープは


$ sudo acpitool -s 


で事足りるので、特に苦労はしていません。

GeForceと4GBのメモリ

こんにちは。Windowsはゲーム専用な門脇です。
普段はDebian GNU/Linuxを愛用していますが、DirectXが(ry

先日、自宅PC(Athlon64 3800+, GeForce7900GTX, その他割愛)のメモリを増設して4GB(2GBx2 DualChannel)にしました。
最近メモリが安くなって、2GBx2でも6000円程度で買えるようになったのでつい衝動買いを・・・。

さっそくPCに搭載し、ゲーム専用になっているWinXP(32bit)を起動すると正常に動作。
(もちろん、3.4GBしか認識してません w)

次に、普段使い用Debianの方を立ち上げ、free -m の実行結果を見てニヤニヤ。
しっかり4GB認識しています。

とりあえず、メモリを食う作業でもしてみようかと、startxを実行・・・なぜかブラックアウト。
xorg.confを再生成してみてもブラックアウトか、緑色のノイズが表示されだけ。
vesaドライバを使うと正常に表示されるので、GPUが壊れているわけでもない。
Nvidia公式の最新ドライバをインストールしてもかわらず。

しばらく調べてみても解決せず、試しにググってみると・・・
なにやら、4GB以上認識しているとハングアップするらしい。

つまり、メモリの量が問題だったようです。

/boot/grub/menu.lstのkernel行に、


 mem=3900m

を追加してstartxをすると、無事に起動しました。

まさかこんな落とし穴があったとは・・・
これから増設しようとしている人は気をつけてください。
(Windowsな人の場合は3.4GB制限がなくのであまり問題にならなかったようです。もちろん、4GB以上認識させると起こります)


さて、せっかくメモリを4GBに増設したので(実質3900MBですが)、その恩恵を受けるためメモリを消費するプログラムを動かしたいと思います。
一番に思いつくのは画像処理。無駄に8000x6000位の画像を編集とか、レイヤを作りまくるとか・・・メモリは使うがはっきり言って無意味。(それ以前に絵が描けない orz)
あとはディスクキャッシュに・・・無意味ではないが地味。

簡単に思いつくのはramdisk。2.5GBくらい/tmpに割り当てても問題なさそうなので、


mount -t tmpfs -o size=2500m tmpfs /tmp

こんな感じで2500MB分確保します。(tmpfsなので使用した分だけ領域を確保します)
多少は体感速度が上がる・・・かもしれません。


そのうちに、Xenを入れてディスクイメージをramdiskに入れてみる実験をしてみようかと画策中。

linuxでリモートデスクトップ

今回は、rdesktopについて書いていきます。

Windowsで遠隔操作と言えば、手軽に出来るリモートデスクトップが有名です。
XP以降デフォルトで入っているので手間をかけずにかつ、レスポンスも高速なのでかなり便利な機能ですが、
実はLinuxからでもrdesktopを使えばアクセスできます。

それを実現するのが rdesktop(http://www.rdesktop.org/) です。

インストールは、

apt-get install rdesktop

以上。

使い方は、



rdesktop サーバー名


で、ログイン画面を表示出来ます。

私の場合は、もう少しオプションを付加して、



rdesktop 192.168.100.100 -g 1680x1050 -u 'hogedomain\\yuji' -K


こんな感じになります。

-g 解像度
-u ドメイン名\\ユーザー名
-K キーボードを乗っ取らせない(デフォルトでは、キーボードからの入力を完全に乗っとるので、ratpoisonのキーが使えない・・・)

その他オプションはman pageを見てください。


実際の使用感としては、vncに比べかなり高速。
vncの場合は、プロトコルがシンプルで画面をそのままキャプチャして送るのでどうしても遅くなりがちですが、リモートデスクトップはできるだけ必要最小限にする工夫をしてあるのでこれだけの速度が出る模様。
ただし、スクロールなど短時間で書き換えが起こる場合はやはり通信速度がネックになります。

windowsを使う必要があって、リモートデスクトップで十分な場合にはかなり役立つツールかと思いますので、ぜひ使ってみてください。

おまけ
Xenの完全仮想化でwindowsXPなどを動かす場合は、付属のコンソールを使うよりrdesktop使った方が軽快に動くかもしれません。

XのDualHeadでハマったこと

最近、開発用ノートPCに接続しているディスプレイを、17インチ(1280x1024)のディスプレイから21インチ(1680x1050)のディスプレイに変えましたが、その時にハマったことを書こうと思います。

環境は、

PC
FMV-830MG(1024:768)
チップセット 855GME
(出力はD-subのみ)

外部ディスプレイ
BenQ G2110W (1680x1050)

OS
Debian lenny

以上。

とりあえず新しいディスプレイを接続し、xrandrで、



xrandr --output VGA --mode 1680x1050 --left-of LVDS


とすると、



xrandr: screen cannot be larger than 2560x1024 (desired size 2704x1050)


とエラー。

ここまでは予想通り。

/etc/X11/xorg.confにある、



Section "Screen"
  Identifier"Default Screen"
  Monitor"Configured Monitor"
  SubSection"Display"
    Virtual 2560 1024         # <- これ
  EndSubSection
EndSection


Virtualの範囲内にしか画面を置けないので、範囲外に画面があるよ!ってエラーが出ます。

そこで、



    Virtual 2704 1050


こんな感じに増やして、Xを再起動。

と・・・

なにやら、画面がおかしい!


−−−−−−液晶が割れたときのようになってる!!!

調べてもよくわからず、中途半端な解像度がいけないかと、3360にしてみてもダメ。
散々悩んだ挙句、


縦にしてみよう。




Virtual 1680 1818


として、



xrandr --output LVDS --mode 1024x768 --pos 0x1050 --output VGA --mode 1680x1050 --pos 0x0


とすると見事に起動。

横でダメな原因は結局判明しませんでしたが、とりあえず一件落着。

高解像度のディスプレイで表示出来ずに困っている人は試してみる価値あります。

あ、ちなみに、使いにくいと思われそうですが、私の場合はratpoison使っているので横並びと大差ないので問題無いです。

Linuxクライアントを軽くする7つの方法

こんにちは。門脇です。

私の開発用PCですが、ここ最近までメモリが512MBで、
X + opera + icedove + xchat + emacs + urxvt何枚か開くだけでスワップします。
まさに、毎日がメモリの残量との戦い。

少しでも使用量を減らそうと工夫した結果をまとめてみました。(以下、シェルはzshを使用します。適時読み替えてください)


1・urxvtdの使用
urxvtと言えばrxvtのunicode対応版ですが、これには urxvtd と言うデーモンも付属しています。これを使えばurxvtを複数開くより効率的にメモリを使用できるので、開けば開くほどお得感が増します。
使い方はいたって簡単。

.xsessionなどでurxvtdを起動するようにするなどしてurxvtdを起動すれば準備完了。
ターミナルを開く場合には urxvtc を実行すれば、urxvtの窓が開きます。

設定はこんな感じ

.xsessionなどで


urxvtd -q -f -o


2・sshやスクリーンは軽量シェルに実行させる
私は zsh を愛用しています(使いこなしているかは別w)
補完機能や、複数行編集時などかゆい所に手が届くシェルですが、若干重い。
ssh実行中はzshである必要は無いので、別の軽量シェルを使います。
ここでは軽量な ash を使用してみます。



hoge     27287  0.0  0.3   7512  2780 pts/13   Rs   22:35   0:00 zsh
hoge     28164  0.0  0.0   1768   144 pts/0    Ss+  Jul29   0:00 /bin/ash -c ssh hoge@hogehoge; exec /bin/zsh                                                                                                       

(ちなみに、これだけ消費量が違う)



# apt-get install ash


でインストールして、

.zshrcに、



alias ssh_exvample="exec /bin/ash -c 'ssh hoge@example.com; exec /bin/zsh' "


とすれば、ssh_exampleを実行した瞬間、ashに切り替わってzshは終了し、sshが終了するとzshに切り替わります。
つまり、ssh実行中は若干の節約。

さらにashの分を節約するには、



exec ssh hoge@example.com


でOKですが、こうするとsshが終了した瞬間ターミナルも終了してしまうため、突然セッションが切れた場合などにめんどくさい思いをするかもしれませんので、わざわざashを使っていたりします。

さらに節約するには、/etc/inittab の gettyをコメントアウトして、仮想コンソールの数を減らします。



 3:23:respawn:/sbin/getty 38400 tty3
 4:23:respawn:/sbin/getty 38400 tty4
 5:23:respawn:/sbin/getty 38400 tty5
 6:23:respawn:/sbin/getty 38400 tty6


これらで数十MBの削減になります。

3・余計なデーモンを止める
私の場合は、 lprng を止めている位です。apacheなどは別の開発サーバーに置いてあるので、あまり削減の余地はありませんでした。

その他要らなさそうなものを片っ端から切る。

4・軽量なウィンドウマネージャを使用する
KDEとかgnomeのような重量級ではなく、
fluxboxやratpoisonなどの軽い物を使う。
派手な機能はなくても、軽いものを使用。



hoge     27151  0.0  0.1   6876  1316 tty1     S    Jul29   0:23 ratpoison


ratpoisonはこの程度しか使用しないので、かなり軽量。


5・ブラウザの軽量化
Firefoxは、初期状態だけならそこそこ軽いが、アドオンを追加するごとに重くなっていく。下手すると300MB越える。
その点operaならデフォルトで大抵の機能は揃っている上に軽い。さらに、できるだけメモリにキャッシュしない設定にすればなおよし。
極論を言えば、w3m・・・(ry

6・emacsなどは別のサーバーで
別に開発サーバーが用意されていれば極力そっちを使う。emacsはかなりメモリを食うので、全部開発サーバーで動かしています。
クライアントの負担はsshのセッションのみ。

7・urxvtで壁紙を使用しない
せっかく透過や画像が使えるからとか言って無駄にリソースを消費するような処理をさせない。
私の場合は・・・思いっきり表示してますけどね。

これだけ実行してみたところ、とりあえずスワップはしにくくなりました。ただ、時間が経つにつれてoperaが重くなっていくので、
たまにoperaを再起動する必要があったりします。

以上、私が実行した軽量化の方法でした。