2015-12-31

タワーから見た五稜郭

五稜郭タワーからは函館市内が一望できます。展望室には五稜郭の模型や、幕末の函館の歴史を表現した模型が置かれていて、とても楽しめました。

天守曳屋中の弘前城

弘前城天守の石垣を補修するために天守が移動しています。平成35(2023)年まで続く予定です。

大館市の長木川

年末年始は「北海道&東日本パス」を使って旅行をしています。大館市で一泊し、乗車予定の電車の発車時間まで間があったので市内を散策してみました。大館市内を流れる長木川を撮影しました。

2015-12-26

uim-mozcで日本語入力に成功

ibus-mozcがうまくいかないので、pkgsrcからinputmethod/uim-mozcを入れてみました。~/.xsessionに以下に示す内容を追加してみると、無事に日本語入力することができました。
export GTK_IM_MODULE=uim
export QT_IM_MODULE=uim
/usr/pkg/bin/uim-xim &
/usr/pkg/bin/uim-toolbar-gtk &
export XMODIFIERS=@im=uim
uim-toolbar-gtk-systrayを使えばシステムトレイ領域にツールバーを表示させられるようなのですが、正常に表示されませんでした。要するにアイコン1つ分の幅に複数のアイコンを無理やり表示させようとしているようになっています。「uimのツールバーがシャイで困る」で報告されている現象です。uimの設定を調整してアイコンを1つだけにしておけばシステムトレイに表示させても問題ないようですが、根本的な解決策にはなっていないと思います。いずれ修正されることを期待して、当面はツールバーをシステムトレイに載せずに利用しようと思います。

xtermでも日本語入力できましたが、変換中の表示が化けてしまいます。何か設定が足りないのでしょう。

2015-12-25

ibus-mozcトラブル

ibus-mozcを使って日本語入力を行うつもりでpkgsrcから入れてみました。ビルドできたし、LXDEのメニューにも「iBusの設定」という項目が追加されています。入力メソッドとして「Mozc」も入っているようです。

しかし画面右下のシステムトレイに現れるはずのiBusやMozcのアイコンが出ていません。アプリケーションから日本語入力をしてみようと思っても、動いているのか動いていないのか判別できません。Webで調べてみると「LubuntuでIBusアイコンを表示する」という報告が見つかりました。対処方法もありますが、これはLinuxの場合に適用できる方法なのでNetBSDではどうすれば良いのでしょう。

pkgsrcにはibus-mozc以外にもuim-mozcというパッケージもあるようなので、uim-mozcを使って日本語入力環境を整えてみることにしようと思います。

それにしてもibusにしろuimにしろ、はたまたLXDEにしろGTKやQtにしても、全体的な概念や歴史的経緯が分からないままに、問題が起きるたびに泥縄的に対処していくのは良くないと感じます。

ibus-setup実行エラー

NetBSD/i386にpkgsrcを利用して各種アプリケーションを入れたので、必要な設定をおこない、使い勝手を検証しようと思います。そこでibus-setupを起動しようとしたところエラーになりました。
 Couldn't open libGL.so: Shared object "libGL.so" not found
libGL.soの所在を確認したところ/usr/X11R7/libに置かれていました。
 lrwxr-xr-x  1 root  wheel       12 Sep 30  2014 /usr/X11R7/lib/libGL.so -> libGL.so.2.0
lrwxr-xr-x  1 root  wheel       12 Sep 30  2014 /usr/X11R7/lib/libGL.so.2 -> libGL.so.2.0
-r--r--r--  1 root  wheel  2570627 Sep 30  2014 /usr/X11R7/lib/libGL.so.2.0
環境変数LD_LIBRARY_PATHを設定すれば良いのかもしれませんが、このディレクトリはデフォルトで参照してくれないのでしょうか。そもそもデフォルトで参照されるディレクトリは何処なのでしょうか。

ktraceを使って調べてみました。libGL.soに関する箇所の前後は以下のようになっていました。これをみると/usr/pkg/lib/libGL.soと/usr/lib/libGL.soを探そうとしていたようです。これらのディレクトリが検索対象となっているのは何処かで定義されているのでしょうか。
2142      1 python2.7 CALL  open(0xbfbfd104,0,0x3771ea)
2142      1 python2.7 NAMI  "/usr/pkg/lib/libGL.so"
2142      1 python2.7 RET   open -1 errno 2 No such file or directory
2142      1 python2.7 CALL  open(0xbfbfd104,0,0x3771ea)
2142      1 python2.7 NAMI  "/usr/lib/libGL.so"
2142      1 python2.7 RET   open -1 errno 2 No such file or directory
2142      1 python2.7 CALL  __sigprocmask14(3,0xbfbfd75c,0)
2142      1 python2.7 RET   __sigprocmask14 0
2142      1 python2.7 CALL  write(2,0xbfbfd004,0x3b)
2142      1 python2.7 GIO   fd 2 wrote 59 bytes
     "Couldn't open libGL.so: Shared object \"libGL.so\" not found\n"
2142      1 python2.7 RET   write 59/0x3b
 pkgsrc-Usersメーリングリストには2015年9月8日付で「libGL python meld bizarre LD_LIBRARY_PATH issue」という投稿がありました。

当面は環境変数を設定して回避するしかなさそうですが、何か根本的な問題があるような気がします。

xdmログイン後の処理フローを整理

xdmでログインした後の処理フローを整理しておきます。NetBSDの場合、xdmの設定は/etc/X11/xdm/xdm-configで定義されています。
  1. /etc/X11/xdm/Xsessionが呼び出されます。
    1. ~/.xsessionがあれば制御を移します。
    2. ~/.Xresourceの設定を取り込み、/usr/X11R7/bin/xsmを起動します。
  2. ~/.xsessionに制御が移ります。
    1. /etc/X11/xinit/.Xresourcesの設定を追加します。
    2. /etc/X11/xinit/.Xmodmapの設定を登録します。
    3. ~/.Xresourcesの設定を追加します。
    4. ~/.Xmodmapの設定を登録します。
    5. /etc/X11/xinit/xinitrc.dというディレクトリがあれば、その下にあるファイルを実行します。ただし拡張子が「.sh」である必要があります。
    6. 必要なアプリケーションを適宜実行します。
LXDEを使用するため、~/.xsessionの最後に「exec /usr/pkg/bin/startlxde」を入れておくことにします。

LXDEの中でxtermのような端末エミュレータを動かすと、~/.cshrcの初期設定スクリプトが呼び出されます。この場合はログインシェルではないので~/.loginは呼ばれません。

2015-12-24

PDP-11とUNIXに関する資料

SIMHのPDP-11エミュレータでUNIXを動かしたりソースを読んだりするために必要な資料を整理しておきます。

まずPDP-11に関する情報です。

基本的な情報が集まっていそうなサイトは「pdp11.org」です。より詳細な情報を得るには製造元のDECが発行したハンドブックなどが必要です。古本で入手するなら「AbeBooks」などで探してみると見つかるかもしれません。試しに検索したら、「PDP 11/70 Processor Handbook」がUS$16.74(日本への送料US$11.50) というのがありました。場合によってはオンラインで入手できる可能性があります。「manx」や「bitsavers.org」で探してみればCPUや周辺装置のドキュメントが見つかります。

PDP-11を例に使用している書籍があり、和訳もあるようです。
  • Richard H.Eckhouse, Jr. & L.Robert Morris, "MINICOMPUTER SYSTEMS Organization, Programming, and Applications (PDP-11) 2nd Edition", PRENTICE HALL, 1979
  • R.H.エックハウス Jr.著、中西正和訳、『ミニコンピュータシステム入門』(上)・(下)、培風館、1978-79
次にUNIXに関する情報です。

ソースを読むためには次のような書籍が出ています。
  • John Lions, "Lions' Commentary on UNIX"
  • John Lions著、岩本信一訳、『Lions' Commentary on UNIX』、アスキー、1998
  • 青柳隆宏、『はじめてのOSコードリーディング』 、技術評論社、2013
PDP時代よりも後のUNIXについては次のような書籍があります。
  • Maurice J.Bach著、坂本文・多田好克・村井純訳、『UNIXカーネルの設計』 、共立出版、1991
  • Uresh Vahalia著、徳田英幸・中村明・戸辺義人・津田悦幸訳、『最前線UNIXのカーネル』 、ピアソン・エデュケーション、2000
BSDについては古典的な名著があります。
  • Samuel J. Leffler, Marshall Kirk McKusick, Michael J. Karels, John S. Quarterman, "The Design and Implementation of the 4.3BSD UNIX Operating System", Addison-Wesley, 1989
  • Marshall Kirk McKusick, Keith Bostic, Michael J. Karels, John S. Quarterman, "The Design and Implementation of the 4.4BSD Operatin System", Addison-Wesley, 1996
  • Marshall Kirk McKusick, George V. Neville-Neil, "The Design and Implementation of the FreeBSD Operating System", Addison-Wesley, 2005
最後に過去にfj.os.bsd.freebsdに流れた内容の概要を紹介しておきます。手探りでカーネルのソースを読むために『4.3BSDの設計と実装』 を教科書にしようかと考えているという投稿に対して奈良先端科学技術大学院大学情報科学センターの西村享先生は、1996年10月30日の「Re: How to read FreeBSD2.1.0 source」という投稿で「「Design and Implementation」本は「復習書」だと思います」と書いています。いくつかのアプローチを提示し、データ構造が重要であること、処理の実装方法の詳細は枝葉と言い切れると述べています。

そして最後に「以上は努力を惜しまない学生さん向けのコメントでした。「おれはてっとり早く達人になりたいんだ。どこの本屋でも売ってるハウツー本をすぐ紹介してくれ」という向きにはお役に立てませんです」と文章を締めています。この投稿を最初に読んで以来、金言だと思っています。




SIMHのPDP-11でUNIXを動かす事例

simhに含まれるPDP-11エミュレータで初期のUNIXが動かせます。Webには多くの事例が確認できますが、よく見ると実現方法に微妙な違いがあります。

ちなみに米国マサチューセッツ工科大学では、CPUをx86に、言語をANSI CとしてUNIXv6を再実装した授業「6.828: Operating System Engineering」があるようです。

2015-12-22

LibreOfficeのビルド失敗(3)

Webを検索してみるとFreeBSD/amx64 10.2-RELEASEでLibreOffice 5.0.1のビルドに成功したログを見つけました。ビルド環境の違いは多々ありますが、例えばBOOSTには1.55が、GCCには4.8.5が使われていました。一方でNetBSD/i386では、BOOSTに1.59が、GCCは標準で4.5.2、lang/gcc48で4.8.4が使われます。

LibreOfficeがFreeBSDではビルドできているようなので、NetBSDでもビルドできてよさそうな気がします。おそらくビルドできないのは、LibreOfficeのソースに問題があるのではなくて、NetBSDのビルド環境に何か問題があるのでしょう。

NetBSD Problem Databaseを確認するとLibreOfficeに関する問題報告は9件ありますが、いずれも未解決のようです。

2015-12-21

LibreOfficeのビルド失敗(2)

