人気ブログランキング |
<   2011年 05月 ( 15 )   > この月の画像一覧
(Linux)X WindowにおけるXディスプレイマネージャとXウィンドウマネージャ
X Windowにおけるディスプレイマネージャーとウィンドウマネージャーの意味についてごっちゃになってたので、まとめです。

ディスプレイマネージャ
まず、ディスプレイマネージャについてです。
Wikipediaによると、ディスプレイマネージャは、ユーザに対してログイン画面を提示し、ユーザ名とパスワードを入力可能である。ユーザが正しく入力するとセッションが開始される。
ディスプレイマネージャがユーザが操作するコンピュータ上で動作する場合、ログイン画面を表示する前にXサーバを起動し、オプションでログアウトの際にもログイン画面を表示する。この場合、ディスプレイマネージャは X Window System において、テキスト端末での init、getty、login の役割を果たす。
 とのことです。

つまりグラフィカルログイン部分をつかさどるのがディスプレイマネージャの役割のようです。(ログインマネージャとも呼ばれることがあるようです)
ログインさえ終われば後は、ウィンドウマネージャに制御をゆだねるようですね。

ディスプレイマネージャーは大抵 GNOME,KDE,Xfce,LXDEなどのデスクトップ環境のサブセットとして提供されることが多いようです。

ディスプレイマネージャーの切り替えは各ディストリビューションによって異なるようです。
redhat系だと /etc/sysconfig/desktop ファイルを作成し、
gdmを指定する場合:DISPLAYMANAGER="GNOME"
kdmを指定する場合:DISPLAYMANAGER="KDE"
xdmを指定する場合:DISPLAYMANAGER="XDM"
lxdmを指定する場合:DISPLAYMANAGER="LXDM"
とするといいようです。(もちろん各ディスプレイマネージャがインストール済みという前提ですが...)
参考:
Fedora 9のgdmで自動ログインをするには - @IT
X Window System の仕組みと設定- @IT自分戦略研究所

Debian(Ubuntu)系だと "dpkg-reconfigure 既にインストール済のディスプレイマネージャ(gdm,lxde etc...)" とするとどのディスプレイマネージャを使うか選べるようです。
もしくは、/etc/X11/default-dispplay-manager を作成し、その中に各ディスプレイマネージャの実行ファイルへのパスを書いてやることもできます。
default-dispplay-manager ファイル内に書く各DMのパスは下記のとおりです。
xdmを指定する場合:/usr/bin/xdm
gdmを指定する場合:/usr/sbin/gdm
kdmを指定する場合:/usr/bin/kdm
lxdmを指定する場合:default-dispplay-manager を削除するとlxdm使うようです。
wdmを指定する場合:/usr/bin/wdm
参考:
X セッション関係のファイル - mooz deceives you


下記に、いくつかのディスプレイマネージャを列挙してみます。

XDM
Xディスプレイマネージャの実装であり、X11標準のようです。
ログイン後は設定不足のせいか英語になってしまいます。

GDM
言わずと知れた GNOME のディスプレイマネージャです。(EcoLinuxで atp-get install gdm でインストールすると90Mほど必要です)
他のウィンドウマネージャと異なるのは1回ログインするとそのユーザが記録されて、次回からリストとして表示されます。


KDM
こちらも言わずと知れた KDE のディスプレイマネージャです。(EcoLinuxで atp-get install kdm でインストールすると300MBほど必要です)

LXDM
軽量デスクトップ環境 LXDE 内のサブセットとして用意されています。

●WDM(WINGs Display Manage)
/etc/X11/wdm/wdm-config で、DisplayManager*wdmLocale: の値を ja_JP.utf8 とすると、日本語表記になります。
しかし、ログイン後のウィドウマネージャは英語になってしまします。どこに設定あるんでしょう。。。




ウィンドウマネージャ
ウィンドウマネージャは名前の通り、ウインドウの見た目やマウスの操作方法,配置や外観を管理する部分です。
代表的なウィンドウマネージャはディスプレイマネージャと同じく、GNOME,KDE,Xfce,LXDEなどのデスクトップ環境のサブセットとして提供されています。
しかし、ディスプレイマネージャよりもかなり多くの種類があるようですね。

ウィンドウにかかわる部分を制御しているわけなので、重さ というのもウィンドウマネージャの種類によって変わってきます。
軽量に特化したウィンドウマネージャもあるようですし、GNOME等のデスクトップ環境と親和性の高いウィンドウマネージャもあるようです。

主なウィンドウマネージャを列挙します。
Metacity :GNOMEデスクトップ環境標準のウィンドウマネージャです。
KWin :KDEデスクトップ環境標準のウィンドウマネージャです。
Xfwm :Xfceデスクトップ環境で使われているウィンドウマネージャです。若干軽量です。
Openbox :LXDEデスクトップ環境でも使われる軽めのウィンドウマネージャです。
JWM :非常に軽量なウィンドウマネージャで、軽量ディストリビューション Puppy Linux で採用されています。
Fluxbox :シンプルで軽量のウィンドウマネージャです。

