10
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

FreeBSD入門シリーズ

Part1 導入 Part2 pkg/ports Part3 jail Part4 ZFS Part5 bhyve
👈 Now - - - -

はじめに

Linuxばっかり使ってると、なんか飽きてこない?

Ubuntu、Arch、Debian、Fedora...全部試したけど、結局カーネルは同じLinux。

「もっと違う世界を見てみたい」

そう思ってFreeBSDに手を出してみた。

FreeBSDとは

FreeBSDは1993年に生まれたUNIX系OS。Linuxより古い。

BSD系譜
┌────────────────────────────────────────┐
│ 1969  UNIX (AT&T Bell Labs)            │
│   ↓                                    │
│ 1977  BSD (Berkeley)                   │
│   ↓                                    │
│ 1993  FreeBSD / NetBSD                 │
│   ↓                                    │
│ 1995  OpenBSD (NetBSDから分岐)          │
│   ↓                                    │
│ 2000  macOS (FreeBSDベース)            │
└────────────────────────────────────────┘

LinuxとFreeBSDの違い

項目 Linux FreeBSD
カーネル Linux FreeBSD
ライセンス GPL BSD
パッケージ管理 apt/yum/pacman等 pkg/ports
init systemd等 rc.d
コンテナ Docker/LXC jail
ファイルシステム ext4/btrfs/XFS UFS/ZFS
仮想化 KVM/QEMU bhyve

特に大きな違いは:

  1. BSDライセンス: GPLより自由。商用利用しやすい
  2. ベースシステム: カーネルとユーザーランドが一体で開発される
  3. jail: Dockerより前からあるコンテナ技術
  4. ZFS: 最強のファイルシステムが標準搭載

インストール

ISOダウンロード

# FreeBSD 14.2-RELEASE (執筆時点の安定版)
wget https://download.freebsd.org/releases/amd64/amd64/ISO-IMAGES/14.2/FreeBSD-14.2-RELEASE-amd64-disc1.iso

VirtualBoxで試す場合

メモリ: 2GB以上
ストレージ: 20GB以上
ネットワーク: ブリッジアダプター

インストーラー

FreeBSDのインストーラーはbsdinstall。テキストベースだけど直感的。

┌──────────────────────────────────────────────────────────────┐
│                    Welcome to FreeBSD!                        │
│                                                               │
│  To begin an installation, press I.                          │
│  To boot the FreeBSD live system, press L.                   │
│  To boot into FreeBSD live CD with a shell, press S.         │
│                                                               │
│  To select a country keyboard layout, press K.               │
│                                                               │
│  Autoboot in 10 seconds. Press any key to interrupt...       │
└──────────────────────────────────────────────────────────────┘

キーボード設定

Keymap Selection
┌────────────────────────────────────────┐
│ >>> Continue with default keymap      │
│     Test default keymap               │
│     Select keymap from list           │
└────────────────────────────────────────┘

日本語キーボードなら「Select keymap from list」→「Japanese 106」を選択。

ホスト名設定

Set Hostname
┌────────────────────────────────────────┐
│ Please choose a hostname for this     │
│ machine.                              │
│                                       │
│ Hostname: freebsd-test                │
└────────────────────────────────────────┘

パーティション

Partitioning
┌────────────────────────────────────────┐
│  Auto (ZFS)  - Guided Root-on-ZFS     │
│  Auto (UFS)  - Guided UFS             │
│  Manual      - Manual Disk Setup      │
│  Shell       - Open a shell           │
└────────────────────────────────────────┘

ZFSを強く推奨。FreeBSD使うなら絶対ZFS。

ネットワーク設定

Network Configuration
┌────────────────────────────────────────┐
│ em0: Intel(R) PRO/1000 Network        │
│                                       │
│ Would you like to configure IPv4?     │
│           [ Yes ]  [ No ]             │
└────────────────────────────────────────┘

DHCPでOK。

初期設定

rootでログイン