/etc/mk.confに「GCC_REQD=4.8」を追加してみましたが、別な個所でエラーが出てビルドに失敗しました。
[build CXX] sax/source/tools/fastserializer.cxx
S=/usr/obj/misc/libreoffice/work/libreoffice-5.0.4.2 && I=$S/instdir && W=$S/workdir &&  mkdir -p $W/CxxObject/sax/source/tools/ $W/Dep/CxxObject/sax/source/tools/ && cd /usr/obj/misc/libreoffice/work/libreoffice-5.0.4.2 &&   c++ -DBOOST_ERROR_CODE_HEADER_ONLY -DBOOST_SYSTEM_NO_DEPRECATED -DCPPU_ENV=gcc3 -DINTEL -DNDEBUG -DNETBSD -DOPTIMIZE -DOSL_DEBUG_LEVEL=0 -DUNIX -DUNX -DX86 -D_PTHREADS -D_REENTRANT -pthread -I/usr/pkg/include -I/usr/include -I/usr/pkg/include/db4 -DLDAP_DEPRECATED -I/usr/pkg/include/cppunit -I/usr/pkg/include/nss/nss -I/usr/pkg/include/nspr -I/usr/X11R7/include/freetype2 -I/usr/X11R7/include -I/usr/X11R7/include/libdrm -I/usr/include/krb5  -DSAX_DLLIMPLEMENTATION   -DHAVE_GCC_VISIBILITY_FEATURE -fvisibility=hidden   -Wall -Wno-missing-braces -Wnon-virtual-dtor -Wendif-labels -Wextra -Wundef -Wunused-macros -fmessage-length=0 -fno-common -pipe  -fvisibility-inlines-hidden -fPIC -Wshadow -Woverloaded-virtual -std=gnu++11   -DEXCEPTIONS_ON -fexceptions -fno-enforce-eh-specs -O2 -I/usr/pkg/include -I/usr/include -I/usr/pkg/include/db4 -DLDAP_DEPRECATED -I/usr/pkg/include/cppunit -I/usr/pkg/include/nss/nss -I/usr/pkg/include/nspr -I/usr/X11R7/include/freetype2 -I/usr/X11R7/include -I/usr/X11R7/include/libdrm -I/usr/include/krb5  -DLIBO_INTERNAL_ONLY  -c $S/sax/source/tools/fastserializer.cxx -o $W/CxxObject/sax/source/tools/fastserializer.o -MMD -MT $W/CxxObject/sax/source/tools/fastserializer.o -MP -MF $W/Dep/CxxObject/sax/source/tools/fastserializer.d_ -I$S/sax/source/tools/ -I$S/sax/inc  -I$S/include  -I/usr/pkg/java/openjdk8/include -I/usr/pkg/java/openjdk8/include/netbsd -I$S/config_host     -I$W/UnoApiHeadersTarget/udkapi/normal -I$W/UnoApiHeadersTarget/offapi/normal  && mv $W/Dep/CxxObject/sax/source/tools/fastserializer.d_ $W/Dep/CxxObject/sax/source/tools/fastserializer.d
In file included from /usr/obj/misc/libreoffice/work/libreoffice-5.0.4.2/sax/source/tools/fastserializer.hxx:28:0,
                 from /usr/obj/misc/libreoffice/work/libreoffice-5.0.4.2/sax/source/tools/fastserializer.cxx:20:
/usr/obj/misc/libreoffice/work/libreoffice-5.0.4.2/sax/source/tools/CachedOutputStream.hxx: In constructor 'sax_fastparser::CachedOutputStream::CachedOutputStream()':
/usr/obj/misc/libreoffice/work/libreoffice-5.0.4.2/sax/source/tools/CachedOutputStream.hxx:50:46: error: no matching function for call to 'boost::shared_ptr<sax_fastparser::ForMergeBase>::shared_ptr(std::nullptr_t)'
                          , mpForMerge(nullptr)
                                              ^
/usr/obj/misc/libreoffice/work/libreoffice-5.0.4.2/sax/source/tools/CachedOutputStream.hxx:50:46: note: candidates are:
In file included from /usr/obj/misc/libreoffice/work/.buildlink/include/boost/shared_ptr.hpp:17:0,
                 from /usr/obj/misc/libreoffice/work/libreoffice-5.0.4.2/sax/source/tools/CachedOutputStream.hxx:20,
                 from /usr/obj/misc/libreoffice/work/libreoffice-5.0.4.2/sax/source/tools/fastserializer.hxx:28,
                 from /usr/obj/misc/libreoffice/work/libreoffice-5.0.4.2/sax/source/tools/fastserializer.cxx:20:
/usr/obj/misc/libreoffice/work/.buildlink/include/boost/smart_ptr/shared_ptr.hpp:611:5: note: template<class Y> boost::shared_ptr<T>::shared_ptr(boost::shared_ptr<Y>&&, typename boost::detail::sp_enable_if_convertible<Y, T>::type)
     shared_ptr( shared_ptr<Y> && r, typename boost::detail::sp_enable_if_convertible<Y,T>::type = boost::detail::sp_empty() )
     ^
/usr/obj/misc/libreoffice/work/.buildlink/include/boost/smart_ptr/shared_ptr.hpp:611:5: note:   template argument deduction/substitution failed:
In file included from /usr/obj/misc/libreoffice/work/libreoffice-5.0.4.2/sax/source/tools/fastserializer.hxx:28:0,
                 from /usr/obj/misc/libreoffice/work/libreoffice-5.0.4.2/sax/source/tools/fastserializer.cxx:20:
/usr/obj/misc/libreoffice/work/libreoffice-5.0.4.2/sax/source/tools/CachedOutputStream.hxx:50:46: note:   mismatched types 'boost::shared_ptr<X>' and 'std::nullptr_t'
                          , mpForMerge(nullptr)
                                              ^
In file included from /usr/obj/misc/libreoffice/work/.buildlink/include/boost/shared_ptr.hpp:17:0,
                 from /usr/obj/misc/libreoffice/work/libreoffice-5.0.4.2/sax/source/tools/CachedOutputStream.hxx:20,
                 from /usr/obj/misc/libreoffice/work/libreoffice-5.0.4.2/sax/source/tools/fastserializer.hxx:28,
                 from /usr/obj/misc/libreoffice/work/libreoffice-5.0.4.2/sax/source/tools/fastserializer.cxx:20:
/usr/obj/misc/libreoffice/work/.buildlink/include/boost/smart_ptr/shared_ptr.hpp:602:5: note: boost::shared_ptr<T>::shared_ptr(boost::shared_ptr<T>&&) [with T = sax_fastparser::ForMergeBase]
     shared_ptr( shared_ptr && r ) BOOST_NOEXCEPT : px( r.px ), pn()
     ^
/usr/obj/misc/libreoffice/work/.buildlink/include/boost/smart_ptr/shared_ptr.hpp:602:5: note:   no known conversion for argument 1 from 'std::nullptr_t' to 'boost::shared_ptr<sax_fastparser::ForMergeBase>&&'
/usr/obj/misc/libreoffice/work/.buildlink/include/boost/smart_ptr/shared_ptr.hpp:506:5: note: template<class Y, class D> boost::shared_ptr<T>::shared_ptr(boost::movelib::unique_ptr<Y, D>)
     shared_ptr( boost::movelib::unique_ptr< Y, D > r ): px( r.get() ), pn()
     ^
/usr/obj/misc/libreoffice/work/.buildlink/include/boost/smart_ptr/shared_ptr.hpp:506:5: note:   template argument deduction/substitution failed:
In file included from /usr/obj/misc/libreoffice/work/libreoffice-5.0.4.2/sax/source/tools/fastserializer.hxx:28:0,
                 from /usr/obj/misc/libreoffice/work/libreoffice-5.0.4.2/sax/source/tools/fastserializer.cxx:20:
/usr/obj/misc/libreoffice/work/libreoffice-5.0.4.2/sax/source/tools/CachedOutputStream.hxx:50:46: note:   mismatched types 'boost::movelib::unique_ptr<Y, D>' and 'std::nullptr_t'
                          , mpForMerge(nullptr)
                                              ^
In file included from /usr/obj/misc/libreoffice/work/.buildlink/include/boost/shared_ptr.hpp:17:0,
                 from /usr/obj/misc/libreoffice/work/libreoffice-5.0.4.2/sax/source/tools/CachedOutputStream.hxx:20,
                 from /usr/obj/misc/libreoffice/work/libreoffice-5.0.4.2/sax/source/tools/fastserializer.hxx:28,
                 from /usr/obj/misc/libreoffice/work/libreoffice-5.0.4.2/sax/source/tools/fastserializer.cxx:20:
/usr/obj/misc/libreoffice/work/.buildlink/include/boost/smart_ptr/shared_ptr.hpp:493:5: note: template<class Y, class D> boost::shared_ptr<T>::shared_ptr(std::unique_ptr<_Up, _Ep>&&)
     shared_ptr( std::unique_ptr< Y, D > && r ): px( r.get() ), pn()
     ^
/usr/obj/misc/libreoffice/work/.buildlink/include/boost/smart_ptr/shared_ptr.hpp:493:5: note:   template argument deduction/substitution failed:
In file included from /usr/obj/misc/libreoffice/work/libreoffice-5.0.4.2/sax/source/tools/fastserializer.hxx:28:0,
                 from /usr/obj/misc/libreoffice/work/libreoffice-5.0.4.2/sax/source/tools/fastserializer.cxx:20:
/usr/obj/misc/libreoffice/work/libreoffice-5.0.4.2/sax/source/tools/CachedOutputStream.hxx:50:46: note:   mismatched types 'std::unique_ptr<_Tp, _Dp>' and 'std::nullptr_t'
                          , mpForMerge(nullptr)
                                              ^
In file included from /usr/obj/misc/libreoffice/work/.buildlink/include/boost/shared_ptr.hpp:17:0,
                 from /usr/obj/misc/libreoffice/work/libreoffice-5.0.4.2/sax/source/tools/CachedOutputStream.hxx:20,
                 from /usr/obj/misc/libreoffice/work/libreoffice-5.0.4.2/sax/source/tools/fastserializer.hxx:28,
                 from /usr/obj/misc/libreoffice/work/libreoffice-5.0.4.2/sax/source/tools/fastserializer.cxx:20:
/usr/obj/misc/libreoffice/work/.buildlink/include/boost/smart_ptr/shared_ptr.hpp:461:5: note: template<class Y> boost::shared_ptr<T>::shared_ptr(std::auto_ptr<_Up>&&)
     shared_ptr( std::auto_ptr<Y> && r ): px(r.get()), pn()
     ^
/usr/obj/misc/libreoffice/work/.buildlink/include/boost/smart_ptr/shared_ptr.hpp:461:5: note:   template argument deduction/substitution failed:
In file included from /usr/obj/misc/libreoffice/work/libreoffice-5.0.4.2/sax/source/tools/fastserializer.hxx:28:0,
                 from /usr/obj/misc/libreoffice/work/libreoffice-5.0.4.2/sax/source/tools/fastserializer.cxx:20:
/usr/obj/misc/libreoffice/work/libreoffice-5.0.4.2/sax/source/tools/CachedOutputStream.hxx:50:46: note:   mismatched types 'std::auto_ptr<Y>' and 'std::nullptr_t'
                          , mpForMerge(nullptr)
                                              ^
In file included from /usr/obj/misc/libreoffice/work/.buildlink/include/boost/shared_ptr.hpp:17:0,
                 from /usr/obj/misc/libreoffice/work/libreoffice-5.0.4.2/sax/source/tools/CachedOutputStream.hxx:20,
                 from /usr/obj/misc/libreoffice/work/libreoffice-5.0.4.2/sax/source/tools/fastserializer.hxx:28,
                 from /usr/obj/misc/libreoffice/work/libreoffice-5.0.4.2/sax/source/tools/fastserializer.cxx:20:
/usr/obj/misc/libreoffice/work/.buildlink/include/boost/smart_ptr/shared_ptr.hpp:448:14: note: template<class Y> boost::shared_ptr<T>::shared_ptr(std::auto_ptr<_Up>&)
     explicit shared_ptr( std::auto_ptr<Y> & r ): px(r.get()), pn()
              ^