他のウィンドウマネージャの種類については下記サイト達が参考になります。比較検討しているサイトも多いのでいろいろ試してみるといいかもしれません。
しかし、ウィンドウマネージャ単体では使いやすくするまで結構時間かかるので、カスタマイズする必要が無い場合はGNOME,KDEをはじめとしたデスクトップ環境を導入するのがいいかもしれませんね。
ウインドウ・マネージャとは
Xウィンドウマネージャをとっかえひっかえしてみる - linuzau’s diary
モバイルUbuntu、NetWalker登場 軽量化 ウィンドウマネージャ比較編  その21
Desktop Linux Memo - ウィンドウマネージャー
見過ごしてはならないLinuxのデスクトップ10選 - IT業界を生き抜く秘密10箇条 - ZDNet Japan

今までLinuxというとサーバベースでX Windowなどほとんどスルーしてたので、X Window周りはまだまだよくわかってない3流PGです。。


参考:
ごえごえの Linux 備忘録: ディスプレイマネージャー/ウィンドウマネージャー/デスクトップマネージャー
X Window System(2:ウインドウ・マネージャと端末エミュレータ) - 再入門 体で覚えるLinuxの基本:ITpro
by jehoshaphat | 2011-05-31 07:24 | Linux
(HDD)WD WD20EARSのベンチマークとAFTの問題
メインPCの空きが少なくなってきたので、WESTERN DIGITAL WD20EARSを購入しました。
WD20EARSには、500GB/プラッタx4 の分と667GB/プラッタx3 の物がありますが、もちろん後者(WD20EARS-00MVWB0)のほうです。

ベンチマーク
Seagate Barracuda LP 1.5TBモデルをベンチマークしてみたで500GBプラッタのSeagateのHDDのベンチマークを載せていますが、あのデータに今回のWD20EARSを追加してみたいと思います。
(Intel X25-Mをベンチマークしてみたで測定したSSDの結果も反映してみました。)
e0091163_731865.jpg

e0091163_73342.jpg


やはり、667GB/プラッタは高速ですね。
回転数では Seagate Barracuda LP ST31500541AS を下回っていると思われるものも、キャッシュサイズ(64MB)とプラッタ密度でカバーしているようです。



AFT
WD20EARS の特徴に、Advanced Format Technology(AFT)というものがあります。
従来のHDDは1セクタ512バイトでした。それがWD20EARSでは1セクタ4Kバイトになっています。

(これは、BigSector と呼ばれてるようです。BigSector の背景としてはHDDの高密度化が進んだため、セクタ読み書き時のエラーが増えるようになり、現在のセクタ毎のECCではエラー対応ができなくなってきたので、セクタサイズを大きくしてECCの取られる領域を減らそうというのがあるようです。セクタは大きくしてもエラー訂正に必要なECCの領域は大きくは増えないようです。このあたりの話は、2TBを超えろ! ATAディスクの4Kセクタ問題とは?: @ITAdvanced Format Architectureの意義が参考になります。)

しかし、4KB/1セクタだと、コントローラ、BIOS、OSなどがすべて対応している必要があり互換性の点で問題あるので、WD20EARSでは論理的に512B/1セクタに見せかけているようです。
これが、Advanced Format Technology(AFT) です。

しかし、このAFT、XPやちょっと前のLinuxだと大幅にディスクアクセスのパフォーマンスが落ちるようです。

なぜなら、4KB/1セクタになった故に、パーティションオフセット(アライメント)に問題が生じるからです。


この件については多くのサイトで解説されてますが、自分なりにまとめてみました。
(ちなみに、SSDに関しても1セクタが4KB~(製品で異なる)となっているので、同様の問題が発生します。)


まず、旧来の古典的パーティションはパーティションの境界がシリンダ単位となっています。
(シリンダとは各プラッタのトラックをひとまとまりにしたものです。なぜシリンダ単位になっているかというと、昔というかIDE時代=8GBまでのHDD はCHS方式というシリンダ、ヘッド、セクタの各アドレスでデータアクセスしてました。今はCHSではアドレス幅が全然足りないので、LBAという全セクタに通し番号を振る使用になっています。シリンダ単位に分かれているのは、CHS自体の名残というか下位互換性のようです。このあたりの話は、HDDの話マルチブートの仕方(豆知識編)CHSとは【Cylinder/Head/Sector】 - 意味/解説/説明/定義 : IT用語辞典が参考になります。)

ですので、WindowsXP,古めのLinuxで普通にフォーマットすると、先頭0セクタにはMBRが入っており、第一パーティションまでは下記のように63セクタからなります。
e0091163_74431.jpg