FreeBSD/amd64 (freebsd-test) (ttyv0)

login: root
Password: (インストール時に設定したパスワード)

ユーザー追加

# wheelグループに追加(sudo的な権限)
adduser
Username: aqua
Full name: Aqua
Uid (Leave empty for default):
Login group [aqua]:
Login group is aqua. Invite aqua into other groups? []: wheel
Login class [default]:
Shell (sh csh tcsh nologin) [sh]: tcsh
Home directory [/home/aqua]:
Home directory permissions (Leave empty for default):
Use password-based authentication? [yes]:
Use an empty password? (yes/no) [no]:
Use a random password? (yes/no) [no]:
Enter password:
Enter password again:
Lock out the account after creation? [no]:

sudoのインストール

FreeBSDにはデフォルトでsudoが入っていない。

pkg install sudo

初回はpkgのブートストラップを聞かれる:

The package management tool is not yet installed on your system.
Do you want to fetch and install it now? [y/N]: y

sudoersの設定:

visudo
# %wheel ALL=(ALL) ALL
↓
%wheel ALL=(ALL) ALL  # コメントを外す

SSHの有効化

# /etc/rc.confに追加
sysrc sshd_enable="YES"

# 起動
service sshd start

sysrcはFreeBSD特有のコマンドで、/etc/rc.confを安全に編集できる。

ディレクトリ構成

FreeBSDのディレクトリ構成はLinuxと似てるけど、微妙に違う:

/
├── bin/        # 基本コマンド
├── sbin/       # システム管理コマンド
├── usr/
│   ├── bin/    # ユーザーコマンド
│   ├── sbin/   # システム管理コマンド
│   ├── local/  # サードパーティソフト (pkg/portsでインストールされる)
│   └── src/    # FreeBSDソースコード
├── etc/        # 設定ファイル
├── var/        # 可変データ
├── tmp/        # 一時ファイル
├── boot/       # ブートローダー
└── rescue/     # 緊急用コマンド

重要: /usr/local/がLinuxの/usr/に相当。pkgでインストールしたものはここに入る。

基本コマンドの違い

やりたいこと Linux FreeBSD
サービス起動 systemctl start xxx service xxx start
自動起動設定 systemctl enable xxx sysrc xxx_enable="YES"
パッケージ検索 apt search xxx pkg search xxx
パッケージ更新 apt update && apt upgrade pkg update && pkg upgrade
ネットワーク確認 ip addr ifconfig
プロセス確認 ps aux ps auxww

システム情報の確認

# FreeBSDバージョン
freebsd-version
# 14.2-RELEASE

# カーネルバージョン
uname -a
# FreeBSD freebsd-test 14.2-RELEASE FreeBSD 14.2-RELEASE releng/14.2-n269506-c8918d6c7412 GENERIC amd64

# CPU情報
sysctl hw.model
# hw.model: Intel(R) Core(TM) i7-8700 CPU @ 3.20GHz

# メモリ情報
sysctl hw.physmem
# hw.physmem: 8589934592

# ディスク使用量
df -h

まとめ

今回はFreeBSDのインストールと初期設定をやった。

感想:

  • インストーラーがシンプルで分かりやすい
  • pkgがデフォルトで入ってないのは戸惑う
  • sysrcコマンドが地味に便利
  • ZFSが標準で使えるのは嬉しい

Linuxとの違いで一番戸惑うのは

  • systemdがない(rc.dを使う)
  • /usr/local/にサードパーティが入る
  • aptじゃなくてpkg

でも基本的なUNIXコマンドは同じだから、そこまで困らない。

次回予告

Part2: pkg/ports、パッケージ管理が2種類ある謎

FreeBSDにはpkg(バイナリ)とports(ソース)という2つのパッケージ管理システムがある。なぜ2つあるのか、どう使い分けるのかを解説するよ。

この記事が役に立ったら、いいね・ストックしてもらえると嬉しいです!

10
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?