2009-06-18

USBメモリから起動できるOpenSolarisを作成する

OpenSolarisの配布サイトには、CD-ROM(ISO9660)イメージと一緒に USBメモリ用のイメージが置いてある。
BIOSによっては USB外付けCD-ROMドライブから OpenSolarisをブートすることが出来ないようなので、そういう場合は USBメモリを使用すると良い。容量は 1GB以上必要。
このUSBメモリ用イメージ、特にMBRを含んであるわけではなくただの FFS(FastFileSystem)イメージのようだ。なので ddで書き込んでも起動できない。どうやら Solaris上で usbcopyというコマンドを使って書き込みをしないといけないらしい。

usbcopyコマンドを取得するには 下記のコマンドを使う。

hg clone ssh://anon@hg.opensolaris.org/hg/caiman/distro_constructor

usbcopyコマンドは取得したdistro_constructor 以下の tools ディレクトリにある。
イメージファイル名を引数にこれを起動すると書き込み対象の選択を求められ書き込みが行われる。

2009-06-12

Windows Vistaで RDP7を使う

Windows7のリモートデスクトップはプロトコルが拡張されており、クライアント側でより多くのレンダリング処理を行うことによって描画性能を大幅に向上させることができている。

今のところ Windows Vistaのリモートデスクトップクライアントはこの新しいプロトコル RDP7に対応していない(将来的にアップデートが提供される可能性はある)のだが、Windows7のバイナリを持ってくることで一応動作させることは可能だ。

Vista側に適当なフォルダを作り、Windows7の System32フォルダから、下記のファイルをコピーしてくれば良い。

mstsc.exe
mstscax.dll
ja-JP/mstsc.exe.mui
ja-JP/mstscax.dll.mui

mstsc.exe が RDP7対応のリモートデスクトップクライアントなので、これを実行することで Windows Vistaからでも Windows7を RDP7で操作することが出来る。

2009-06-11

DBDを使ってApacheのBasic認証をものすごくアドホックに行う

Apacheで Basic認証をかけるとしたら、大抵はどこかに htpasswdファイルを作成してそこにユーザを登録するというひと手間をかける方法を用いるものであるが、ただ単に招かれざる客を追い返すためにパスワードを設定したいだけであれば、複数ユーザを扱うことのできる htpasswdデータベースという仕組みはいささかオーバースペックである。というか余計なファイルを作成したくない。

Apacheの設定ファイル又は .htaccessファイル内にパスワードを直書きしてしまうことが許される状況(かつ、運良くいくつかの条件を満たしている)なら、htpasswdファイルを作成しなくても下記の設定だけで Basic認証が出来る。PASSWORDは Basic認証で用いたいパスワード。ユーザー名は無視される。

AuthType Basic
AuthName "My Basic Auth"
Require valid-user
AuthBasicProvider dbd
AuthDBDUserPWQuery "select encrypt('PASSWORD')"

条件



  • Apache 2.2以上

  • mod_dbdと mod_authn_dbdが httpd.confにてロードされている

  • apr-utilに apr_dbd_mysql が含まれている

  • どこかに接続可能な MySQLが動作している

  • mod_dbdの DBDriverディレクティブで mysqlが選択されており、(必要なら)DBParamsで接続設定がされている


解説


Apache2.2以降には DBDという仕組みがあって、SQLデータベースへ接続するための基礎となるAPIが定義されている。DBDを利用した認証を可能にする mod_authn_dbd及び DBMSのドライバと組み合わせることによって Basic認証のユーザーデータをデータベースから参照することが出来る。

ところが、ユーザーデータを参照するためのSQLは自由に設定できるため、実在のテーブルから参照しなくてもそれっぽい結果を返すSQLを書いておきさえすれば認証が可能なので上記のような手抜きに使うことも可能というわけだ。

例のような select文は MySQLに接続さえ出来ればデータベースに connectしてすらいなくても実行できるため(賢明な読者は既にご存じと思うが MySQLへ接続を確立するのと MySQL内のデータベースに connectするのはフェーズの異なる操作である)、MySQLが Apacheと同一ホストで動作しているなら DBParamsディレクティブで接続情報を記述しておく必要もない(MySQL側の設定にもよるかもしれないが)。

2009-05-31

Oracle 11g ODBC Driver sqoras32.dllのエラー