さて、OS側ではHDDがにデータアクセスするときにセクタ単位では行いません。
アクセス速度の効率を考えセクタをまとめた単位でアクセスします。Windowsではクラスタ(アロケーションユニット)、Linuxではブロックと呼ばれたりしますが、大抵のファイルシステムのデフォルト値は4096byte(4KB)です。(Windowsのクラスサイズについては、MSサポート:NTFS、FAT、および exFAT の既定のクラスター サイズが参考になります。)

つまり、OS側からすると下記のようなイメージになります。
e0091163_741390.jpg


これが、WD20EARSではAFTのため、下記のようになります。
e0091163_742364.jpg


ディスクの物理セクタに対して、OSのクラスタ/ブロックがまたがってしまっていますね。

この状態で クラスタ1 のデータ読み込みするとどうなるでしょうか。
下記のようになります。
e0091163_745890.jpg


つまり、OSが1クラスタ/ブロック読みこみしようとすると物理的にHDDは2セクタもアクセスしないといけないわけですね。
OSがシーケンシャルアクセスする場合は読み込む論理クラスタ/ブロック+1物理セクタアクセスとなります。

さらにデータ上書きの場合は、いったん2物理セクタ読み込み、メモリ上で上書きして、2物理セクタ書き込みという流れになります。
リード・モディファイ・ライト (read-modify-write)ですね。これにより、データ書き込みは読み込みに比べさらにパフォーマンスが落ちるようです。
e0091163_75883.jpg


Windows7やVista環境においては第一パーティションが63セクタではなく2048セクタから始まるようになっており、そのためアライメントの不整合は発生しません。
ちょうど物理セクタとOSのクラスタ境界が一致するわけですね。
ですので、パフォーマンスの劣化は起きません。(ただ、Win7,Vistaで作成したパーティションはXPから読み書きはできますが、XPの起動ドライブとしては使えないようです)
e0091163_751689.jpg


ただ、検証:アドバンスト・フォーマット・テクノロジーによると、AFTを表明するHDDでインテル社製のAHCI/RAIDドライバを使用している場合、ドライババージョン9.6.0.1014以降でないとパーティションの開始位置が2057セクタとなり性能が低下するようです。
また、AFTを表明するHDDの場合、Windows7ならば修正プログラムKB982018を適用するといいようです。(WD20EARSは自身がAFTであることを表明しない、つまり物理セクタも512と偽るようです。)


上記で書いたように、XPや古いLinuxではこのアライメントの不整合によりパフォーマンスが低下しますが、回避策もあるようです。
一つは、WD Align Utilityというツールを使うことです。
このツールにより、クラスター境界が変更されるようです。
もうひとつは、WD20EARSのジャンパピン7,8をショートさせる方法ですが、これはHDD全体を1パーティションとして使う場合のみ効果があるようです。(つまりXPで複数パーティションでは意味なし)
原理としては、LBAのアドレスを内部的に+1しているようです。なので、Windows7環境とかすでにデータが入っている状態でやっちゃうとデータ消えちゃう可能性があり危険です。

参考:
インテル SSD オプティマイザーとは?
NAND/AFTにおけるパーティションアラインメント問題のまとめ - Lansenの現実逃避日記
容量の壁 - Wikipedia
(Linux) AFT形式のWD20EARSをLinuxでフォーマットする (r271-635)
Linuxをはじめよう!:LinuxでAFT仕様のHDDを使用する
個人的なメモ: 新ファイルシステムAFT採用、キャッシュ64MBのWD製HDD「WD10EARS」登場-XPなどは変更必要
AOTAKA = BigSector(AFT)について世間では誤解が多いようで:
CentOS インストール(BigSector対策) - @//メモ
ERI  パーティションオフセット(アライメント)の諸問題
AFT - WesternDigital製HDD友の会 Wiki
ハードディスクの構造とパーティション by eslabブートセクタとパーティション境界の話です。
by jehoshaphat | 2011-05-31 07:12 | ハードウェア
(SSD)Intel X25-Mをベンチマークしてみた
しばらく前に、友人から Intel X25-M を中古購入しました。
SSDSA2M080G2GCという容量80GBで34nmプロセスの第二世代のIntel X25-M SSDです。
Intel Boxed Intel X25-M Mainstream SATA SSD 80GB SSDSA2MH080G2C1
ただ、ファームウェアが 2CV102HD です。現時点最新のファームは 2CV102M3 です。
ということで、ファームアップを行いました。
Intelのダウンロードサイトからインテル SATA SSD ファームウェア・アップデート・ツールv1.7をダウンロードします。

CDに焼いてブートしたんですが、どうもSSDを認識しません。
どうやら、BIOSでSATAの設定を ACHIやRAIDではなく IDE モードにしないといけないようです。
IDEモードにすると、SSDを認識し無事に2CV102M3にアップデートすることができました。


