pkgsrc/pkgtools/libkverを使うと、uname -r等を偽ることができる。
これによって、unameの情報を使うプログラムをだまして実行することができる。
pkgsrcのbinary packagesは、uname -sやuname -rを埋め込んでいる。
例えばNetBSD/amd64 current上でchroot環境を用意し、
NetBSD/amd64 6.1用のbinary packagesを作る場合に、libkverを使うことで
他のマシンでpkg_addが可能なbinary packageとすることができる。
こうしないと、NetBSD 6用のlibraryにリンクしているのに、
binary packageとしては、7.99.*用の情報が埋め込まれていて、
pkg_addしにくいbinary packageになってしまう。
また、pkgsrcのMakefileはunameの結果を使って条件分岐する箇所
があるので、buildに失敗するpackagesもあるはずである。
pkgsrc/pkgtools/libkverを使う場合については、
http://comments.gmane.org/gmane.os.netbsd.devel.packages/13587
にあるような手順が書かれているが、手作業でchroot環境を起動させる
場合については、若干分かりにくいように感じたので、手順を書いておく。
ちなみに、pkgsrc/sysutils/sudoを使っていないのは、sudoがLD_*という
環境変数を切り替え先の実行ユーザーに渡さない仕様であるからである。
先にsu(1)でrootになっておく。
(1) chroot環境の外側でlibkverをinstallする。
# cd /usr/pkgsrc/pkgtools/libkver
# make install
# make clean
(2) chrootに一度入り、chroot環境の内側でもlibkverをinstallする。
# chroot /usr/tmp/chroot/netbsd-6/root /bin/ksh
# cd /usr/pkgsrc/pkgtools/libkver
# make install
# make clean
# exit
(3) libkverを使ってchroot環境に入り直す。
ここでは、NetBSD/amd64 7.99.5上で、NetBSD/amd64 6.1に偽る場合を示す。
# kver -r 6.1 chroot /usr/tmp/chroot/netbsd-6/root /bin/ksh
# uname -r
6.1
# uname -a
NetBSD angelcake.elements.tetera.org 6.1 NetBSD 6.1 (LIBKVER) #0: Tue Jan 19 00:00:00 UTC 2038 root@localhost:/sys/arch/amd64/compile/LIBKVER amd64
Subscribe to:
Post Comments (Atom)
nginxだけで、HTTPSとsshを同時に443番ポートで待ち受ける
はじめに どんなにひどいネットワーク環境であっても、 せめて22番ポートくらいは通るようにしておいて欲しいものだが、 そういう訳にもいかない。 通るのは80と443のみである。 sshでログインする先のサーバーが、httpdを実行していなければ、80番ポートでも443番ポ...

-
BuffaloのBWC-35H01/BKという、USB接続のカメラデバイスを持っている。 これは、Windows XPの頃に販売されていた製品なのではないかと思う。 このデバイスは、少なくともWindows 7 Professional 32-bitでも使用できるのだが、そのド...
-
Apache TomcatのフロントエンドにApche httpdを設置している環境がある。 Apache httpdとApache Tomcatの間は、AJP接続をしている。 Apache Tomcatを9.0.34にアップデートしたとこと、以下のようなエラーになってAJP接...
-
この記事は、 NetBSD Advent Calendar 2018 の23日目の記事です。 はじめに もう1年以上前の話だと思うのですが、Amazon Web Service (AWS) EC2にc5という Linux KVMをAmazonが独自拡張したと言うインス...

No comments:
Post a Comment