気の向くままに辿るIT/ICT/IoT
システム開発

NetBSDインストール後に最低限やっておくこと

ホーム前へ次へ
NetBSDのインストールと運用/NetBSD/i386 6.1.x編

NetBSDインストール後に最低限やっておくこと

NetBSDインストール後に最低限やっておくこと

 NetBSD/i386にログインした後、最低限やっておくべきこと(初期設定)は次のようなものでしょう。

 [rc_configured]の設定以外は、何れもNetBSDのインストーラ兼アップデーターsysinstのメニューからでも設定でき、インストール後の再起動前などに設定済みであれば、改めて行う必要はありません。

 ちなみにインストール時に指定したホスト名を変更したい場合には、/etc/rc.confで[hostname=""]の値を設定・編集、IPアドレスの割り当てにDHCPを使う場合、[dhcpcd=YES](dhclientより新しいDHCPクライアント)行がなければ、これを追記、同じくDHCPを使い、さらにネットワークインタフェース名を変更したい場合、/etc/rc.confのifconfig_xxx(より正確には3文字とは限らならインタフェース名と0を1つめとする数値から成るxxx0)のxxx0部を編集、[ifconfig_xxx0=dhcp]とします。

 [/etc/rc.conf]の変更は、変更したデーモンを個別に再起動後、もしくは、マシンの再起動後に有効となります。

[2016/11/13:追記]

 [man afterboot]/[man 8 afterboot]。。。こんなにわかりやすい初期設定マニュアルがあったことを今更ながら知りました。

NetBSDでユーザーを追加/useradd

# passwd
new Password:
Retry new Password:
# useradd -m user_name
# passwd user_name
new Password:
Retry new Password:
# exit
login: user_name
Password:
$

 ユーザーの追加はrootのみ可能となっており、NetBSDでは、([adduser]ではなく、)[useradd]コマンドを使用、[-m]オプション付きでuser_name用ホームディレクトリを作成します。

 rootもユーザーも自身のパスワード変更は、引数無しで[passwd]とし、rootアカウントで一般ユーザーなど他のユーザーのパスワードを変更する場合は、[passwd]にユーザー名を引数として渡します。

 パスワードを入力すると確認のため、同じパスワードの入力を求められ、正しければ、パスワードの設定が完了します。

 尚、変更の場合も同じ手順を踏みます。

 時に一般ユーザーアカウントでは、操作できないサービスやコマンドがあり、*BSD/PC-UNIX/Linuxでは、これに対処できるように[su]と[sudo]という2つの仕組みが用意されています。

 ただ、これを利用できる場合も重要なファイルやディレクトリなどを誤って削除してしまう等々の誤操作防止の観点から、その使用は、最小限に留める(一般ユーザーアカウントでできることは、一般ユーザーアカウントでやる)のが、賢明です。

NetBSDで一般ユーザーからrootに切り替える/su

$ su -
Password:    # <=rootパスワードを入力
#

 個人所有のPCなどrootパスワードを知っていれば、[su]や[su -]とすることで端末上で一般ユーザーアカウントからrootに切り替えることもできます。

# usermod -G wheel User_Name

 ただし、そのためには、予めユーザーを[wheel]グループに登録しておく必要があります。

 設定の詳細は、manに譲りますが、[usermod]コマンドで[-G]オプションに[wheel]グループ、続いて対象となるユーザーアカウントを指定します。

 これには、root権限が必要なので、ここで初めて設定する場合には、一度、rootでログインし直すことになるでしょう。

 [wheel]グループに追加された後は、当該ユーザーでログインした際、suが使えるようになるので以後は、[wheel]グループを追加する為に一時的に行ったかもしれない「rootでログインし直す」というような手順は必要なくなります。

