2010年1月17日日曜日

VMware Fusion で 結構古めな OS をインストール

古い OS を手軽に使えるかな?と思ったので VMware Fusion 上で 4年前(2006/4/1)にネタリリースされた FreeBSD 2.2.9-RELEASE を入れた。これも仮想化の利点のひとつだね。

当時のリリースアナウンスメント
http://marc.info/?l=freebsd-announce&m=114392352525468&w=2

"2.2.8-RELEASE" は 1998/11/29 なので、実質11年ちょっとまえか。
http://en.wikipedia.org/wiki/FreeBSD#FreeBSD_2

さわりはじめたのが 4.0-RELEASE からだったのと、2.2系のころはずっと小さい(はず)なのでどんなものだったのかなぁと思ったのもある。たまーーに古いソースをチラ見してみたくもあり。
いわゆる「懐古厨」というわけでは・・ない。

そういや前居た職場では自由に使えるサーバが1人1台割り当てられて、自分の場合は 4.0 -> 4.2 -> 4.5 -> 4.6.2 -> 4.7 ..... 4.11 まで順次更新、以降 5.2.1 -> 5.3 -> 5.4 -> 6.0 -> 6.1 まで アップグレードしつづけたな。
それはさておき。

・OS インストール

- iso イメージの取得
ftp://ftp-archive.freebsd.org/pub/FreeBSD-Archive/old-releases/i386/ISO-IMAGES/2.2.9/
チェックサムがわからないのはやむをえないか。


- 仮想マシン作成

メモリ512M、HDD 8G

ふつうに仮想マシンを作ると、NIC が e1000 なので要変更。
GUI からはできないため、下記コマンドで編集。
ここの設定でしばしはまったのはいうまでもない。。。

(今回「FreeBSD 2.2.9」で作成)
% vi ~/Documents/Virtual\ Machines.localized/FreeBSD\ 2.2.9.vmwarevm/FreeBSD\ 2.2.9.vmx
「ethernet0.virtualDev = 」行を 「ethernet0.virtualDev = "vlance"」にする。

これで lnc としてインストール時に NIC の設定ができる。lnc0 でなく、lnc1 で認識した。
fxp を使うことはできるのか不明。

- パーティション

適当に以下のとおり。
/ ... 256M
/var ... 256M
swap ... 256M
/usr ... 残り


- 諸設定
Developer で入れて、ソースもぶちこむ。
DHCP は無いため、IPアドレスは手で設定。
キーボードは手元のキーボードに合わせる。
ftp, NFS などの設定は無し。


・OS インストール後の設定など

- リモートログイン
「telnet」で入る。ssh は手で入れないとダメなのでそれまでは telnet 。
インストール直後の起動は inetd がいろいろ開けてくれてる時代ということがわかる。


- カーネル再構築
/sys/i386/conf 以下、GENERIC をコピーして編集。

1. I686_CPU 以外の cpu 行をコメントアウト
2. ident を適当に設定
3. maxusers 512
4. options "MAXMEM=(512*1024-1024)"

-1024 はおまじないみたいなもん。2.2.8 当時の事情はわからず。

/usr/src 以下での make buildkernel は無いので、config コマンドからの再構築。

# config [カーネルコンフィグファイル名]
# cd ../../compile/[カーネルコンフィグファイル名]
# make depend
# make
# make install

この一連の流れでできてやや感動。2.2 系からあったのか・・・。

サイズは以下の通り。cpu 行を削った分だけ減った?
$ ls -l /kernel{.GENERIC,}
-r-xr-xr-x 1 root wheel 1643840 Jan 17 19:44 /kernel
-rwxr-xr-x 1 root wheel 1648890 Mar 31 2006 /kernel.GENERIC


- アプリケーションインストール
いろいろ不便なのでゴリゴリコンパイルする。なるべく新しいものを入れる。
GNU のプロダクトは素直に入ってくれるような印象。

参考までに、OSインストール時に入ってる GCC は 2.7系。

$ gcc -v
gcc version 2.7.2.1

perl は 4.0。4系を目にするのはいつ以来だ・・・
$ perl -v

This is perl, version 4.0

$RCSfile: perl.c,v $$Revision: 1.7.2.2 $$Date: 1998/03/12 19:27:47 $
Patch level: 36