/usr/obj/misc/libreoffice/work/.buildlink/include/boost/smart_ptr/shared_ptr.hpp:448:14: note:   template argument deduction/substitution failed:
In file included from /usr/obj/misc/libreoffice/work/libreoffice-5.0.4.2/sax/source/tools/fastserializer.hxx:28:0,
                 from /usr/obj/misc/libreoffice/work/libreoffice-5.0.4.2/sax/source/tools/fastserializer.cxx:20:
/usr/obj/misc/libreoffice/work/libreoffice-5.0.4.2/sax/source/tools/CachedOutputStream.hxx:50:46: note:   mismatched types 'std::auto_ptr<Y>' and 'std::nullptr_t'
                          , mpForMerge(nullptr)
                                              ^
In file included from /usr/obj/misc/libreoffice/work/.buildlink/include/boost/shared_ptr.hpp:17:0,
                 from /usr/obj/misc/libreoffice/work/libreoffice-5.0.4.2/sax/source/tools/CachedOutputStream.hxx:20,
                 from /usr/obj/misc/libreoffice/work/libreoffice-5.0.4.2/sax/source/tools/fastserializer.hxx:28,
                 from /usr/obj/misc/libreoffice/work/libreoffice-5.0.4.2/sax/source/tools/fastserializer.cxx:20:
/usr/obj/misc/libreoffice/work/.buildlink/include/boost/smart_ptr/shared_ptr.hpp:441:5: note: template<class Y> boost::shared_ptr<T>::shared_ptr(const boost::shared_ptr<Y>&, boost::shared_ptr<T>::element_type*)
     shared_ptr( shared_ptr<Y> const & r, element_type * p ) BOOST_NOEXCEPT : px( p ), pn( r.pn )
     ^
/usr/obj/misc/libreoffice/work/.buildlink/include/boost/smart_ptr/shared_ptr.hpp:441:5: note:   template argument deduction/substitution failed:
In file included from /usr/obj/misc/libreoffice/work/libreoffice-5.0.4.2/sax/source/tools/fastserializer.hxx:28:0,
                 from /usr/obj/misc/libreoffice/work/libreoffice-5.0.4.2/sax/source/tools/fastserializer.cxx:20:
/usr/obj/misc/libreoffice/work/libreoffice-5.0.4.2/sax/source/tools/CachedOutputStream.hxx:50:46: note:   mismatched types 'const boost::shared_ptr<X>' and 'std::nullptr_t'
                          , mpForMerge(nullptr)
                                              ^
In file included from /usr/obj/misc/libreoffice/work/.buildlink/include/boost/shared_ptr.hpp:17:0,
                 from /usr/obj/misc/libreoffice/work/libreoffice-5.0.4.2/sax/source/tools/CachedOutputStream.hxx:20,
                 from /usr/obj/misc/libreoffice/work/libreoffice-5.0.4.2/sax/source/tools/fastserializer.hxx:28,
                 from /usr/obj/misc/libreoffice/work/libreoffice-5.0.4.2/sax/source/tools/fastserializer.cxx:20:
/usr/obj/misc/libreoffice/work/.buildlink/include/boost/smart_ptr/shared_ptr.hpp:427:5: note: template<class Y> boost::shared_ptr<T>::shared_ptr(const boost::shared_ptr<Y>&, typename boost::detail::sp_enable_if_convertible<Y, T>::type)
     shared_ptr( shared_ptr<Y> const & r, typename boost::detail::sp_enable_if_convertible<Y,T>::type = boost::detail::sp_empty() )
     ^
/usr/obj/misc/libreoffice/work/.buildlink/include/boost/smart_ptr/shared_ptr.hpp:427:5: note:   template argument deduction/substitution failed:
In file included from /usr/obj/misc/libreoffice/work/libreoffice-5.0.4.2/sax/source/tools/fastserializer.hxx:28:0,
                 from /usr/obj/misc/libreoffice/work/libreoffice-5.0.4.2/sax/source/tools/fastserializer.cxx:20:
/usr/obj/misc/libreoffice/work/libreoffice-5.0.4.2/sax/source/tools/CachedOutputStream.hxx:50:46: note:   mismatched types 'const boost::shared_ptr<X>' and 'std::nullptr_t'
                          , mpForMerge(nullptr)
                                              ^
In file included from /usr/obj/misc/libreoffice/work/.buildlink/include/boost/shared_ptr.hpp:17:0,
                 from /usr/obj/misc/libreoffice/work/libreoffice-5.0.4.2/sax/source/tools/CachedOutputStream.hxx:20,
                 from /usr/obj/misc/libreoffice/work/libreoffice-5.0.4.2/sax/source/tools/fastserializer.hxx:28,
                 from /usr/obj/misc/libreoffice/work/libreoffice-5.0.4.2/sax/source/tools/fastserializer.cxx:20:
/usr/obj/misc/libreoffice/work/.buildlink/include/boost/smart_ptr/shared_ptr.hpp:415:5: note: template<class Y> boost::shared_ptr<T>::shared_ptr(const boost::weak_ptr<Y>&, boost::detail::sp_nothrow_tag)
     shared_ptr( weak_ptr<Y> const & r, boost::detail::sp_nothrow_tag )
     ^
/usr/obj/misc/libreoffice/work/.buildlink/include/boost/smart_ptr/shared_ptr.hpp:415:5: note:   template argument deduction/substitution failed:
In file included from /usr/obj/misc/libreoffice/work/libreoffice-5.0.4.2/sax/source/tools/fastserializer.hxx:28:0,
                 from /usr/obj/misc/libreoffice/work/libreoffice-5.0.4.2/sax/source/tools/fastserializer.cxx:20:
/usr/obj/misc/libreoffice/work/libreoffice-5.0.4.2/sax/source/tools/CachedOutputStream.hxx:50:46: note:   mismatched types 'const boost::weak_ptr<Y>' and 'std::nullptr_t'
                          , mpForMerge(nullptr)
                                              ^
In file included from /usr/obj/misc/libreoffice/work/.buildlink/include/boost/shared_ptr.hpp:17:0,
                 from /usr/obj/misc/libreoffice/work/libreoffice-5.0.4.2/sax/source/tools/CachedOutputStream.hxx:20,
                 from /usr/obj/misc/libreoffice/work/libreoffice-5.0.4.2/sax/source/tools/fastserializer.hxx:28,
                 from /usr/obj/misc/libreoffice/work/libreoffice-5.0.4.2/sax/source/tools/fastserializer.cxx:20:
/usr/obj/misc/libreoffice/work/.buildlink/include/boost/smart_ptr/shared_ptr.hpp:406:14: note: template<class Y> boost::shared_ptr<T>::shared_ptr(const boost::weak_ptr<Y>&)
     explicit shared_ptr( weak_ptr<Y> const & r ): pn( r.pn ) // may throw
              ^
/usr/obj/misc/libreoffice/work/.buildlink/include/boost/smart_ptr/shared_ptr.hpp:406:14: note:   template argument deduction/substitution failed:
In file included from /usr/obj/misc/libreoffice/work/libreoffice-5.0.4.2/sax/source/tools/fastserializer.hxx:28:0,
                 from /usr/obj/misc/libreoffice/work/libreoffice-5.0.4.2/sax/source/tools/fastserializer.cxx:20:
/usr/obj/misc/libreoffice/work/libreoffice-5.0.4.2/sax/source/tools/CachedOutputStream.hxx:50:46: note:   mismatched types 'const boost::weak_ptr<Y>' and 'std::nullptr_t'
                          , mpForMerge(nullptr)
                                              ^
In file included from /usr/obj/misc/libreoffice/work/.buildlink/include/boost/shared_ptr.hpp:17:0,
                 from /usr/obj/misc/libreoffice/work/libreoffice-5.0.4.2/sax/source/tools/CachedOutputStream.hxx:20,
                 from /usr/obj/misc/libreoffice/work/libreoffice-5.0.4.2/sax/source/tools/fastserializer.hxx:28,
                 from /usr/obj/misc/libreoffice/work/libreoffice-5.0.4.2/sax/source/tools/fastserializer.cxx:20:
/usr/obj/misc/libreoffice/work/.buildlink/include/boost/smart_ptr/shared_ptr.hpp:399:5: note: boost::shared_ptr<T>::shared_ptr(const boost::shared_ptr<T>&) [with T = sax_fastparser::ForMergeBase]
     shared_ptr( shared_ptr const & r ) BOOST_NOEXCEPT : px( r.px ), pn( r.pn )
     ^
/usr/obj/misc/libreoffice/work/.buildlink/include/boost/smart_ptr/shared_ptr.hpp:399:5: note:   no known conversion for argument 1 from 'std::nullptr_t' to 'const boost::shared_ptr<sax_fastparser::ForMergeBase>&'
/usr/obj/misc/libreoffice/work/.buildlink/include/boost/smart_ptr/shared_ptr.hpp:380:41: note: template<class Y, class D, class A> boost::shared_ptr<T>::shared_ptr(Y*, D, A)
     template<class Y, class D, class A> shared_ptr( Y * p, D d, A a ): px( p ), pn( p, d, a )
                                         ^
/usr/obj/misc/libreoffice/work/.buildlink/include/boost/smart_ptr/shared_ptr.hpp:380:41: note:   template argument deduction/substitution failed:
In file included from /usr/obj/misc/libreoffice/work/libreoffice-5.0.4.2/sax/source/tools/fastserializer.hxx:28:0,
                 from /usr/obj/misc/libreoffice/work/libreoffice-5.0.4.2/sax/source/tools/fastserializer.cxx:20:
/usr/obj/misc/libreoffice/work/libreoffice-5.0.4.2/sax/source/tools/CachedOutputStream.hxx:50:46: note:   mismatched types 'Y*' and 'std::nullptr_t'
                          , mpForMerge(nullptr)
                                              ^
In file included from /usr/obj/misc/libreoffice/work/.buildlink/include/boost/shared_ptr.hpp:17:0,
                 from /usr/obj/misc/libreoffice/work/libreoffice-5.0.4.2/sax/source/tools/CachedOutputStream.hxx:20,
                 from /usr/obj/misc/libreoffice/work/libreoffice-5.0.4.2/sax/source/tools/fastserializer.hxx:28,
                 from /usr/obj/misc/libreoffice/work/libreoffice-5.0.4.2/sax/source/tools/fastserializer.cxx:20:
/usr/obj/misc/libreoffice/work/.buildlink/include/boost/smart_ptr/shared_ptr.hpp:365:32: note: template<class Y, class D> boost::shared_ptr<T>::shared_ptr(Y*, D)
     template<class Y, class D> shared_ptr( Y * p, D d ): px( p ), pn( p, d )
                                ^
/usr/obj/misc/libreoffice/work/.buildlink/include/boost/smart_ptr/shared_ptr.hpp:365:32: note:   template argument deduction/substitution failed:
In file included from /usr/obj/misc/libreoffice/work/libreoffice-5.0.4.2/sax/source/tools/fastserializer.hxx:28:0,
                 from /usr/obj/misc/libreoffice/work/libreoffice-5.0.4.2/sax/source/tools/fastserializer.cxx:20:
/usr/obj/misc/libreoffice/work/libreoffice-5.0.4.2/sax/source/tools/CachedOutputStream.hxx:50:46: note:   mismatched types 'Y*' and 'std::nullptr_t'
                          , mpForMerge(nullptr)
                                              ^
