FreeBSD 6.2R インストール記


はじめに
このページは、VirtualPC2007の仮想VMに、FreeBSDをインストールした際の記録を残しておくページです。
 
インストール
FreeBSDのイメージCD(ブータブルCDになっています)から起動すると、インストーラが起動するので、そのままインストールします。
CDイメージは、freebsd.org からダウンロードしてきます。
※細かいガイドは省略します。英語のサイトですが、ざっと見ていれば分かると思いますので。
 
VirtualPC は、ホストPCの物理ドライブのキャプチャ以外に、ISO形式のCDイメージをマウントできるので、 ダウンロードしてきたディスクイメージがそのまま使えて便利です。
(いったんCDに焼かなくてもOK)
 
インストール内容は、とりあえず最小インストールして様子見。
後からでもコンポーネントは追加できるので、少しずつセットアップしていきます。
 
telnet
インストール時に追加設定でinetdを起動設定にしておいたので、/etc/inetd.confを書き換えれば、起動設定ができます。
デフォルト状態で、/etc/inetd.conf は、全ての設定がコメントアウトされているので、必要な行だけ行頭の"#"を削除して有効にします。
 
inetdが無効になっている場合は、/etc/rc.conf に起動設定があるので書き換えてreboot。(killで-HUPシグナルを送っても可)
telnet は、いくつかのデーモンで管理できるようです。私はデフォルトの telnetd で起動しています。
※telnetd は、確かセキュリティ的に脆弱だったような気がしますが・・・。
 
TCPWrapper
FreeBSD6.2Rでは、Linuxと同様、デフォルトでTCPWrapperが導入されているようです。
他のPCからtelnet接続しようとしても、identd による起動だけでは、デフォルトでは接続拒否されてしまいます。
このため /etc/hosts.allows と /etc/hosts.deny を編集して、アクセス権を発行します。
まず、既存の設定ファイルを削除(リネーム)して新しく作り直します。
デフォルトで存在する設定ファイルは、/etc/hosts.allow だけですが、このファイルは全て許可を出す設定になっている様です。
※でも、アクセスできなかった・・・のはなぜ? inetd の設定を変更していなかったからかしら?
 
/etc/hosts.allow に許可する設定を。/etc/hosts.deny に拒否する設定を行います。
振る舞いからすると、解決順番は
  1. allowファイルの該当
  2. denyファイルの該当
のようです。(allowファイルが強い)
 
とりあえず、LAN内のPCからアクセスできるように設定します。
まず、/etc/hosts.deny に対して、全てのアクセスを拒否する設定を行います。
次に、/etc/hosts.allow には家庭内LANのネットワークアドレスを指定して許可を出します。
そして、リブートすれば設定はOK。(リブート無しでもいけるかも知れませんが、念のため)
 
telnet と TCPWrapper の設定が終わると、画面の小さいコンソールからだけではなく、 TeraTermPro 等の端末からアクセスできるようになります。
画面サイズなどもコンソールが 80x25 なのに対して自由に変更できるので、 設定はかなりラクになります。
 
