2009-10-10

いまさらWnn8を使う

以前調べたとき、ATOKをオンするデフォルトのキー(Ctrl+Space)は設定できるけど、オフするキーは変更できなかった。

このため、Emacsのset-markと非常に相性が悪くて、これだけの理由でWnn8を使っていたりする。

そんなわけで、インストールしたてのSolarisでWnn8を使う手順。

(1) root権限でjserverを起動
svcadm enable wnn8/server

(2) iiim-propertiesコマンドで変換エンジンからATOKを外してしまう。

(3) wnnenvutilコマンドで好みの設定にする

自分の設定はこんな感じ

[変換]タブ: 数字・アルファベットを必ず半角にする
[入力/変換]: 「楽々入力設定」で出てくるダイアローグでチェックを両方外す
[キー]タブ: 基本スタイルをWnnに。

Solaris 10/09にFirefox3.5.3をインストール

本体を
http://releases.mozilla.org/pub/mozilla.org/firefox/releases/3.5.3/contrib/solaris_pkgadd/firefox-3.5.3.en-US.solaris-10-fcs-sparc-pkg.bz2
からダウンロードしてきてインストール。

Firefoxを起動したら、
http://releases.mozilla.org/pub/mozilla.org/firefox/releases/3.5.3/linux-i686/xpi/ja.xpi
にアクセスしてランゲージパックをインストールしてFirefoxを再起動。

楽ちんw

2008-11-08

GNU makeとSolaris makeのシェル置換

Makefileを書くとき、別の場所にある不特定多数の複数のファイルのベースファイル名だけが定義されたマクロを定義したいとする。

GNU makeだと
DIR = xxx/yyy/zzz
FILES = $(shell cd $(DIR); echo *.cc)

Solaris makeだと
DIR = xxx/yyy/zzz
CMD = cd $(DIR); echo *.cc
FILES = $(CMD:sh)

でできるらしい。

でも、できれば同じMakefileを使いたいものだ。いろいろ迷って

DIR = xxx/yyy/zzz
CMD = cd $(DIR); ls *.cc
FILES = $(CMD:sh) $(shell $CMD)

としてみた。一応動くけど… 微妙

サブMakefileを動的に作って、それを読み込ませるべきかな?

Solaris x86のカーネルデバッガの起動方法

デバッガ制御下でカーネルを起動させた場合に(カーネルパニックを起こさずに)デバッガに入る方法がman kdbに載ってた。
F1+A、またはShift+Pauseとのこと。なるほどね。
SPARCシステムでもShift+Pauseは有効らしい。STOPキーが付いてないキーボードもちゃんとサポートされているわけだ。

Xサーバが動いている時にF1+A押したらどうなるのか試したら、画面はフリーズして、見えないところでデバッガが動いた。
::continueでデバッガからカーネルに復帰するので、何事もなかったかのようにXサーバが動作を再開するのがちょっとおかしい。

Solarisの起動画面 #3

ついでに/boot/solaris.xpmの作り方。

基本的には、14色に減色した640x480のxpm画像を用意すれば良い。
GIMPでやるとすると、以下のような手順になる。

  1. 画像>画像拡大縮小で縦か横を480または640に合わせる。
  2. 画像>キャンバスサイズで640x480にする。
  3. 画像>モード>インデックスで、14色パレットを使うインデックスカラーモードに変更する。このときディザを使うほうが良い。
  4. xpmファイルとしてファイル保存。
  5. xpmファイルをテキストエディタで開く。
  6. "640 480 14 1",と書いてある行があるはずなので、"640 480 15 1",に書き換える。
  7. その下に"! c None",という行を追加する。ただし、ファイル中に!という文字が使われていたら、別の文字を選ぶ必要がある。

基本的にはWindows9xと同じような作業なのではないかと。若干面倒くさいけど、Windows2000では起動画面のイメージはカーネルの実行ファイルに埋め込みらしく、再設定には専用のツールが必要らしい。それよりはましかな。

