2007-12-25

M+ TESTFLIGHT 014をNTEmacsで使う

Emacsは、ひとつのフォントセットとして定義することで、M+と他のフォントとの混植が簡単にできる。まだ漢字部分は作りかけのM+だけど、他のフォントと組み合わせれば、現時点でも十分実用になる。

フォントセットの定義については、余所でも色々解説されているから省略。ここで本題。TESTFLIGHT 014時点では、M+ FONTSで配布されているフォントファイルには、NTEmacsで使う上で問題がある。

問題点はふたつ。

  • フォントファミリ名に+が入っているので、文字を表示するフォントとしてM+を使えない
  • OS/2テーブルのulCodePageRangeにLatin 1が含まれないので、Latin 1の範囲ではM+を使えない

解決策としては、フォントファイルを書き換えるのが手っ取り早い。ttfname3を使って編集すると、バイナリエディタなどを使って編集するよりは楽が出来る。使い方はマニュアル参照。TrueTypeはビッグエンディアンなので、Codepage1を編集するときに注意する。

以下詳細。まずファミリ名について。MicrosoftのTrueTypeの規格を流し読みした限りでは、OS/2とWindowsではUnicodeで記述しろ、とは書いてあるけど、記号類に関する制限とかは書いてない。メモ帳などでも普通に使えるので、恐らくNTEmacsが原因。

次にOS/2テーブルのulCodePageRange。これは、フォントに含まれるコードページを指定しているんだけど、M+ではこれにLatin 1が含まれていないため、Latin 1の範囲で使えない。Latin 1が含まれることをプログラムに伝えるために、最下位ビットを立てると、NTEmacsでもLatin 1部分をM+で表示できるようになる。……多分こういう仕組み。こちらはまるで自信なし。

2007-12-04

不要なサービスを停止する

セキュリティ上の理由から、不要なサービスを停止する。

# svcs | grep online

で有効になっているサービスを確認して、要らないサービスを見付ける。サービスの概要は-lで確認できる。Solaris のシステム管理 (基本編)に詳しい。Solarisはこういったオフィシャルな情報が充実していて快適。

Nevada Build 77では、telnetやFTPなどはデフォルトで無効になっているようなので、sendmailだけ無効に。

# svcadm disable sendmail

rootのホームディレクトリ

Solarisはrootのホームディレクトリが/でビビる。/にドットファイルが溜まっていくのは嫌じゃないのか。何という俺様root。うっかりrootでJava Desktop Systemを使ったら、/にいっぱい設定ファイルを作られた。

調べてみると、結構rootのホームディレクトリが/なことに抵抗がある人は多いらしい。Solarisをセキュアな設定にする作業を自動化してくれるSolaris Security Toolkitというツールがあって、Solaris Security Toolkit 4.2 リファレンスマニュアルでも、

多くの Solaris セキュリティー強化スクリプトおよび手順では、root アカウントにシングルスラッシュ (/) 以外のホームディレクトリを与えることを推奨しています。Solaris OS の root アカウントのホームディレクトリを変更すると、次のように、セキュリティーとシステム管理の点で利点があり、また Solaris OS とそのほかの UNIX システム (Linux/*BSD を含む) との互換性が高くなります。

Sun Microsystems, Inc. 2005. Solaris Security Toolkit 4.2 リファレンスマニュアル. <http://docs.sun.com/source/819-3793-10/index.html>. Accessed 2007 Dec 4.

と書いてる。だったら初めからそうしとけよ、とも思うけど、後方互換性が問題になったりするのかもしれない。

# mkdir /root
# chmod 700 /root
# usermod -d /root root

suでrootになって/rootを作り、ホームディレクトリを/rootに。後はドットファイルなどを/rootに移動すれば良い。

ユーザの追加

Build 77時点でのNevadaのインストーラでは、インストール時にユーザアカウントを追加できないので、インストールが終わったら、まず自分のアカウントを追加しないといけない。管理ツールかコマンドラインの、ふたつの選択肢がある。ここではコマンドラインについて。

# groupadd newuser
# useradd -g newuser -m -d /export/home/newuser newuser

groupaddでグループを作り、useraddでユーザを追加する。上の例ではユーザ名と同じグループをまず作り、次にそのグループに属したユーザを作っている。-gでプライマリグループ、-dでホームディレクトリを指定している。-mはホームディレクトリが存在しなかったときに新しくディレクトリを作るオプション。逆に言えば、このオプションを付けなければホームディレクトリは自動的に作られない。

UNIXでホームディレクトリと言えば/homeだけど、上の例では/export/home/newuserとなっている。これには理由がある。

Solarisでは、/homeはautofsで管理され、ネットワーク上での共有に最適化されているそうだ。複数の端末を前提としている辺り、OSとしての性格が出ていると思う。あるいは、エンタープライズにフォーカスしているOSというのは、みんなこういうものなんだろうか。

さておき、autofsの管理によって、/homeには直接ホームディレクトリを置けなくなっている。Solarisでは、/export/homeにホームディレクトリの実体を置き、/homeに/export/homeを自動的にマウントするのが慣例らしい。

郷に入れば、ということで、Solarisのシステム管理を参考に設定する。ホームディレクトリを参照するときに$HOMEを使ったり、シンボリックリンクを相対パスで作るとポータビリティの観点から良いらしい。納得。

自分のユーザアカウントができたら、rootから作ったユーザに切り替え、必要なときだけsuでrootでの作業をする。

Nevada

Nevada Build 77をVMware Server 1.0.4にインストールした。

インストールについては、Solaris 10なども含めて、結構な量の情報があって助かる。意外にまだSolarisは人気があるらしい。Linuxとかに比べれば雀の涙だろうけど。

とりあえず、本来の目的である備忘を兼ねて、以下インストール後の設定について記録。ちなみに、ユーザを追加して、ログインし直すまでは、コンソールからログインした方が良い。rootでJava Desktop Systemを使ったりすると、/に設定ファイルなどがいっぱい作られてしまう。

Jetico Personal FirewallでVMwareのブリッジ・ネットワークを許可するには

VMwareから送られるパケットが、Block All not Processed IP Packetsで弾かれているのが、Jeticoのログで分かる。なので、単純に、ゲストOSに割り振ったIPアドレスへのincoming packetoutgoing packetを許可したシステムIPテーブルを作れば、ゲストOSが外部と通信できるようになる。