CrystalDiskInfoでの情報は下記のようになっています。すでに、2.7TBも書き込んでいるんですね。
HDDの情報とはずいぶん提供される情報が変わっています。
e0091163_23243475.jpg


まず、eSATAにつないでベンチマークをとりました。
(マザーボードはMSI P55-GD65です。)
e0091163_23243340.jpg


ん? 4Kランダムアクセスは確かに早いけど、シーケンシャルアクセスは遅いように感じます。

Seagate Barracuda LP 1.5TBモデルをベンチマークしてみたでも紹介したSeageteの1.5TB(5900rpm)のベンチ載せてみます。
e0091163_23243457.jpg

やはりシーケンシャルアクセスが遅いですね。
マザーボード上のSATAに直でつないでみました。(IntelP55のSATAポートです。)
e0091163_2324354.jpg

これが本来の性能なんでしょうね。
シーケンシャル書き込みでは若干HDDに劣っていますが、その他の項目、特にランダムアクセス周りは圧倒的に高速です。
どうやら、P55-GD65のeSATAで使っているJMB363チップだと本来の性能を発揮できずロスが出るようですね。


SSDはHDDと異なるゆえにパフォーマンスが落ちることがあります。
一つは1セクタ(SSDではページ)が4KB(製品で異なる)になったことです。
これに関しては、BigSector という新技術のHDDも同様の問題を抱えているようなので別記事で書きたいと思います。

別の問題としてSSDからのデータ削除時の問題があります。
一般的なファイルシステムではデータを削除しても、管理領域(NTFSだとMFT)から消えるだけで実際のデータは残っています。
しかし、SSDではデータが残っている領域には書き込みができません。
なので、SSD上のデータがない空領域がなくなると、いったん既存の古いデータを削除して、新しいデータの書き込みという時間のかかる処理になります。

この問題に関しては、Windows7以降でAHCIドライバを使っていると、trim コマンドが使えるため、OSからの削除命令時にSSDの実体のデータも削除できるようです。
Windows7でもRAIDドライバを使っていたりVista以前だとインテル SSD オプティマイザーを使うことでスケジューリングしたタイミングでOSから削除済みのSSD上のデータを削除することができます。


さらに削除は1ページではできないようで複数のページ単位であるブロック単位で消去しないといけません。
そうすると、少しのデータを変更するだけでも、1ブロック全体を読み込み→データを修正→消去して上書きという複雑な処理を行う必要があります。

参考:
インテル SSD オプティマイザーとは?
Flash SSD - Wikipedia
by jehoshaphat | 2011-05-22 23:29 | ハードウェア
(Linux)Debian系(Ubuntu)でのユーザ作成はuseraddよりadduserがよい
Ubuntuで下記のようにユーザ作ったんですが、ユーザのホームディレクトリが作成されません。おまけに既定のシェルが bash でなく、sh になってます。

# useradd hogeuser

CentOSの時はuseraddでちゃんとできたんですが。。。
と思って調べてみると RedHat系 は adduser は useradd へのシンボリックリンクになっているようです。

Debian系(Ubuntu)では、adduserはuseraddのラッパーのPerlスクリプトとなっているようです。
つまり、adduserは対話形式でユーザー情報を指定して登録するコマンド、useraddはオプションと引数のみを指定してユーザーを登録するコマンドという位置づけになっているようですね。
Debian系のuseraddは気が利かないのでホームディレクトリを作ったり、シェルを bash にするにはオプションで指定してあげないといけません。

なので、Debian系でユーザ作成をする場合は adduser コマンドを使った方がよさそうです。

しかし、このadduserコマンドは気が利きすぎており "9999999" とかの全て数字のユーザ名を作ろうとすると、下記のように怒られます。

