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を動的に作って、それを読み込ませるべきかな?
2008-11-08
Solaris x86のカーネルデバッガの起動方法
デバッガ制御下でカーネルを起動させた場合に(カーネルパニックを起こさずに)デバッガに入る方法がman kdbに載ってた。
F1+A、またはShift+Pauseとのこと。なるほどね。
SPARCシステムでもShift+Pauseは有効らしい。STOPキーが付いてないキーボードもちゃんとサポートされているわけだ。
Xサーバが動いている時にF1+A押したらどうなるのか試したら、画面はフリーズして、見えないところでデバッガが動いた。
::continueでデバッガからカーネルに復帰するので、何事もなかったかのようにXサーバが動作を再開するのがちょっとおかしい。
F1+A、またはShift+Pauseとのこと。なるほどね。
SPARCシステムでもShift+Pauseは有効らしい。STOPキーが付いてないキーボードもちゃんとサポートされているわけだ。
Xサーバが動いている時にF1+A押したらどうなるのか試したら、画面はフリーズして、見えないところでデバッガが動いた。
::continueでデバッガからカーネルに復帰するので、何事もなかったかのようにXサーバが動作を再開するのがちょっとおかしい。
Solarisの起動画面 #3
ついでに/boot/solaris.xpmの作り方。
基本的には、14色に減色した640x480のxpm画像を用意すれば良い。
GIMPでやるとすると、以下のような手順になる。
基本的にはWindows9xと同じような作業なのではないかと。若干面倒くさいけど、Windows2000では起動画面のイメージはカーネルの実行ファイルに埋め込みらしく、再設定には専用のツールが必要らしい。それよりはましかな。
そんなわけで、我が家では制服姿の女子小学生が起動画面に設定されておりますw
こんなSolarisもそうそうないだろうな orz...
基本的には、14色に減色した640x480のxpm画像を用意すれば良い。
GIMPでやるとすると、以下のような手順になる。
- 画像>画像拡大縮小で縦か横を480または640に合わせる。
- 画像>キャンバスサイズで640x480にする。
- 画像>モード>インデックスで、14色パレットを使うインデックスカラーモードに変更する。このときディザを使うほうが良い。
- xpmファイルとしてファイル保存。
- xpmファイルをテキストエディタで開く。
- "640 480 14 1",と書いてある行があるはずなので、"640 480 15 1",に書き換える。
- その下に"! 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なのが影響しているのかな?
よく見ると、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文をコメントアウト。んでもって、
例えば
ここらへんはman boot, man kernelに載ってる。ついでに-kオプションもつけておくと、デバッガの制御下でカーネルを起動できる。といっても、パニックを起こすようなことがなければ役には立たないけど…
最初はその軟派さがもの珍しくて喜んで設定したものだっけ。
あったあった、「ささの豆知識ブログ」だな。
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を堪能するとしますか。
これもかなり独特なインストーラだけど、ドキュメントはかなり揃っているのでGoogle先生に頼ることはあまりないのが良い。
ただ、マシンの構成情報を入力する画面のインターフェースはいいかげん直してもらいたいものだ。青地のスクリーンとか(どうにもMSXを思い出してしかたがないw)、次に進むのがEnterではなくF2とか、かなり異彩を放っている。
まあ、そうそう何度もインストールするものでもないけど…
では遅まきながらZFS RootやVirtual Boxを堪能するとしますか。
ThinkPad 240 / Silicon Motion Lynx EM+でX.org起動せず
タイトルのみ…
疲れたよ、パトラッシュ…
なんかこのビデオカード、X.orgにとってはかなりの地雷らしい orz...
先に言ってくれよ…
疲れたよ、パトラッシュ…
なんかこのビデオカード、X.orgにとってはかなりの地雷らしい orz...
先に言ってくれよ…
Xubuntu 8.10のネットインストール #2
ネットインストールでごちゃごちゃ頑張ってはみたんだけど、どうにも成果あがらず… xubuntu-desktopパッケージをインストールできればXubuntuシステムのインストールが完了するのだけど、どういうわけか失敗してしまう。
そのうち「なんでネットインストールなんかしているんだろう」というところまで気分が萎えてきてしまう始末w ただ、これが結果的には突破口になった。
そもそもネットインストールを試みる理由を考えてみると、
があると思うんだけど、今回は後者のケース。よく考えると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インストール完了
そのうち「なんでネットインストールなんかしているんだろう」というところまで気分が萎えてきてしまう始末w ただ、これが結果的には突破口になった。
そもそもネットインストールを試みる理由を考えてみると、
- 光学ドライブそのものがない/接続できない/認識しない
- 光学ドライブから起動できない
があると思うんだけど、今回は後者のケース。よく考えると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をさらしてみる。
DefalutDepthを16にするだけではダメで、HSync/VSyncを明示的に指定することが必要。
そこで、今どき必要な人がいるとも思えないのだけど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をいじって
ログを見ると、途中までは記述を読み込んでいるようなのだけど、途中でevdevとかいうドライバ(?)が再設定しなおしているようだ。余分なことを…
そんなわけでカーネル側のキーマップを変えようと思い、/etc/console-setup/boottime.kmap.gzのkeycode 58のCaps_LockをすべてControlに置換。
ただし、これも仮想端末ではきちんと反映されるものの、XサーバではCapsはやはりCapsのまま。
最終的には
で、困ったことがひとつ。
自分は気持ちは若いつもりなのだけど、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という内容の/etc/X11/Xsession.d/10setxkbmapを作って回避。やれやれ
setxkbmap -option ctrl:swapcaps
Xubuntu 8.10のネットインストール
CG定点観測さんでXubuntuというものがあるのを知り、古いノートPCを再生させようと思い立つ。
で、たまたま思い立った日がUbuntu 8.10とXubuntu 8.10がリリースされた日で、さっそくAlternateのCD-ROMイメージをダウンロード。Think Padは光学ドライブがないので、ネットインストールに挑戦… これが茨の道だった。
分かったこと。
最後のが影響が大きく、ミラーサーバの指定ができずに必ず公式サーバに接続しにいこうとしてしまう。まあ、時間のある時だったらいいけど、できればローカルなミラーサーバを探しにいって欲しいわけだ。
一応カーネルの起動オプションで生の(すなわちkickseedが動的に生成したものではない)preseedを指定することもできるのだが、これが反映されるのがkickseedが動いてミラーサーバを決めた後らしく、解決策にならない。
そんなわけで、こんな方法で逃げてみた。
(作業はSolaris上でやったので、cpioのオプションがLinuxと違うかもしれない)
要するに、kickseedがやるはずだった処理を、getoptに差し掛かる前に自前で実行してしまおうというものだ。kickstartの設定ファイルには
で、大体これでうまくいくんだけど、パッケージの選択がまだうまくいかないのでベースシステムだけになってしまう。あと、sources.listもおかしいかな。うーん…
で、たまたま思い立った日が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が動いてミラーサーバを決めた後らしく、解決策にならない。
そんなわけで、こんな方法で逃げてみた。
- mkdir /tftpboot/ubuntu-installer/i386/initrd
- cd /tftpboot/ubuntu-installer/i386/initrd
- gzip -dc ../initrd.gz | cpio -idv
- 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 - 同じく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 - 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-08-23
sendmailのスマートホストとOBP25
家庭内LANからいったんISPのメールサーバにメールを投げたかったので、いままでろくに使っていなかったローカルSolaris10マシンのsendmailをいじることに。
sendmailもしばらく使ってなかったなあ。ローカル配送自体やってなかったし、人間が読むメールはすべてISP頼みだったし。
そもそもsendmail.cfやCF自体いじったことがほとんどない。
大学にいたときはバリバリにsendmailを使っていたけれども、宛先に該当するユーザのGIDでリレーホストを切り替えるという凝ったことをやっていたので、末端の管理者は直接いじらずに過ごせていたので…
そんなわけで、まずはWebmin(w
/usr/sfw/lib/webmin/sendmail/以下のファイルはすべて/usr/local/bin/perlで起動するようになっているので、これを修正してさくっと設定… できなかった orz...
スマートホストは「ホスト経由でメールを送信」をいじれば簡単に設定可能なんだけど、最近のOBP25の設定まではできないようで、ISPのサーバからは接続を拒否されてしまう。
そんなわけで、重い腰を挙げてsendmail.cfの生成にチャレンジ。/etc/mail/cf/cf/sendmail.mcに
でおk
sendmailもしばらく使ってなかったなあ。ローカル配送自体やってなかったし、人間が読むメールはすべてISP頼みだったし。
そもそもsendmail.cfやCF自体いじったことがほとんどない。
大学にいたときはバリバリにsendmailを使っていたけれども、宛先に該当するユーザのGIDでリレーホストを切り替えるという凝ったことをやっていたので、末端の管理者は直接いじらずに過ごせていたので…
そんなわけで、まずはWebmin(w
/usr/sfw/lib/webmin/sendmail/以下のファイルはすべて/usr/local/bin/perlで起動するようになっているので、これを修正してさくっと設定… できなかった orz...
スマートホストは「ホスト経由でメールを送信」をいじれば簡単に設定可能なんだけど、最近のOBP25の設定まではできないようで、ISPのサーバからは接続を拒否されてしまう。
そんなわけで、重い腰を挙げてsendmail.cfの生成にチャレンジ。/etc/mail/cf/cf/sendmail.mcに
を追加し、
define(`SMART_HOST', `メールサーバのアドレス')
define(`RELAY_MAILER_ARGS', `TCP $h ポート')
cd /etc/mail/cf/cf/
make sendmail.cf
cp sendmail.cf /etc/mail
svcadm restart sendmail
でおk
2007-07-21
CVSのローカルキーワード
CVSのローカルキーワード(サイト独自のキーワード置換)は、$Id$, $Header$, $CVSHeader$のいずれかでないとダメなのだそうだ。
プロダクトラインと似たことをやっているので、コアアセットとしてのリビジョンと、それを元にしてできた各々のプロダクトのリビジョンを分けて管理したかったわけだ。
で、ローカルキーワードを使う方法を見つけて設定したのだけど、どうやっても$Revision$, $Author$, $Date$などのエイリアスをつくれない。
よくよく調べてみたら、上記の制限があったというわけ orz...
後からコミットされたほうでキーワード置換されてしまうしかないのかなあ…
プロダクトラインと似たことをやっているので、コアアセットとしてのリビジョンと、それを元にしてできた各々のプロダクトのリビジョンを分けて管理したかったわけだ。
で、ローカルキーワードを使う方法を見つけて設定したのだけど、どうやっても$Revision$, $Author$, $Date$などのエイリアスをつくれない。
よくよく調べてみたら、上記の制限があったというわけ orz...
後からコミットされたほうでキーワード置換されてしまうしかないのかなあ…
2007-07-13
SXCE b67
会社は相変わらず忙しいけど、プライベート関係で余裕ができたのでSXCEのNevada b67をインストールしてみようと思い立つ。
壊れてもいい実験用のマシンなので、マザーボードはEDEN EPIAマシン。これにBlade100についていた18GB HDDを取り付け。また、配布メディアがDVDイメージのみなので、W1100zのDVD-ROMドライブを取り外してEPIAに接続し、Blade100についていた壊れかけCD-ROMドライブをW1100zに。
で、起動してみると・・・ initがシグナル9を受けて再起動しまくり orz
確認までは取れてないけど、どうやらlibcがSSE前提でコンパイルされているとこうなるらしい。
しかたないので、普通のSolaris10をさくっとインストール。
Studio12を入れて、wzsunドライバと、saa713xドライバの開発でも再開しましょうかね。
2007-06-23
sedで倉庫番
倉庫番をsedで実装した人がいる模様。すごい!
http://aurelio.net/sed/sokoban/sokoban.sed
他にもいくつか http://sed.sourceforge.net/ から辿れる。
http://aurelio.net/sed/sokoban/sokoban.sed
他にもいくつか http://sed.sourceforge.net/ から辿れる。
2007-03-03
OpenSolarisのビルドに挑戦 #2
OpenSolarisのビルドに挑戦の続き。
ソースコードが準備でき、手順とは違うけどSolaris10上でもビルドできるようになったため、
Solaris Express Community Release (snv_b57)のDVDイメージをダウンロード。
さっそく、インストールしてみたのだけどあえなくブート失敗 orz...
実験用のx86マシンはDVDドライブがUSB接続なので、
ブートローダまでは読み込めるけど、boot_archiveを読み込むことができないらしいのが原因。
うーむ。
ソースコードが準備でき、手順とは違うけどSolaris10上でもビルドできるようになったため、
Solaris Express Community Release (snv_b57)のDVDイメージをダウンロード。
さっそく、インストールしてみたのだけどあえなくブート失敗 orz...
実験用のx86マシンはDVDドライブがUSB接続なので、
ブートローダまでは読み込めるけど、boot_archiveを読み込むことができないらしいのが原因。
うーむ。
2007-02-18
OpenSolarisのビルドに挑戦
S.M.A.R.T.の機能でも入れてみようかなあと思って、OpenSolarisをビルドしてみようかと思い立つ。
第69回 OpenSolarisをビルドしてみる(1)
http://journal.mycom.co.jp/column/yetanother/069/
OpenSolaris事始め(その1)
http://blogs.sun.com/eota/entry/opensolaris%E4%BA%8B%E5%A7%8B%E3%82%81_%E3%81%9D%E3%81%AE%EF%BC%91
流れとしては、(1) Solaris Express, Community Editionをインストール (2) BFUをインストールしてデフォルトのOpenSolarisを上書きインストール (3) 自前ビルドのOpenSolarisを上書きインストール、でいいのかな?
んで、Solaris ExpressとBFUアーカイブの取得まではサクっといったんだけど、なんとOpenSolarisのソースコードアーカイブがなくなってるではないですか!?
いや、急いで訂正すると、なんだかMercurialという構成管理ツールを使わないとソースコードが取り出せないらしい。これではBFUをインストールするまでソースにアクセスできないじゃまいか orz...
幸い、subversionでも取り出せるので、
svn co http://svn.genunix.org/repos/on/trunk/usr/src/
で取得(中)。なんだかなあ。今度はBitTorrentでも試してみようか。
そういえばLinuxもgitに乗り換えたとかなんとか。巨大なソースコードを抱えるところはいろいろ苦労してるみたいですなあ。
追記
ソースのアーカイブが用意されてないのは
http://www.opensolaris.org/os/downloads/ から辿れるcurrentと、週ごとのリリースだけみたい。
http://dlc.sun.com/osol/on/downloads/ を直接見るとbuildごとのディレクトリもあって、ちゃんとtar.bz2でアーカイブされたファイルも入ってる。
第69回 OpenSolarisをビルドしてみる(1)
http://journal.mycom.co.jp/column/yetanother/069/
OpenSolaris事始め(その1)
http://blogs.sun.com/eota/entry/opensolaris%E4%BA%8B%E5%A7%8B%E3%82%81_%E3%81%9D%E3%81%AE%EF%BC%91
流れとしては、(1) Solaris Express, Community Editionをインストール (2) BFUをインストールしてデフォルトのOpenSolarisを上書きインストール (3) 自前ビルドのOpenSolarisを上書きインストール、でいいのかな?
んで、Solaris ExpressとBFUアーカイブの取得まではサクっといったんだけど、なんとOpenSolarisのソースコードアーカイブがなくなってるではないですか!?
いや、急いで訂正すると、なんだかMercurialという構成管理ツールを使わないとソースコードが取り出せないらしい。これではBFUをインストールするまでソースにアクセスできないじゃまいか orz...
幸い、subversionでも取り出せるので、
svn co http://svn.genunix.org/repos/on/trunk/usr/src/
で取得(中)。なんだかなあ。今度はBitTorrentでも試してみようか。
そういえばLinuxもgitに乗り換えたとかなんとか。巨大なソースコードを抱えるところはいろいろ苦労してるみたいですなあ。
追記
ソースのアーカイブが用意されてないのは
http://www.opensolaris.org/os/downloads/ から辿れるcurrentと、週ごとのリリースだけみたい。
http://dlc.sun.com/osol/on/downloads/ を直接見るとbuildごとのディレクトリもあって、ちゃんとtar.bz2でアーカイブされたファイルも入ってる。
2007-02-03
Solaris用のW-ZERO3ドライバ5
前回の続き。
ひとまずドライバと、synceへのパッチと、コンパイル済パッケージを
うpしてみた。
synceはvdccmを動かしておいて、triggerconnectionを実行すると、W-ZERO3の認識までは無事できるようになっている。だけど、その後plsしても全然ファイル一覧が取得できない。うがー。
ドライバのビルド方法はREADME.jaに書いておいた。synceのビルド方法は以下の通り:
libsynce
librapi2
vdccm
以上のビルドにはSUNWuiu8パッケージ, libtool, pkgconfigが必要。加えて
http://forum.sun.com/jive/thread.jspa?threadID=73150の対策が必要。
ひとまずドライバと、synceへのパッチと、コンパイル済パッケージを
うpしてみた。
synceはvdccmを動かしておいて、triggerconnectionを実行すると、W-ZERO3の認識までは無事できるようになっている。だけど、その後plsしても全然ファイル一覧が取得できない。うがー。
ドライバのビルド方法はREADME.jaに書いておいた。synceのビルド方法は以下の通り:
libsynce
svn co https://synce.svn.sourceforge.net/svnroot/synce/branches/libsynce/WM5/libsynce
パッチあて
./bootstrap
env CFLAGS='-std=c99' LDFLAGS='-lsocket' ./configure --disable-desktop-integration
gmake
sudo svr4pkg.sh
sudo pkgadd -d . KSWlibsynce
librapi2
svn co https://synce.svn.sourceforge.net/svnroot/synce/branches/librapi2/WM5/librapi2
パッチあて
./bootstrap
env PKG_CONFIG_LIBDIR=/usr/local/lib/pkgconfig CFLAGS='-std=c99' LDFLAGS='-lsocket' ./configure
gmake
sudo svr4pkg.sh
sudo pkgadd -d . KSWlibrapi2
vdccm
パッチあて
env PKG_CONFIG_LIBDIR=/usr/local/lib/pkgconfig CFLAGS='-std=c99' LDFLAGS='-lsocket' ./configure
gmake
sudo svr4pkg.sh
sudo pkgadd -d . KSWvdccm
以上のビルドにはSUNWuiu8パッケージ, libtool, pkgconfigが必要。加えて
http://forum.sun.com/jive/thread.jspa?threadID=73150の対策が必要。
2007-01-26
Solaris用のW-ZERO3ドライバ4
前回の続き。
pingが通った!
予想通り、RNDISヘッダがおかしかったのが原因。orz...
W-ZERO3からDHCPでアドレスをもらうのもばっちりできた。W-ZERO3側はDHCPサーバとして168.254.2.1というアドレスを持っていて、Solaris側には168.254.2.2を振ってくる。
PDA'ごとき'にアドレスを振ってもらうというのも妙な気がするけど、考えてみるとこれはこれで合理的なのかも。
まだいろいろ細かいところがおかしくて、snoop中にunplumbするとパニックしたり、ケーブルをいきなり抜くとドライバがdetachする時にパニックしたり。synceもまだ動いてない。
以下dmesg。ドライバ名がwzsunなので、wzsun0というデバイス名になってる(なぜwzsunかというと、W-ZERO3だから…ww)
pingが通った!
予想通り、RNDISヘッダがおかしかったのが原因。orz...
W-ZERO3からDHCPでアドレスをもらうのもばっちりできた。W-ZERO3側はDHCPサーバとして168.254.2.1というアドレスを持っていて、Solaris側には168.254.2.2を振ってくる。
PDA'ごとき'にアドレスを振ってもらうというのも妙な気がするけど、考えてみるとこれはこれで合理的なのかも。
まだいろいろ細かいところがおかしくて、snoop中にunplumbするとパニックしたり、ケーブルをいきなり抜くとドライバがdetachする時にパニックしたり。synceもまだ動いてない。
以下dmesg。ドライバ名がwzsunなので、wzsun0というデバイス名になってる(なぜwzsunかというと、W-ZERO3だから…ww)
Jan 26 01:47:42 etta unix: Port4: USB descriptor tree for SHARP CORPORATION SHARP WS004SH ActiveSync Remote NDIS Driver
Jan 26 01:47:42 etta unix: Port4: highest configuration found=0
Jan 26 01:47:42 etta unix: Port4: Configuration #0 (Addr= 0xd601a2e8)
Jan 26 01:47:42 etta unix: Port4: String descr=
Jan 26 01:47:42 etta unix: Port4: config descr: len=9 tp=2 totLen=62 numIf=2 cfgVal=1 att=0xc0 pwr=50
Jan 26 01:47:42 etta unix: Port4: usb_cfg_data_t shows max if=1 and 0 cv descr(s).
Jan 26 01:47:42 etta unix: Port4: interface #0 (0xd5a3ed20)
Jan 26 01:47:42 etta unix: Port4: Alt #0 (0xd57f8fb0)
Jan 26 01:47:42 etta unix: Port4: String descr=
Jan 26 01:47:42 etta unix: Port4: if descr: len=9 type=4 if=0 alt=0 n_ept=1 cls=239 sub=1 proto=1
Jan 26 01:47:42 etta unix: Port4: usb_alt_if_data_t shows max ep=0 and 3 cv descr(s).
Jan 26 01:47:42 etta unix: Port4: endpoint[0], epaddr=0x81 (0xd5a3ed00)
Jan 26 01:47:42 etta unix: Port4: len=7 type=5 attr=0x3 pktsize=8 interval=1
Jan 26 01:47:42 etta unix: Port4: alt cv descriptor #0 (0xd606e1d0), size=5
Jan 26 01:47:42 etta unix: Port4: 5 24 1 0 1
Jan 26 01:47:42 etta unix: Port4: alt cv descriptor #1 (0xd606e1d8), size=4
Jan 26 01:47:42 etta unix: Port4: 4 24 2 0
Jan 26 01:47:42 etta unix: Port4: alt cv descriptor #2 (0xd606e1e0), size=5
Jan 26 01:47:42 etta unix: Port4: 5 24 2 0 1
Jan 26 01:47:42 etta unix: Port4: interface #1 (0xd5a3ed28)
Jan 26 01:47:42 etta unix: Port4: Alt #0 (0xd601a1a8)
Jan 26 01:47:42 etta unix: Port4: String descr=
Jan 26 01:47:42 etta unix: Port4: if descr: len=9 type=4 if=1 alt=0 n_ept=2 cls=10 sub=0 proto=0
Jan 26 01:47:42 etta unix: Port4: usb_alt_if_data_t shows max ep=1 and 0 cv descr(s).
Jan 26 01:47:42 etta unix: Port4: endpoint[0], epaddr=0x82 (0xd5f7b6e0)
Jan 26 01:47:42 etta unix: Port4: len=7 type=5 attr=0x2 pktsize=64 interval=0
Jan 26 01:47:42 etta unix: Port4: endpoint[1], epaddr=0x3 (0xd5f7b6f0)
Jan 26 01:47:42 etta unix: Port4: len=7 type=5 attr=0x2 pktsize=64 interval=0
Jan 26 01:47:42 etta unix: Port4: Returning dev_curr_cfg:0xd601a2e8, dev_curr_if:0
Jan 26 01:47:42 etta unix: wzsun0: wzsun: type "ether" mac address 80:00:60:0f:e8:00
Jan 26 01:47:42 etta unix: USB 2.0 interface (usbif4dd,9103.config1.0) operating at full speed (USB 1.x) on USB 1.10 external hub: interface@0, wzsun0 at bus address 4
Jan 26 01:47:42 etta unix: SHARP CORPORATION WS004SH ActiveSync Remote NDIS Driver
Jan 26 01:47:42 etta unix: wzsun0 is /pci@0,0/pci1106,aa03@11,2/hub@1/device@2/interface@0
Jan 26 01:47:42 etta unix: /pci@0,0/pci1106,aa03@11,2/hub@1/device@2/interface@0 (wzsun0) online
2007-01-23
Solaris用のW-ZERO3ドライバ3
前回の続き。
バッファの二重開放バグを修正。だけど、まだICMP ECHO REPLYが帰ってこない orz...
snoopコマンドの出力を見ると、W-ZERO3からは確かにパケットを受信しているし、DLPI的には送信もしている。
となると、ドライバで送信できていないということになるかな…
STREAMSのmsgb(message block?)構造体が分散しているのが
USBドライバに蹴られているのかと思い、単一データブロックにしてみたけど効果なし。
Bulk-OUTじゃないパイプに送っているのかと思ったけど、
返り値を信じる限りエラーは検知していない。
最後になって、RNDISヘッダに入れている値がおかしいっぽいのを発見したけど、
これの対応は時間切れ。
ところで、LinuxのskbってSysVのSTREAMSに対応するという認識でいいのかなあ?
どちらもデータのコピーを押さえたままヘッダ/トレイラを処理するためのものなので。
もちろん前者はネット関係しか使われていないのに対し、
後者はread()/write()はもちろんのこと、ioctl()にさえ対応できる無駄に凝った
たくさんの機能を持つという違いはあるけど。
バッファの二重開放バグを修正。だけど、まだICMP ECHO REPLYが帰ってこない orz...
snoopコマンドの出力を見ると、W-ZERO3からは確かにパケットを受信しているし、DLPI的には送信もしている。
となると、ドライバで送信できていないということになるかな…
STREAMSのmsgb(message block?)構造体が分散しているのが
USBドライバに蹴られているのかと思い、単一データブロックにしてみたけど効果なし。
Bulk-OUTじゃないパイプに送っているのかと思ったけど、
返り値を信じる限りエラーは検知していない。
最後になって、RNDISヘッダに入れている値がおかしいっぽいのを発見したけど、
これの対応は時間切れ。
ところで、LinuxのskbってSysVのSTREAMSに対応するという認識でいいのかなあ?
どちらもデータのコピーを押さえたままヘッダ/トレイラを処理するためのものなので。
もちろん前者はネット関係しか使われていないのに対し、
後者はread()/write()はもちろんのこと、ioctl()にさえ対応できる
たくさんの機能を持つという違いはあるけど。
登録:
投稿 (Atom)