$ pwd
/home/user_1
$ su
Password:
# pwd
/home/user_1
# exit
$ su -
Password:
# pwd
/root
# su user_2
$ pwd
/home/user_2
$ exit      # <=user_2からexit
# exit      # <=rootからexit
$ pwd     # <=user_1に戻った
/home/user_1
$

 suコマンドにおいてハイフンを指定しない場合は、一般ユーザーを引き継ぎ、例えばホームディレクトリで[su]するとrootに切り替わった後も一般ユーザーのホームディレクトリがカレントディレクトリになり、有効な[~/.profile]も一般ユーザーアカウントのものになりますが、[su -]とするとカレントディレクトリが[/root]になります。

 これは、例えば、切り替えの前後で現在の作業ディレクトリを表示する[pwd]コマンドを実行したり、rootと一般アカウントの[.profile]で適当な変数を設定してみてechoするなどしてみるとわかります。

 また、rootでハイフンの代わりに任意のユーザー名を指定すると当該ユーザーに切り替えることができます。

 [exit]することで元のアカウントに戻り、(NetBSDにおいてはPOSIX準拠のベーシックなシェルである)/bin/shの場合、そこで再度[exit]するとログアウトします。

 ただ、例では、user_1からrootに切り替え、更にuser_2に切り替えたのでuser_1に戻るのに2度[exit]しており、もう一度、[exit]するとログアウトすることになります。

 ちなみにこれはログインシェル上での話でウィンドウマネージャやデスクトップ環境において仮想ターミナルを使っている場合、最終的に[exit]した時には、ターミナルが終了します。

sudo/visudo 一般ユーザーのままrootアカウントとして実行

