負け組アーキテクトの憂鬱

メモしておきたいことや読書の記録を淡々と書く。

Solaris

SPARC機のALOM(sc)のパスワードを忘れたときの対処法

  1. とりあえずSolarisを立ち上げる
  2. ↓のコマンドで再設定
# /usr/platform/`uname -i`/sbin/scadm userpassword admin

※admin以外のユーザ名のときにはadminのところをそのユーザ名に

SunSutidioに同梱されるccで64bitバイナリを生成する

SunSutudio11しか使っていないけれど、たぶんSunStudio12でもいっしょ。

インストーラの指示に従ってccへのpathを通したら、あとはジャンジャンコンパイルすればいいんだけれども、デフォルトではUltraSPARC拡張命令を含まない32bitオブジェクトが出力される。

これを変更するには、''-xarch''オプションを指定する。-xarch=v9bといった具合。ここに指定出来るパラメータで主なものは、以下のようなかんじ。

  • v8:SPARC V8アーキテクチャ向け。32bitバイナリ。
  • v8plus:SPARC V9アーキテクチャの32bitサブセット向け。32bitバイナリ。
  • v8plusa:v8plusにVIS (Visual Instruction Set)1.0とUltraSPARC拡張を加えたもの。32bitバイナリ。
  • v8plusb:v8plusaにVIS 2.0とUltraSPARC-III拡張を加えたもの。32bitバイナリ。
  • v9:SPARC V9アーキテクチャ向け。64bitバイナリ。
  • v9a:v9にVIS 1.0とUltraSPARC拡張を加えたもの。64bitバイナリ。
  • v9b:v9aにVIS 2.0とUltraSPARC-III拡張を加えたもの。64bitバイナリ。

UltraSPARC-III対応のCPUであればv8plusbとv9bの使い分けでいいだろう。ただし、これらのバイナリはUltraSPARC以前のCPUアーキテクチャでは実行できない。

また、64bitでコンパイルする場合、リンクするライブラリもすべて64bit対応している必要がある。64bitバイナリから32bitバイナリはリンクできない。/usr/sfwとか/opt/sfwにインストールされるものの多くは32bitライブラリしか用意されていなかったりするので注意が必要。

32bitと64bitの使い分けは単純に「膨大な数を扱うか否か」で判断して良いと思う。よほど膨大なデータを扱うとか、メチャメチャ沢山コネクションを張るとか。その際はプロセスあたりのリソース上限値の調整も忘れずに(limitやunlimitコマンドで)。

ちなみに、64bitにしたからといってパフォーマンスが劇的に上がることはほとんどない。よほどのことが無い限りない(下がることはある)。当たり前と言えば当たり前の事なんだけれども、よく誤解している人も多い。

個人的には、一昔前の次世代ゲーム機論争のときにNintendo64は64bitだから性能いいんだぜとか、セガサターンは32bitのCPUを2つ積んでいるから64bit級だぜとか、そういう言われ方が多かったことも原因の一つだと思うんだけどまあどうでもいいや。

SunStudio12がリリースされている

http://developers.sun.com/sunstudio/downloads/index.jsp

まだインストールはしていないんだけれども。

最近のSolarisにはgccが添付されているとは言え、gccよりも質の良いコードを吐いてくれるそうなのでインストールしておいて損はないと思う。SDMにメンバ登録する必要はあるけれども、無償で利用できる。ただし、IDE等もまとめて入るので、かなりのディスク容量は食ってしまう。

x86やx64でのコードの質はどうなんだろうか。

Solaris 10 6/06キタ

Solaris 10 6/06がダウンロードできるようになったらしい。

なんと言ってもSolaris ZFSが目玉。128bitアドレッシングで今までとは比べものにならないくらいの広範囲を扱えるほか、管理が楽ちんになったり、信頼性がめちゃめちゃ良くなったらしい。早速試してみよっと。

あとはネットワーク周りのパフォーマンスがどれだけ良くなったのか興味津々。まあ、見違える程速くなる、なんてのは期待してないんだけどね。

smpatchでSolaris10を最新の状態にする

Solaris10でも定期的に脆弱性やバグ情報、そのセキュリティフィックスが公開される。インターネットに接続されている環境であれば、WindowsならWindowsUpdate、FreeBSDなら最新のソースをcvsupなり何なりで拾ってきて再構築、Linuxならディストリビューション次第だけれどもyumとかで比較的お気楽に自動アップデートができる。

Solarisの場合はパッチという形でセキュリティフィックスが公開され、smpatchというコマンドで必要なパッチの分析、ダウンロード、適用ができる。運用する上で大前提となる、セキュリティアップデートの仕方をちょっとまとめてみた。

今回使った機材
Solaris10 1/06
SunFire V120

まずは準備。いきなりsmpatchコマンドを実行しても「このSolarisはまだ登録されてませんよ」と出て何もできない。登録と言っても、利用者が持っているSun Onlineのアカウントと紐付けるだけだ。Sun Onlineのアカウントは、Solaris10のインストール用isoイメージファイルをダウンロードする際に必要なので、ダウンロードで入手したひとは持っているはず。書籍などで入手した人は別途取得する必要がある(と思う)。取得はSunのwebサイトから。

あとは自分の取得したSun Onlineのアカウントを/tmp/registrationprofile.properties等のファイルに記述する。以下のような感じ。パーミッションはrootのみ読めるようにする。

 userName=hogehoge
 password=oreore
 hostName=
 subscriptionKey=
 portalEnabled=false
 proxyHostName=
 proxyPort=
 proxyUserName=
 proxyPassword=

subscriptionKeyは有償サポートを受けると貰えるらしい。これがあるとSolaris10の機能拡張もオンラインでできるようになるようだ(3/05→1/06とか?)。無くてもセキュリティアップデートは提供される。この状態で登録用のコマンドを実行する。

 # sconadm register -a -r /tmp/registrationprofile.properties

コマンドが成功するとsmpatchが実行可能な状態になる。とりあえず、必要なパッチを調査するには、

 # smpatch analyze

アップデートを適用するには、

 # smpatch update

これでとりあえず最新の状態にはできる。ただし、パッチによっては再起動が必要なものがある(パッチ 適用時にその旨の警告が表示される)。この場合はrebootコマンドではなく、必ずshutdownコマンドで再起動をすること(/etc/rc0.d/K51installupdatesに処理が遷移されないと適用できないっぽい)。特に初回の適用など、それなりに時間がかかるものもあるので、端末にshutdown nowと出てから数分間シャットダウンしないからといってビックリしてはいけない。あとはman smpatchで。

再起動後にもう一度smpatch analyzeを実行し、必要なパッチが表示されなければ完了。全て適用済。

設定を見るとproxyサーバも指定出来そうだけど、なんか通信はsslで行われているようなので、proxyでキャッシュして複数台適用時にウハウハとかは望み薄かもしれない。要検証。