FreeBSD+PostgreSQLのインストール

<FreeBSDのインストール>
1.USBイメージの作成
https://www.freebsd.org/where/
amd64
FreeBSD-xx.x-RELEASE-amd64-memstick.img
Rufus(Windows)を使用

2.インストール
〇「Install」を選択
〇Keymap Japanese106
(Japanese106xでなく。
キーボードを選択後、最上段(Continue with jp.106 keymap)を選んで「Enter」)
〇「Network Configuration」の Hostname(ホスト名)」マシン名の設定(FreebsdPcとか)

〇「select installation type」 「distributuon sets」を選択
〇「Distribution Select」
 「*-dbg」「tests」は不要。その他全て選択。
 「src」はPostgreSQLコンパイル時に必要
〇「Partioning」 「Auto(Guided)」
     ZFSはディスク全体で容量管理する。ディレクトリごとに容量を管理してない。
   ZFS、stripe(ディスク1個なら)
     「Pool Name 」は「zroot」になる
〇「Pool Type/Disks」「Select Disks」 対象ディスクの選択 ada0
   (実際の表示はこの後に長々と文字が続く。先頭がada0になっている)
  「Partition Scheme」 「GPT」
 (「stripe: 0 disks」と表示される時は、ディスクが選択されていないので、再実行すること。
「stripe: 1 disks」になればOK)
「Stripe - No Redundancy(冗長性なし)」ミラーリング無し、というこど
〇「Destroy and Install」を「Yes」にしてディスク書込みOK


3.ダウンロード
ミラーリングされているJapanサイトだと「名前解決できない!」エラーになってしまうので、
本家「Main Site」を選択。

4.「choose the service you would like to be started at boot(起動時に開始するサービス)」
〇[x] local_unbound
ローカルのDNSキャッシュサーバーです。ネットワーク接続をスムーズにするためにチェックを入れることを推奨します。
〇[x] sshd
リモートからログインするためのサーバーです。後で別のPCからコマンド操作をするなら必須です。
〇[x] moused
コンソール(黒い画面)でマウスを使いたい場合にチェックを入れます(通常は入れておいて損はありません)。
〇[x] ntpd 
時計合わせに必須です。
ntpd:常に通信して正確な時間を保ちます(推奨)。
ntpdate:起動時に一度だけガツンと合わせます。運用時は電源を切らないので不要。
※両方にチェックを入れても大丈夫ですが、通常は ntpd だけで十分です。
〇[ ] powerd
ノートPCや省電力機能を使いたい場合にチェックを入れます。CPUの負荷に合わせて速度を調整してくれます。ディスクトップPCなので不要
〇[ ] dumpdev
システムがクラッシュした時にデバッグ情報を保存する機能です。通常は不要なので、チェックを外してOKです。見てもわからないので不要。

5.「System Hardening(セキュリティ強化)」
すべてチェックなし。
もし「一般ユーザーから他の人のプロセスを見えなくしたい」といった要望があればチェックを入れますが、まずはそのまま進むのがトラブルが少なくて済みます。
もし、選ぶなら
[x] Clean the /tmp filesystem on startup
起動時に一時フォルダ(/tmp)を空にします。システムをクリーンに保てるので、これだけはチェックを入れても良いでしょう。

6.「Final Configuration」最終設定
〇root パスワードの設定
〇Hostnameの確認
〇IPアドレス、DNSの設定
「network」「manual」を選択して、ipv4の設定が

 固定IPの設定
 IPv4の設定「Yes」
 DHCPを使うか? 「No」→「IP Address」「Subnet Mask」の入力
 IPv6について聞かれたら、「Enter」で返す

「would you like to configure ipv6 for this interface」「No」
 「Resolver Configuration」(DNS設定)
  IPv4 DNS #1: 8.8.8.8(GoogleのDNS)か、ルーターのIPアドレスを入力
  IPv6 DNS: 空欄のまま OK 

「resolver configuratio search ipv6 dns」「OK}
Cancel を押すと、入力した IPv4 の設定(固定IP)がクリヤされる
Search: 空欄のまま Enter(またはドメイン名があれば入力)。
IPv4 DNS #1: 先ほど入力したDNS(8.8.8.8など)が入っているはず
IPv4 DNS #2: 空欄でもOK。
IPv6 DNS #1: 空欄のまま Enter
IPv6 DNS #2: 空欄のまま Enter