Copyright (c) 1989, 1990, 1991, Larry Wall

Perl may be copied only under the terms of either the Artistic License or the
GNU General Public License, which may be found in the Perl 4.0 source kit.

以下インストール記録

-- GNU make
source: ftp://ftp.ring.gr.jp/pub/GNU/make/make-3.81.tar.gz
configure option: --program-prefix=gnu
インストール後:
$ gnumake --version
GNU Make 3.81
Copyright (C) 2006 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE.

This program built for i386-unknown-freebsd2.2.9

-- GNU screen
source: http://ftp.gnu.org/gnu/screen/screen-4.0.3.tar.gz
configure option: --prefix=/opt/screen-4.0.3 ( /opt -> /usr/opt の symlink にしておく)
インストール後:
$ /opt/screen-4.0.3/bin/screen --version
Screen version 4.00.03 (FAU) 23-Oct-06

当初、tmux を入れようと思ったけど断念。
理由はこのへん。FreeBSD C99 and POSIX® Conformance Project
そういや tmux だと EUC-JP 通らない気がする(詳細未確認)ので、結果的に OK

-- bash
source: ftp://ftp.ring.gr.jp/pub/GNU/bash/bash-4.1.tar.gz
configure option: --disable-nls
インストール後:
$ bash --version
GNU bash, version 4.1.0(1)-release (i386-unknown-freebsd2.2.9)
Copyright (C) 2009 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later

This is free software; you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

-- zsh
source: http://downloads.sourceforge.net/project/zsh/zsh-dev/4.3.10/zsh-4.3.10.tar.bz2?use_mirror=jaist
configure option: --disable-dynamic
インストール後:
$ zsh --version
zsh 4.3.10 (i386-unknown-freebsd2.2.9)

-- Perl
OpenSSH インストールのための OpenSSL インストールのためにインストール。OpenSSH が yak shaving になるとは思わなかった。。
source: http://www.cpan.org/src/perl-5.10.1.tar.gz
configure option: -des (./Configure -des)

Perl 、さくっと入ったのに感動。make test は途中おかしかったけどよくわからん。

$ /usr/local/bin/perl -v

This is perl, v5.10.1 (*) built for i386-freebsd

Copyright 1987-2009, Larry Wall

Perl may be copied only under the terms of either the Artistic License or the
GNU General Public License, which may be found in the Perl 5 source kit.

Complete documentation for Perl, including FAQ lists, should be found on
this system using "man perl" or "perldoc perl". If you have access to the
Internet, point your browser at http://www.perl.org/, the Perl Home Page.


-- OpenSSL
source: ftp://ftp.ring.gr.jp/pub/net/openssl/source/openssl-0.9.7m.tar.gz
(0.9.8l は断念)
configure option: --prefix=/opt/openssl-0.9.7m no-asm no-threads no-fips
make install 時は -k をつける。。
インストール後:
$ /opt/openssl-0.9.7m/bin/openssl version -a
OpenSSL 0.9.7m 23 Feb 2007
built on: Sun Jan 17 19:27:23 JST 2010
platform: FreeBSD
options: bn(64,32) md2(int) rc4(idx,int) des(ptr,risc1,16,long) idea(int) blowfish(idx)
compiler: gcc -DOPENSSL_NO_KRB5 -DOPENSSL_NO_ASM -DTERMIOS -DL_ENDIAN -fomit-frame-pointer -O3 -m486 -Wall
OPENSSLDIR: "/opt/openssl-0.9.7m/ssl"

-- OpenSSH
事前に特権分離用ユーザ(この場合 sshd)を作っておく
# mkdir /var/empty
# chown root:sys /var/empty
# chmod 755 /var/empty
# pw groupadd sshd -g 22
# pw useradd sshd -g sshd -c 'sshd privsep' -d /var/empty -s /bin/true

source: ftp://ftp.ring.gr.jp/pub/OpenBSD/OpenSSH/openssh-5.3.tar.gz
configure option: --prefix=/opt/openssh-5.3p1 --with-privsep-user=sshd --with-privsep-path=/var/empty --with-md5-passwords --without-zlib-version-check --with-ssl-dir=/opt/openssl-0.9.7m
zlib はふるーいので、without-zlib-version-check...
インストール後:
$ /opt/openssh-5.3p1/bin/ssh -V
OpenSSH_5.3p1, OpenSSL 0.9.7m 23 Feb 2007