In file included from /usr/obj/misc/libreoffice/work/.buildlink/include/boost/shared_ptr.hpp:17:0,
                 from /usr/obj/misc/libreoffice/work/libreoffice-5.0.4.2/sax/source/tools/CachedOutputStream.hxx:20,
                 from /usr/obj/misc/libreoffice/work/libreoffice-5.0.4.2/sax/source/tools/fastserializer.hxx:28,
                 from /usr/obj/misc/libreoffice/work/libreoffice-5.0.4.2/sax/source/tools/fastserializer.cxx:20:
/usr/obj/misc/libreoffice/work/.buildlink/include/boost/smart_ptr/shared_ptr.hpp:354:14: note: template<class Y> boost::shared_ptr<T>::shared_ptr(Y*)
     explicit shared_ptr( Y * p ): px( p ), pn() // Y must be complete
              ^
/usr/obj/misc/libreoffice/work/.buildlink/include/boost/smart_ptr/shared_ptr.hpp:354:14: note:   template argument deduction/substitution failed:
In file included from /usr/obj/misc/libreoffice/work/libreoffice-5.0.4.2/sax/source/tools/fastserializer.hxx:28:0,
                 from /usr/obj/misc/libreoffice/work/libreoffice-5.0.4.2/sax/source/tools/fastserializer.cxx:20:
/usr/obj/misc/libreoffice/work/libreoffice-5.0.4.2/sax/source/tools/CachedOutputStream.hxx:50:46: note:   mismatched types 'Y*' and 'std::nullptr_t'
                          , mpForMerge(nullptr)
                                              ^
In file included from /usr/obj/misc/libreoffice/work/.buildlink/include/boost/shared_ptr.hpp:17:0,
                 from /usr/obj/misc/libreoffice/work/libreoffice-5.0.4.2/sax/source/tools/CachedOutputStream.hxx:20,
                 from /usr/obj/misc/libreoffice/work/libreoffice-5.0.4.2/sax/source/tools/fastserializer.hxx:28,
                 from /usr/obj/misc/libreoffice/work/libreoffice-5.0.4.2/sax/source/tools/fastserializer.cxx:20:
/usr/obj/misc/libreoffice/work/.buildlink/include/boost/smart_ptr/shared_ptr.hpp:341:5: note: boost::shared_ptr<T>::shared_ptr() [with T = sax_fastparser::ForMergeBase]
     shared_ptr() BOOST_NOEXCEPT : px( 0 ), pn() // never throws in 1.30+
     ^
/usr/obj/misc/libreoffice/work/.buildlink/include/boost/smart_ptr/shared_ptr.hpp:341:5: note:   candidate expects 0 arguments, 1 provided
/usr/obj/misc/libreoffice/work/libreoffice-5.0.4.2/solenv/gbuild/LinkTarget.mk:189: recipe for target '/usr/obj/misc/libreoffice/work/libreoffice-5.0.4.2/workdir/CxxObject/sax/source/tools/fastserializer.o' failed
gmake[1]: *** [/usr/obj/misc/libreoffice/work/libreoffice-5.0.4.2/workdir/CxxObject/sax/source/tools/fastserializer.o] Error 1
gmake[1]: Leaving directory '/usr/obj/misc/libreoffice/work/libreoffice-5.0.4.2'
Makefile:247: recipe for target 'build' failed
gccのバージョンを変えたら良いのか、それとも何か別に原因があるのか、対処する方向性が見えてきません。ちなみに「GCC_REQD=4.8」を付けない場合にエラーとなった箇所は、問題なくコンパイル出来ていました。
[build CXX] comphelper/source/misc/threadpool.cxx
S=/usr/obj/misc/libreoffice/work/libreoffice-5.0.4.2 && I=$S/instdir && W=$S/workdir &&  mkdir -p $W/CxxObject/comphelper/source/misc/ $W/Dep/CxxObject/comphelper/source/misc/ && cd /usr/obj/misc/libreoffice/work/libreoffice-5.0.4.2 &&   c++ -DBOOST_ERROR_CODE_HEADER_ONLY -DBOOST_SYSTEM_NO_DEPRECATED -DCPPU_ENV=gcc3 -DINTEL -DNDEBUG -DNETBSD -DOPTIMIZE -DOSL_DEBUG_LEVEL=0 -DUNIX -DUNX -DX86 -D_PTHREADS -D_REENTRANT -pthread -I/usr/pkg/include -I/usr/include -I/usr/pkg/include/db4 -DLDAP_DEPRECATED -I/usr/pkg/include/cppunit -I/usr/pkg/include/nss/nss -I/usr/pkg/include/nspr -I/usr/X11R7/include/freetype2 -I/usr/X11R7/include -I/usr/X11R7/include/libdrm -I/usr/include/krb5  -DCOMPHELPER_DLLIMPLEMENTATION   -DHAVE_GCC_VISIBILITY_FEATURE -fvisibility=hidden   -Wall -Wno-missing-braces -Wnon-virtual-dtor -Wendif-labels -Wextra -Wundef -Wunused-macros -fmessage-length=0 -fno-common -pipe  -fvisibility-inlines-hidden -fPIC -Wshadow -Woverloaded-virtual -std=gnu++11   -DEXCEPTIONS_ON -fexceptions -fno-enforce-eh-specs -O2 -I/usr/pkg/include -I/usr/include -I/usr/pkg/include/db4 -DLDAP_DEPRECATED -I/usr/pkg/include/cppunit -I/usr/pkg/include/nss/nss -I/usr/pkg/include/nspr -I/usr/X11R7/include/freetype2 -I/usr/X11R7/include -I/usr/X11R7/include/libdrm -I/usr/include/krb5  -DLIBO_INTERNAL_ONLY  -c $S/comphelper/source/misc/threadpool.cxx -o $W/CxxObject/comphelper/source/misc/threadpool.o -MMD -MT $W/CxxObject/comphelper/source/misc/threadpool.o -MP -MF $W/Dep/CxxObject/comphelper/source/misc/threadpool.d_ -I$S/comphelper/source/misc/ -I$S/comphelper/source/inc  -I$S/include  -I/usr/pkg/java/openjdk8/include -I/usr/pkg/java/openjdk8/include/netbsd -I$S/config_host  -I$W/CustomTarget/officecfg/registry    -I$W/UnoApiHeadersTarget/udkapi/normal -I$W/UnoApiHeadersTarget/offapi/normal  && mv $W/Dep/CxxObject/comphelper/source/misc/threadpool.d_ $W/Dep/CxxObject/comphelper/source/misc/threadpool.d
[build CXX] comphelper/source/misc/types.cxx

2015-12-20

PersonalWorkstation 500auにOpenVMS Alpha 7.2をインストール

PersonalWorkstation 500auにOpenVMS Alpha 7.2をインストールしました。使用したキットはOpenVMS Hobbyist Programが過去に提供していたCD-ROMです。OpenVMS Alpha V7.3-1とOpenVMS Alpha 8.3も持っているのですが、特にこれといった理由もなく7.2をインストールしました。

PersonalWorkstation 500auのCPUは21164A-2 500MHzで、メモリが768Mです。以前は1,024Mを積んでいましが、シリアルコンソールの反応が無くなるという現象が頻発し困っていました。試しにメモリを減らしたら現象が出なくなったので、DIMM不良だったのかもしれません。
>>>show conf
Firmware
SRM Console:    V6.9-7
ARC Console:    5.67
PALcode:    VMS PALcode V1.20-14, OSF PALcode V1.22-17
SROM Version:   v5.90

Processor
DECchip (tm) 21164A-2    Pass   500 MHz  96 KBytes SCache
2 MB BCache
PYXIS ASIC Pass 257

MEMORY


Memory Size = 768Mb

Bank      Size/Sets   Base Addr
------    ----------  ---------
   0        512Mb      00000000
   1        256Mb      20000000


BCache Size = 2Mb

Tested Memory =  768Mbytes

PCI Bus
     Bus 00  Slot 03: Digital Semiconductor 21143 Network Controller
                                   ewa0.0.0.3.0          00-00-F8-XX-YY-ZZ  

     Bus 00  Slot 07: Cypress PCI Peripheral Controller
                                                                            

     Bus 00  Slot 07: PCI IDE
                                                                            

     Bus 00  Slot 07: PCI IDE
                                                                            
                                   dqb0.0.0.207.0         CD-W54E            

     Bus 00  Slot 07: PCI USB
     Bus 00  Slot 12: Digital TGA2 Graphics Controller
     Bus 00  Slot 20: DECchip 21152 PCI to PCI Bridge
       Bus 01  Slot 04: ISP1040 Scsi Controller
                                   pka0.7.0.1004.0       SCSI Bus ID 7      
                                   dka100.1.0.1004.0      RZ28D              
                                   mka500.5.0.1004.0      TLZ09              
OpenVMS Alpha 7.2のCD-ROMを使ってブートさせると、インストールが始まります。
>>>b dqb0
(boot dqb0.0.0.207.0)
block 0 of dqb0.0.0.207.0 is a valid boot block
reading 896 blocks from dqb0.0.0.207.0
bootstrap code read in
base = 1d6000, image_start = 0, image_bytes = 70000
initializing HWRPB at 2000
initializing page table at 1c8000
initializing machine state
setting affinity to the primary CPU
jumping to bootstrap code
ewa0: link up : Negotiated  100BaseTX: full duplex

    OpenVMS (TM) Alpha Operating System, Version V7.2   

Please enter date and time (DD-MMM-YYYY  HH:MM)  13-OCT-2015 14:00
$!  Copyright (c) 1998 Digital Equipment Corporation.  All rights reserved.



    Installing required known files...

    Configuring devices...
%EWA0, Auto Negotiation mode set by console
%EWA0, FastFD(Full Duplex 100baseTX) Ethernet connection selected

    ****************************************************************

    You can install or upgrade the OpenVMS Alpha operating system
    or you can install or upgrade layered products that are included
    on the OpenVMS Alpha operating system CD-ROM.

    You can also execute DCL commands and procedures to perform
    "standalone" tasks, such as backing up the system disk.

    Please choose one of the following:

        1)  Upgrade, install or reconfigure OpenVMS Alpha Version V7.2
        2)  Display products and patches that this procedure can install
        3)  Install or upgrade layered products and patches
        4)  Show installed products
        5)  Reconfigure installed products
        6)  Remove installed products
        7)  Execute DCL commands and procedures
        8)  Shut down this system

Enter CHOICE or ? for help: (1/2/3/4/5/6/7/8/?)
インストール作業自体は難しくはありません。BSD系OSとは概念が違うところがあるので慣れていないと迷うところもありますが、間違ったら再度インストールしようと腹をくくれば怖くありません。むしろ問題になるのは、Hobbyist向けとはいえOpenVMSは本格的な商用OSなので、正式なライセンス(Product Authorization Key)が必要とされるという事です。

PAKを取得するためには、DECが持っていた権利を引き継いだHewlett Packardにある「OpenVMS Hobbyist Registration」のWebサイトから申請する必要があるようです。申請が通るとメールでライセンス情報が送られてくるので、インストールしたシステムに登録します。ただし有効期限は1年間になっているので、継続して使用するなら、有効期限前に再申請が必要になります。より重要なことは、申請するにあたり「Participating Chapter」と「Membership Number」が必要になることです。私の場合は、過去に個人向けDigital UNIXを購入し、その時にDECUS Japanに加入していたので、その会員資格を使ってPAKを申請しました。

