サイズ: 4850
コメント:
|
サイズ: 20349
コメント:
|
削除された箇所はこのように表示されます。 | 追加された箇所はこのように表示されます。 |
行 3: | 行 3: |
本記述は13.0-BEATA3時点での内容であるが、13.0がリリースされた後、微調整する。 | 本記述は13.0-RC1時点での内容であるが、13.0がリリースされた後、微調整する。 |
行 10: | 行 10: |
* TCP輻輳制御はDC-TCPを使用する。 * 各種ログは1年間の保持を目指す。 * またログローテーション期間はよく使う物について、月一をベースに、出力が多いサービスでは1週間または1日で切り替えるものとする。 |
|
行 27: | 行 30: |
== /etc/cron.d/portsupdate == | == /etc/cron.d/ports-svn-update == |
行 38: | 行 41: |
+++ /etc/newsyslog.conf 2021-02-25 08:13:00.228193000 +0900 | +++ /etc/newsyslog.conf 2021-03-04 06:43:50.764180000 +0900 |
行 44: | 行 47: |
+/var/log/auth.log 600 53 * $W0D0 XC | +/var/log/auth.log 600 12 * $M1D0 XC |
行 69: | 行 72: |
== /etc/newsyslog.conf.d/ntpd == {{{ # logfilename [owner:group] mode count size when flags [/pid_file] [sig_num] /var/log/ntpd.log 644 12 * $M1D0 XC }}} == /etc/newsyslog.conf.d/ports-svn-update == {{{ # logfilename [owner:group] mode count size when flags [/pid_file] [sig_num] /var/log/ports-svn-update.log 644 12 * $M1D0 XC }}} == /etc/newsyslog.conf.d/sudo == {{{ # logfilename [owner:group] mode count size when flags [/pid_file] [sig_num] var/log/sudo.log 644 12 * $M1D0 XC |
== /etc/newsyslog.conf.d/ntp.conf == {{{ # logfilename [owner:group] mode count size when flags [/pid_file] [sig_num] /var/log/ntp.log 644 12 * $M1D0 XC }}} == /etc/newsyslog.conf.d/ports-svn-update.conf == {{{ # logfilename [owner:group] mode count size when flags [/pid_file] [sig_num] /var/log/ports-svn-update.log 644 12 * $M1D0 XC }}} == /etc/newsyslog.conf.d/sudo.conf == {{{ # logfilename [owner:group] mode count size when flags [/pid_file] [sig_num] /var/log/sudo.log 644 12 * $M1D0 XC |
行 88: | 行 91: |
{{{ | {{{#!highlight shell numbers=disable daily_scrub_zfs_enable="YES" daily_status_zfs_enable="YES" }}} == /etc/rc.conf == {{{#!highlight shell numbers=disable sysrc syslogd_flags="-s -O rfc5424" |
行 93: | 行 103: |
--- /etc/ssh/ssh_config.orig 2021-02-19 15:01:46.000000000 +0900 +++ /etc/ssh/ssh_config 2021-03-04 06:49:21.854238000 +0900 @@ -18,6 +18,14 @@ # list of available options, their meanings and defaults, please see the # ssh_config(5) man page. +Host * + ForwardAgent yes + EscapeChar none +# Send locale-related environment variables + SendEnv LANG LANGUAGE LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES + SendEnv LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE LC_MEASUREMENT + SendEnv LC_IDENTIFICATION LC_ALL + # Host * # ForwardAgent no # ForwardX11 no |
|
行 97: | 行 124: |
--- /etc/ssh/sshd_config.orig 2021-02-25 04:46:53.081176000 +0900 +++ /etc/ssh/sshd_config 2021-03-04 06:50:09.275221000 +0900 @@ -85,6 +85,11 @@ # and ChallengeResponseAuthentication to 'no'. #UsePAM yes +# Accept locale-related environment variables +AcceptEnv LANG LANGUAGE LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES +AcceptEnv LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE LC_MEASUREMENT +AcceptEnv LC_IDENTIFICATION LC_ALL + #AllowAgentForwarding yes #AllowTcpForwarding yes #GatewayPorts no |
|
行 102: | 行 143: |
+++ /etc/sysctl.conf 2021-02-25 07:07:39.965363000 +0900 @@ -7,3 +7,6 @@ |
+++ /etc/sysctl.conf 2021-03-09 13:17:58.158067000 +0900 @@ -7,3 +7,12 @@ |
行 110: | 行 151: |
+#et.inet.tcp.fastopen.client_enable=1 +net.inet.tcp.fastopen.server_enable=1 +net.inet.tcp.nolocaltimewait=1 + +kern.ipc.maxsockbuf=16777216 +kern.ipc.shm_use_phys=1 |
|
行 114: | 行 161: |
--- /etc/syslog.conf.orig 2021-02-19 15:05:41.000000000 +0900 +++ /etc/syslog.conf 2021-03-09 13:31:41.455039000 +0900 @@ -5,10 +5,10 @@ # separators. If you are sharing this file between systems, you # may want to use only tabs as field separators here. # Consult the syslog.conf(5) manpage. -*.err;kern.warning;auth.notice;mail.crit /dev/console -*.notice;authpriv.none;kern.debug;lpr.info;mail.crit;news.err /var/log/messages +*.err;kern.warning;auth.none;mail.none;user.none;ntp.none /dev/console +*.*;authpriv.none;kern.debug;lpr.info;mail.none;news.err;cron.none;daemon.none;ntp.none;auth.none;user.none;local2.none /var/log/messages security.* /var/log/security -auth.info;authpriv.info /var/log/auth.log +auth.*;authpriv.* /var/log/auth.log mail.info /var/log/maillog cron.* /var/log/cron !-devd }}} * `mail.*`: メールシステムのログ(`sendmail` 他) * `auth.*`、`authpriv.*`: 認証システムのログ(`sshd`、`su` 他) * `cron.*`: cronログ(`cron`、`at`) * `daemon.*`: デーモンサービスのログ(各種) * `ntp.*`: NTPログ(`ntpd`) * `user.*`: ユーザーレベルのログ(`/etc/cron.d/ports-svn-update` にて使用) * `local2.*`: 任意のアプリでのログ(`sudo` 他) == /etc/syslog.d/daemon.conf == {{{ daemon.* /var/log/daemon.log |
|
行 119: | 行 195: |
*.>=notice /var/log/devd.log | *.* /var/log/devd.log |
行 124: | 行 200: |
ntp.* /var/log/ntpd.log | ntp.* /var/log/ntp.log |
行 129: | 行 205: |
local2.* /var/log/sudo.log | |
行 133: | 行 210: |
!-devd | |
行 138: | 行 216: |
--- /etc/ttys.orig 2021-02-19 15:00:30.000000000 +0900 +++ /etc/ttys 2021-03-09 10:00:54.967135000 +0900 @@ -31,13 +31,13 @@ # ttyv0 "/usr/libexec/getty Pc" xterm onifexists secure # Virtual terminals -ttyv1 "/usr/libexec/getty Pc" xterm onifexists secure -ttyv2 "/usr/libexec/getty Pc" xterm onifexists secure -ttyv3 "/usr/libexec/getty Pc" xterm onifexists secure -ttyv4 "/usr/libexec/getty Pc" xterm onifexists secure -ttyv5 "/usr/libexec/getty Pc" xterm onifexists secure -ttyv6 "/usr/libexec/getty Pc" xterm onifexists secure -ttyv7 "/usr/libexec/getty Pc" xterm onifexists secure +ttyv1 "/usr/libexec/getty Pc" xterm off secure +ttyv2 "/usr/libexec/getty Pc" xterm off secure +ttyv3 "/usr/libexec/getty Pc" xterm off secure +ttyv4 "/usr/libexec/getty Pc" xterm off secure +ttyv5 "/usr/libexec/getty Pc" xterm off secure +ttyv6 "/usr/libexec/getty Pc" xterm off secure +ttyv7 "/usr/libexec/getty Pc" xterm off secure ttyv8 "/usr/local/bin/xdm -nodaemon" xterm off secure # Serial terminals # The 'dialup' keyword identifies dialin lines to login, fingerd etc. |
|
行 141: | 行 242: |
バイナリベースで運用したいなら以後の作業は不要。 | |
行 143: | 行 245: |
{{{#!highlight makefile numbers=disable # # System Dependent Configurations # CPUTYPE?= cascadelake KERNCONF?= GENERIC # # Package/Ports Dependent Configurations # OPTIONS_SET+= ZSH BASH OPTIONS_SET+= NLS DOCS IPV6 EXAMPLES OPTIONS_SET+= LZ4 LZO LZO2 LZMA ZLIB ZSTD BROTLI OPTIONS_SET+= ASM SIMD CPU_OPTS OPTIMIZED_FLAGS OPTIMIZED_CFLAGS OPTIONS_SET+= X265 SVTHEVC VMAF HI8P HI10P HI12P OPTIONS_SET+= X3F RPIRAW JPEGICC TIFFICC LIBDE265 IMAGEMAGICK7 OPTIONS_SET+= PNG APNG HEIF JPEG TIFF RAQM LCMS2 JASPER WEBP FREETYPE FONTCONFIG OPTIONS_SET+= GMP ICU IDN SSL SSH SSH2 GLIB PCAP ICONV SOCKS OPENSSL THREADS OPTIONS_SET+= PYGMENTS BACKSPACE ONIGURUMA ENCODINGS ETCSYMLINK DEFAULT_VIMRC OPTIONS_UNSET+= CUPS GDBM TEST DEBUG TESTS OPENMP NETTLE MBEDTLS CA_BUNDLE OPTIONS_UNSET+= GPG_AGENT HTMLDOCS OPTIONS_UNSET+= AOM SDL X11 XPM XCB TRACE GCRYPT OPENGL GLESV2 # per port devel_cmake_UNSET= CPACK MANPAGES devel_git_UNSET= P4 CVS GITWEB SUBTREE devel_glib20_SET= FAM_ALTBACKEND devel_glib20_UNSET= MANPAGES devel_oniguruma_UNSET= STATISTICS devel_py-yaml_SET= LIBYAML dns_bind-tools_SET= MANPAGES editors_vim-console_SET= MAKE_JOBS ports-mgmt_portmaster_SET= BASH ZSH security_dehydrated_UNSET= ZSH }}} * `CPUTYPE`: 運用するサーバーの[[https://qiita.com/nanorkyo/items/e0417d8c1388750cb72c|CPUに合わせて指定]]する(指定可能なCPU種別は `/usr/share/mk/bsd.cpu.mk` で定義されている)。 * ports用のオプションについては以下でインストールする際に要求される選択肢に対して、ある程度手を打つ形で設定している。 * X11関連は無効にする。 * 圧縮系アルゴリズム(ライブラリやその使用)はおおよそ有効にしている。 * `ImageMagick`基準で画像の取り扱いもおおよそメジャーなものは有効にしている。 * 同じく`ImageMagick`基準で動画の取り扱いもいくらか有効にしている。 * ただHEIF関連については色々と重たい依存関係が発生している点はご容赦願いたい。 * Gitコマンドについては軽量指定してる。ガチで使うなら `SUBTREE` オプションは有効にした方がいい。 * 積極的にOpenSSLを使用するものとし、代替ライブラリ(NETTLEやMBEDTLS等)は選択しない(選択可能なケースで)。 * 最適化はある程度選択するが、極端な最適化を求めると重たすぎるものについては無効にする(OpenMP)。 |
|
行 145: | 行 293: |
* ベース内にGITコマンドが無いため、`GitHub`のSubversionサポート機能を利用してとりあえず回避する。 * `GitHub`のSubversionサポート機能はよくエラーが発生するので、何度かトライすること。 * `git clone` する場合は`GitHub`(二次配布先)からでなく、`cgit.freebsd.org` から取得すること。 * `make -j` で指定している「n」は `sysctl hw.cpu` を実行して得た数字+1を指定することを推奨する。 * ただしメモリが2GB以下の場合はn=1としておいた方が安全である(`-j` オプションの指定は不要)。 * `certctl rehash` コマンドの扱いについてメモ。 * 本コマンドの実行は原則不要。 * これは `make installworld` 中に実施される。 * ただし `etcupdate` (`mergemaster`)では実行されない。 * なぜ明記しているのかというと、`/etc` 以下に対するオペレーションなのだけど、上記2つでカバーできないケースにおいて個別に実施する必要がある。 * 例えばJAIL内でホスト側の `/usr` や `/bin` などのを参照しているケースで、`/var` や `/etc` をJAIL固有で持っている場合である。 {{{#!highlight shell numbers=disable svnlite co https://github.com/freebsd/freebsd-src.git/branches/releng/13.0 /usr/src cd /usr/src make -jn buildworld buildkernel make installkernel installworld certctl rehash etcupdate etcupdate resolve }}} ここで一旦再起動する。 {{{#!highlight shell numbers=disable cd /usr/src make -jn buildworld buildkernel make installkernel installworld }}} 再度再起動を実施。 |
|
行 147: | 行 327: |
パッケージベースで運用したいなら以後の作業は不要。 == portsの展開 == {{{#!highlight shell numbers=disable svnlite co svn://svn.freebsd.org/ports/head /usr/ports mkdir -p /usr/ports/distfiles cd /usr/ports; make index }}} == 互換設定 == * サードパーティシェル(ZSH/BASH)をベースシステムと同じように扱うための設定(主にLinuxディストリビューションとの互換)。 * Perlについて同じく(こちらは気にしないケースが多いかも)。 {{{#!highlight shell numbers=disable ln -s /usr/local/bin/zsh /bin/zsh ln -s /usr/local/bin/bash /bin/bash ln -s /usr/local/bin/perl /usr/bin/perl }}} == 前提インストール == {{{#!highlight shell numbers=disable cd /usr/ports/ports-mgmt/dialog4ports && make install clean cd /usr/ports/ports-mgmt/portconf && make install clean }}} === /usr/local/etc/ports.conf === {{{ databases/db5: NO_DIALOG=yes databases/sqlite3: NO_DIALOG=yes devel/apr1: NO_DIALOG=yes devel/git: NO_DIALOG=yes devel/m4: NO_DIALOG=yes devel/pcre: NO_DIALOG=yes devel/py-Jinja2: NO_DIALOG=yes devel/subversion: NO_DIALOG=yes dns/bind-tools: NO_DIALOG=yes ftp/curl: NO_DIALOG=yes lang/perl5.*: NO_DIALOG=yes lang/python*: NO_DIALOG=yes net/rsync: NO_DIALOG=yes security/p5-Authen-SASL: NO_DIALOG=yes security/p5-GSSAPI: NO_DIALOG=yes security/sudo: NO_DIALOG=yes shells/bash: NO_DIALOG=yes shells/zsh: NO_DIALOG=yes sysutils/tmux*: NO_DIALOG=yes textproc/libxml2: NO_DIALOG=yes textproc/py-snowballstemmer: NO_DIALOG=yes www/serf: NO_DIALOG=yes }}} == 共通(定番)インストール == {{{#!highlight shell numbers=disable cd /usr/ports/shells/zsh && make install clean cd /usr/ports/shells/bash && make install clean cd /usr/ports/japanese/less && make install clean cd /usr/ports/japanese/nkf && make install clean cd /usr/ports/sysutils/lsof && make install clean cd /usr/ports/sysutils/topless && make install clean cd /usr/ports/sysutils/zfs-stats && make install clean cd /usr/ports/ports-mgmt/portmaster && make install clean cd /usr/ports/security/makepasswd && make install clean cd /usr/ports/dns/bind-tools && make install clean cd /usr/ports/devel/subversion && make install clean cd /usr/ports/devel/git && make install clean cd /usr/ports/sysutils/tmux && make install clean cd /usr/ports/net/rsync && make install clean cd /usr/ports/editors/vim-console && make install clean cd /usr/ports/security/sudo && make install clean cd /usr/ports/security/dehydrated && make install clean #cd /usr/ports/security/testssl.sh && make install clean }}} ※`testssl.sh` は13.x環境ではBROKENとなっています(2021年03月時点)。 == VMware環境での追加インストール == * `vmblock` はホストとゲスト間でのコピー&ペーストを実現するためのドライバです。 * X11上でしかできない(コンソール相手にはできない)ため無効にします。 === /etc/make.conf === {{{#!highlight makefile numbers=disable emulators_open-vm-tools-nox11_UNSET= DOCS }}} === The Open Virtual Machine Tools のインストール === {{{#!highlight shell numbers=disable cd /usr/ports/emulators/open-vm-tools-nox11 && make install clean sysrc vmware_guest_vmblock_enable="NO" }}} === 手動立ち上げ === ※再起動すれば自動的に立ち上がるようになっています(デフォルトON)。 {{{#!highlight shell numbers=disable service vmware-kmod start service vmware-guestd start }}} = OSのリビルド環境構築 = Gitコマンドが入ったので、 {{{#!highlight shell numbers=disable mv /usr/src /usr/src.orig git clone -b releng/13.0 --depth 1 -b releng/13.0 https://git.freebsd.org/src.git /usr/src }}} = よくある質問とその答え = == Q.なんで二回もリビルドしてるのですか? == A.いわゆる完全なクロスコンパイル環境では発生しえませんが、セルフビルド環境ではホストのバイナリが紛れ込むことがあるため、それを排除するために二回リビルドしています。 == Q./usr/bin/perl なんて今時… == A.昔作ったスクリプトや他の環境で作ったスクリプトをそのまま運用するための設定ですね。長いこと運用しているとそういうのが…。 そういう意味では `/bin/bash` の類いはケア(`/usr/local/bin/bash` でもOKなように)してるケースはあまり見かけませんね。 `bash` が `/bin` にあることを前提にしている人が多いように見受けられます。 = 参考文献 = * [[https://qiita.com/nanorkyo/items/e0417d8c1388750cb72c|FreeBSDでのCPUTYPEの指定方法]] * [[https://qiita.com/nanorkyo/items/a0068cafcf9112ebbb7b|Ports System における OPTIONS_SET/OPTIONS_UNSET/NO_DIALOG の活用方法]] * [[https://qiita.com/nanorkyo/items/451d1a3fda704601a14a|Ports System における公式 OPTIONS のリスト]] |
FreeBSD13の初期設定
FreeBSD 13.0-RELEASEをインストールしてみる。 本記述は13.0-RC1時点での内容であるが、13.0がリリースされた後、微調整する。
目次
- FreeBSD13の初期設定
-
初期設定
- /boot/loader.conf
- /etc/cron.d/ports-svn-update
- /etc/newsyslog.conf
- /etc/newsyslog.conf.d/ntp.conf
- /etc/newsyslog.conf.d/ports-svn-update.conf
- /etc/newsyslog.conf.d/sudo.conf
- /etc/periodic.conf
- /etc/rc.conf
- /etc/ssh/ssh_config
- /etc/ssh/sshd_config
- /etc/sysctl.conf
- /etc/syslog.conf
- /etc/syslog.d/daemon.conf
- /etc/syslog.d/devd.conf
- /etc/syslog.d/ntp.conf
- /etc/syslog.d/sudo.conf
- /etc/syslog.d/user.conf
- /etc/ttys
- OSのリビルド
- portsのインストール
- OSのリビルド環境構築
- よくある質問とその答え
- 参考文献
前提条件
設定目標
- TCP輻輳制御はDC-TCPを使用する。
- 各種ログは1年間の保持を目指す。
- またログローテーション期間はよく使う物について、月一をベースに、出力が多いサービスでは1週間または1日で切り替えるものとする。
初期設定
/boot/loader.conf
--- /boot/loader.conf.orig 2021-02-25 04:30:48.435918000 +0900
+++ /boot/loader.conf 2021-02-25 07:03:15.844423000 +0900
@@ -5,6 +5,7 @@
zfs_load="YES"
nullfs_load="YES"
+cc_dctcp_load="YES"
geom_eli_load="YES"
vfs.root.mountfrom="zfs:zroot"
/etc/cron.d/ports-svn-update
#minute hour mday month wday who command 0 0 * * * root cd /usr/ports && sleep $(jot -r 1 0 86400) && (svnlite update && make index ) | logger -p user.notice -t ports-svn-update 2>&1
※2021年02月末日時点ではportsのGIT移行は未完了。
/etc/newsyslog.conf
--- /etc/newsyslog.conf.orig 2021-02-19 15:05:34.000000000 +0900
+++ /etc/newsyslog.conf 2021-03-04 06:43:50.764180000 +0900
@@ -16,21 +16,21 @@
#
# logfilename [owner:group] mode count size when flags [/pid_file] [sig_num]
/var/log/all.log 600 7 * @T00 J
-/var/log/auth.log 600 7 1000 @0101T JC
+/var/log/auth.log 600 12 * $M1D0 XC
/var/log/console.log 600 5 1000 * J
-/var/log/cron 600 3 1000 * JC
+/var/log/cron 600 12 * $M1D0 XC
/var/log/daily.log 640 7 * @T00 JN
/var/log/debug.log 600 7 1000 * JC
/var/log/init.log 644 3 1000 * J
/var/log/kerberos.log 600 7 1000 * J
-/var/log/maillog 640 7 * @T00 JC
-/var/log/messages 644 5 1000 @0101T JC
+/var/log/maillog 640 12 * $M1D0 XC
+/var/log/messages 644 12 1000 $M1D0 XC
/var/log/monthly.log 640 12 * $M1D0 JN
/var/log/devd.log 644 3 1000 * JC
-/var/log/security 600 10 1000 * JC
+/var/log/security 600 53 * $W0D0 XC
/var/log/utx.log 644 3 * @01T05 B
/var/log/weekly.log 640 5 * $W6D0 JN
-/var/log/daemon.log 644 5 1000 @0101T JC
+/var/log/daemon.log 644 12 * $M1D0 XC
<include> /etc/newsyslog.conf.d/[!.]*.conf
<include> /usr/local/etc/newsyslog.conf.d/[!.]*.conf
/etc/newsyslog.conf.d/ntp.conf
# logfilename [owner:group] mode count size when flags [/pid_file] [sig_num] /var/log/ntp.log 644 12 * $M1D0 XC
/etc/newsyslog.conf.d/ports-svn-update.conf
# logfilename [owner:group] mode count size when flags [/pid_file] [sig_num] /var/log/ports-svn-update.log 644 12 * $M1D0 XC
/etc/newsyslog.conf.d/sudo.conf
# logfilename [owner:group] mode count size when flags [/pid_file] [sig_num] /var/log/sudo.log 644 12 * $M1D0 XC
/etc/periodic.conf
daily_scrub_zfs_enable="YES"
daily_status_zfs_enable="YES"
/etc/rc.conf
sysrc syslogd_flags="-s -O rfc5424"
/etc/ssh/ssh_config
--- /etc/ssh/ssh_config.orig 2021-02-19 15:01:46.000000000 +0900
+++ /etc/ssh/ssh_config 2021-03-04 06:49:21.854238000 +0900
@@ -18,6 +18,14 @@
# list of available options, their meanings and defaults, please see the
# ssh_config(5) man page.
+Host *
+ ForwardAgent yes
+ EscapeChar none
+# Send locale-related environment variables
+ SendEnv LANG LANGUAGE LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES
+ SendEnv LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE LC_MEASUREMENT
+ SendEnv LC_IDENTIFICATION LC_ALL
+
# Host *
# ForwardAgent no
# ForwardX11 no
/etc/ssh/sshd_config
--- /etc/ssh/sshd_config.orig 2021-02-25 04:46:53.081176000 +0900
+++ /etc/ssh/sshd_config 2021-03-04 06:50:09.275221000 +0900
@@ -85,6 +85,11 @@
# and ChallengeResponseAuthentication to 'no'.
#UsePAM yes
+# Accept locale-related environment variables
+AcceptEnv LANG LANGUAGE LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES
+AcceptEnv LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE LC_MEASUREMENT
+AcceptEnv LC_IDENTIFICATION LC_ALL
+
#AllowAgentForwarding yes
#AllowTcpForwarding yes
#GatewayPorts no
/etc/sysctl.conf
--- /etc/sysctl.conf.orig 2021-02-19 15:00:35.000000000 +0900
+++ /etc/sysctl.conf 2021-03-09 13:17:58.158067000 +0900
@@ -7,3 +7,12 @@
# Uncomment this to prevent users from seeing information about processes that
# are being run under another UID.
#security.bsd.see_other_uids=0
+
+net.inet.tcp.cc.algorithm=dctcp
+net.inet.tcp.ecn.enable=1
+#et.inet.tcp.fastopen.client_enable=1
+net.inet.tcp.fastopen.server_enable=1
+net.inet.tcp.nolocaltimewait=1
+
+kern.ipc.maxsockbuf=16777216
+kern.ipc.shm_use_phys=1
/etc/syslog.conf
--- /etc/syslog.conf.orig 2021-02-19 15:05:41.000000000 +0900
+++ /etc/syslog.conf 2021-03-09 13:31:41.455039000 +0900
@@ -5,10 +5,10 @@
# separators. If you are sharing this file between systems, you
# may want to use only tabs as field separators here.
# Consult the syslog.conf(5) manpage.
-*.err;kern.warning;auth.notice;mail.crit /dev/console
-*.notice;authpriv.none;kern.debug;lpr.info;mail.crit;news.err /var/log/messages
+*.err;kern.warning;auth.none;mail.none;user.none;ntp.none /dev/console
+*.*;authpriv.none;kern.debug;lpr.info;mail.none;news.err;cron.none;daemon.none;ntp.none;auth.none;user.none;local2.none /var/log/messages
security.* /var/log/security
-auth.info;authpriv.info /var/log/auth.log
+auth.*;authpriv.* /var/log/auth.log
mail.info /var/log/maillog
cron.* /var/log/cron
!-devd
mail.*: メールシステムのログ(sendmail 他)
auth.*、authpriv.*: 認証システムのログ(sshd、su 他)
cron.*: cronログ(cron、at)
daemon.*: デーモンサービスのログ(各種)
ntp.*: NTPログ(ntpd)
user.*: ユーザーレベルのログ(/etc/cron.d/ports-svn-update にて使用)
local2.*: 任意のアプリでのログ(sudo 他)
/etc/syslog.d/daemon.conf
daemon.* /var/log/daemon.log
/etc/syslog.d/devd.conf
!devd *.* /var/log/devd.log
/etc/syslog.d/ntp.conf
ntp.* /var/log/ntp.log
/etc/syslog.d/sudo.conf
local2.* /var/log/sudo.log
/etc/syslog.d/user.conf
!-devd user.* /var/log/ports-svn-update.log
/etc/ttys
--- /etc/ttys.orig 2021-02-19 15:00:30.000000000 +0900
+++ /etc/ttys 2021-03-09 10:00:54.967135000 +0900
@@ -31,13 +31,13 @@
#
ttyv0 "/usr/libexec/getty Pc" xterm onifexists secure
# Virtual terminals
-ttyv1 "/usr/libexec/getty Pc" xterm onifexists secure
-ttyv2 "/usr/libexec/getty Pc" xterm onifexists secure
-ttyv3 "/usr/libexec/getty Pc" xterm onifexists secure
-ttyv4 "/usr/libexec/getty Pc" xterm onifexists secure
-ttyv5 "/usr/libexec/getty Pc" xterm onifexists secure
-ttyv6 "/usr/libexec/getty Pc" xterm onifexists secure
-ttyv7 "/usr/libexec/getty Pc" xterm onifexists secure
+ttyv1 "/usr/libexec/getty Pc" xterm off secure
+ttyv2 "/usr/libexec/getty Pc" xterm off secure
+ttyv3 "/usr/libexec/getty Pc" xterm off secure
+ttyv4 "/usr/libexec/getty Pc" xterm off secure
+ttyv5 "/usr/libexec/getty Pc" xterm off secure
+ttyv6 "/usr/libexec/getty Pc" xterm off secure
+ttyv7 "/usr/libexec/getty Pc" xterm off secure
ttyv8 "/usr/local/bin/xdm -nodaemon" xterm off secure
# Serial terminals
# The 'dialup' keyword identifies dialin lines to login, fingerd etc.
OSのリビルド
バイナリベースで運用したいなら以後の作業は不要。
/etc/make.conf
#
# System Dependent Configurations
#
CPUTYPE?= cascadelake
KERNCONF?= GENERIC
#
# Package/Ports Dependent Configurations
#
OPTIONS_SET+= ZSH BASH
OPTIONS_SET+= NLS DOCS IPV6 EXAMPLES
OPTIONS_SET+= LZ4 LZO LZO2 LZMA ZLIB ZSTD BROTLI
OPTIONS_SET+= ASM SIMD CPU_OPTS OPTIMIZED_FLAGS OPTIMIZED_CFLAGS
OPTIONS_SET+= X265 SVTHEVC VMAF HI8P HI10P HI12P
OPTIONS_SET+= X3F RPIRAW JPEGICC TIFFICC LIBDE265 IMAGEMAGICK7
OPTIONS_SET+= PNG APNG HEIF JPEG TIFF RAQM LCMS2 JASPER WEBP FREETYPE FONTCONFIG
OPTIONS_SET+= GMP ICU IDN SSL SSH SSH2 GLIB PCAP ICONV SOCKS OPENSSL THREADS
OPTIONS_SET+= PYGMENTS BACKSPACE ONIGURUMA ENCODINGS ETCSYMLINK DEFAULT_VIMRC
OPTIONS_UNSET+= CUPS GDBM TEST DEBUG TESTS OPENMP NETTLE MBEDTLS CA_BUNDLE
OPTIONS_UNSET+= GPG_AGENT HTMLDOCS
OPTIONS_UNSET+= AOM SDL X11 XPM XCB TRACE GCRYPT OPENGL GLESV2
# per port
devel_cmake_UNSET= CPACK MANPAGES
devel_git_UNSET= P4 CVS GITWEB SUBTREE
devel_glib20_SET= FAM_ALTBACKEND
devel_glib20_UNSET= MANPAGES
devel_oniguruma_UNSET= STATISTICS
devel_py-yaml_SET= LIBYAML
dns_bind-tools_SET= MANPAGES
editors_vim-console_SET= MAKE_JOBS
ports-mgmt_portmaster_SET= BASH ZSH
security_dehydrated_UNSET= ZSH
CPUTYPE: 運用するサーバーのCPUに合わせて指定する(指定可能なCPU種別は /usr/share/mk/bsd.cpu.mk で定義されている)。
- ports用のオプションについては以下でインストールする際に要求される選択肢に対して、ある程度手を打つ形で設定している。
- X11関連は無効にする。
- 圧縮系アルゴリズム(ライブラリやその使用)はおおよそ有効にしている。
ImageMagick基準で画像の取り扱いもおおよそメジャーなものは有効にしている。
同じくImageMagick基準で動画の取り扱いもいくらか有効にしている。
- ただHEIF関連については色々と重たい依存関係が発生している点はご容赦願いたい。
Gitコマンドについては軽量指定してる。ガチで使うなら SUBTREE オプションは有効にした方がいい。
- 積極的にOpenSSLを使用するものとし、代替ライブラリ(NETTLEやMBEDTLS等)は選択しない(選択可能なケースで)。
- 最適化はある程度選択するが、極端な最適化を求めると重たすぎるものについては無効にする(OpenMP)。
OSの展開
ベース内にGITコマンドが無いため、GitHubのSubversionサポート機能を利用してとりあえず回避する。
GitHubのSubversionサポート機能はよくエラーが発生するので、何度かトライすること。
git clone する場合はGitHub(二次配布先)からでなく、cgit.freebsd.org から取得すること。
make -j で指定している「n」は sysctl hw.cpu を実行して得た数字+1を指定することを推奨する。
ただしメモリが2GB以下の場合はn=1としておいた方が安全である(-j オプションの指定は不要)。
certctl rehash コマンドの扱いについてメモ。
- 本コマンドの実行は原則不要。
これは make installworld 中に実施される。
ただし etcupdate (mergemaster)では実行されない。
なぜ明記しているのかというと、/etc 以下に対するオペレーションなのだけど、上記2つでカバーできないケースにおいて個別に実施する必要がある。
例えばJAIL内でホスト側の /usr や /bin などのを参照しているケースで、/var や /etc をJAIL固有で持っている場合である。
svnlite co https://github.com/freebsd/freebsd-src.git/branches/releng/13.0 /usr/src
cd /usr/src
make -jn buildworld buildkernel
make installkernel installworld
certctl rehash
etcupdate
etcupdate resolve
ここで一旦再起動する。
cd /usr/src
make -jn buildworld buildkernel
make installkernel installworld
再度再起動を実施。
portsのインストール
パッケージベースで運用したいなら以後の作業は不要。
portsの展開
svnlite co svn://svn.freebsd.org/ports/head /usr/ports
mkdir -p /usr/ports/distfiles
cd /usr/ports; make index
互換設定
- サードパーティシェル(ZSH/BASH)をベースシステムと同じように扱うための設定(主にLinuxディストリビューションとの互換)。
- Perlについて同じく(こちらは気にしないケースが多いかも)。
ln -s /usr/local/bin/zsh /bin/zsh
ln -s /usr/local/bin/bash /bin/bash
ln -s /usr/local/bin/perl /usr/bin/perl
前提インストール
cd /usr/ports/ports-mgmt/dialog4ports && make install clean
cd /usr/ports/ports-mgmt/portconf && make install clean
/usr/local/etc/ports.conf
databases/db5: NO_DIALOG=yes databases/sqlite3: NO_DIALOG=yes devel/apr1: NO_DIALOG=yes devel/git: NO_DIALOG=yes devel/m4: NO_DIALOG=yes devel/pcre: NO_DIALOG=yes devel/py-Jinja2: NO_DIALOG=yes devel/subversion: NO_DIALOG=yes dns/bind-tools: NO_DIALOG=yes ftp/curl: NO_DIALOG=yes lang/perl5.*: NO_DIALOG=yes lang/python*: NO_DIALOG=yes net/rsync: NO_DIALOG=yes security/p5-Authen-SASL: NO_DIALOG=yes security/p5-GSSAPI: NO_DIALOG=yes security/sudo: NO_DIALOG=yes shells/bash: NO_DIALOG=yes shells/zsh: NO_DIALOG=yes sysutils/tmux*: NO_DIALOG=yes textproc/libxml2: NO_DIALOG=yes textproc/py-snowballstemmer: NO_DIALOG=yes www/serf: NO_DIALOG=yes
共通(定番)インストール
cd /usr/ports/shells/zsh && make install clean
cd /usr/ports/shells/bash && make install clean
cd /usr/ports/japanese/less && make install clean
cd /usr/ports/japanese/nkf && make install clean
cd /usr/ports/sysutils/lsof && make install clean
cd /usr/ports/sysutils/topless && make install clean
cd /usr/ports/sysutils/zfs-stats && make install clean
cd /usr/ports/ports-mgmt/portmaster && make install clean
cd /usr/ports/security/makepasswd && make install clean
cd /usr/ports/dns/bind-tools && make install clean
cd /usr/ports/devel/subversion && make install clean
cd /usr/ports/devel/git && make install clean
cd /usr/ports/sysutils/tmux && make install clean
cd /usr/ports/net/rsync && make install clean
cd /usr/ports/editors/vim-console && make install clean
cd /usr/ports/security/sudo && make install clean
cd /usr/ports/security/dehydrated && make install clean
#cd /usr/ports/security/testssl.sh && make install clean
※testssl.sh は13.x環境ではBROKENとなっています(2021年03月時点)。
VMware環境での追加インストール
vmblock はホストとゲスト間でのコピー&ペーストを実現するためのドライバです。
- X11上でしかできない(コンソール相手にはできない)ため無効にします。
/etc/make.conf
emulators_open-vm-tools-nox11_UNSET= DOCS
The Open Virtual Machine Tools のインストール
cd /usr/ports/emulators/open-vm-tools-nox11 && make install clean
sysrc vmware_guest_vmblock_enable="NO"
手動立ち上げ
※再起動すれば自動的に立ち上がるようになっています(デフォルトON)。
service vmware-kmod start
service vmware-guestd start
OSのリビルド環境構築
Gitコマンドが入ったので、
mv /usr/src /usr/src.orig
git clone -b releng/13.0 --depth 1 -b releng/13.0 https://git.freebsd.org/src.git /usr/src
よくある質問とその答え
Q.なんで二回もリビルドしてるのですか?
A.いわゆる完全なクロスコンパイル環境では発生しえませんが、セルフビルド環境ではホストのバイナリが紛れ込むことがあるため、それを排除するために二回リビルドしています。
Q./usr/bin/perl なんて今時…
A.昔作ったスクリプトや他の環境で作ったスクリプトをそのまま運用するための設定ですね。長いこと運用しているとそういうのが…。 そういう意味では /bin/bash の類いはケア(/usr/local/bin/bash でもOKなように)してるケースはあまり見かけませんね。 bash が /bin にあることを前提にしている人が多いように見受けられます。