コンピュータ/ソフトウェア関連Tips

FreeBSDセットアップメモ

作成日: Jul 14, 2014
カテゴリー: FreeBSD タグ: FreeBSD

会社でワークドライブとして使うようなNASをセットアップするときに備えての予習も兼ねた、FreeBSD 10.0 RELEASEのセットアップメモです。マシンは、HP MicroServer N40L。

参考にしたページ: http://qiita.com/whitebell/items/ca5d47dae1f521b7afda

BIOS設定

BIOS設定画面で、PC内蔵時計の時刻が合っていることを確認する。(例えば、未来の時刻になってたりすると面倒なので。)

パーティショニング

  1. ハードディスクに、自分でパーティションを設定してインストール
  2. ハードディスクに、root on zfs
  3. USBメモリスティックに、root on zfs

を試してみましたが、3番目の方法に落ち着きました。

1番目の作業メモは、パーティションを設定してFreeBSD 10.0をインストールをご参照ください。

コンソール(非リモート)での作業

「Choose optional system components to install」では、doc、ports、srcをチェックし、gamesとlib32はチェックしない。起動時のサービスは、sshdとdumpdevをチェック。moused、ntpd、powerdはチェックしない。(あとで手動で設定する)

USBデバイスを起動ドライブに設定する場合は、起動後の、Welcome to FreeBSD画面にて、3又はESCキーを押して、ローダープロンプトを表示させる。OKプロンプトに対して、

OK set kern.cam.boot_delay=10000
OK boot

を入力。

リモートからパスワード認証でrootログイン出来るようにする。/etc/ssh/sshd_configを編集。(rootログインについては、あとで禁止する)。

# cp /etc/ssh/sshd_config /etc/ssh/sshd_config.original

# vi /etc/ssh/sshd_config

以下の2箇所を変更。

PermitRootLogin yes
PasswordAuthentication yes

sshdを再起動

# /etc/rc.d/sshd restart

以降は、リモートにて作業。

設定ファイルのオリジナルをバックアップ

これから修正することになる設定ファイルのオリジナルをコピーしておく。(/etc/ssh/sshd_confgはコンソールの段階でコピー済)。

# cp /etc/ntp.conf /etc/ntp.conf.original
# cp /boot/loader.conf /boot/loader.conf.original
# cp /etc/rc.conf /etc/rc.conf.original
# cp /root/.profile /root/.profile.original
# cp /etc/motd /etc/motd.original
# cp /etc/hosts /etc/hosts.original
# cp /etc/aliases /etc/aliases.oroginal

USBデバイスから起動する恒久的設定

USBデバイスを起動ドライブに設定した場合は、boot/loader.confにkern.cam.boot_delay=10000を追加。

# vi /boot/loader.conf

kern.cam.boot_delay=10000

NTP

NTPサーバは、ntp.nict.jpを指定。

# vi /etc/ntp.conf
# The following three servers will give you a random set of three
# NTP servers geographically close to you.
# See http://www.pool.ntp.org/ for details. Note, the pool encourages
# users with a static IP and good upstream NTP servers to add a server
# to the pool. See http://www.pool.ntp.org/join.html if you are interested.
#
# The option `iburst' is used for faster initial synchronization.
#
server 0.freebsd.pool.ntp.org iburst
server 1.freebsd.pool.ntp.org iburst
server 2.freebsd.pool.ntp.org iburst
#server 3.freebsd.pool.ntp.org iburst

最後の4行を、以下の3行に書き直す。

server -4 ntp.nict.jp iburst
server -4 ntp.nict.jp iburst
server -4 ntp.nict.jp iburst
# vi /etc/rc.conf
ntpd_enable="YES"

を追加。

# /etc/rc.d/ntpd start
Starting ntpd.

直後に ntpq -p を実行した結果。

# ntpq -p
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
 ntp.nict.jp     .STEP.          16 u    8   64    0    0.000    0.000   0.001

しばらくてから ntpq -p を実行した結果。

# ntpq -p
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
*ntp-a2.nict.go. .NICT.           1 u   31   64   77   14.798  -12.100   6.649
ntpq: read: Connection refused

というメッセージが表示された場合は、

# ntpdate ntp.nict.jp

を実行して時刻合わせして、その後、

# /etc/rc.d/ntpd restart

FreeBSDのアップデート

# freebsd-update fetch
# freebsd-update install

ports collectionの更新

# portsnap fetch
# portsnap extract

pkgのインストール

# pkg bootstrap

portmasterのインストール

# pkg install ports-mgmt/portmaster

portmasterを有効にするのにいったんログアウト。

pserachのインストール

# pkg install ports-mgmt/psearch

bashのインストール

自分のいつものプロンプトは、