ftp
ftp も telnet と同じように、/etc/inetd.conf を書き換えれば、起動設定ができます。
FreeBSD6.2R では、/etc/inetd.conf に2行ftpのデーモンの設定があります。
使用するデーモンを決めて有効にし、TCPWrapper でアクセス許可を設定します。
これで、Windows と FreeBSD でFTPベースでファイルのやり取りができるようになりました。
※当初考えていたsambaによるファイル共有はしなくてもよくなりました(^^;
(まぁ、Virtual PC のハードディスク容量は心もとないですが・・・)
 
余談。
ftpは、データ/コントロールで2個ポートを使うので、/etc/inetd.conf の2行は、てっきりその2行だと思っていましたが、 実際は別々のftpデーモンの設定でした。
二つとも有効にして、TCPWrapperでは最初の方だけ有効に。実際は、後の方の設定が有効になっていたので、 アクセスできず、暫く悩んでいましたが・・・orz
 
/etc/hosts
実は、telnetで接続するとき、それからftpで接続するときに、むちゃくちゃまたされていました。
(大体30秒くらいでしょうか・・・)
WEBで調べてみると、どうやらホスト名の逆引きを行っているのでそのタイムアウトで時間がかかっているそうです。
解決するには、DNSできちんと管理する(namedデーモンかな?)、または/etc/hostsファイルに
接続してくるPCのアドレスを設定しておいてあげる。
で、我が家のLAN環境には、DNSなんて用意していませんので、ココは原始的に/etc/hostsの修正。
一応、WEBサーバだったり、ゲーム用PCなので、IPは固定で振っています。(もちろん、ローカルなIPです)
なので、設定してるIPアドレスとホスト名を追加します。
ためしにtelnetでつないで見ると・・・あら、さくっとつながりました(^^
このトラブルシュートで、ばっちりでした。
 
追加パッケージ
FreeBSDのCDについてくる、パッケージのインストール方法のメモです。
  1. # sysinstall でインストーラ起動
  2. Configure ... Do post-install configuration of FreeBSD -> [Select]
  3. Packages ... Install pre-packaged software for FreeBSD -> [OK]
  4. all ... All available packages in all categories. -> [OK]
  5. select and push space.
 
PostgreSQL
データベースです。
デフォルトでも、CDにパッケージとしてついてくるデータベースがあります。
今回は PostgreSQL。仕事でも使ったことがあるので(いや、インストールとかは違いますが・・・)、その流れで。
 
とりあえず、FreeBSDをDeveloper Distribution で再インストールしたので、gcc が使えるようになりました。
PostgreSQL は、make するのに gmake を使うようなので、事前にCDからパッケージを追加しておきます。
CDについてくる PostgreSQL は、バージョンが 7.4 なので、最新版ではありません。
最新版は、8.2 になります。
とりあえず、新しいほうがよかろう、と、公式サイトからソースを取ってきて、ビルドします。
ダウンロードは、www.postgresql.org か、
日本語の、www.postgresql,jp(PostgreSQLユーザ会) のどちらか。
 
ソースをダウンロードしたら、先ほど有効にした ftp でVMにアップロードします。
アップロードが終わると、gunzip, tar で解凍し、confirgure, make でコンパイルです。
コンパイルが終了したら、make install でインストールです。特に問題なく進むと思います。
 
インストールが終了したら、データ領域(DBクラスタと呼ぶらしい?)の作成です。
PostgreSQLは、権限ユーザでは操作できない仕組みのようなので、操作するためのアカウントをひとつ作成します。
次に、root ユーザでビルド、インストールをしているので、ユーザの権限を変更します。
(ビルド時に、このユーザで作業しておけばよかったかしらん・・・)
そして、initdb を実行します。
initdb には、 -D オプションで、データ領域を生成するフォルダを指定します。
% /usr/local/pgsql/bin/initdb -D データ領域生成フォルダ
後は、PostgreSQLを起動して、アクセスできるようにします。
% /usr/local/pgsql/bin/pg_ctl -D データ領域生成フォルダ start
停止する際は、startの代わりにstopを指定します。
毎回、データ領域生成フォルダを指定するのが面倒であれば、起動/停止用のshellを作るか、
または環境変数 PG_DATA を用意することで、-Dオプションを使用せずに起動することができます。
 
PostgreSQLをインストールすると、ローカルのアクセスはできますが、リモートからアクセスすることができません。
たとえば、別のパソコンに pgAdmin3 などのGUIツールをインストールして、そこから接続しようとしても、接続できません。
この場合、データフォルダにある、postgresql.conf ファイルの、listen_addresses 設定を変更する必要があります。
listen_addresses='*'
#listen_addresses = 'localhost'
下の行の、'#'で始まる行が、初期状態をコメントアウトした行で、上の行が新たに追加した行になります。
 
残り:メモ
・viで日本語が表示できない
・catで日本語が表示できない
・FEP設定
・inetdのログがコンソールに出力される。システムログか/dev/nullに出力したい