ライセンス情報は人手を介して送られているようなので若干時間がかかりますが、数日以内にメールで届くと思います。内容はOpeVMSで直接実行できるコマンド・プロシージャ形式になっています。ここで問題になるのは、届いたメールの情報を、どのようにしてOpenVMSの環境に持っていけば良いのかという点です。結構大きなファイルなのでファイル転送が出来れば簡単なのでしょうが、そういうことが出来るのはシステム構築が完了してからのことです。今はシステム構築の途中なのでネットワーク転送が使用できず、別の方法を模索しなければなりませんが、良い方法を思いつきませんでした。結局、最低限のPAKだけは入力ミスに注意しながらキーボードからコマンドを入力し、有効にしました。その後でネットワークが使える状況に持ち込み、ファイル転送を使ってPAKをコピーし、一気に全PAKを登録しました。最初に入力したPAKは次のとおりです。
  • OPENVMS-ALPHA
  • OPENVMS-ALPHA-USER
  • UCX
  • UCX-IP-CLIENT
  • UCX-IP-NFS
  • UCX-IP-RT 
伝統的にOpenVMSはネットワークにDECnetを使用しますが、TCP/IP Services for OpenVMSをインストールすることもできます。自宅ネットワークにはBSD系OSやMicrosoft Windowsなどがあるので、UCXがあればDECnetは不要かと考えていました。ところがバッチキューを構成しても動かないので、DECnet Phase-IVが必要だったようです。

Hobbyist OpenVMS AlphaのCD-ROMに入っていたプログラミング言語をインストールしておきます。
  • DEC AXPVMS FORTRAN V7.1-1
  • DEC C V6.0
  • DIGITAL COBOL V2.5-961
  • DEC PASCAL V5.7
システムの調整が出来ていませんが、この段階での起動メッセージは以下のとおりです。
>>>b dka100
(boot dka100.1.0.1004.0)
block 0 of dka100.1.0.1004.0 is a valid boot block
reading 896 blocks from dka100.1.0.1004.0
bootstrap code read in
base = 1d6000, image_start = 0, image_bytes = 70000
initializing HWRPB at 2000
initializing page table at 1c8000
initializing machine state
setting affinity to the primary CPU
jumping to bootstrap code
ewa0: link up : Negotiated  100BaseTX: full duplex


    OpenVMS (TM) Alpha Operating System, Version V7.2   


$!  Copyright (c) 1998 Digital Equipment Corporation.  All rights reserved.
%STDRV-I-STARTUP, OpenVMS startup begun at 15-OCT-2015 09:49:04.49
%EWA0, Auto Negotiation mode set by console
%EWA0, FastFD(Full Duplex 100baseTX) Ethernet connection selected
%RUN-S-PROC_ID, identification of created process is 00000204
%RUN-S-PROC_ID, identification of created process is 00000205
%SET-I-NEWAUDSRV, identification of new audit server process is 0000020A
%%%%%%%%%%%  OPCOM  15-OCT-2015 09:49:21.53  %%%%%%%%%%%
Operator _PWS500$OPA0: has been enabled, username SYSTEM

%%%%%%%%%%%  OPCOM  15-OCT-2015 09:49:21.69  %%%%%%%%%%%
Operator status for operator _PWS500$OPA0:
CENTRAL, PRINTER, TAPES, DISKS, DEVICES, CARDS, NETWORK, CLUSTER, SECURITY,
LICENSE, OPER1, OPER2, OPER3, OPER4, OPER5, OPER6, OPER7, OPER8, OPER9, OPER10,
OPER11, OPER12

%%%%%%%%%%%  OPCOM  15-OCT-2015 09:49:22.27  %%%%%%%%%%%
Logfile has been initialized by operator _PWS500$OPA0:
Logfile is PWS500::SYS$SYSROOT:[SYSMGR]OPERATOR.LOG;14

%%%%%%%%%%%  OPCOM  15-OCT-2015 09:49:22.27  %%%%%%%%%%%
Operator status for operator PWS500::SYS$SYSROOT:[SYSMGR]OPERATOR.LOG;14
CENTRAL, PRINTER, TAPES, DISKS, DEVICES, CARDS, NETWORK, CLUSTER, SECURITY,
LICENSE, OPER1, OPER2, OPER3, OPER4, OPER5, OPER6, OPER7, OPER8, OPER9, OPER10,
OPER11, OPER12

%%%%%%%%%%%  OPCOM  15-OCT-2015 09:49:26.07  %%%%%%%%%%%
Message from user SYSTEM on PWS500
%SECSRV-E-NOPROXYDB, cannot find proxy database file NET$PROXY.DAT
%RMS-E-FNF, file not found

%%%%%%%%%%%  OPCOM  15-OCT-2015 09:49:26.08  %%%%%%%%%%%
Message from user SYSTEM on PWS500
%SECSRV-E-NOPROXYDB, cannot find proxy database file NET$PROXY.DAT
%RMS-E-FNF, file not found

%%%%%%%%%%%  OPCOM  15-OCT-2015 09:49:26.13  %%%%%%%%%%%
Message from user SYSTEM on PWS500
%SECSRV-I-SERVERSTARTINGU, security server starting up

%%%%%%%%%%%  OPCOM  15-OCT-2015 09:49:26.13  %%%%%%%%%%%
Message from user SYSTEM on PWS500
%SECSRV-I-CIASTARTINGUP, breakin detection and evasion processing now starting u
p

%%%%%%%%%%%  OPCOM  15-OCT-2015 09:49:27.77  %%%%%%%%%%%
Message from user SYSTEM on PWS500
Warning: DECdtm log file not found (SYS$JOURNAL:SYSTEM$PWS500.LM$JOURNAL)
        %RMS-E-FNF, file not found
        TP server process waiting



The OpenVMS Alpha system is now executing the site-specific startup commands.

%%%%%%%%%%%  OPCOM  15-OCT-2015 09:49:29.64  %%%%%%%%%%%
Message from user AUDIT$SERVER on PWS500
Security alarm (SECURITY) and security audit (SECURITY) on PWS500, system id: 11
85
Auditable event:          Audit server starting up
Event time:               15-OCT-2015 09:49:29.09
PID:                      00000203       
Username:                 SYSTEM         

%RUN-S-PROC_ID, identification of created process is 0000020F
%%%%%%%%%%%  OPCOM  15-OCT-2015 09:49:32.26  %%%%%%%%%%%
Message from user DECNET on PWS500
DECnet starting

%NCP-I-NOINFO, No information in database
%RUN-S-PROC_ID, identification of created process is 00000211
%TCPIP-I-NORMAL, timezone information verified
%TCPIP$PPP-I-INFO, Loading PPP Drivers and CallBack
%RUN-S-PROC_ID, identification of created process is 00000212
%TCPIP-I-INFO, The Internet driver and ACP were successfully loaded
%%%%%%%%%%%  OPCOM  15-OCT-2015 09:49:38.64  %%%%%%%%%%%
Message from user INTERnet on PWS500
INTERnet Loaded

%%%%%%%%%%%  OPCOM  15-OCT-2015 09:49:38.81  %%%%%%%%%%%
Message from user DECNET on PWS500
DECnet event 4.10, circuit up
From node 1.161 (PWS500), 15-OCT-2015 09:49:35.24
Circuit EWA-0


%TCPIP-I-SETLOCAL, setting domain and/or local host
%TCPIP-I-STARTCOMM, starting communication
%%%%%%%%%%%  OPCOM  15-OCT-2015 09:49:39.23  %%%%%%%%%%%
Message from user INTERnet on PWS500
INTERnet Started

%TCPIP-I-SETPROTP, setting protocol parameters
%TCPIP-I-DEFINTE, defining interfaces
%%%%%%%%%%%  OPCOM  15-OCT-2015 09:49:39.49  %%%%%%%%%%%
Message from user INTERnet on PWS500
INTERnet ACP Created INTERnet interface: WE0

%TCPIP-I-ENABSERV, enabling services
%%%%%%%%%%%  OPCOM  15-OCT-2015 09:49:39.84  %%%%%%%%%%%
Message from user INTERnet on PWS500
INTERnet ACP Activate FTP Server

%TCPIP-I-STARTNAME, starting name service
%%%%%%%%%%%  OPCOM  15-OCT-2015 09:49:39.84  %%%%%%%%%%%
Message from user TCPIP TELNET on PWS500
Protocol TELNET is started and now available

%TCPIP-I-LOADSERV, loading TCPIP server proxy information
%%%%%%%%%%%  OPCOM  15-OCT-2015 09:49:39.84  %%%%%%%%%%%
Message from user INTERnet on PWS500
INTERnet ACP Activate TELNET Server

%TCPIP-I-SERVLOADED, auxiliary server loaded with 0 proxy records
-TCPIP-I-SERVSKIP, skipped 0 communication proxy records
-TCPIP-I-SERVTOTAL, total of 0 proxy records read
%SET-I-INTSET, login interactive limit = 64, current interactive value = 0
  SYSTEM       job terminated at 15-OCT-2015 09:49:42.24

  Accounting information:
  Buffered I/O count:               3915      Peak working set size:       6736
  Direct I/O count:                 2006      Peak virtual size:         180432
  Page faults:                      6697      Mounted volumes:                0
  Charged CPU time:        0 00:00:04.37      Elapsed time:       0 00:00:38.50

 Welcome to OpenVMS (TM) Alpha Operating System, Version V7.2   

Username: system
Password:
   Welcome to OpenVMS (TM) Alpha Operating System, Version V7.2 on node PWS500
    Last interactive login on Thursday, 15-OCT-2015 09:46:48.34
   

LibreOfficeのビルド失敗(1)

pkgsrcからmisc/libreofficeをインストールしようとしていますが、ビルドに失敗します。pkgsrcにはmisc/libreoffice4やmisc/libreoffice43がありますが、全てビルドできません。ちなみに各パッケージでインストールされるLibreOfficeのバージョンは次のとおりです。
  • misc/libreoffice(LibreOffice 5.0.4.2) 
  • misc/libreoffice4(LibreOffice 4.4.7.2)
  • misc/libreoffice43(LibreOffice 4.3.7.2)