「would you like to try stateless address autoconfiguration (SLAAC)?」「No]
SLAACは、IPv6においてIPアドレスを自動的に割り振るための仕組み
「static ipv6 network interface configuration」
何も入力せずにそのまま < OK >(または Cancel)(IPv6を使わないので)

〇TimeZoneの設定
〇local_unbound(DNSリゾルバ、名前解決 8.8.8.8(Google)を入力)
〇ntpd (時計合わせ)
〇ユーザーの追加
「Would you like to add users now?(今ユーザーを追加しますか?)」
telnetでログイン用のユーザー
(rootに昇格できるユーザー。postgresはrootに昇格できない。
デフォルトではrootでログイン不可)
Invite user into other groups で「wheel」にすること。
(これがないとsuでrootになれない)
Username: 自分のログイン名(例: taro)
Full name: 適当でOK(そのままEnterでも可)
Login group: デフォルト(usernameと同じ)でOK
Invite user into other groups: ここに wheel と入力(重要!)
Shell: デフォルトの sh 

「add user accounts」
この画面(インストーラーの Add User)で postgres ユーザーを追加しない。
(PostgreSQLをコンパイル後、インストールする時にpostgresで実行するので、その時に作る。
パッケージからインストールする時は自動で作成される。)
「uid (leave empty for default)」はブランク

Login group: そのまま Enter(ユーザー名と同じグループが作られます)
Login class: そのまま Enter
Shell: そのまま Enter(または tcsh などお好みで)
Home directory: そのまま Enter
Home directory permissions: そのまま Enter
Use password-based authentication?: そのまま Enter (yes になります)

Use an empty password?: そのまま Enter (no になります)
(yes にした場合に起こること
ユーザー名さえ知っていれば、パスワードなしで誰でも操作できる。
SSHなどでログインできなくなる FreeBSDの標準設定では、セキュリティ保護のため「パスワードが空のユーザー」はネットワーク経由(SSHなど)でのログインを拒否される。
PostgreSQLで後で管理者権限(root)に切り替える際、パスワードが設定されていないとエラーになる)

Use a random password?: そのまま Enter (no になります)

Invite user into other groups: ここに wheel と入力。*********************

Enter password: ログインで使うパスワード

Lock out the account after creation?: no(そのままEnter)
「アカウント作成直後に、そのアカウントを使えないようにロック(凍結)しますか?」
「Yes」にすると
アカウントは作られますが、パスワードがロックされた状態になります。
管理者が後で手動でロックを解除するまで、あなた自身もログインできません。
通常、この設定を yes にするのは、「ユーザーの登録だけ先に済ませておいて、本人が初出勤する日までログインさせたくない」といった企業管理のような特殊なケースだけです。

「enble zfs encryption」「No」(暗号化)
暗号化を有効(Yes)にすると、PCを起動するたびに「パスフレーズ(暗号解読用パスワード)」を手動で入力しなければならなくなります。これを忘れるとOSが起動できず、データの救出も非常に困難になります。
「use password-based authentication」 「Yes」
no にしてしまうと、パスワードを使ってログインできなくなる。
(公開鍵認証などの特殊な方法が必要になる)

7.「this menu allows you to install firware packages for your system」
「Yes」
グラフィックカード(Intel, AMD, NVIDIA)や、Wi-Fiチップなどを正しく動かすための「ファームウェア」を自動でインストールしてくれる機能。


8.「Complete(完了)」
「Exit」
「Manual Configuration(手動設定)」 「No」(もう設定は済んでる)
「Reboot」を選択。

9.再起動が始まったら、すぐにインストール用のUSBメモリを抜いてください! 
(抜かないと、またインストーラーが起動してしまいます)

10.電源を切る
rootで(postgresだと電源が切れない)
shutdown -p now
(再起動 reboot)

11.再起動後にエラー
ntpdが動作しない
ntpd が動き出そうとして、「まだネットに繋がっていないじゃないか!」と名前解決(DNS)に失敗してタイムアウト待ちが発生している状態です。

# ifconfig (IPアドレスの確認)
# cat /etd/resolv.conf (DNSの確認、頭に#が付いていたらコメントアウトしてる)

/etc/rc.confを編集。最後に下記を追加
netwait_enable="YES"
netwait_ip="8.8.8.8"

# ネットワーク設定を再読み込み(root権限)
service netif restart && service routing restart

<パッケージの更新>
# pkg update
# pkg upgrade

インストールするパッケージ(ソフト)
   postgresql をコンパイルしてインスール
   samba
   telnet
   ntp