そんなわけで、我が家では制服姿の女子小学生が起動画面に設定されておりますw
こんなSolarisもそうそうないだろうな orz...

Solarisの起動画面 #2

…ということで、Solaris 10/08の起動画面を設定してみたのだけど、GRUBのほうの画面は表示されるものの、カーネルが起動してからの画面は表示されないことが判明。

よく見ると、boot_archive(Linuxでいうinitrd.gzみたいなもの)に/boot/solaris.xpmが入ってない。
そこで、boot_archiveに入れるファイルを決める/boot/solaris/filelist.ramdiskにファイル名を入れてみたのだけど、やはり表示しないようだ。あれー?

ZFS rootなのが影響しているのかな?

2008-11-04

Solarisの起動画面

ブート画面がグラフィカルになったのはGRUBを採用した頃だったかな?
最初はその軟派さがもの珍しくて喜んで設定したものだっけ。

あったあった、「ささの豆知識ブログ」だな。
http://blogs.sun.com/sasanuma/entry/solaris_10_1_06_graphical

だけど、絵柄はたいして代わり映えのするものではないので、最近は微妙にうっとおしかったりしてw
何の情報も出てこないのも無駄な話ではあるし、しばらく何の表示もされないままなのはハングっぽくてたまにギョッとすることがある。それに、コンピュータの起動画面というのは文字がぶわーっと出るものだという刷り込みがあるんだよねw

というわけで、単にテキストモードにするだけでなく、カーネルを冗長モードにし、かつSMFのサービス起動を表示させてみる方法。

GRUBのmenu.lst(/boot/grubや/rpool/grubの下に入ってる)のsplash文をコメントアウト。んでもって、
#---------- ADDED BY BOOTADM - DO NOT EDIT ----------
から
#---------------------END BOOTADM--------------------
で囲まれている部分を、その外側にコピー。コピーしたほうのkernel行に"-v -m verbose"を追加する。

例えば
#---------- ADDED BY BOOTADM - DO NOT EDIT ----------
title Solaris 10 1/06 s10x_u1wos_19a X86
root (hd0,0,a)
kernel /platform/i86pc/multiboot
module /platform/i86pc/boot_archive
#---------------------END BOOTADM--------------------
と書いてあったら、
title Solaris 10 New!
root (hd0,0,a)
kernel /platform/i86pc/multiboot -v -m verbose
module /platform/i86pc/boot_archive
#---------- ADDED BY BOOTADM - DO NOT EDIT ----------
title Solaris 10 1/06 s10x_u1wos_19a X86
root (hd0,0,a)
kernel /platform/i86pc/multiboot
module /platform/i86pc/boot_archive
#---------------------END BOOTADM--------------------
とするだけでよい。

ここらへんはman boot, man kernelに載ってる。ついでに-kオプションもつけておくと、デバッガの制御下でカーネルを起動できる。といっても、パニックを起こすようなことがなければ役には立たないけど…

Solaris 10/08をインストール

Xubuntuで疲れきってしまったので、気を取り直してSolaris 10/08をインストール。
これもかなり独特なインストーラだけど、ドキュメントはかなり揃っているのでGoogle先生に頼ることはあまりないのが良い。

ただ、マシンの構成情報を入力する画面のインターフェースはいいかげん直してもらいたいものだ。青地のスクリーンとか(どうにもMSXを思い出してしかたがないw)、次に進むのがEnterではなくF2とか、かなり異彩を放っている。
まあ、そうそう何度もインストールするものでもないけど…

では遅まきながらZFS RootやVirtual Boxを堪能するとしますか。

ThinkPad 240 / Silicon Motion Lynx EM+でX.org起動せず

タイトルのみ…
疲れたよ、パトラッシュ…

なんかこのビデオカード、X.orgにとってはかなりの地雷らしい orz...
先に言ってくれよ…

Xubuntu 8.10のネットインストール #2

ネットインストールでごちゃごちゃ頑張ってはみたんだけど、どうにも成果あがらず… xubuntu-desktopパッケージをインストールできればXubuntuシステムのインストールが完了するのだけど、どういうわけか失敗してしまう。