NetBSD/i386 7.99.21でmisc/libreofficeをビルドすると、次のようなエラーが出ます。
[build CXX] comphelper/source/misc/threadpool.cxx
S=/usr/obj/misc/libreoffice/work/libreoffice-5.0.4.2 && I=$S/instdir && W=$S/workdir &&  mkdir -p $W/CxxObject/comphelper/source/misc/ $W/Dep/CxxObject/comphelper/source/misc/ && cd /usr/obj/misc/libreoffice/work/libreoffice-5.0.4.2 &&   c++ -DBOOST_ERROR_CODE_HEADER_ONLY -DBOOST_SYSTEM_NO_DEPRECATED -DCPPU_ENV=gcc3 -DINTEL -DNDEBUG -DNETBSD -DOPTIMIZE -DOSL_DEBUG_LEVEL=0 -DUNIX -DUNX -DX86 -D_PTHREADS -D_REENTRANT -pthread -I/usr/pkg/include -I/usr/include -I/usr/pkg/include/db4 -DLDAP_DEPRECATED -I/usr/pkg/include/cppunit -I/usr/pkg/include/nss/nss -I/usr/pkg/include/nspr -I/usr/X11R7/include/freetype2 -I/usr/X11R7/include -I/usr/X11R7/include/libdrm -I/usr/include/krb5  -DCOMPHELPER_DLLIMPLEMENTATION   -DHAVE_GCC_VISIBILITY_FEATURE -fvisibility=hidden   -Wall -Wno-missing-braces -Wnon-virtual-dtor -Wendif-labels -Wextra -Wundef -Wunused-macros -fmessage-length=0 -fno-common -pipe  -fvisibility-inlines-hidden -fPIC -Wshadow -Woverloaded-virtual -std=gnu++0x   -DEXCEPTIONS_ON -fexceptions -fno-enforce-eh-specs -O2 -I/usr/pkg/include -I/usr/include -I/usr/pkg/include/db4 -DLDAP_DEPRECATED -I/usr/pkg/include/cppunit -I/usr/pkg/include/nss/nss -I/usr/pkg/include/nspr -I/usr/X11R7/include/freetype2 -I/usr/X11R7/include -I/usr/X11R7/include/libdrm -I/usr/include/krb5  -DLIBO_INTERNAL_ONLY  -c $S/comphelper/source/misc/threadpool.cxx -o $W/CxxObject/comphelper/source/misc/threadpool.o -MMD -MT $W/CxxObject/comphelper/source/misc/threadpool.o -MP -MF $W/Dep/CxxObject/comphelper/source/misc/threadpool.d_ -I$S/comphelper/source/misc/ -I$S/comphelper/source/inc  -I$S/include  -I/usr/pkg/java/openjdk8/include -I/usr/pkg/java/openjdk8/include/netbsd -I$S/config_host  -I$W/CustomTarget/officecfg/registry    -I$W/UnoApiHeadersTarget/udkapi/normal -I$W/UnoApiHeadersTarget/offapi/normal  && mv $W/Dep/CxxObject/comphelper/source/misc/threadpool.d_ $W/Dep/CxxObject/comphelper/source/misc/threadpool.d
/usr/obj/misc/libreoffice/work/libreoffice-5.0.4.2/comphelper/source/misc/threadpool.cxx: In member function 'boost::shared_ptr<comphelper::ThreadPool> comphelper::ThreadPoolStatic::operator()()':
/usr/obj/misc/libreoffice/work/libreoffice-5.0.4.2/comphelper/source/misc/threadpool.cxx:118:45: error: 'std::thread' has not been declared
/usr/obj/misc/libreoffice/work/libreoffice-5.0.4.2/solenv/gbuild/LinkTarget.mk:189: recipe for target '/usr/obj/misc/libreoffice/work/libreoffice-5.0.4.2/workdir/CxxObject/comphelper/source/misc/threadpool.o' failed
gmake[1]: *** [/usr/obj/misc/libreoffice/work/libreoffice-5.0.4.2/workdir/CxxObject/comphelper/source/misc/threadpool.o] Error 1
gmake[1]: Leaving directory '/usr/obj/misc/libreoffice/work/libreoffice-5.0.4.2'
Makefile:247: recipe for target 'build' failed
gmake: *** [build] Error 2
pkgsrc-usersのメーリングリストでは2015年9月12日付で「Compiling misc/libreoffice fails」という報告が上がっています。さらに2015年11月9日付でも「Re: Compiling misc/libreoffice fails」と再報告が上がっていますが、リプライが無いようです。またNetBSD Problem Reportの#49826で「pkgsrc-2015Q1 misc/libreoffice4 build fails on NetBSD 6.1.5」と報告されていますが、ステータスはOpen状態のままです。

標準のgccが4.5.3なので、ものは試しとpkgsrc/gcc48で入れた4.8.4を使ってみることにしました。/etc/mk.confに「」というエントリを追加しておきます。misc/libreofficeの作業ディレクトリを消して、pkg_deleteでboost-libsとその依存パッケージを全て消去してみました。

あらためてmisc/libreofficeをビルドしたら、またもやエラーになりました。
checking for glm/glm.hpp... no
configure: error: Required boost headers not found.
*** Error code 1

Stop.
make: stopped in /usr/pkgsrc/converters/libetonyek
理由は不明ですが、converters/libetonyekはgcc 4.8.4ではビルドできないようです。標準のgcc 4.5.3ならビルドできました。

いろいろと問題が続き、なかなかLibreOfficeのビルドが完了しません。

2015-12-18

DECstation 5000/200にディスクレス環境としてNetBSD/pmax 1.5.3をインストール

DECstaion 5000/200にディスクレス環境としてNetBSD/pmax 1.5.3をインストールしました。このマシンは本体にHDDを内蔵することができません。HDDを外付けしてSCSIケーブルで繋がなければなりませんが、必要な機材を持っていないので必然的にディスクレス環境になります。また1.5.3がリリースされたのは2002年7月22日なので相当旧いバージョンですが、このバージョンでないとネットワークブートができませんでした。なんとか原因を調査して最新バージョンにしたいと思います。

DECstation 5000/200はCPUにMIPS R3000 25MHzを使用しています。 DECstation3100m30とはアーキテクチャが違うので単純な比較はできませんが、相対性能で数倍から10倍弱ほど高速になると思われます。
KN02-AA V5.3c
?TFL: #0 PMAGB-BA PATT: 5:  Red screen Test
>>cnfg
 7: KN02-AA  DEC      V5.3c    TCF0  (128 MB)
 6: PMAD-AA  DEC      V5.3a    TCF0  (enet: 08-00-2b-xx-yy-zz)
 5: PMAZ-AA  DEC      V5.3b    TCF0  (SCSI = 7)
 0: PMAGB-BA DEC      V1.1     TCF0  (HX -- d=8 )
NetBSD/pmaxをディスクレス環境で使うにはサーバ側にtftpとbootpdの設定が必要です。サーバにはNetBSD/i386 6.1.5を使用しました。

tftpの設定をおこないます。
  1. /etc/inetd.confを編集して、tftpのエントリのコメントを外します。
  2. tftpで読み込むカーネルを準備します。NetBSD/pmax 1.5.3の配布ファイルに含まれるファイル(NetBSD-1.5.3/pmax/binary/kernel/nfsnetbsd.gz)を所定のディレクトリ(/tftpboot)に圧縮を解いて置いておきます。シンボリックリンクにしたら起動しなかったので、実際にファイルをコピーして置いてあります。ファイル名は/tftpboot/NetBSD-pmax-1.5.3-nfsnetbsdとしました。

bootpdの設定をおこないます。
  1. /etc/inetd.confを編集して、bootpsのエントリのコメントを外します。
  2. /etc/bootptabに以下の設定を追加します。拡張性を意識したためにエントリが分離しています。
    # NetBSD/pmax 1.5.3
    .netbsdpmax153:\
            :ht=ether:\
            :sm=255.255.255.0:\
            :sa=192.168.1.222:\
            :bf=NetBSD-pmax-1.5.3-nfsnetbsd:\
            :bs=auto:
    # DECstation 5000/200
    ds5201nb:\
            :ha=08002BXXYYZZ:\
            :ip=192.168.1.142:\
            :rp=/usr/local/diskless/NetBSD-1.5.3/pmax/ds5201nb:\
            :tc=.netbsdpmax153:
以上の設定が済んだら、サーバ側にディスクレス環境を整えます。まずNetBSD/pmax 1.5.3の配布ファイルを展開します。
# find /usr/local/NetBSD/NetBSD-1.5.3/pmax/binary/sets -type f
/usr/local/NetBSD/NetBSD-1.5.3/pmax/binary/sets/BSDSUM
/usr/local/NetBSD/NetBSD-1.5.3/pmax/binary/sets/CKSUM
/usr/local/NetBSD/NetBSD-1.5.3/pmax/binary/sets/MD5
/usr/local/NetBSD/NetBSD-1.5.3/pmax/binary/sets/SYSVSUM
/usr/local/NetBSD/NetBSD-1.5.3/pmax/binary/sets/base.tgz
/usr/local/NetBSD/NetBSD-1.5.3/pmax/binary/sets/comp.tgz
/usr/local/NetBSD/NetBSD-1.5.3/pmax/binary/sets/etc.tgz
/usr/local/NetBSD/NetBSD-1.5.3/pmax/binary/sets/games.tgz
/usr/local/NetBSD/NetBSD-1.5.3/pmax/binary/sets/kern.tgz
/usr/local/NetBSD/NetBSD-1.5.3/pmax/binary/sets/man.tgz
/usr/local/NetBSD/NetBSD-1.5.3/pmax/binary/sets/misc.tgz
/usr/local/NetBSD/NetBSD-1.5.3/pmax/binary/sets/text.tgz
/usr/local/NetBSD/NetBSD-1.5.3/pmax/binary/sets/xbase.tgz
/usr/local/NetBSD/NetBSD-1.5.3/pmax/binary/sets/xcomp.tgz
/usr/local/NetBSD/NetBSD-1.5.3/pmax/binary/sets/xcontrib.tgz
/usr/local/NetBSD/NetBSD-1.5.3/pmax/binary/sets/xfont.tgz
/usr/local/NetBSD/NetBSD-1.5.3/pmax/binary/sets/xmisc.tgz
# cd /usr/local/diskless/NetBSD-1.5.3/pmax/ds5201nb
# find /usr/local/NetBSD/NetBSD-1.5.3/pmax/binary/sets -type f -name '[^x]*.tgz' | xargs -n1 tar xfpz
展開したディレクトリで変更を加えます。ここでは、サーバ側のディレクトリ/usr/local/diskless/NetBSD-1.5.3/pmax/ds5201nbが、ディスクレス環境でクライアントとなるNetBSD/pmaxのルートディレクトリになります。
  1. コンソールデバイスを作成します。
    # mknod dev/console c 0 0
  2. タイムゾーンを設定します。ここではシンボリックリンクを張るので、リンク元が絶対パス指定されていても、これはサーバ側のファイルを指定しているわけではありません。
    # ln -sf /usr/share/zoneinfo/Asia/Tokyo etc/localtime
  3. スワップファイルを作っておきます。
    # mkdir  /usr/local/diskless/NetBSD-1.5.3/pmax/ds5201nb/swap
    # dd if=/dev/zero of=/usr/local/diskless/NetBSD-1.5.3/pmax/ds5201nb.swap bs=1m count=256
  4. etc/hostsに必要なエントリを適宜追加しておきます。
  5. etc/ifconfig.le0を編集してネットワーク情報を定義します。
    inet 192.168.1.142 netmask 255.255.255.0 broadcast 192.168.1.255
  6. etc/resolv.confを編集して必要な情報を定義します。
    domain ******.jp
    nameserver 192.168.1.1
  7. etc/rc.confに以下の情報を追加します。
    hostname="ds5201nb"
    defaultroute="192.168.1.1"
    nfs_client=YES
    auto_ifconfig=NO
    net_interfaces=""
  8. etc/fstabを編集します。OpenBSD/vaxではスワップの設定があると起動できませんでしたが、NetBSD/pmaxでは必要でした。
    192.168.1.222:/usr/local/diskless/NetBSD-1.5.3/pmax/ds5201nb.swap        none    swap sw,nfsmntpt=/swap
    192.168.1.222:/usr/local/diskless/NetBSD-1.5.3/pmax/ds5201nb             /       nfs  rw 0 0
以上の設定が済んだらシングルユーザモードで起動し、デバイスファイルを作成します。
>>boot 6/tftp
1137008+47888+256748
Copyright (c) 1996, 1997, 1998, 1999, 2000, 2001
    The NetBSD Foundation, Inc.  All rights reserved.
Copyright (c) 1982, 1986, 1989, 1991, 1993
    The Regents of the University of California.  All rights reserved.

NetBSD 1.5.3 (INSTALL) #0: Thu Jul  4 09:58:15 EST 2002
    root@medusa.thistledown.com.au:/usr/obj/NetBSD/src15/sys/arch/pmax/compile/INSTALL
