BSD を試してみよう、第 3 部/全 7 回: FreeBSD、奉仕の力
これは、BSD シリーズのオペレーティング システムに関する 7 部構成のシリーズの第 3 部です。
FreeBSDは最も広く使われているBSDオペレーティングシステムです。amd64、64ビットARM(aarch64)、i386、32ビットARM(armv6、armv7)、RISC-V、PowerPCで動作します。以前、私はこれら3つのBSD(DragonFlyはまだ存在していませんでした)について、「NetBSD = どんなOSでも動く、OpenBSD = 高いセキュリティ、FreeBSD = amd64で最高」と考えていました。
FreeBSD 14.0 をインストールします。
DVDから起動しました。起動にかなり時間がかかりました。2分近くかかりました。そしてインストーラーが起動しました。

なぜ VPS に USB タブレットが接続されているのですか?

グラフィカル インストーラーはありませんが、これはすべての BSD に当てはまると思います。
ここからは、あまり面白くない画面 (キーマップの選択、タイムゾーンの設定など) をスキップし、FreeBSD のインストール プロセスを独特なものにしている点に焦点を当てます。

システムに freebsd という名前を付け、DHCP を使用してネットワークをセットアップしました。

ちょっと調べてみたくてportsを追加しました。FreeBSDにはpackagesとportsがあります。packagesはコンパイルされたバイナリで、Linuxでaptやyumを使う場合と同じです。通常はpackagesがバイナリや設定ファイルのインストールなどを行うので、これが望ましいでしょう。しかし、portsを通してソフトウェアを入手することもできます。portsはソースコードなので、コンパイルしてインストールします。一部のソフトウェアがportsとしてのみ提供される理由は様々ですが、ソフトウェアがpackageとportsの両方を備えている理由も数多くあります(主に、コンパイルフラグを変更したい場合など)。OpenBSDにも同様の仕組みがあるのは知っています。
ここでは、パッケージのみを使用します。

このVPSのRAMは2GBしかなく、「低メモリシステム」でのZFSについて調べることを推奨されていたので、ZFSは使わないことにしました。そんな面倒な作業は不要でした。UFSで十分でしょう。ZFSは、専用サーバーでも仮想ボリュームでも、複数のドライブを搭載したシステムでより便利だと思います。ただし、後者はすでに冗長性を備えています。


デフォルトはMBRです。MBRは随分前に使われなくなったんじゃないでしょうか?

良さそうですね。どの程度のシステム管理者になりたいかによります。理論的には、実行ファイルを許可するファイルシステムを分離したり、ログを追記型に設定したり、/usr/binが破損した場合に備えて静的バイナリをすべて1つのパーティションにまとめたり、誰かがドライブをいっぱいにできないように/varと/homeを分離したりといったことが考えられます。しかし、趣味でVPSを使う場合は、容量節約の方が重要で、ユーザーが私だけなので、このように「オールインワンパーティション」で運用するのが一般的です。
この後、確認/コミットし、パーティションが書き込まれ、上で選択したファイルセットが抽出されました。


現在、システム構成オプションがいくつかあります。

ntpdとntpd_sync_on_startをオンにしました。今思えば、mousedをオフにすべきでした。

マルチユーザー共有ホスティングでは、これらの設定をもっと有効にしておくと良いでしょう。/tmp をクリアし、PID をランダム化し、コンソールでパスワードを要求するのは良いアイデアだと思います(後者は完璧な保護策ではありませんが、ホスティングプロバイダーの退屈な若手システム管理者に対して何もしないよりはましです)。好きな時に dmesg を実行できないのは面倒なので、このシングルユーザーシステムでは、uid や gid などを確認するための他のオプションと同様に、これらを有効にしたままにしています。

論理的に「はい」か「いいえ」で答えられる質問をするなら、誰かが「はい」と答えても驚くようなことではないはずです。うーん。
そしてcsh。なぜダメなのでしょう?ここはBSDのコアの本拠地ですから。(OpenBSDはkshを使っています。)