adduser: Please enter a username matching the regular expression configured
via the NAME_REGEX[_SYSTEM} configuration variable. Use the `--force-badname'
option to relax this check or reconfigure NAME_REGEX.


結局 useradd コマンドでユーザを作成しました。
とりあえず下記のようにホームディレクトリの作成とシェルをbashにして、パスワードを与えてやりました。

# useradd -m -s /bin/bash 9999999
# passwd 9999999

RedHat系とDebian系の違いを痛感した3流PGです。


参考:
adduserとuseraddの違いをちゃんと意識しておきたい - 冷蔵庫って不要じゃんと思ってみるんダダダイアリー
adduserとuseraddの違い - ブックマクロ開発に
まさおのブログ (表): Ubuntu でユーザを追加する (adduser を使うべき)
adduserとuseraddの違い - DUNNO-CLEARブログ2.0:
Ubuntu Manpage: useradd
by jehoshaphat | 2011-05-14 23:34 | Linux
(Linux)X11VNCでShiftキーを使っての記号が入力できない
Ubuntu10.04ベースの EcoLinux 10.04 で、apt-get install x11vnc で X11VNC(0.9.9-1) をインストールし使っていたわけですが、どうもShiftキーを押下しての記号入力がおかしくなります。

ググってみるとx11vnc 0.9.9でシフトキーが効かなくて困った: ひろろろぐ(仮) - hiroro's blogに情報載ってました。
どうやら、x11vnc のバグのようです。

x11vnc のオプションに -xkb を付けると解決しました。
by jehoshaphat | 2011-05-14 23:30 | Linux
(Linux)コンソールに表示されているデスクトップ画面をVNC(x11vnc)で操作する
(Linux)PuppyにVNCサーバを入れるや、(Linux)VNCサーバ構築でLinuxでVPNサーバを構築する方法をかきました。

Linuxで普通にVNCサーバ立てると、VNCリモートセッションはローカルログインセッションと異なります。VNCリモートセッションを複数張るとそれも別々のセッションとなるので、表示される画面もセッション毎に異なります。
複数ユーザ使用を強く意識したUnixの影響と思われますね。

ところがWindowsのクライアントOSは同時に1セッションが基本なので、VNCもローカルログオンしているユーザの画面が表示されます。
ヘルプサポートするときには便利ですね。
今回したい要件は、Windows版VNCのようにコンソール上に表示されている(ローカルログオンしている)デスクトップ画面をVNCでリモートするというものです。

x11vnc というソフトを使えばその要件が可能なようです。
x11vnc のpetパッケージを探したんですが見つからなかったので、例のごとく Ubuntu の deb パッケージを使うことにしました。

x11vnc 0.9.3 を使います。0.9.3はUbuntu9.10(コードネームkarmic)の時のものです。10.04(lucid)で使われてる0.9.9を使おうとするとlibc6(共通Cランタイムライブラリ GLIBC?)2.7以上が必要ということで動きませんでした。無理やりlib6の新しいバージョンを入れましたが、そうするとあちこちでおかしくなるのでお勧めできません。ちなみに、Puppy4.31に入っているlibc6のバージョンは2.6.1のようです。

ということで、x11vncパッケージを下記Ubuntuのサイトよりダウンロードし、インストールます。
http://packages.ubunut.com/karmic/x11vnc

しかし、実行しようとすると依存する複数のライブラリが無いということで実行できません。
それで、下記依存ライブラリをUbuntuよりダウンロードしてインストールします。
libvncserver0 0.9.3
libavahi-common3 0.6.25
libavahi-client3 0.6.25
libdbus-1-3 1.2.16


これで、プロンプトで x11vnc を実行すると起動します。
VNCクライアント側からは VNC Viewer で、IPアドレス:0 と指定するとアクセスできます。(ディスプレイ番号は0になります。)


後はパスワードの設定が必要ですよね。下記のようにします。

# x11vnc -storepasswd
Enter VNC password: ←パスワードを入力
Verify password:
Write password to /root/.vnc/passwd? [y]/n
Password written to: /root/.vnc/passwd

そして、パスワード認証付きでx11vncを実行するには下記のようにします。

# x11vnc -rfbauth /root/.vnc/passwd

x11vncはクライアント側でセッションを閉じると、終了してしまうのでx11vncを終了させたくない場合は、オプションで-foreverをつけてx11vncを実行します。

# x11vnc -forever


さて、よーやく使えるようになった x11vnc ですが、これをOS起動時に自動的に立ちあがっても欲しいです。

Puppyの場合は、/root/Startup/ に自動実行したいファイルのシンボリックリンクを張ればいいようです。

ということで、x11vnc を起動するシェルスクリプトを作成し、そのシンボリックリンクを張りました。

# vi /root/.vnc/x11vnc_startup.sh

#!/bin/sh

x11vnc -rfbauth /root/.vnc/passwd -forever

:wqでシェルスクリプトファイル保存

# ln -s /root/.vnc/x11vnc_startup.sh /root/Startup/x11vnc


これで再起動してみたところバックグラウンドでx11vncがたちあがるようになりました。
-foreverオプションも付けているので、クライアントがVNC Viewer で切断しても x11vnc は動いているのでまた接続できます。



UbuntuベースのLinuxMint9でも試してみました。
apt-get install x11vnc でインストールできます。
後の使い方は基本的には上記で書いたPuppyと同じです。
異なるのは自動起動させたい時の設定でしょうか。
x11vnc を LinuxMint9 で自動起動させるには、/etc/rc.local の exit0 より前に下記の記述を入れます。

/usr/bin/x11vnc -rfbauth /home/root/.vnc/passwd -forever


※x11vnc 0.9.9 にはバグがあるので、-xkb オプションを付けるといいようです。

/usr/bin/x11vnc -rfbauth /home/root/.vnc/passwd -forever -xkb

詳しくは、(Linux)X11VNCでShiftキーを使っての記号が入力できないを参照。


参考:
linuxやるブログ x11vnc:
puppy linux起動時にxonclockを自動起動させる - kazu9hateの日記
KNOPPIX6.2にVNC接続 (SSH転送) ある痴れ者の日記


追記:
2013/11現在http://packages.ubunut.com/karmic/x11vncはコンテンツがなくなっているようです。

RPMforge を使ったインストールのほうが簡単なので、それをメモしておきます。

RPMforge を http://packages.sw.be/rpmforge-release/ からダウンロードし、リポジトリのインストールを行います。


# wget http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el5.rf.i386.rpm
# rpm ihv rpmforge-release-0.5.3-1.el5.rf.i386.rpm


CentOS Baseのリポジトリ優先度を1にします。(rpmforgeよりも優先にするため)

# vi /etc/yum.repos.d/CentOS-Base.repo
↓[base]や[updates],[addons],[extras]などそれぞれに下記行を追加します。
priority=1



RPMforgeのリポジトリの優先を CentOS Baseのリポジトリ優先度より低くします。(今回は10)

# vi /etc/yum.repos.d/rpmforge.repo

[rpmforge]に以下追加。
priority=10 ←追加


yumでx11vncのインストールを実行します。

# yum install x11vnc



また、CentOS5でのx11vncの自動起動ですが、/etc/rc.local ファイルに /usr/bin/x11vnc -rfbauth /root/.vnc/passwd -forever を書いたのではダメでした。

それで xinetd 経由で起動することにしました。

以下のファイルを作成します。

# touch /etc/xinetd.d/x11vnc
# vi /etc/xinetd.d/x11vnc

service x11vnc
{
port = 5900
protocol = tcp
disable = no
socket_type = stream
wait = no
user = root
server = /usr/bin/x11vnc
server_args = -inetd -o /var/log/x11vnc.log -display :0 -rfbauth /root/.vnc/passwd -forever -bg -shared -enablehttpproxy -nolookup -auth /var/run/lightdm/root/:0
}


次に、サービスに対応するポートを設定します。

# vi /etc/services
↓を末尾に追加。
x11vnc 5900/tcp # VNC Server


# service xinetd restart


これで使えるようになりました。
by jehoshaphat | 2011-05-14 23:27 | Linux
(Linux)PuppyにVNCサーバを入れる
PuppyLinux4.31 にはVNCサーバが入ってないので入れてみました。

まず、RealVNCフリー版ののソースをhttp://www.realvnc.com/products/download.htmlからダウンロードします。

そして、ビルドしテスト起動してみます。

# tar xzvf vnc-4_1_3-x86_linux.tar.gz

# cd vnc-4_1_3-x86_linux

# ./vncinstall /usr/local/bin

# vncserver
You will require a password to access your desktops.
vncpasswd: error while loading shared libraries: libstdc++-libc6.2-2.so.3: cannot open shared object file: No such file or directory


どうやら C++ のライブラリが無いとか言っています。
ライブラリは /usr/lib 内に大抵入ってるんですが、たしかに必要と言われているファイルは有りません。

Puppyは deb パッケージが扱えるので、Ubuntu のページより libstdc++2.10-glibc2.2 パッケージをダウンロードし、インストールします。

これで、/usr/lib/libstdc++libc6.2-2.so.3 のファイルができました。(実際は libstdc++-3-libc6.2-2-2.10.0.so へのシンボリックリンクですが...)

再度 vncserver の起動に挑戦してみます。

# vncserver

You will require a password to access your desktops.

Password:
Verifi:
xauth: creating new authority file /root/.Xauthority
xauth: (arg):1: bad display name "puppypc:1" in "add" command
xauth: creating new authority file /root/.Xauthority

New 'puppypc:1(root)' desktop is puppypc:1

Creating default startup script /root/.vnc/xstartup
Starting applications specified in /root/.vnc/xstartup
Log file is /root/.vnc/puppypc:1.log

今度はちゃんとVNCパスワードが設定でき、起動もできしました。(スタートアップスクリプト xstartup も作成されています)
これで、Windowsクライアントから、VNC Viewer でアクセスしたんですが、画面がソリッド模様とコンソールしか映っていません。
どうやら既定のウィンドウマネージャ twm で立ちあがっているようです。

jwm のウィンドウマネージャで立ちあがってほしいので、下記のように /root/.vnc/xstartup ファイルを修正しました。

# vi /root/.vnc/xstartup

#!/bin/sh

[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources
xsetroot -solid grey
vncconfig -iconic &
xterm -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" &
#twm & ←コメントアウト
jwm & ←追加

これで、vncserver を立ち上げ繋いでみたんですが、メニューや立ち上げたアプリケーションのウィンドウはちゃんとJWMで表示されます。
しかし、デスクトップだけソリッド模様になってしまっています。
これ、なんとかなりませんかね。。。

また、vnc を終了するときは -kill:デスクトップ番号 とするんですが、どうもちゃんと切れないことがあるようです。

# vncserver -kill :1
Killing Xvnc process ID 21755
kill: cannot kill pid 21755: No such process

次回 vncserver 起動時に下記のようなメッセージが表示されてしまいます。

Warning: puppypc:1 is taken because of /tmp/.X1-lock
Remove this file if there is no X server puppypc:1

New 'puppypc:2(root)' desktop is puppypc:2

Starting applications specified in /root/.vnc/xstartup
Log file is /root/.vnc/puppypc:2.log



この場合はロックファイルを削除すればいいようです。

# rm /tmp/.X1-lock
# rm /tmp/.X11-unix/X1


参考:
Hot Linux - VNCのインストール/設定(Redhat7.1,Redhat7.3,Redhat9,WhiteBoxEL4,Fedora8)
Puppy Linux 4.3.1 VNC Serverのインストール: ペンギンの壺 有志によりPETパッケージにまとめたVNCも有るようです。こっち使えばすんなりとできたかもしれませんね。
by jehoshaphat | 2011-05-14 23:25 | Linux
(Linux)PuppyLinux5.1の日本語化
PuppyLinux5.1がいつの間にか出てました。
まだ、日本語サイトには4.31しかないのですが。。。

ここをみると、Puppy5系は Ubuntu Lucid(10.04)のパッケージやリポジトリを扱えるみたいなことが書いてます。
5系は通称 Lupu と呼ばれるようですね。

Puppu5.1のダウンロードはhttp://distro.ibiblio.org/pub/linux/distributions/puppylinux/puppy-5.1.1/から可能です。

日本語にするSFSファイルは、http://ring.riken.jp/archives/linux/puppylinux/sfs4/から、1.51をダウンロードし個人ファイルを置く場所に配置します。

メニューの System → BootManager configure bootup → lang_support_ja-1.5.1.sfs を Add ボタンで右ペインに追加します。

再起動すると、Country Settings というダイアログが開くので、言語を ja 日本語、キーボードを jp106(日本語キーボード) にします。

そうすると Xサーバーをリスタートするかどうか聞いてくるので、はい を選択します。

これで日本語化完了です。


5.1はデスクトップのクイックペットからブラウザもいろいろ簡単に選べたり、クイックペットメニューバーの もっと多くのPET から OpenOffice3.2も簡単に入れれたりと使い勝手が良くなっていますね。

参考:
Lucid Puppy 5.1.1の日本語化: PuppyLinuxで爆速PCライフ
織陣: 『Lucid Puppy 5.1』を試す
by jehoshaphat | 2011-05-14 23:22 | Linux
Debian系のパッケージ管理コマンド
RedHat系のパッケージ管理は rpm や yum で慣れてるんですが、Debian(Ubuntu)系はさっぱしです。

ということで、よく使うであろうDebian(Ubuntu)系のパッケージ管理コマンドをまとめます。


・パッケージの単体インストール
dpkg -i パッケージ名

・パッケージのインストール、アップデート (依存関係もみる。パッケージは空白区切りで複数指定可能)
apt-get install パッケージ名

・パッケージの情報のデータベースを更新
apt-get update

・全パッケージのアップデートを行う
apt-get upgrade

・インストールされているパッケージの検索
dpkg -l | grep 検索する文字

・インストールしたいパッケージの検索
apt-cache search 検索する文字


ちなみに、新しいパッケージを apt-get install でインストールしようとする時にあらかじめ apt-get update をしておかないと見つからないといわれることがあるようです。(EcoLinux10.04インストール直後に x11vnc をインストールしようとすると怒られました。update してからだと無事に入りました。)


参考:
Debian 目的別パッケージ操作コマンド一覧表
Linux Server: update (apt-get) Archive
by jehoshaphat | 2011-05-14 23:21 | Linux
(Linux)PuppyでWindows共有フォルダをマウントする
PuppyLinux4.31(kernel2.6.30.5)で、SambaClientを使ってWindowsマシンの共有フォルダにアクセスする方法です。

基本的には、(Linux)CentOSからWindows共有をマウントする方法 で書いたように mount を使えばOKです。

ただ、今回は接続するWindowsファイルサーバがWindowsドメインに属しているので、ActiveDirectory上のアカウントでログインします。

とりあえずまずIPアドレス指定でのアクセスです。

# mount -t cifs -o username=ユーザ名,password=パスワード,domain=ドメイン名,codepage=utf8,iocharset=utf8 //192.168.0.100/testdir /mnt/test

これでマウントできました。
codepage , iocharset は utf8 を指定しないと文字化けしてしまいました。
domain にファイルサーバが属しているドメイン名を指定すれば、ドメイン認証ができました。

共有フォルダ名が日本語の場合でもOKでした。
上記の例ではIPアドレス指定ですが、FQDNでもOKです。
ホスト名だけでアクセスするには、(Linux)LinuxでDNSサフィックスを設定する にあるように、/ete/resolv.conf にドメイン名設定するとOKです。
下記のような感じです。

FQDN名でのマウント
# mount -t cifs -o username=user001,password=1234,domain=hogehoge,iocharset=utf8 //filesv.hogehoge.jp/事務共有 /mnt/test

ホスト名でのマウント(/ete/resolv.conf 設定済み)
# mount -t cifs -o username=user001,password=1234,domain=hogehoge,iocharset=utf8 //filesv/事務共有 /mnt/test

mount.cifs を使ってもマウントできますが、その場合、書式が若干違います。

# mount.cifs //192.168.0.100/testdir /mnt/test -o username=user001,password=1234,domain=hogehoge,codepage=utf8,iocharset=utf8


参考:
mount.cifs
mount.cifsでの文字化け防止 - 間違いだらけの備忘録
mountコマンドでCIFSをファイル共有 - profaim.jp


で、今回の肝心の要件DFSアクセスを試してみました。
DFSはドメインベースで WindowsServer 2003 R2 上で構築しています。
もし、DFSがOKなら、あちこちに散らばっている共有フォルダ毎にマウントの設定をする必要なく、DFSルートだけマウントすればOKなので、非常に運用がしやすくなります。

というこことでPuppy4.31で試したんですが、DFSルートのマウントはできます。
しかし、ターゲットフォルダにリンクしているディレクトリを開くと、本来はターゲットフォルダ先のファイル・フォルダ一覧が見えないといけないのですが、空の状態になっています。


Fedora13だと何もしなくてもOKでした。
Ubuntu10.04は、CIFSマウントのパッケージを別途入れる必要がありました。apt-get install smbfs で、cifsにアクセスするためのパッケージが入ります。
(Ubuntu10.10だと別途入れるパッケージは cifs-utils にかわってました。)


Puppy5.1がUbuntu10.04のベース的な感じで書いてあったんで、Puppy5.1でも試してみました。

Puppy5.1でSambaアクセスに関係ありそうな以下のdebパッケージを入れました。

debconf_1.5.28ubuntu4
debconf-i18n-1.5.28ubuntu4
libocale-gettext-perl_1.05-6
libtext-charwidth-perl_0.04-6
libtext-iconv-perl_1.7-2
libtext-wrapi18n-perl_0.06-7
netbase_4.35ubuntu3
samba-common-3.4.7~dfsg
ucf_3.0025
util-linux_2.17.2
mount_2.17.2
keyutils_1.2-12
libsmbclient_3.4.7~dfsg
smbclient_3.4.7~dfsg
samba-common-bin_3.4.7~dfsg
smbfs_3.4.7~dfsg


下記はDFS成功したFedora13,Ubuntu10.04,Ubuntu10.10と、DFSがNGだったPuppyLinux5.1との各モジュールの比較です。

┌────────────────┬─────┬──────┬──────┬──────┬───────────┐
│ │Puppy5.1 │Ubuntu10.04 │Ubuntu10.10 │Fedora13 │バージョン確認コマンド│
│カーネル │2.6.33.2 │2.6.32-21 │2.6.35-22 │2.6.33.3-85 │uname -a │
│cifs.ko │1.62 │1.61 │1.64 │1.62 │modinfo cifs │
│mount.cifs │1.12-3.4.7│1.12-3.4.7 │4.5 │4.3.1 │mount.cifs -V │
│パッケージlibsmbclient │3.4.7 │3.4.7 │3.5.4 │3.5.2-60 │ │
│パッケージsmbclient │3.4.7 │3.4.7 │3.5.4 │3.5.2-60 │ │
│パッケージsmbfs │3.4.7 │3.4.7 │ │ │ │
│パッケージsamba-common │3.4.7 │3.4.7 │3.5.4 │3.5.2-60 │ │
│パッケージsamba-common-bin │3.4.7 │3.4.7 │3.5.4 │ │ │
│パッケージsamba-winbind-clients │ │ │ │3.5.2-60 │ │
│パッケージcifs-utils │ │ │4.5-2 │4.4-3 │ │
└────────────────┴─────┴──────┴──────┴──────┴───────────┘



Puppyの場合、他と比べても古いモジュールやパッケージを使ってるわけではないのでDFSアクセスできると思うのですが。。。

Samba-3.4.7-Lucid.petも入れてみましたが、ダメでした。
by jehoshaphat | 2011-05-14 23:15 | Linux