[ユーザー名@ホスト名 カレントディレクトリ 日時]
$ (又は#)

というプロンプトなのだが、tcshでは、カレントディレクトリを表示出来ないようなので、シェルをbashにする。

# pkg install bash

bashのパスを確認して、デフォルトシェルを変更。

# which bash
/usr/local/bin/bash
# chsh -s /usr/local/bin/bash
chsh: user information updated

.bashrcは存在しないので、新規作成する。

# vi ~/.bashrc

中身は、

LANG=ja_JP.UTF-8
#HTTP_PROXY=proxy.example.com:1234
if [ $USER == 'root' ]; then
  Color="0;31"
else
  Color="0;35"
fi
export PS1='\[\033[${Color}m\][\u@\h $PWD \d \t]\n\$\[\033[0m\] '

export LC_CTYPE
export LANG
#export HTTP_PROXY

.bashrcの内容が反映されなかったので、.profileでsourceコマンドを実行することにした。

# cp ~/.profile ~/.profile.original

# vi ~/.profile

最後に以下を追加。

source ~/.bashrc

一旦ログアウトして、ログインし直す。

sudoのインストール

# pkg install sudo

# cp /usr/local/etc/sudoers /usr/local/etc/sudoers.original

# visudo
## Uncomment to allow members of group wheel to execute any command
# %wheel ALL=(ALL) ALL
↓
%wheel ALL=(ALL) ALL

一般ユーザーの追加

# adduser

対話形式で入力。

Login group is hoge. Invite hoge into other groups? []:

に対してはwheelを入力。

Shell (sh csh tcsh bash rbash nologin) [sh]:

に対してはbashを入力。

rootをログアウト(リモート接続しているので接続が切れる)。一般ユーザーでログインし直す。

環境設定

ここから先は一般ユーザにて作業(root権限が必要な場合はsudoを使用)。

rootの.bashrcをコピー。

$ sudo cp /root/.bashrc ~/.bashrc
$ sudo chown hoge:hoge ~/.bashrc
$ vi ~/.bashrc
alias sudo='sudo -E '
alias ls='ls -G -F'

を追加。lsのオプション -Gは色付け、-Fはディレクトリ、実行ファイル、シンボリックリンクを識別表示。

$ cp ~/.profile ~/.profile.original
$ vi ~/.profile
source ~/.bashrc

を追加。

vimのインストール

$ sudo pkg install vim

vim設定ファイルのコピー

$ cd /usr/local/share/vim/
$ cd vim74 
$ cp vimrc_example.vim ~/.vimrc

vim74 の 74 はバージョン。

.bashrcをviで開いて、以下を追加。

# vi ~/.bashrc
alias vi='vim'
$ source ~/.bashrc

/etc/motdの編集

一度見れば十分なので、先頭から、「Welcome to FreeBSD!」の行までを残して、残りを削除。

$ sudo vi /etc/motd

/etc/hostsの編集

今後インストールする、sSMTPやApacheにおいて、名前解決出来ることが必要となってくるので、/etc/hosts内にホスト名を記入する。

$ sudo vi /etc/hosts
::1                     localhost localhost.my.domain
127.0.0.1               localhost foobar localhost.my.domain

foobarのところに、自分のホスト名を記入。

メール送信環境の設定

sSMTPセットアップメモ

起動時にメールを送信する設定

$ sudo vi /usr/local/bin/bootup-mail.sh
#!/usr/local/bin/bash
# Bootup E-mail notification
receiver=*****@gmail.com
echo "`hostname` has booted."|mail -s "`hostname` boot" ${receiver}
$ sudo chmod +x /usr/local/bin/bootup-mail.sh

/etc/rc.localを新規に編集。

$ sudo vi /etc/rc.local
#!/usr/local/bin/bash
/usr/local/bin/bootup-mail.sh
$ sudo chmod +x /etc/rc.local

powerd

http://blog.livedoor.jp/dankogai/archives/51697097.htmlを拝見したら、非常に有効なようなので、/etc/rc.confに以下を追加。

$ sudo vi /etc/rc.conf

powerd_enable="YES"
powerd_flags="-a adp -n adp"

FreeBSD 10.2Rでは、/boot/loader.confに以下を記述する。(参考にしたページ: http://running-dog.net/2015/09/post_1646.html)

pi_throttle.0.disabled="0"
hint.p4tcc.0.disabled="0"

上記を記述しないと、以下のようなメッセージが表示される。

Starting powerd.
powerd: no cpufreq(4) support -- aborting: No such file or directory
/etc/rc.d/powerd: WARNING: failed to start powerd

再起動すると、powerdが有効になっているはず。

$ sudo /etc/rc.d/powerd stop

$ sudo /etc/rc.d/powerd start

を実行して、挙動を確かめる。

rootのリモートログインを禁止する(デフォルト設定に戻す)

/etc/ssh/sshd_configを編集。

$ sudo vi /etc/ssh/sshd_config

以下を変更。

PermitRootLogin yes
↓
PermitRootLogin no

sshdを再起動

$ sudo /etc/rc.d/sshd restart

rsyncのインストール

pkgからインストールすると、–iconvオプションが使えないので、portsからインストールする。

$ cd /usr/ports/net/rsync
$ sudo make
ICONVをチェックする。
$ sudo make install clean

AFT対策

http://blog.livedoor.jp/dankogai/archives/51697097.html のとおり。

gnopデバイスノードは一度4KBセクターのzpoolを作ったら削除しても良いと複数のWebページに書いてあるのを見かけました。(例えばhttp://blog.bixr.com/2012/07/243/)。筆者の場合、起動の都度adaN.nopからadaN.nop.eliを作成する必要があるため、起動の都度、gnopデバイスノードを作成しています。(という説明であっているのかな…。)

GEOM ELIによる暗号化とアタッチ

GEOM ELIによる暗号化とアタッチ

GEOM ELI暗号化ディスクによるraidz

GEOM ELI暗号化ディスクによるraidz

Samba-serverのセットアップ

Samba-serverのセットアップ

(この記事の中で、GEOM ELIによる暗号化とアタッチの際に作成したスクリトを修正しています。)

raidzを構成するハードディスクの交換の予行演習

raidzを構成するハードディスクの交換の予行演習

Apache2.4のセットアップ

Apache2.4のセットアップ

Muninのセットアップ

Muninのインストール

MuninでHDD温度を表示する

MuninでCPU温度とCPU周波数を表示する

Muninで画像が表示されない場合の対処

zpoolのインポート

zpoolのインポート

zpoolの破棄

zpoolの破棄