$ su -
Password:
# pkg_add -v sudo
...
# visudo
...
%wheel ALL=(ALL) ALL
...
# usermod -G wheel user_name
# exit
$ sudo pkg_add -v Package_Name
$

 一時的にrootアカウントになるにあたって、もっと手軽な方法が[sudo]コマンドを使うことです。

 [sudo]を利用する場合、(特にシステム管理者と複数のユーザーが存在するシステムにおいては、これを利用する必要がないケースもあり、標準ではインストールされておらず、自身しか使用しない個人の所有物である場合などには、[sudo]パッケージを)インストール後、rootアカウントで[visudo]を使って[sudo]用構成ファイルを適切に編集します。

 例えば、[%wheel ALL=(ALL) ALL]、または、実行時パスワードの入力を省略したい場合には、[%wheel ALL=(ALL) NOPASSWD: ALL]の行のコメント記号[#]を外し、ユーザーアカウントに[usermod -G]で[wheel]グループを追加するなどすることにより、1度パスワードを入力すると一定時間rootアカウントとしてコマンドを実行可能にする[sudo]コマンドを使うこともできるようになります。

NetBSDでデーモンを設定

 NetBSDでは、起動時に実行するデーモン(裏方で健気に動いてくれるサービス・プログラム)は、[/etc/rc.d]ディレクトリに置かれることになっています。

 デフォルトで置かれているものもありますし、そこに存在しない場合でも追加でデーモンを持つパッケージがインストールされた場合、基本的に[/usr/pkg/share/examples/rc.d]にサンプルをおくことになっており、必要ならそこから[/etc/rc.d]にコピーすることができます。

 もし、[/usr/pkg/share/examples/rc.d]というパスがなかったり、あってもそこに必要なデーモンが存在しない場合には、それを含むパッケージが、まだインストールされていないか、インストール済みパッケージについては起動するデーモンがない(通常利用するにあたってデーモンを起動する必要がない)ことを示します。

 もちろん、[/usr/pkg/share/examples/rc.d]に存在しても、その時点で全て有効にしておく必要があるとは限りません。(必要ないなら、未設定のものがそこにあっても構いません。)

 むしろ、時代と共に置き換えられるべきデーモンを利用するパッケージもあり、例えば、更新が停止したかに見えるfam(File Alteration Monitor/ファイル変更監視モニタ)では、famdというデーモンを使用し、このパッケージは依存関係上、今尚、インストールされることがありますが、更新が活発で代替可能なgaminへの置き換えが賢明とされているのでNetBSDにおいては[/etc/rc.conf]に追記の必要のないgaminを入れたら、famd自体は、あっても不要となるため、[/etc/rc.d]に[famd]、[/etc/rc.conf]に[famd=yes]がある場合、それぞれ削除するというケースもあります。

# vi /etc/rc.conf
...
rc_configure=yes
...
hostname=...
...
dhcpcd=yes
#dhclient=yes
wscons=yes
...
# ls /etc/rc.d
...
# cp /usr/pkg/share/examples/rc.d/dhcpcd /etc/rc.d
# /etc/rc.d/dhcpcd start
# /etc/rc.d/wscons start
#

 デーモンについては、IPアドレスを固定にする場合以外は、動的にIPアドレスを割り当てるDHCP(サーバ)により割り当てられたIPを受け取るDHCPクライアント用デーモン[dhcpcd]、または、[dhclient]、また、キーボードやマウスの制御用として[wscons]あたりを次回以降のマシン起動時に有効にする為、[/etc/rc.conf]ファイルでそれぞれ[=yes]を設定しておきます。

(ちなみに[/etc/rc.conf]内の先頭の[#]はコメント行を表わします。)

 DHCPを使う場合、DHCPクライアントを有効にしておかないと(併せて[/etc/rc.conf]内の[hostname=]にホスト名が設定されていないと)インターネットにも接続できませんし、wsconsを有効にしていないとマウスやキーボード(英語用を日本語用にしたいなど)の設定を変更することができません。

 デーモンには、[start]/[onestart]、[stop]/[onestop]、[restart]/[onerestart]、[status]などのコマンドがあります。

 [one...]の有無は、[/etc/rc.conf]に設定後は、マシンを再起動したか否かに関わらず、[start]、[stop]、[restart]、一方、[/etc/rc.conf]に設定していない場合には、[onestart]、[onestop]、[onerestart]を使います(が、違えば、その旨のメッセージを表示してくれます)。

 [/etc/rc.conf]に設定済みなら、マシン再起動含む、次回の起動後には、指定したデーモンは自動起動するため、それらデーモンに関連するサービスの設定を変更した場合などを除き、日常的にそれら設定済みのデーモンを手作業で操作する必要はありません。

 というわけで[/etc/rc.conf]で[dhcpcd]や[wscons]を設定した直後なら、[/etc/rc.d/dhcpcd start]、[/etc/rc.d/wscons start]などとすることで、これらのデーモンを開始させることができます。

NetBSDのログインシェルで日本語キーボード設定が有効かを確認

 [wscons]デーモンを起動したら、ログインシェルで日本語キーボードを利用できるように設定されているかを確認、異なる場合、日本語キーボードにしたい場合には、適宜追加、編集します。

 例えば、ログインシェル上でキーボード上の[:](コロン)を入力してみた時に['](シングルクォーテーション)になってしまうような場合には、次の2つを確認の上、必要なら適宜修正、追加します。
(日本語キーボードと英語キーボードの対応一例)

(コロン[:]を入力した場合)
# wsconsctl -w encoding=us
# '
# wsconsctl -w encoding=jp
# :

 尚、wsconsデーモンが起動している前提で現在ログイン中のみ一時的に変更したいなら、[wsconsctl]コマンドで切り替えることもできます。

 この時、wsconsデーモンが起動していないと[wsconsctl]コマンドのエラーは出ず、一見、正常に設定できたかに見えるものの、実際には、キーボード設定は切り替わりません。

NetBSDで日付時刻の調整

 5.9. System timeによれば、NetBSDでは、GMTを使っているとあります。

 日本時間の場合、JSTが採用されており、インストール直後など調整をしていない場合、[date]コマンドを実行するとGMTとの時差が9時間あることがわかると思います。

NetBSDで日本時間設定確認

 通常、*BSD/PC-UNIX/Linuxのインストール時には、localtimeの指定ができるようになっていたり、自動設定されることによって東京時間なら[/etc/localtime]が[/usr/share/zoninfo/Asia/Tokyo]ファイルのシンボリックリンクになっていますが、これだけでは、JSTを採用する地域のマシンですよと宣言しただけで9時間の時差自体は修正されません。

# ln -sf /usr/share/zoneinfo/Asia/Tokyo /etc/localtime

 しかし、これは、以降で時間調整するに辺り、参照されることから必要な手順なので何らかの理由によってシンボリックリンクが張られていない([/etc/localtime]がない)場合には、手作業で[ln -sf /usr/share/zoneinfo/Asia/Tokyo /etc/localtime]としておきます。

 ちなみに日本国内では時差がないことになっているので[ln -sf /usr/share/zoneinfo/Japan /etc/localtime]としても可です。

NetBSDで9時間の時差を調整/rtclocaltime

 NetBSDにおいて、この9時間の時差を修正したい=localtimeを使いたい場合(localtimeを使っているWindowsとのマルチブート含む)には、次のように[rtclocaltime]デーモンを有効にします。

# echo rtclocaltime=yes /etc/rc.conf
# tail /etc/rc.conf
...
rtclocaltime=yes
# /etc/rc.d/rtclocaltime start
#

 次回以降の起動時に有効になるように[/etc/rc.conf]に[rtclocaltime=yes]を設定しておき、再起動しなくても[rtclocaltime]デーモンを起動できるようにrootアカウントで[/etc/rc.d/rtclocaltime start]します。

NetBSDで時間の誤差を調整/ntpdateとntpd

 これで時差はなくなりますが、コンピュータの時計というものは、少しずつズレていくので、このズレを補正する為にインターネットを含むネットワーク上のサーバの時刻を基に時刻合わせをする[ntpdate]や[ntpd]を使用するとよいでしょう。

 [ntpd]は、オプションで回避することもできますが、デフォルトでは時差があり過ぎると停止してしまうこともあるので[ntpdate]を先に[start]させたり、[date]コマンドで現在の日時に合わせてから実行するとよいでしょう。(例では両方やっています。)

# vi /etc/rc.conf
...
ntpdate=yes
ntpd=yes
...
# date 201001011700
# /etc/rc.d/ntpdate start
# /etc/rc.d/ntpd start
#

 まず、次回以降のマシン起動時にデーモンを実行するように[/etc/rc.conf]ファイルで[ntpdate]、[ntpd]をそれぞれ[=yes]に設定します。

 [date]コマンドで現在日時(例では2010年01月01日17:00)を設定後、マシンを再起動することなく、デーモンを開始する為に[/etc/rc.d]以下の[ntpdate]と[ntpd]を[start]します。

 尚、[ntpdate]は、1度だけ時刻合わせを行ない、[/etc/rc.conf]で変数[ntpdate_hosts=ntpserver_address]を設定するか、これが省略された場合、[/etc/ntp.conf]の[server]行にマップされたサーバが使われ、[ntpd]は、誤差をミリ秒単位で最小限に抑えつつ、徐々に時刻合わせをしていくデーモンです。

 併記してみたところ、特に問題はなく、見たところ、NetBSDの場合、起動時に[ntpdate]で当該時刻に合わせ、あとは一定間隔で[ntpd]で徐々に補正してくれているようです。

 尚、*BSD/PC-UNIX/Linuxには、指定した日時や間隔でプログラムを自動実行する為の[cron]機能([crontab]コマンド)や一時的(1度だけ)なら[ at]コマンドがあり、ここで言うと例えば、[ntpd]を使わずに一度しか時刻合わせをしない[ntpdate]を定期的に実行することもできたりします。

 ちなみに電源管理において一定時間後、モニタやマシンをスリープさせている場合、スリープから復帰した際、スリープ前の時間から時計が動き出すということがあるかもしれません。

 この場合、一度、[date]コマンドや[/etc/rc.d/npdate restart]を使い、ターミナルで手作業、または、カレンダーをクリックした際などにスクリプトを仕込むなどして時間調整すれば、後は[ntp]デーモンがズレを補正してくれますが、それも手間だという場合、[cron]機能を使って[ntpdate]デーモンを定期的に実行すれば、その実行までは、ズレたままでも実行された時に日付時刻合わせがなされ、更に[ntp]デーモンも設定してあれば、以降のズレを補正してくれるでしょう。

 この程度まで設定したら、とりあえず、一度、マシンを再起動してみてもよいでしょう。

[追記]

 ちなみにOSに限らず、PCを使っていて急に時計が狂いだしたり、起動前にBIOS画面が表示されたりする場合、寿命が5~10年程度とも言われるBIOS用ボタン電池(リチウム電池)の電池残量が不足している可能性もあります。

ホーム前へ次へ