そのうち「なんでネットインストールなんかしているんだろう」というところまで気分が萎えてきてしまう始末w ただ、これが結果的には突破口になった。

そもそもネットインストールを試みる理由を考えてみると、

  1. 光学ドライブそのものがない/接続できない/認識しない
  2. 光学ドライブから起動できない

があると思うんだけど、今回は後者のケース。よく考えるとUSB接続のDVDドライブがあるので、いったんカーネルさえ起動してしまえばそこからはインストーラが起動できるはず。

インストーラはPXEから起動した場合とCD-ROMから起動した場合で実は2種類ある。PXEから起動されるインストーラは「ミラーサーバからごっそりダウンロードしてくる」という動作になっており、この動作を行なわせるスクリプトがCD-ROMのinstall/netboot/ubuntu-installer/i386/initrd.gzに入ってTFTP経由で転送される。

それに対し、CD-ROMから起動する場合のインストーラは「ひとまずCD-ROMの内容を使う」という動作になっており、CD-ROMのinstall/initrd.gzに入っている(ファイル名は同じだが、中身は別)。

そんなわけで、「ネットインストール用のinitrd.gz」を「CD-ROMからのインストール用のinitrd.gz」に差し換え、それをTFTPで転送させてみると…
おお、何事もなくUSB-DVDドライブからインストール始めたよ!
そんなわけで、ThinkPadにもXubuntuインストール完了

2008-11-03

日立Flora用のxorg.conf

今回Xubuntuを入れたFloraは、もともとWin98の時代に企業向けに出されていた機種で、VRAMの量が極めて少ない。このため、デフォルトの24bppでは解像度が800x600になってしまう。

そこで、今どき必要な人がいるとも思えないのだけどxorg.confをさらしてみる。
Section "Server Layout"
Identifier "Configured Layout"
Screen 0 "Default Screen" 0 0
InputDevice "Configured Mouse" "CoreMouse"
InputDevice "Configured Keyboard" "CoreKeyboard"
EndSection

Section "Device"
Identifier "Configured Video Device"
EndSection

Section "Monitor"
Identifier "Configured Monitor"
HorizSync 40-50
VertRefresh 50-70
EndSection

Section "Screen"
Identifier "Default Screen"
Monitor "Configured Monitor"
Device "Configured Video Device"
DefaultDepth 16
EndSection

Section "InputDevice"
Identifier "Configured Mouse"
Driver "mouse"
EndSection

Section "InputDevice"
Identifier "Configured Keyboard"
Driver "kbd"
Option "XkbRules" "xorg"
Option "XkbModel" "jp106"
Option "XkbLayout" "jp,jp"
Option "Xkbvariant" "106,"
Option "XkbOptions" "ctrl:swapcaps"
EndSection

DefalutDepthを16にするだけではダメで、HSync/VSyncを明示的に指定することが必要。

Ubuntu 8.10のX.orgはctrl:swapcapsが効かない

ネットインストールに挫折し、日立Floraで普通にインストール。うーん、簡単でいいなあ…

で、困ったことがひとつ。
自分は気持ちは若いつもりなのだけど、CtrlキーはAの横にないとダメなオールドタイプである。特にノートPCでは手の腹でCtrlを押せないので、必ずCapsとCtrlは入れ替え(もしくは両方ともCtrl化)を行なっている。

さっそくxorg.confをいじって
        Option          "XkbOptions" "ctrl:swapcaps"
を追加してみたのだけど… 効かねえ orz...

ログを見ると、途中までは記述を読み込んでいるようなのだけど、途中でevdevとかいうドライバ(?)が再設定しなおしているようだ。余分なことを…

そんなわけでカーネル側のキーマップを変えようと思い、/etc/console-setup/boottime.kmap.gzのkeycode 58のCaps_LockをすべてControlに置換。
ただし、これも仮想端末ではきちんと反映されるものの、XサーバではCapsはやはりCapsのまま。