DECstation 5000/200 (3MAX)
total memory = 128 MB
avail memory = 116 MB
using 1664 buffers containing 6656 KB of memory
mainbus0 (root)
cpu0 at mainbus0: MIPS R3000 CPU (0x220) Rev. 2.0 with MIPS R3010 FPC Rev. 3.0
cpu0: 64KB Instruction, 64KB Data, direct mapped cache
tc0 at mainbus0: 25 MHz clock
(略)
nfs_boot: trying DHCP/BOOTP
nfs_boot: BOOTP server: 192.168.1.222
nfs_boot: my_addr=192.168.1.142
nfs_boot: my_mask=255.255.255.0
root on 192.168.1.222:/usr/local/diskless/NetBSD-1.5.3/pmax/ds5201nb
WARNING: clock gained 42 days -- CHECK AND RESET THE DATE!
Enter pathname of shell or RETURN for sh:
Terminal type is rcons.
We recommend creating a non-root account and using su(1) for root access.
# exit
eval: Can't open /dev/null
Setting tty flags.
chmod: /dev/tty[pqrs]*: No such file or directory
Setting sysctl variables:
Starting network.
Hostname: ds5201nb
add net 127.0.0.0: gateway 127.0.0.1
Configuring network interfaces:.
add net default: gateway 192.168.1.1
Building databases...
Starting syslogd.
Checking for core dump...
savecore: /netbsd: kvm_openfiles: /dev/mem: No such file or directory
Nov 14 04:48:33 ds5201nb savecore: /netbsd: kvm_openfiles: /dev/mem: No such file or directory
Mounting all filesystems...
Clearing /tmp.
Checking quotas: done.
Setting securelevel: kern.securelevel: 0 -> 1
swapctl: /swap is readable by the world
swapctl: adding 192.168.1.222:/usr/local/diskless/NetBSD-1.5.3/pmax/ds5201nb.swap as swap device at priority 0
Updating motd.
starting local daemons:.
Starting inetd.
Starting cron.
Sat Nov 14 04:48:58 JST 2015

NetBSD/pmax (ds5201nb) (console)

login: root
Nov 14 04:49:07 ds5201nb login: ROOT LOGIN (root) ON console
Copyright (c) 1996, 1997, 1998, 1999, 2000
        The NetBSD Foundation, Inc.  All rights reserved.
Copyright (c) 1980, 1983, 1986, 1988, 1990, 1991, 1993, 1994
        The Regents of the University of California.  All rights reserved.
Nov 14 04:49:07 ds5201nb login: ROOT LOGIN (root) ON console

NetBSD 1.5.3 (INSTALL) #0: Thu Jul  4 09:58:15 EST 2002

Welcome to NetBSD!

Terminal type is rcons.
We recommend creating a non-root account and using su(1) for root access.
ds5201nb# cd /dev
ds5201nb# sh MAKEDEV all
これでDECstation 5000/200にディスクレス環境のNetBSD/pmax 1.5.3が出来上がりました。 この時のブートメッセージは以下のとおりです。
KN02-AA V5.3c    (PC: 0x80053c14, SP: 0xc9152e30)
>>boot 6/tftp
1137008+47888+256748
Copyright (c) 1996, 1997, 1998, 1999, 2000, 2001
    The NetBSD Foundation, Inc.  All rights reserved.
Copyright (c) 1982, 1986, 1989, 1991, 1993
    The Regents of the University of California.  All rights reserved.

NetBSD 1.5.3 (INSTALL) #0: Thu Jul  4 09:58:15 EST 2002
    root@medusa.thistledown.com.au:/usr/obj/NetBSD/src15/sys/arch/pmax/compile/INSTALL
DECstation 5000/200 (3MAX)
total memory = 128 MB
avail memory = 116 MB
using 1664 buffers containing 6656 KB of memory
mainbus0 (root)
cpu0 at mainbus0: MIPS R3000 CPU (0x220) Rev. 2.0 with MIPS R3010 FPC Rev. 3.0
cpu0: 64KB Instruction, 64KB Data, direct mapped cache
tc0 at mainbus0: 25 MHz clock
ibus0 at tc0 slot 7 offset 0x0
mcclock0 at ibus0 addr 0x1fe80000: mc146818 or compatible
dc0 at ibus0 addr 0x1fe00000
le0 at tc0 slot 6 offset 0x0: address 08:00:2b:xx:yy:zz
le0: 32 receive buffers, 8 transmit buffers
asc0 at tc0 slot 5 offset 0x0 (bus speed: 25 MHz) : target 7
sfb0 at tc0 slot 0 offset 0x0: 1280x1024x8
Beginning old-style SCSI device autoconfiguration
boot device: le0
root on le0
nfs_boot: trying DHCP/BOOTP
nfs_boot: BOOTP server: 192.168.1.222
nfs_boot: my_addr=192.168.1.142
nfs_boot: my_mask=255.255.255.0
root on 192.168.1.222:/usr/local/diskless/NetBSD-1.5.3/pmax/ds5201nb
WARNING: clock gained 42 days -- CHECK AND RESET THE DATE!
Enter pathname of shell or RETURN for sh:
Terminal type is rcons.
We recommend creating a non-root account and using su(1) for root access.
# exit
Setting tty flags.
Setting sysctl variables:
Starting network.
Hostname: ds5201nb
add net 127.0.0.0: gateway 127.0.0.1
Configuring network interfaces:.
add net default: gateway 192.168.1.1
Building databases...
Starting syslogd.
Checking for core dump...
savecore: can't find device 0/0
Nov 14 04:53:30 ds5201nb savecore: can't find device 0/0
Mounting all filesystems...
Clearing /tmp.
Checking quotas: done.
Setting securelevel: kern.securelevel: 0 -> 1
swapctl: /swap is readable by the world
swapctl: adding 192.168.1.222:/usr/local/diskless/NetBSD-1.5.3/pmax/ds5201nb.swap as swap device at priority 0
Updating motd.
starting local daemons:.
Starting inetd.
Starting cron.
Sat Nov 14 04:53:55 JST 2015

NetBSD/pmax (ds5201nb) (console)

login: root
Last login: Sat Nov 14 04:49:07 2015 on console
Nov 14 04:54:03 ds5201nb login: ROOT LOGIN (root) ON console
Copyright (c) 1996, 1997, 1998, 1999, 2000
        The NetBSD Foundation, Inc.  All rights reserved.
Copyright (c) 1980, 1983, 1986, 1988, 1990, 1991, 1993, 1994
        The Regents of the University of California.  All rights reserved.

Nov 14 04:54:03 ds5201nb login: ROOT LOGIN (root) ON console
NetBSD 1.5.3 (INSTALL) #0: Thu Jul  4 09:58:15 EST 2002

Welcome to NetBSD!

Terminal type is rcons.
We recommend creating a non-root account and using su(1) for root access.
ds5201nb# df
Filesystem                                                                    1K-blocks     Used    Avail Capacity  Mounted on
192.168.1.222:/usr/local/diskless/NetBSD-1.5.3/pmax/ds5201nb  53765658  1793006 49284370     3%    /
192.168.1.222:/usr/local/diskless/NetBSD-1.5.3/pmax/ds5201nb.swap                       53765658  1793006 49284370     3%    /swap

VAXstation3100m30にディスクレス環境としてOpenBSD/vax 5.7をインストール

VAXstation3100m30にディスクレス環境としてOpenBSD/vax 5.7をインストールしました。ディスクレス環境を使えば、複数のOSや異なるバージョンを切り替えて使うことが容易になります。しかしローカルにファイルを持たないことで性能上の悪影響があるかもしれません。これについては後で検証してみようと思います。

ディスクレス環境を構築するためには以下の準備が必要です。
  • ローカル環境にインストールした場合と同様に、mopd、rarpd、bootparamd、NFSの設定をおこないます。
  • ディスクレス環境を提供するサーバにファイルを展開します。ここではサーバにNetBSD/i386 6.1.5を使いました。
まずサーバでOpenBSD/vax 5.7の配布ファイルを展開します。
# find /usr/local/OpenBSD/5.7/vax -type f
/usr/local/OpenBSD/5.7/vax/install57.iso
/usr/local/OpenBSD/5.7/vax/INSTALL.vax
/usr/local/OpenBSD/5.7/vax/SHA256
/usr/local/OpenBSD/5.7/vax/SHA256.sig
/usr/local/OpenBSD/5.7/vax/base57.tgz
/usr/local/OpenBSD/5.7/vax/boot.mop
/usr/local/OpenBSD/5.7/vax/bsd
/usr/local/OpenBSD/5.7/vax/bsd.rd
/usr/local/OpenBSD/5.7/vax/cd57.iso
/usr/local/OpenBSD/5.7/vax/comp57.tgz
/usr/local/OpenBSD/5.7/vax/floppy57.fs
/usr/local/OpenBSD/5.7/vax/game57.tgz
/usr/local/OpenBSD/5.7/vax/index.txt
/usr/local/OpenBSD/5.7/vax/man57.tgz
/usr/local/OpenBSD/5.7/vax/xbase57.tgz
/usr/local/OpenBSD/5.7/vax/xfont57.tgz
/usr/local/OpenBSD/5.7/vax/xserv57.tgz
/usr/local/OpenBSD/5.7/vax/xshare57.tgz
# cd /usr/local/diskless/OpenBSD-5.7/vax/vs3130ob
# find /usr/local/OpenBSD/5.7/vax -type f -name '[^x]*.tgz' | xargs -n1 tar xfpz
# install -m 0555 /usr/local/OpenBSD/5.7/vax/bsd ./bsd
# tar xpfz usr/share/sysmerge/etc.tgz
展開したディレクトリで変更を加えます。ここでは、サーバ側のディレクトリ/usr/local/diskless/OpenBSD-5.7/vax/vs3130obが、ディスクレス環境でクライアントとなるOpenBSD/vaxのルートディレクトリになります。
  1. コンソールデバイスを作成します。
    # mknod dev/console c 0 0 
  2. タイムゾーンを設定します。ここではシンボリックリンクを張るので、リンク元が絶対パス指定されていても、これはサーバ側のファイルを指定しているわけではありません。
    # ln -sf /usr/share/zoneinfo/Asia/Tokyo etc/localtime
  3. スワップファイルを作っておきます。
    # mkdir  /usr/local/diskless/OpenBSD-5.7/vax/vs3130ob/swap
    # dd if=/dev/zero of=/usr/local/diskless/OpenBSD-5.7/vax/vs3130ob.swap bs=1m count=64
  4. etc/hostsに必要なエントリを適宜追加しておきます。
  5. etc/mynameを編集してホスト名を定義します。
    # echo 'vs3130ob.******.jp' > /usr/local/diskless/OpenBSD-5.7/vax/vs3130ob/etc/myname
  6. etc/resolv.confを編集して必要な情報を定義します。
    domain ******.jp
    nameserver 192.168.1.1
  7. etc/fstabを編集します。スワップの設定があると起動できなかったのでコメントにしています。
    #192.168.1.222:/usr/local/diskless/OpenBSD-5.7/vax/vs3130ob.swap        none    swap sw,nfsmntpt=/swap
    192.168.1.222:/usr/local/diskless/OpenBSD-5.7/vax/vs3130ob             /       nfs  rw 0 0
以上の設定が済んだらシングルユーザモードで起動し、デバイスファイルを作成します。
>>> b esa0
-ESA0
>> OpenBSD/vax boot [1.18] <<
>> Press enter to autoboot now, or any other key to abort:  5
Press '?' for help
> boot -s
Trying BOOTPARAMS
boot: client IP address: 192.168.1.103
boot: client name: vs3130ob.sala244.toyonaka.osaka.jp
root addr=192.168.1.222 path=/usr/local/diskless/OpenBSD-5.7/vax/vs3130ob
1996668+423176 [72+135472+119592]=0x28d2c0
[ using 255548 bytes of bsd ELF symbol table ]
Copyright (c) 1982, 1986, 1989, 1991, 1993
    The Regents of the University of California.  All rights reserved.