sftp 用に libedit 入れてからでもよかったかな。

/etc/rc.local に起動処理を追記。

-- Wget
FreeBSD 2.2.9 についてくる fetch コマンド、挙動不審な気がするのでインストール。

source: ftp://ftp.ring.gr.jp/pub/GNU/wget/wget-1.11.4.tar.gz
configure option: なし (PATH は /usr/local にいれた Perl が先にくるようにしておく)
インストール後:
$ wget --version
GNU Wget 1.11.4

Copyright (C) 2008 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later
.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Originally written by Hrvoje Niksic .
Currently maintained by Micah Cowan .

-- GCC 2.95.3
source: ftp://ftp.ring.gr.jp/pub/GNU/gcc/gcc-2.95.3.tar.gz
configure option: --prefix=/opt/gcc-2.95.3
インストール後:
$ /opt/gcc-2.95.3/bin/gcc -v
Reading specs from /opt/gcc-2.95.3/lib/gcc-lib/i386-unknown-freebsd2.2.9/2.95.3/specs
gcc version 2.95.3 20010315 (release)

-- Sudo
source: ftp://ftp.ring.gr.jp/pub/misc/sudo/sudo-1.7.2p2.tar.gz
configure option: CC="/opt/gcc-2.95.3/bin/gcc" ./configure --with-insults --with-all-insults --without-pam
デフォルトの gcc だと次のようになってこける。
$ make
.....
gcc -c -I. -I. -O2 -D_PATH_SUDOERS=\"/etc/sudoers\" -DSUDOERS_UID=0 -DSUDOERS_GID=0 -DSUDOERS_MODE=0440 ./gram.c
gram.y:57: parse error before `static'
*** Error code 1

インストール後:
$ sudo -V
Sudo version 1.7.2p2

-- lv
less はない。more はある。lv いれよう。
source: http://www.mt.cs.keio.ac.jp/person/narita/freeware/lv421.tar.gz
configure option: なし。tar展開、移動後そのまま make install
インストール後:
$ lv -v
# lv v.4.21 (Mar.26th,1997)
# All rights reserved. Copyright (C) 1994,1997 by NARITA Tomio

-- bzip2
source: http://www.bzip.org/1.0.5/bzip2-1.0.5.tar.gz
configire option: なし。tar展開、移動後そのまま make install
$ bzip2 -V
bzip2, a block-sorting file compressor. Version 1.0.5, 10-Dec-2007.

Copyright (C) 1996-2007 by Julian Seward.

This program is free software; you can redistribute it and/or modify
it under the terms set out in the LICENSE file, which is included
in the bzip2-1.0.5 source distribution.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
LICENSE file for more details.

bzip2: I won't write compressed data to a terminal.
bzip2: For help, type: `bzip2 --help'.


/opt/なんとか 以下に入れたものは適宜 /usr/local/{bin,sbin} 以下に symlink.

今回はここまで。
・telnet で入ろう
・(OpenSSH インストール前)/etc/inetd.conf で telnet 以外をコメントアウトして kill -HUP するとスッキリするのが久しぶり
・5.0-RELEASE で取り込まれた rcNG より古い rc 、よりもさらに古い rc なので /etc/rc.conf.local に設定を書く
・起動しておきたい daemon は /etc/rc.local に追記する (local_startup で /usr/local/etc/rc.d があるのでそっちがいいか)
・OpenSSH インストールで少し yak shaving した
・GNU のものは素直に入ってくれる感。gettext 見に行きそうなやつは --disable-nls で切る
・sysctl の MIB がさすがに少ない。例えば kern.ipc.nmbclusters がない。カーネル再構築コース。kern.ipc.somaxconn は kern.somaxconn だった。net.inet.tcp は 12 、 net.inet.udp は 4つ。

emacs は新しいのビルドできるかな?
あと GNU global やら Apache やらいれるか。 Apache は 1.3 系でないと無理そうな予感。
Perl 以外の スクリプト言語で新しいのは入るか?

0 件のコメント:

コメントを投稿