素敵なロゴですね!

root@freebsd:/etc/rc.d # ./sshd を再起動します sshd 構成の健全性チェックを実行しています。 sshd を停止しています。 PIDS 82151 を待機しています。 sshd 構成の健全性チェックを実行しています。 sshd を起動しています。 root@freebsd:/etc/rc.d #
root@freebsd:~ # ps ax PID TT STAT TIMEコマンド 0 - DL 0:00.00 [カーネル] 1 - ILs 0:00.00 /sbin/init 2 - WL 0:00.23 [時計] 3 - DL 0:00.00 [暗号] 4 - DL 0:00.01 [カム] 5 - DL 0:00.00 [busdma] 6 - DL 0:00.08 [rand_harvestq] 7 - DL 0:00.04 [ページデーモン] 8 - DL 0:00.00 [vmdaemon] 9 - DL 0:00.01 [bufdaemon] 10 - DL 0:00.00 [監査] 11 - RNL 24:35.05 [アイドル] 12 - WL 0:00.37 [挿入] 13 - DL 0:00.00 [geom] 14 - DL 0:00.00 [シーケンサー 00] 15 - DL 0:00.01 [usb] 16 - DL 0:00.00 [vnlru] 17 - DL 0:00.01 [シンカー] 5766 - 0:00.00 dhclient: system.syslog (dhclient) 6231 - 0:00.00 dhclient: vtnet0 [priv] (dhclient) 16963 - IC 0:00.00 dhclient: vtnet0 (dhclient) 17110 - Ss 0:00.05 /sbin/devd 17263 - 0:00.00 sshd: /usr/sbin/sshd [リスナー] 10-100回の起動のうち0回 (s 17834 - Ss 0:00.55 sshd: root@pts/0 (sshd) 58639 - Ss 0:00.02 /usr/sbin/syslogd -s 71089 - Ss 0:00.06 /usr/sbin/ntpd -p /var/db/ntp/ntpd.pid -c /etc/ntp.conf 75845 - Ss 0:00.00 /usr/sbin/cron -s 18973 0 Ss 0:00.03 -sh (sh) 41237 0 R+ 0:00.00 ps 斧 85009 v0 Is+ 0:00.00 /usr/libexec/getty PC ttyv0 85403 v1 Is+ 0:00.00 /usr/libexec/getty PC ttyv1 85703 v2 Is+ 0:00.00 /usr/libexec/getty PC ttyv2 85838 v3 Is+ 0:00.00 /usr/libexec/getty PC ttyv3 86419 v4 Is+ 0:00.00 /usr/libexec/getty PC ttyv4 86767 v5 Is+ 0:00.00 /usr/libexec/getty PC ttyv5 86776 v6 Is+ 0:00.00 /usr/libexec/getty PC ttyv6 87192 v7 Is+ 0:00.00 /usr/libexec/getty PC ttyv7
パッケージのインストール
では、いくつかパッケージをインストールしましょう。FreeBSDのパッケージマネージャはpkg(8)です。manページには次のように書かれています。
pkg(8) がまだインストールされていない場合は、pkg(8) を取得し、署名を検証した後、インストールを行い、元のコマンドを pkg(8) に転送します。既にインストールされている場合は、要求されたコマンドは実際の pkg(8) に転送されます。
とても助かります!
root@freebsd:~ # パッケージ パッケージ管理ツールがシステムにまだインストールされていません。 今すぐ取得してインストールしますか? [y/N]: y pkg+http://pkg.FreeBSD.org/FreeBSD:14:amd64/quarterly から pkg をブートストラップしています。お待ちください... 信頼できる証明書 pkg.freebsd.org.2013102301 を使用して署名を検証しています...完了 pkg-1.21.2 をインストールしています... pkg-1.21.2 を抽出中: 100% pkg: 引数が足りません 使用法: pkg [-v] [-d] [-l] [-N] [-j |-c |-r ] [-C ] [-R ] [-o var=value] [-4|-6][] 利用可能なコマンドとオプションの詳細については、「pkg help」を参照してください。 root@freebsd:~ # pkg search nginx pkg: リポジトリ FreeBSD が見つかりません。「pkg update」が必要です ^パッケージ: 信号受信、クリーンアップ中 root@freebsd:~ # パッケージアップデート FreeBSD リポジトリ カタログを更新しています... meta.conf を取得中: 100% 178 B 0.2kB/s 00:01 data.pkg を取得中: 100% 7 MiB 7.3MB/秒 00:01 エントリの処理: 100% FreeBSD リポジトリの更新が完了しました。34072 個のパッケージが処理されました。 すべてのリポジトリは最新です。 ルート@freebsd:~ #
まずはwgetから始めましょう。
root@freebsd:~ # パッケージ検索 wget wget-1.24.5 HTTP(S) および FTP 経由でネットからファイルを取得する wget2-2.1.0_1 ファイルおよび再帰的なウェブサイトダウンローダー wgetpaste-2.34 bash スクリプト経由で複数の pastebin サービスに貼り付ける root@freebsd:~ # pkg インストール wget FreeBSD リポジトリ カタログを更新しています... FreeBSD リポジトリは最新です。 すべてのリポジトリは最新です。 データベースダイジェスト形式の更新: 100% 次の 5 つのパッケージが影響を受けます (チェックされている 0 個中)。 インストールする新しいパッケージ: gettext ランタイム: 0.22.5 インデックス情報: 0.3.1 libidn2: 2.3.7 libunistring: 1.2 wget: 1.24.5 インストールするパッケージの数: 5 このプロセスには 8 MiB の追加スペースが必要になります。 2 MiB をダウンロードします。 この操作を続行しますか? [y/N]: y [1/5] wget-1.24.5.pkg を取得中: 100% 774 KiB 792.9kB/s 00:01 [2/5] indexinfo-0.3.1.pkg を取得中: 100% 6 KiB 6.0kB/s 00:01 [3/5] libidn2-2.3.7.pkg を取得中: 100% 155 KiB 159.1kB/s 00:01 [4/5] libunistring-1.2.pkg の取得: 100% 680 KiB 696.1kB/s 00:01 [5/5] gettext-runtime-0.22.5.pkg を取得中: 100% 231 KiB 236.7kB/s 00:01 整合性をチェックしています...完了 (競合 0 件) [1/5] indexinfo-0.3.1 をインストールしています... [1/5] indexinfo-0.3.1 の抽出: 100% [2/5] libunistring-1.2 をインストールしています... [2/5] libunistring-1.2 の抽出: 100% [3/5] libidn2-2.3.7 をインストールしています... [3/5] libidn2-2.3.7 の抽出: 100% [4/5] gettext-runtime-0.22.5 をインストールしています... [4/5] gettext-runtime-0.22.5 の抽出: 100% [5/5] wget-1.24.5 をインストールしています... [5/5] wget-1.24.5 の抽出: 100% ルート@freebsd:~ # root@freebsd:~ # mkdir /root/swdist root@freebsd:~ # cd /root/swdist/ root@freebsd:~/swdist # wget https://wordpress.org/latest.zip --2024-05-25 19:05:14-- https://wordpress.org/latest.zip wordpress.org (wordpress.org) を解決しています... 198.143.164.252 wordpress.org (wordpress.org)|198.143.164.252|:443 に接続しています...接続されました。 HTTP リクエストが送信され、応答を待っています... 200 OK 長さ: 26193148 (25M) [application/zip] 保存先: 'latest.zip' latest.zip 100%[====================>] 0.1秒で24.98M --.-KB/秒 2024-05-25 19:05:15 (183 MB/秒) - 'latest.zip' を保存しました [26193148/26193148] root@freebsd:~/swdist # root@freebsd:~/swdist # pkg インストール 解凍 FreeBSD リポジトリ カタログを更新しています... FreeBSD リポジトリは最新です。 すべてのリポジトリは最新です。 次の 1 つのパッケージが影響を受けます (チェックされた 0 個中): インストールする新しいパッケージ: 解凍: 6.0_8 インストールするパッケージの数: 1 ダウンロードするには 140 KiB が必要です。 この操作を続行しますか? [y/N]: y [1/1] unzip-6.0_8.pkg を取得中: 100% 140 KiB 143.1kB/s 00:01 整合性をチェックしています...完了 (競合 0 件) [1/1] unzip-6.0_8 をインストールしています... [1/1] unzip-6.0_8 を解凍中: 100%
ここで、Nginx、MariaDB、PHP-FPM が必要になります。
root@freebsd:~/swdist # pkg install nginx mariadb php-fpm FreeBSD リポジトリ カタログを更新しています... FreeBSD リポジトリは最新です。 すべてのリポジトリは最新です。 pkg: リポジトリ内に 'mariadb' に一致するインストール可能なパッケージが見つかりません pkg: リポジトリ内に 'php-fpm' に一致するインストール可能なパッケージが見つかりません root@freebsd:~/swdist # pkg search mariadb mariadb-connector-c-3.3.8_1 C用MariaDBデータベースコネクタ mariadb-connector-odbc-3.1.20 odbc 用の MariaDB データベース コネクタ mariadb1011-client-10.11.7 マルチスレッド SQL データベース (クライアント) mariadb1011-server-10.11.7 マルチスレッド SQL データベース (サーバー) mariadb105-client-10.5.23 マルチスレッド SQL データベース (クライアント) mariadb105-server-10.5.23 マルチスレッド SQL データベース (サーバー) mariadb106-client-10.6.17 マルチスレッド SQL データベース (クライアント) mariadb106-server-10.6.17 マルチスレッド SQL データベース (サーバー) p5-DBD-MariaDB-1.21 Perl5 データベース インターフェース (DBI) 用の MariaDB ドライバー rubygem-azure_mgmt_mariadb-0.17.4 Microsoft Azure Microsoft Azure MariaDB Ruby 用ライブラリ Ruby 用クライアント ライブラリ
つまり、仮想パッケージは存在しないということですね。また、php-fpm は独立したパッケージではなく、PHP に含まれていることがわかりました。さて、本題に入りましょう。
root@freebsd:~/swdist # pkg インストール mariadb106-server mariadb106-client php83 FreeBSD リポジトリ カタログを更新しています... FreeBSD リポジトリは最新です。 すべてのリポジトリは最新です。 次の 18 個のパッケージが影響を受けます (チェックされた 0 個中)。 インストールする新しいパッケージ: バッシュ: 5.2.26_1 ブーストライブラリ: 1.84.0 ガレラ26: 2016年4月26日_2 icu: 74.2_1,1 libargon2: 20190702_1 libedit: 3.1.20230828_1,1 libiconv: 1.17_1 liblz4: 1.9.4_1,1 libxml2: 2.11.7 mariadb106-クライアント: 10.6.17 mariadb106-server: 10.6.17 pcre2: 10.43 php83: 8.3.6 リードライン: 8.2.10 rsync: 3.3.0 unixODBC: 2.3.12_1 xxハッシュ: 0.8.2_1 バージョン: 1.5.6 インストールするパッケージの数: 18 このプロセスには 589 MiB の追加スペースが必要になります。 ダウンロードサイズは 87 MiB です。 この操作を続行しますか? [y/N]: mariadb106-server-10.6.17からのメッセージ: -- MariaDBはhier(7)を尊重し、/etcと/etc/mysqlをチェックしません。 my.cnf。既存のmy.cnfファイルをこれらのパスから /usr/local/etc/mysql または /usr/local/etc。サンプル 設定ファイルは/usr/local/etc/mysqlに提供されています。 および /usr/local/etc/mysql/conf.d。 rc(8)スクリプトは設定に/var/db/mysql/my.cnfを使用しなくなりました。 ログと PID ファイルには /var/db/mysql も使用されません。 このポートにはmytop perlスクリプトは含まれていません。これは MariaDBのtarballですが、最新バージョンは データベース/mytop ポート wsrep クラスタリングを使用するには、構成ファイルを追加する必要があります。 /usr/local/etc/mysql/conf.d/wsrep.conf.sampleをコピーして /usr/local/etc/mysql/conf.d/wsrep.conf にアクセスし、そこで必要なものを変更します。
上記のコマンドに入れるのを忘れていた php83-extensions と nginx もインストールしました。
この「MariaDBからのメッセージ」から多くのことを学びました。hier(7)のマニュアルページを読んで、FreeBSDではローカルにインストールされたソフトウェアは/usr/localに置かれるシステムを採用していることを知りました。/usr/localが何なのかは分かりましたが、Linuxの世界では、ディストリビューションのパッケージマネージャーから何かをインストールすると、/usr/binなどに置かれます。自分でソフトウェアをダウンロード、ビルド、インストールする場合は、通常/usr/localに置かれます。FreeBSDが言っているのは、「作成者が作成したファイルシステムは純粋なままであるべきであり、サイトのカスタマイズ、ソフトウェアのインストール、ソースコードなどはすべて/usr/localに置いて構わない」ということです。
奉仕:奉仕する力
Unix が他の Unix と異なる点の 1 つは、通常、起動/初期化にありますが、FreeBSD も例外ではありません。
サービスを開始、停止、再起動などするには、次のように呼び出します。
nginxサービスの再起動
しかし、「service nginx enable」という項目がありません。起動時にNginxを起動するには、/etc/rc.confを編集する必要があります。
そのファイルには次のような行があります。
mysql_enable="はい" nginx_enable="はい"
どうやら、このファイルを編集するだけで済むようです。しかし、FreeBSD では sysrc コマンドを使って編集します。
sysrc nginx_enable="はい"
「<サービス名>_enable」という構文は、私には少し扱いにくいように思います。シェルスクリプトがこのファイルを読み込んでいるためだとは思いますが、/etc/services_enabled を作成して有効化するサービスをリストアップする方がずっと分かりやすいでしょう。
WordPress の配信準備
一つ一つのコマンドを詳しく説明するのは退屈なのでやめておきます。私が実行したコマンドは以下のとおりです。
mysql_secure_installationを実行しました。
nginx をインストールした後、/usr/local/etc/nginx/nginx.conf を変更して /usr/local/etc/nginx/sites を含めました。これは、Debian の sites-enabled/sites-available セットアップに似ていますが、もう少し手軽です。
これを行うための具体的な指示は次のとおりです。
/usr/local/etc/nginx/sites/* をインクルードします。
blog.lowend.party nginx 設定を作成しました。
php-fpm のチューニングを何も変更せずに開始しました。
root@freebsd:/usr/local/etc # サービス php-fpm を開始 php_fpm を 'start' できません。/etc/rc.conf で php_fpm_enable を YES に設定するか、'start' の代わりに 'onestart' を使用してください。 root@freebsd:/usr/local/etc # sysrc php_fpm_enable="YES" php_fpm_enable: -> はい root@freebsd:/usr/local/etc # root@freebsd:/usr/local/etc # サービス php-fpm を開始 php-fpm 構成の健全性チェックを実行します。 [2024年5月26日 09:40:03] 通知: 設定ファイル /usr/local/etc/php-fpm.conf のテストが成功しました php_fpm を起動しています。
/usr/local/etc/php-fpm.d/www.conf を見ると、php-fpm が 127.0.0.1:9000 を使用していることがわかります。Unix ソケットを使いたいのですが、どこに配置すればいいでしょうか?
root@freebsd:/usr/local/etc# find / -type s -print /var/run/devd.pipe /var/run/devd.seqpacket.pipe /var/run/log /var/run/logpriv /var/run/mysql/mysql.sock
/var/run がその場所のようです。
さて、ディレクトリをいくつか作成してサイトの設定をしましょう。サイト名はblog.lowend.partyです。私はすべてを/web以下に整理するのが好きです。nginxはユーザー「www」、グループ「www」で実行されます。
root@freebsd:/usr/local/etc/nginx/sites # mkdir /var/log/nginx/blog.lowend.party/ root@freebsd:/usr/local/etc/nginx/sites # cd /var/log/nginx/blog.lowend.party/ root@freebsd:/var/log/nginx/blog.lowend.party # touch アクセス.log エラー.log root@freebsd:/var/log/nginx/blog.lowend.party # chown www:www *.log root@freebsd:/var/log/nginx/blog.lowend.party # cd .. root@freebsd:/var/log/nginx # chgrp www blog.lowend.party/ root@freebsd:/var/log/nginx # chmod 775 blog.lowend.party/ root@freebsd:/var/log/nginx # ls -ld blog.lowend.party/ drwxrwxr-x 2 ルート www 512 5月26日 09:45 blog.lowend.party/ root@freebsd:/var/log/nginx # ls -lR blog.lowend.party/ 合計 0 -rw-r--r-- 1 www www 0 5月26日 09:45 アクセス.log -rw-r--r-- 1 www www 0 5月26日 09:45 error.log root@freebsd:/var/log/nginx #
ところで、viで何かをコピーするときにハイライトすると、最初に
:mouse-=a
vim と同じように。FreeBSD は BSD 由来の vi を使用しているためです。
root@freebsd:/usr/local/etc/nginx # mkdir -p /web/blog.lowend.party root@freebsd:/usr/local/etc/nginx # vi /web/blog.lowend.party/index.html
今のところうまくいっていますか?

では、さらにいくつかのことをやってみましょう。
FreeBSDについてもっと学ぶ
certbot をインストールしました。面白いことに:
root@freebsd:/usr/local/etc/nginx # pkg install py39-certbot-nginx FreeBSD リポジトリ カタログを更新しています... FreeBSD リポジトリは最新です。 すべてのリポジトリは最新です。 新しいバージョンの pkg が検出されました。最初にこれをインストールする必要があります。 次の 1 つのパッケージが影響を受けます (チェックされた 0 個中): アップグレード対象のインストール済みパッケージ: パッケージ: 1.21.2 -> 1.21.3 アップグレードするパッケージの数: 1 ダウンロードするには12 MiBが必要です。 この操作を続行しますか? [y/N]: y
それで、仕事の合間にたまたまpkgの新しいアップデートがリリースされたんです。NetcraftによるとBSDは死につつあるらしい…なんてこった。
Certbotパッケージは、証明書を更新するために/etc/periodic.confを修正する必要があると提案しました。しかし、このファイルは存在しませんでした。そこで、論理的に考えてman periodic.confを実行しました。そこで、以下のことを知りました。
これは /etc/defaults ディレクトリに存在し、一部は /etc 内の同じ名前のファイルによって上書きされる可能性があり、そのファイル自体は /etc/periodic.conf.local ファイルによって上書きされる可能性があります。
/etc/defaults/periodic.conf には次のように書かれています:
このファイルを編集しないでください。上書きは
# 代わりに $periodic_conf_files
...
# これらのデフォルトを上書きするファイルはどれですか?
periodic_conf_files="/etc/periodic.conf /etc/periodic.conf.local ${_localbase}/e
tc/periodic.conf"ここで、DNS が機能しているかどうかを確認したかったので、次の操作を実行しました。
# nslookup blog.lowend.party -sh: nslookup: 見つかりません
ほぼすべてのLinuxディストリビューションやOSと同様に、nslookupが含まれているパッケージを見つけるにはGoogleで検索する必要がありました。ところが、Googleは私を惑わせました。最初に見つけたフォーラムのコメントには、nslookupはbindの一部で、unboundに置き換えられたと書かれていました。
しかし、「pkg install unbound」ではインストールされていなかったので、「pkg remove unbound」を実行しました。ちょっと待ってください…「bind tools」タイプのパッケージはあるのでしょうか? 案の定、ありました
pkg インストール bind-tools
この時点で、シェルを酷使していたため、bashシェルが恋しくなっていました。幸いにもインストールされていて、実際には/etc/shellsに既に設定されていました。
bash -o vi
ああ、爽快ですね。大切な道具が交換されると、反発してしまうのが人間の性でしょうか。
ちなみに、私は root 用にこれを変更しませんでした。FreeBSD に貢献しているさまざまなエンジニアが、root のデフォルト シェルで実行されることを前提としてコードを記述しているからです。
WordPressの最終版
MySQLデータベースやユーザーなどを作成しました。
データベースをWordPressで作成します。 'StrongPassword' で識別されるユーザー 'wordpress'@'localhost' を作成します。 wordpress.* のすべての権限を 'wordpress'@'localhost' に付与します。
権限をフラッシュするのは愚かなので、行いませんでした。
cd /web/blog.lowend.party/ cp /root/swdist/latest.zip /root/swdist/latest.zip を解凍します。 rm インデックス.html mv wordpress/* 。 rmdir ワードプレス
インストールの準備はできたと思います。では見てみましょう:

いやああああ…
最初に考えたのは、php-fpm がダウンしている(実際にはダウンしていなかった)か、設定ミスか… もしかしたらそうだったのかもしれない。Unix ソケットを使用するように変更していたので、Nginx のログに権限拒否エラーが表示されていた。/var/run/php-fpm.sock のパーミッションを変更した方がいいのだろうか? うーん、代わりに 127.0.0.1:9000 を使用するように変更し、nginx のサイト設定も更新した。
その後:

そしてその時点で、私たちは WordPress に夢中になっています。
Phoronixを試してみましょう
pkg インストール phoronix-test-suite-php83-10.8.4_2
これは成功したが、
phoronix-test-suite nginx をインストール
結果:
インストーラーはゼロ以外の終了ステータスで終了しました。
エラー: make: 致命的なエラーが発生しました - 続行できません
ログ: ~/.phoronix-test-suite/installed-tests/pts/nginx-3.0.1/install-failed.log
[問題] pts/nginx-3.0.1 がインストールされていません。
ログには次のようなエラーが多数あります:
sed: 1: "nginx_/conf/nginx.conf": n コマンドの末尾に余分な文字があります sed: 1: "nginx_/conf/nginx.conf": n コマンドの末尾に余分な文字があります sed: 1: "nginx_/conf/nginx.conf": n コマンドの末尾に余分な文字があります sed: 1: "nginx_/conf/nginx.conf": n コマンドの末尾に余分な文字があります sed: 1: "nginx_/conf/nginx.conf": n コマンドの末尾に余分な文字があります sed: 1: "nginx_/conf/nginx.conf": n コマンドの末尾に余分な文字があります tar: デフォルトのロケールを設定できませんでした make: "/root/.phoronix-test-suite/installed-tests/pts/nginx-3.0.1/wrk-4.2.0/Makefile" 6行目: 無効な行タイプです make: "/root/.phoronix-test-suite/installed-tests/pts/nginx-3.0.1/wrk-4.2.0/Makefile" 9行目: 無効な行タイプです make: "/root/.phoronix-test-suite/installed-tests/pts/nginx-3.0.1/wrk-4.2.0/Makefile" 10行目: 警告: ターゲット "ifeq" の重複スクリプトは無視されます make: "Makefile" 行 8: 警告: ここで定義されている "ifeq" の以前のスクリプトを使用しています
問題があるのは私の nginx.conf ではありません:
# nginx -t nginx: 設定ファイル /usr/local/etc/nginx/nginx.conf の構文は正常です nginx: 設定ファイル /usr/local/etc/nginx/nginx.conf のテストが成功しました
GitHubからpkgを削除してインストールしようかと思ったのですが、GitHubにはFreeBSDのpkgと同じバージョンが置いてありました。まあ、私の知識では無理ですね。公平を期すために言うと、PTSはこう言っています。
Phoronix Test Suiteは、Linux、*BSD、Solaris、macOS、Windowsシステムでサポートされています。ただし、テストを実行するための最も機能が豊富でサポートが充実したオペレーティングシステムはLinuxです。
なぜ起動が遅いのか?というか、なぜ起動が遅くなるようにしたのか…
そのため、ISO から起動すると、起動に長い時間がかかりました。これは、何らかのインストール カーネルが大量の追加プローブを実行したり、インストール/検出スクリプトを大量に実行したりしているためだと思いました。
しかし、私はこれまで 3 回再起動し、コンソールで確認しましたが、同じことが見られます。
ロゴが表示され、自動起動のカウントダウンが始まった後、カーネルがロードされます。最初の5~6秒間は、多くのメッセージが流れ、処理が急速に進んでいるように見えます。その後、次の画面が表示されます。

この時点で、約1分45秒間画面が静止します。その後、画面が突然このように変化します。「変化する」というのは、スクロールではなく画面全体が更新され、このように表示されるからです。

最初は、最初の起動/セットアップの完了時にハングアップが発生したのではと考えましたが、3 回の再起動後も問題は変わりません。
2つのことが起こっていると思います。まず、表示のバグかリセットが更新されていないため、1分45秒のハングのうち、どれくらいがハングなのか、どれくらいが上記の2番目の画面のメッセージの表示にかかっているのかわかりません。次に、タイムアウトか起動に時間がかかっているかのどちらかです。FreeBSDがエンタープライズグレードのサーバーで起動に2分もかかるなんてあり得ませんよね?
まあ、FreeBSD の問題なのか、それとも私が何かミスをしたのか、確認してみましょう。Vultr で同じ仕様の freebsd2 VM を作成しました。今回は FreeBSD 14.0 テンプレートを使用しました。
そして、その VM は約 6.5 秒で起動します。
そうですね、次の 2 つのうちのいずれかが考えられます。
- 私は初心者のFreeBSDシステム管理者として何かを台無しにしました
- Vultr上のFreeBSDには、Vultrが認識していて私が認識していない最適化が必要です。パラメータの調整、ハードウェアサポートの追加(または削除)、特定のカーネル設定などが必要になる可能性があります。フォーラムでテンプレートとISOインストールを比較する時間があれば、原因を突き止められると思います。
私は Vultr で FreeBSD を実行するつもりだったので、そのテンプレートを使用するつもりでした。
さらなる研究
以下の点についてさらに詳しく知りたいです:
- jail は、chroot とコンテナーの中間に位置しますが、おそらく両方の要素を少しずつ持っています。
- FreeBSDの強制アクセス制御、またはBSDのselinux
- ZFS
最後に
/usr/local の分離は非常に気に入っています。pkg は宣伝通りの動作をしているようです。多くの問題は、Linux ディストリビューション間の移行でも発生するものです(インストーラの動作、nslookup が有効なパッケージなど)。一部の finger マクロは調整が必要でしょう。
もちろん、ブートの問題やその他の問題を解決する必要がありますが、FreeBSDは決して異質なものではなく、日常的に快適に使えると思います。その他の感想は結論まで残しておきます!
次は: NetBSD!