最終的には
#!/bin/sh
setxkbmap -option ctrl:swapcaps
という内容の/etc/X11/Xsession.d/10setxkbmapを作って回避。やれやれ

Xubuntu 8.10のネットインストール

CG定点観測さんでXubuntuというものがあるのを知り、古いノートPCを再生させようと思い立つ。

で、たまたま思い立った日がUbuntu 8.10とXubuntu 8.10がリリースされた日で、さっそくAlternateのCD-ROMイメージをダウンロード。Think Padは光学ドライブがないので、ネットインストールに挑戦… これが茨の道だった。

分かったこと。

  • DHCP+TFTPでブートさせるのまでは簡単。
  • DOS対策のためか存在しないファイルを要求するとTFTPサーバが少しウェイトするので、ubuntu-installer/i386/boot-screens/以下にamd.cfg gtk.cfg amdgtk.cfg adamd.cfg adgtk.cfg adamdgtk.cfgという名前の空のファイルを置いておくと高速にメニューが出てくる。
  • kickstartという自動インストール機構がある。Solarisで言うところのjumpstart。
  • kickstartの設定ファイルの場所はubuntu-installer/i386/boot-screens/text.cfgで指定する。
  • ただし、Xubuntuのインストーラがkickstartの書式を直接理解するというわけではない。実際にはインストール時にkickseedというプログラムがpreseedという別の形式(?)のファイルに変換しているだけらしい。凝ってるなあ…
  • で、このkickseedのスクリプトがバグってる。getoptが-lオプションを認識出来ないので、kickstartの設定がほとんど反映されない。


最後のが影響が大きく、ミラーサーバの指定ができずに必ず公式サーバに接続しにいこうとしてしまう。まあ、時間のある時だったらいいけど、できればローカルなミラーサーバを探しにいって欲しいわけだ。

一応カーネルの起動オプションで生の(すなわちkickseedが動的に生成したものではない)preseedを指定することもできるのだが、これが反映されるのがkickseedが動いてミラーサーバを決めた後らしく、解決策にならない。

そんなわけで、こんな方法で逃げてみた。

  1. mkdir /tftpboot/ubuntu-installer/i386/initrd
  2. cd /tftpboot/ubuntu-installer/i386/initrd
  3. gzip -dc ../initrd.gz | cpio -idv
  4. lib/kickseed/handlers/url.shのurl_handler()の先頭に以下を追加。超強引wwww

    ks_preseed d-i log/url string ''
    ks_preseed d-i mirror/country string 'enter information manually'
    ks_preseed d-i mirror/protocol select http
    ks_preseed d-i mirror/http/hostname string 192.168.1.xx
    ks_preseed d-i mirror/http/directory string /xubuntu

  5. 同じくlib/kickseed/handlers/user.shのuser_handler()の先頭に以下を追加。これでパスワードなしのユーザを追加する。

    ks_preseed passwd passwd/make-user boolean true
    ks_preseed passwd passwd/username string xxxx
    ks_preseed passwd passwd/user-fullname string xxxx
    ks_preseed passwd passwd/user-password-crypted password

  6. find . | cpio -oc | gzip > ../initrd.gz

(作業はSolaris上でやったので、cpioのオプションがLinuxと違うかもしれない)

要するに、kickseedがやるはずだった処理を、getoptに差し掛かる前に自前で実行してしまおうというものだ。kickstartの設定ファイルには

install
url --url http://192.168.1.xx/xubuntu/
user xxxx --fullname xxxx --passwd xxx

%packages
xubuntu-desktop
と書いてあるが、実際にはオプションはまったく解析されない。

で、大体これでうまくいくんだけど、パッケージの選択がまだうまくいかないのでベースシステムだけになってしまう。あと、sources.listもおかしいかな。うーん…

2008-10-13

DECOチョコ

オリジナルの画像でラッピングされたチロルチョコを作ってくれるサービスがあるらしい。
DECOチョコ

45個入り(画像3種類x15個)で2362円+送料なので結構お手頃。なんかのネタによさそうなのでメモ。