Copyright (c) 1995-2015 OpenBSD. All rights reserved.  http://www.OpenBSD.org

OpenBSD 5.7 (GENERIC) #89: Tue Mar 10 14:14:37 MDT 2015
    deraadt@vax.openbsd.org:/usr/src/sys/arch/vax/compile/GENERIC
VAXstation 3100/m{30,40} [0A000004 04010002]
cpu: KA41/42
cpu: Enabling primary cache, secondary cache
real mem = 16654336 (15MB)
avail mem = 13168640 (12MB)
(略)
root on 192.168.1.222:/usr/local/diskless/OpenBSD-5.7/vax/vs3130ob
swap on 192.168.1.222:/usr/local/diskless/OpenBSD-5.7/vax/vs3130ob.swap
Enter pathname of shell or RETURN for sh:
sh: No controlling tty (open /dev/tty: No such file or directory)
sh: warning: won't have full job control
# fsck -p
# mount -a
# df
Filesystem                                        512-blocks      Used     Avail Capacity  Mounted on
192.168.1.222:/usr/local/diskless/OpenBSD-5.7/vax/vs3130ob  107531316  12201228  89953524    12%    /
# mount
192.168.1.222:/usr/local/diskless/OpenBSD-5.7/vax/vs3130ob on / type nfs (v3, udp, timeo=100, retrans=101)
# cd /dev
# sh MAKEDEV all
# exit
これでVAXstation3100m30にディスクレス環境のOpenBSD/vax 5.7が出来ました。

2015-12-17

DEC製VAXstation3100m30にOpenBSD/vax 5.7をインストール

手持ちのDEC製VAXstaion3100m30にOpenBSD/vax 5.7をインストールしました。ネットワークからインストールするしか手段がなかったので、外部のNetBSD/i386に必要な環境を構築しました。

VAXstation3100m30に使われているCPUはKA42-Aというモデルで「VMS CPU Model Summary (23rd June 1995)」によると2.8VUPsとあります。VUPsはMIPS値とほぼ同じです。Wikipediaの「List of Intel microprocessors」によると、Pentium 4で6,500~10,000MIPSとありますから、現在の感覚からすると相当遅いCPUです。メモリもHDDも少容量ですがOpenBSD/vaxを動かすには問題ありません。
>>> SHOW VER

KA42-A  V1.1B3-167-V4.3-242
        PST: 167
        CON: 1B3
        VMB: V4.3
        ROM: 242

>>> SHOW MEM
        01000000
        00000000
        00FE2800:00FFFFFF

>>> SHOW DEV
 VMS/VMB  ULTRIX    ADDR    DEVTYP  NUMBYTES  RM/FX  WP  DEVNAM
 -------  ------  --------  ------  --------  -----  --  ------
 ESA0     SE0     08-00-2B-XX-YY-ZZ

 DKA0     RZ0     A/0/0/00  DISK     2.10 GB   FX        RZ28D
 ...HostID....    A/6       INITR

 ...HostID....    B/6       INITR
OpenBSD/vaxをネットワークからインストールするには以下の手順を踏みます。
  1. CCLプロンプトからネットワークデバイスを指定してブートさせ、MOPプロトコルでブートローダをダウンロードする。
  2. ダウンロードされたブートローダからブートイメージを起動し、rarpdとbootparamdを使用して情報を取得する。
  3. NFS経由でインストールパッケージを取り込む。
ネットワークインストールに利用する外部PCはNetBSD/i386 6.1.5を使います。利用するデーモンは標準で入ってるので、/etc/rc.confで有効にし、必要な設定をおこないます。

MOPプロトコルで起動するためにmopdを使います。
  • /etc/rc.confに「mopd=YES」という記述を加えます。
  • ブートローダ(/usr/local/OpenBSD/5.7/vax/boot.mop)をmopdが要求するファイルとして(/tftpboot/mop/08002bxxyyzz.SYS)置きます。 ここではシンボリックリンクとしました。
rarpdの設定をおこないます。
  • /etc/rc.confに「rarpd=YES」という記述を加えます。
  • /etc/ethersに「8:0:2B:XX:YY:ZZ  vs3130ob」という記述を加えます。
bootparamdの設定をおこないます。
  • /etc/rc.confに「bootparamd=YES」という記述を加えます。
  • /etc/bootparamsに「vs3130ob        root=192.168.1.222:/usr/local/OpenBSD/5.7/vax」という記述を加えます。
NFSの設定をおこないます。
  •  /etc/rc.confに以下の記述を加えます。
    rpcbind=YES
    mountd=YES
    nfs_server=YES
    lockd=YES
    statd=YES
  • /etc/exportsに「/usr/local -alldirs -maproot=root -network 192.168.1.0/24」という記述を加えます。 
以上の設定を済ませたら、実際のインストールを始めます。CCLプロンプトでネットワークデバイスを指定してブートすると、ブートローダが読み込まれ、プロンプトが出ます。
>>> b esa0
-ESA0
>> OpenBSD/vax boot [1.18] <<
>> Press enter to autoboot now, or any other key to abort:  5
Press '?' for help
>
ここでブートイメージを指定すると、事前に設定しておいた情報を読み込み、インストールが始まります。
    > boot bsd.rd
    Trying BOOTPARAMS
    boot: client IP address: 192.168.1.103
    boot: client name: vs3130ob.******.jp
    root addr=192.168.1.222 path=/usr/local/OpenBSD/5.7/vax
    2499204+374224=0x2bd9d8
    Copyright (c) 1982, 1986, 1989, 1991, 1993
        The Regents of the University of California.  All rights reserved.
    Copyright (c) 1995-2015 OpenBSD. All rights reserved.  http://www.OpenBSD.org

    OpenBSD 5.7 (RAMDISK) #66: Tue Mar 10 19:49:27 MDT 2015
        deraadt@vax.openbsd.org:/usr/src/sys/arch/vax/compile/RAMDISK
    VAXstation 3100/m{30,40} [0A000004 04010002]
    cpu: KA41/42
    cpu: Enabling primary cache, secondary cache
    real mem = 16654336 (15MB)
    avail mem = 12984320 (12MB)
     (略)
    CONGRATULATIONS! Your OpenBSD install has been successfully completed!
    To boot the new system, enter 'reboot' at the command prompt.
    When you login to your new system the first time, please read your mail
    using the 'mail' command.

    # reboot
    syncing disks... done

    ?06 HLT INST
        PC = 800BA78F
    >>>

これでOpenBSD/vax 5.7がVAXstation3100m30の内蔵ディスクにインストールされました。この時のブートメッセージは以下のとおりです。
>>> b dka0
-DKA0
>> OpenBSD/vax boot [1.18] <<
>> Press enter to autoboot now, or any other key to abort:  5
> boot bsd
1996668+423176 [72+135472+119592]=0x28d2c0
[ using 255548 bytes of bsd ELF symbol table ]
Copyright (c) 1982, 1986, 1989, 1991, 1993
    The Regents of the University of California.  All rights reserved.
Copyright (c) 1995-2015 OpenBSD. All rights reserved.  http://www.OpenBSD.org

OpenBSD 5.7 (GENERIC) #89: Tue Mar 10 14:14:37 MDT 2015
    deraadt@vax.openbsd.org:/usr/src/sys/arch/vax/compile/GENERIC
VAXstation 3100/m{30,40} [0A000004 04010002]
cpu: KA41/42
cpu: Enabling primary cache, secondary cache
real mem = 16654336 (15MB)
avail mem = 13168640 (12MB)
mainbus0 at root
vsbus0 at mainbus0
vsbus0: interrupt mask 8
dz0 at vsbus0 csr 0x200a0000 vec 196 ipl 14 maskbit 6: console, 4 lines
lkkbd0 at dz0 line 0
wskbd0 at lkkbd0
lkms0 at dz0 line 1
wsmouse0 at lkms0
ncr0 at vsbus0 csr 0x200c0080 vec 504 ipl 14 maskbit 1
scsibus0 at ncr0: 8 targets, initiator 6
sd0 at scsibus0 targ 0 lun 0: <DEC, RZ28D (C) DEC, 0008> SCSI2 0/direct fixed serial.DEC_RZ28D_(C)_DEC09008054
sd0: 2007MB, 512 bytes/sector, 4110480 sectors
ncr1 at vsbus0 csr 0x200c0180 vec 508 ipl 14 maskbit 0
scsibus1 at ncr1: 8 targets, initiator 6
le0 at vsbus0 csr 0x200e0000 vec 80 ipl 14 maskbit 5 buf 0x43c000-0x44bfff
le0: address 08:00:2b:XX:YY:ZZ
le0: 32 receive buffers, 8 transmit buffers
gpx0 at vsbus0 csr 0x3c000000 vec 68 ipl 14 maskbit 3
gpx0: 1024x864 8 plane color framebuffer
wsdisplay0 at gpx0
wsdisplay0: screen 0 added (std, vt100 emulation)
wskbd0: connecting to wsdisplay0
lkkbd0: no keyboard
vscsi0 at root
scsibus2 at vscsi0: 256 targets
softraid0 at root
scsibus3 at softraid0: 256 targets
boot device: sd0
root on sd0a (1d8654705e8d4811.a) swap on sd0b dump on sd0b
Automatic boot in progress: starting file system checks.
/dev/rsd0a: file system is clean; not checking
/dev/rsd0d: file system is clean; not checking
setting tty flags
pf enabled
starting network
openssl: generating isakmpd/iked RSA key... done.
ssh-keygen: generating new host keys: RSA1 RSA DSA ECDSA ED25519
starting early daemons: syslogd pflogd ntpd.
starting RPC daemons:.
savecore: no core dump
checking quotas: done.
clearing /tmp
kern.securelevel: 0 -> 1
creating runtime link editor directory cache.
preserving editor files.
starting network daemons: sshd smtpd sndiod.
Path to firmware: http://firmware.openbsd.org/firmware/5.7/
No devices found which need firmware files to be downloaded.
starting local daemons: cron.
Wed Sep 30 18:48:52 JST 2015

OpenBSD/vax (vs3130ob.******.jp) (console)

login: root
Password:
OpenBSD 5.7 (GENERIC) #89: Tue Mar 10 14:14:37 MDT 2015

Welcome to OpenBSD: The proactively secure Unix-like operating system.

Please use the sendbug(1) utility to report bugs in the system.
Before reporting a bug, please try to reproduce it with the latest
version of the code.  With bug reports, please try to ensure that
enough information to reproduce the problem is enclosed, and if a
known fix for it exists, include that as well.

You have new mail.
インストール直後のディスク使用状況は次のようになりました。
Filesystem  512-blocks      Used     Avail Capacity  Mounted on
/dev/sd0a       251532     43932    195024    18%    /
/dev/sd0d      3665820    809260   2673272    23%    /usr

ひととおりインストールした時点におけるLXDEの様子

pkgsrc(含wip)からLXDE関連アプリケーションをインストールした段階におけるルート画面です。
2015年12月17日現在のLXDEルート画面

ロケールをja_JP.UTF-8にして起動しているためか、特に何も設定しなくても日本語が出ています。しかし日本語化されているところと、英語のままになっているところがあります。この辺りを日本語化させる方法や、LXDE自体の設定について調べていこうと思います。

画面右下のアイコンが×印になっており、何か問題があるのでしょう。この件も調査したいと思います。