Oracle11g Clientを Instant Clientインストールして ODBCドライバを使おうとすると ODBCデータソース設定で 126番なるエラーが出る。これは SQORA32.DLL の MFC71.DLLへの参照を解決できないことが原因のようだ。
どこかからMFC71.DLLを持ってきて SQORAS32.DLLと同じ場所にコピーしてやれば解決する。

2009-05-28

Windows7をマルチユーザー仕様に改造する

以前に書いたエントリ Windows XP Professionalをマルチユーザー仕様に改造するの Windows7対応版。

今回からコトは単純で、\Windows\System32\termsrv.dll を書き換えるだけで良く、レジストリの編集は必要なかった。

書き換えの内容は下記(64bit版 Windows7の場合)

検索:
8B 87 38 06 00 00 39 87 ** ** ** ** ** ** ** ** ** **
置換:
B8 00 01 00 00 90 89 87 38 06 00 00 90 90 90 90 90 90

検索:
60 BB 01 00 00 00
置換:
60 BB 00 00 00 00

検索:
50 00 74 18 48 8D
置換:
50 00 EB 18 48 8D

Linux上からパーティションをマウントして bviで書き換えるのが一番楽で良い。
NTFSのマウントには ntfs-3gを使うのが良い。カーネルでFUSEが有効になっていること。

mount -t ntfs-3g /dev/sda2 /mnt # Windows7のインストールされているディスクが /dev/sdaの場合

bviでパターンを16進表記で検索するには、:# ... # を使う。例えば 60 BB 01 00 00 00の検索は
:#60 BB 01 00 00 00#
とする。上書きモードに切り替えるには R を入力し、上書きが終わったら ESCで上書きモードを終了する。

参考:
Enable Concurrent Sessions in Windows 7 Pre RC Build 7057

Reverse Proxyの裏にいるホストでphpMyAdminを使う場合

config.inc.phpに

$cfg['PmaAbsoluteUri'] = 'http://my.public.hostname.com/phpMyAdmin/';

のようにして外側から見たURLを教えてやる必要がある。

2009-05-17

Gentoo Linuxに WordPressをインストールする

WordPressはオープンソースのブログプラットフォーム。
MovableTypeと違って商用でも無償で使えるのと、Perlでなく PHPで書かれているところが特徴。
基本的には MySQL専用である。プラグインにより SQLiteで動作させることも出来るらしいが、面倒そうなのでパス。

# WordPressを emergeする
USE="mysql apache2" emerge wordpress

これで WordPressは /var/www/localhost/htdocs/wordpress にインストールされる。

# MySQLの初期化
emerge --config dev-db/mysql
# MySQLを起動する
/etc/init.d/mysql start
# MySQLに接続し、データベースとユーザを作成する
mysql -u root -p
mysql> create database wordpress;
mysql> grant all privileges on wordpress.* to wordpress@localhost with grant option;
mysql> quit

# MySQL接続情報の設定(DB_NAME, DB_USER, DB_PASSWORD)
vi /var/www/localhost/htdocs/wordpress/wp-config.php
# コンテンツ用ディレクトリの所有者をapacheに変更
chown -R apache /var/www/localhost/htdocs/wordpress/wp-content

# -D PHP5を追加してPHPを有効にする
vi /etc/conf.d/apache2
# Apache起動
/etc/init.d/apache2 start

http://hostname/wordpress/
初回アクセス時にセットアップが行われる。必要事項を入力すると管理ユーザ名とパスワードが発行される。

日本語化


WordPressの日本語サイトからパッケージされた日本語版をダウンロードしてインストールした場合もちろんこの手順は要らないわけだけれども、Gentooを使うような連中の殆どはそんなのノーサンキューかと。というわけで前述の手順で通常の英語版をインストールした後に日本語化する手順。

先にhttp://svn.automattic.com/wordpress-i18n/ja/tags/あたりから先刻 Portageでインストールしたのと同じバージョンのサブディレクトリに下りていき、日本語リソースファイル ja.mo を探してその URLを控えておく。

# 各国語リソースを置く場所を作成
mkdir /var/www/localhost/htdocs/wordpress/wp-includes/languages
# リソースをダウンロード
cd /var/www/localhost/htdocs/wordpress/wp-includes/languages
wget http://svn.automattic.com/wordpress-i18n/ja/tags/2.7.1/messages/ja.mo
# 設定ファイルを編集する ( WPLANG = 'ja' )
vi /var/www/localhost/htdocs/wordpress/wp-config.php