まえがき

Lenovo ideapad 310-15IKBにFreeBSD 14をインストールし、デスクトップ環境を設定した際のメモ書きです。
本記事では、FreeBSDのパッケージ管理ツールとしてportsではなくpackages(pkg)を使用することを前提とします。

ディスプレイが取り除かれたLenovo ideapad-310が机の上に乗っている。その向こうには画像上半分を覆い尽くすほど巨大な液晶ディスプレイがあり、LXQt(デスクトップ環境)の画面が表示されている。「Ixy氏描きおろしMisskey.io公式メモリアルイラスト」が壁紙として設定されている。
セットアップを終え、使用している様子。壁紙には「Ixy氏描きおろしMisskey.io公式メモリアルイラスト」を設定しています。買え。

経緯

学生時代に7万円台で新品購入し、当時は金欠だったので長らくメインとして使っていました。当初はRAM4GB+HDD500GBという今では考えられない構成で使っていましたが、Core i3-3217Uから乗り換えたためこれでもかなり速く感じました。
その後RAMとストレージを交換し、Windows 10とUbuntuのデュアルブート環境で使用していました。
Core i7-8565U搭載の機種を入手後はサブ機として、Core i7-10700搭載の自作PC(Fedora LinuxとWindows 11のデュアルブート)を組んでからはFedoraを使用中にWindows環境が必要になったときのみ押し入れから引っ張り出していました。
先月(2024年8月)に入ってから、FreeBSDをGUI環境で使いたい欲求が高まり、Windowsを上書きするかたちでFreeBSD 14をインストールしました。

スペック

今では第7世代(Kaby Lake)のCPUを搭載したPCが中古ショップで1万円台で入手できるようになりました。時代の流れを感じます。
使用感としては、デスクトップ用途としてぎりぎり使える最低限のラインといった感じです。ちなみに、最近話題のIntel N100はシングル・マルチともにベンチマークスコアでi7-7500Uを上回っています。X、MisskeyやYouTubeなどの重めのWebサイトを開くと描画がガクガクしますが、LibreOfficeやGIMPでの軽い編集、VSCodeによるソースコードの編集はモタつくことなくこなせています。RAMも12GBあるので日常的な使用ではSwap領域が使われることはほとんどありません。
あと、購入当時は気にしませんでしたが、やっぱりテンキーがあると使いにくいですね。キーボードの中心が左に寄っていますし、かなりの頻度で誤ってNumLockを押してしまいます。今後テンキー付きの製品は買うことはないでしょう。

Lenovo ideapad 310-15IKB
CPUIntel Core i7-7500U(2C/4T, 2.70-3.50GHz, 4MB Cache)PassMarkのベンチ結果
RAMDDR4 4GB (オンボード 4GB) → 12GB (オンボード 4GB + スロット 8GB)
ストレージSATA HDD 500GB → SATA SSD 500GB
OSWindows 10 → Windows 10 + Ubuntu(デュアルブート) → Windows 11(裏技でインストール) → FreeBSD 14

手始めにディスプレイをもぎ取る

このPCは去年(2023年)にヒンジのネジ受け部分のプラスチックが劣化してヒビが入っています。右側のヒンジは完全に宙に浮き、左側もゆるくなっていました。そのためディスプレイを開くとバリバリとものすごい音を立ててキーボード側の金属パネルと筐体裏側のプラスチックの隙間から内部が見えるほど歪みます。たまにしか使わないので放置していましたが、基板や配線にダメージが入ることが心配になり、思い切ってディスプレイを切り離し、「キーボード一体型PC」として余生を過ごしてもらうことにしました。HDMI接続で外部ディスプレイをつなぐと、BIOS画面も問題なく表示されます。
ideapad 310は廉価なモデルなので仕方ない部分もありますが、ネジ受けの部分だけでも金属で作るべきだと思います。
切り離したディスプレイは、適合する液晶コントローラーを購入して外付けディスプレイとして使う予定です。

Wi-Fiアンテナはディスプレイ側に内蔵されていますが、ディスプレイの外装を開けることでかんたんに取り外すことができます。取り外したアンテナは排気口の横に養生テープでくっつけました。
Windows 11(FreeBSDではドライバが初期搭載されていなかったためまだ未検証)で試したところ、問題なくWi-Fiが利用できています(ディスプレイ側には電波を伝達させるための金属部品がついていたため、この改造によって多少電波強度が弱くなった可能性はあります)。

気になる点としては、カバーがない状態では電源ボタンがものに触れるなどして意図せず電源が入ってしまい、そのままバッテリー切れとなることがあります。持ち運びには向きません。

ディスプレイが取り除かれたLenovo ideapad-310を手に持った様子。

FreeBSD 14をインストールする

USBメモリの準備

FreeBSDの公式Webサイトからamd64版のインストーラー(FreeBSD-XX.X-RELEASE-amd64-memstick.img)の最新版をダウンロードします。Linux/BSD/macOSの場合はddコマンド、Windowsの場合はWin32 Disk ImagerRufus等のツールを使用してUSBメモリに書き込みます。
VentoyやDVDを使用する場合はFreeBSD-XX.X-RELEASE-amd64-disc1.isoの最新版をダウンロードします。

以下はFedora 40の例です:

  1. USBメモリをPCに差し込みます
  2. 書き込み対象のUSBメモリのデバイス名(例:/dev/sdbなど)を確認します:
    $ sudo fdisk -l
  3. 書き込み対象のUSBメモリをアンマウントします:
    $ umount /dev/sdb
  4. IMGファイルをUSBメモリに書き込みます:

    デバイス名を間違えないように注意してください。

    syncコマンドを忘れて書き込み途中でUSBメモリを抜かないように注意してください。

    $ sudo dd if=./example.iso of=/dev/sdb bs=4M status=progress && sync

セキュアブートを無効化する

ideapad 310にはセキュアブート機能が搭載されており、Windowsや一部のLinuxディストリビューションを除いたほとんどのOSが起動しないようになっています。そこで、FreeBSDをセットアップする前にセキュアブートを無効化しておきます。

  1. いったん電源を切り、F2キーを連打しながら電源を入れます
  2. BIOSセットアップ画面の「Security」タブに移動し、「Secure Boot」オプションが「Disabled」に設定されていることを確認します
  3. ついでに「Boot」タブの「Boot Mode」オプションが「UEFI」に設定されていることも確認します(FreeBSDはUEFIに対応しているため)

インストーラーを起動する

  1. FreeBSDのインストーラが書き込まれたUSBメモリを差し込みます(インストールにかかる時間を短縮するため、左側にある青いUSB 3.0ポートを使用してください)
  2. 一旦電源を切り、F12キーを連打しながら電源を入れます
  3. 先ほど差し込んだUSBメモリを一覧から選択し、FreeBSDのインストーラが起動するのを待ちます
  4. 「Welcome to FreeBSD」と書かれた起動メニューが表示されたら、Enterキーを押下するか、そのまましばらく待つとFreeBSDのインストーラーが起動します

インストール作業

公式ドキュメントをよく読みながら進めていけばインストールできると思います。FreeBSDは公式ドキュメントの質が高いことで有名です。
ただし、いくつか注意点があるため、以下に記載しておきます。

  1. 「Distribution Select」では、Portsを使用する場合でも「ports」を選択しないでください
    • インストール後にgit等のツールを使用して最新版のソースコードを再度ダウンロードすることになるので、必要ありません
  2. PCを「ユーザが直接操作するクライアント」として使用する場合、ZFSの設定で「Encrypt Disks?」と「Encrypt Swap?」を「Yes」に設定し、ディスク全体をパスフレーズで暗号化することをおすすめします
    • 万が一盗難に遭った場合に内部のデータを窃取されないようにするためです
    • ただし、起動する度にパスフレーズを要求されるため、ヘッドレスやサーバーとして使用する場合は「No」を選択します(リモートから再起動すると二度と立ち上がらなくなります)
  3. ディスク容量に余裕がある場合、ZFSやUFSのSwap領域は多めに設定しておきましょう。私の場合は500GBのSSD上に32GB(そこまでスワップすることはないと思われるが)確保しました。
    • ただし、Fedoraなどの最近のLinuxディストリビューションでは、Swap領域をディスク上ではなくRAM上に圧縮して配置する「ZRAM」という仕組みが採用されている場合があります。その場合はRAM容量を超えるサイズがスワップされるとパフォーマンス低下の原因になるようです。
      • FreeBSDでは、「ディスク上にSwap領域のパーティションを配置する」昔ながらの方式が標準であるため、容量が多い分には問題ありません
  4. 「System Configuration」では、以下のサービスを有効にしました。
    • sshd(デスクトップ環境を導入するまでは他のPCから操作したいため)
    • ntpd(時刻をインターネット経由で自動設定したいため)
      • この機能は、PCに設定された時刻と同期先のサーバの時刻が1000秒以上ずれていると同期に失敗するため、あらかじめ分単位を目安に時刻を合わせておいてください。
      • 「ntpd_sync_on_start」は古い機能なので不要です。
    • powerd(実機にインストールする場合は電源管理は必須です。VMの場合は無効にします。)
    • dumpdev(カーネルがクラッシュした際に解析できるように)
  5. 一般ユーザを追加する画面で「Login group is (USER_NAME). Invite user into other groups?」というプロンプトが表示されたら、「wheel」と入力します。
    これは、一般ユーザから「su -」コマンドを使用してrootユーザに切り替える際に必要となるので、忘れないようにしてください。

FreeBSDの初期設定

重要:FreeBSDのシャットダウン時のコマンドに注意

Linuxでは、poweroffやrebootコマンドはshutdownコマンドのエイリアスとなっているため、両者に処理の違いはない場合がほとんどです(ディストリビューションによっては異なる可能性あり)。しかし、FreeBSDなどのLinux以外のUnix系OSでは動作が異なり、プロセスを安全に終了する処理が行われないため注意が必要です。
また、FreeBSDで# shutdown -h nowを実行すると、halt処理のみ実行されるため、PCの電源が切れません(Windows 95の「コンピュータの電源を切る準備ができました」と同じ状態)。shutdownコマンドのオプションには-hではなく-pを指定してください。
参考:shutdownコマンドとrebootコマンドの違いについて - teratail.com

以下は安全にシャットダウン・再起動を行うコマンドです:

# shutdown -p now
# shutdown -r now

セキュリティパッチの適用

まず最初にFreeBSD本体のセキュリティパッチ(バージョンの例:FreeBSD 14.1 RELEASE-p1FreeBSD 14.1 RELEASE-p3)を適用します。セキュリティやバグの修正が含まれるため、早めに実施してください。
メジャーバージョン(例:13.2→14.0)やマイナーバージョン(例:14.0→14.1)をアップデートする場合は手順が異なりますのでご注意ください。

  1. アップデートを確認・ダウンロードします:
    # freebsd-update fetch
  2. ダウンロードしたアップデートをシステムに適用します:
    # freebsd-update install
  3. 再起動します:
    # shutdown -r now

ファイアウォールとしてpfを設定する

サイバー攻撃を防ぐために、可能な限り早めにファイアウォールを設定しておきます。ファイアウォールの設定が終わるまでの短い期間に攻撃を受ける可能性を考慮して、ファイアウォールの設定が終わるまでは絶対にネットワークには接続しない人もいます。
FreeBSDでは、OpenBSDから移植されたpf(Packet Filter)とFreeBSD独自のipfw(IP Firewall)が主流であり、どちらもファイアウォールとして利用することができますが、私はpfを用いています(慣れているので)。

  1. 以下のファイルを新規作成します:
    # vi /etc/pf.conf
  2. 以下は設定の一例です。ステートフル設定(pass out all keep state)が有効であるため、すべてのサービスでpass inのルールを有効にする必要はありません。最初から外部からの着信を受け付ける必要がある(≒サーバとして動作する)サービスはpass inのルールも書き加えてください:
    # Allow Local Loop back
    set skip on lo0
    
    # block all incoming requests
    block in log all
    
    # allow ping requests
    pass inet proto icmp all icmp-type echoreq
    
    # allow ICMP6, ICMP, IGMP
    pass in proto { icmp6, icmp, igmp } all flags any
    
    # allow all outgoing traffic & their responses
    pass out all keep state
    
    # block outgoing LDAP requests, to mitigate Log4Shell
    block return out proto { tcp, udp } from any to any port { ldap, ldaps }
    
    # Block rapid-fire brute force attempts
    table <bruteforce> persist
    block quick from <bruteforce>
    
    # allow NTP
    pass in proto udp to port ntp
    
    # allow DNS
    pass in proto { tcp udp } to port 53
    
    # allow SSH
    # 「ポート番号」を/etc/ssh/sshd_configで指定したものに置き換える
    # SSHを使用しないときは無効化しておく
    #pass in quick proto tcp to any port 56789 keep state (max-src-conn 15, max-src-conn-rate 5/3, overload <bruteforce> flush global)
  3. ファイアウォールの自動起動とログの有効化を設定します。
    1. 以下のファイルをエディタで開きます:
      # vi /etc/pf.conf
    2. ファイルの末尾に以下を追記します:
      # Firewall
      pf_enable="YES"
      pflog_enable="YES"
  4. FreeBSDを再起動し、各種サービス(SSHやfreebsd-update fetch、pkg update -f、ntpq -pなど)の接続に問題がないことを確認します。

DNSサーバの変更

DHCPが設定されていれば何もしなくても自動で設定されますが、ISPが用意しているDNSサーバを使うのは抵抗感があるうえ、広告やトラッカーをブロックしたいので、AdGuardのパブリックDNSに変更しました。
DHCPを有効にしたままDNSサーバを変更する方法を調べてみたのですが結構厄介で、DHCPを有効にしているとresolvconfによって/etc/resolv.confが書き換えられてしまいます。
FreeBSDのコミュニティで色々な裏技が紹介されていますが、私の環境では以下の記事に書かれた方法のみ効果がありました:
FreeBSD で resolv.conf を自動更新しない - kattyo's blog

  1. まず、resolvconfを無効にします。以下をエディタで開きます:
    # vi /etc/resolvconf.conf
  2. 以下を記入し、保存します:
    resolvconf=NO
  3. DNSの設定ファイルをエディタで開きます:
    # vi /etc/resolv.conf
  4. ファイルの内容をすべて消去し、お好みのDNSサーバのアドレスを記入します:
    nameserver 94.140.14.14
    nameserver 94.140.15.15
    nameserver 2a10:50c0::ad1:ff
    nameserver 2a10:50c0::ad2:ff
  5. ネットワークを再起動します:
    # /etc/rc.d/netif restart
    # /etc/rc.d/routing restart
  6. 念の為、次回FreeBSDを起動した際にも/etc/resolv.confが書き換わっていないことを確認してください。

Packagesの準備

FreeBSDではアプリケーションをインストールするツールとしてPackages(pkg)Portsが存在します。
Packagesはインターネット上のサーバなどのソースからバイナリファイルを取得し、コンピュータにインストールする仕組み(aptやdnfと同様)です。一方、portsはインターネット上のサーバなどのソースからソースコードを取得し、コンピュータ上でコンパイルを行い、生成されたバイナリファイルをインストールする仕組みです。
portsはコンパイル時のオプションを変更できるなどの利点がありますが、私はオプションを変更することはほとんどなく、デスクトップ環境などの巨大なアプリケーションはコンパイルに数時間かかってしまうためPackagesを使用しています。
「基本的にはPackagesを使用し、コンパイル時にオプションを変更する必要があるアプリケーションのみportsを使用する」という運用を行う場合、依存関係の問題を防ぐために両者でブランチ(四半期ごとに新機能の追加が行われるQuarterlyまたはすぐにコミットが行われるLatest)の設定を合わせた上で、Portsではコンパイル時のオプションを変更しないなどの対策が必要になります(参考:packages と ports を併用する前にやっておくこと - retrotecture.jp)。

Packagesの初期設定を行う方法を以下に記載します。
ブランチはデフォルトでQuarterlyに設定されているため、Latestに変更します。保守的なサーバー用途ではQuarterlyで十分ですが、日常的なデスクトップ用途(ブラウジングやプログラミング、ゲームなど)では最新版のアプリケーションを使いたいので。

  1. packagesのリポジトリ設定ファイルをコピーし、エディタで開きます:
    # mkdir -p /usr/local/etc/pkg/repos/
    # cp /etc/pkg/FreeBSD.conf /usr/local/etc/pkg/repos/FreeBSD.conf
    # vi /usr/local/etc/pkg/repos/FreeBSD.conf
  2. quarterlyと記載されている部分をlatestに修正し、上書き保存します:
    FreeBSD: {
    #  url: "pkg+https://pkg.FreeBSD.org/${ABI}/quarterly",
        url: "pkg+https://pkg.FreeBSD.org/${ABI}/latest",
        mirror_type: "srv",
        signature_type: "fingerprints",
        fingerprints: "/usr/share/keys/pkg",
        enabled: yes
    }
    余談:14.0RまではPackagesをHTTPではなくHTTPS経由で使用するためにca_root_nssパッケージをインストールしてからFreeBSD.confhttphttpsに手動で書き換えていましたが、14.1RからはデフォルトでHTTPS接続に設定されているようです。(古いバージョンからアップグレードした場合は手動で設定を書き換える必要があるかもしれません)
  3. pkgのリポジトリをアップデートします:
    # pkg update -f
    # pkg upgrade

Bashをデフォルトのシェルとして設定する

FedoraやUbuntuを使用してきたのでBashが一番慣れています。shの上位互換という認識で合っているのかな……?

  1. packages経由でbashとbash-completionをインストールします:
    # pkg update -f
    # pkg install bash bash-completion
  2. 一般ユーザで、以下のコマンドを入力し、bashをデフォルトのシェルとして設定します:
    $ chsh -s bash
  3. rootユーザでも同様の設定を行います:
    # chsh -s bash
  4. 一般ユーザで.bashrcを編集して「bash-completion」が機能するように設定します(私の環境では一般ユーザで~/.bash_profileを編集しても効果がありませんでした):
    $ vi ~/.bashrc
    以下を追記します:
    [[ $PS1 && -f /usr/local/share/bash-completion/bash_completion.sh ]] && \
    . /usr/local/share/bash-completion/bash_completion.sh
  5. rootユーザで.bash_profileを編集して「bash-completion」が機能するように設定します(私の環境ではrootユーザで~/.bashrcを編集しても効果がありませんでした):
    # vi ~/.bash_profile
    以下を追記します:
    [[ $PS1 && -f /usr/local/share/bash-completion/bash_completion.sh ]] && \
    . /usr/local/share/bash-completion/bash_completion.sh
  6. 一般ユーザとrootユーザで$ completeコマンドを実行し、たくさん出力されていれば設定は完了です。一件も出力されない場合は設定を再確認してください。

sudoの設定

FreeBSDはデフォルトでsudoがインストールされていません。必須ではないですが、不便に感じる場合はインストールしてください。

  1. packages経由でsudoをインストールします:
    # pkg update -f
    # pkg install sudo
  2. sudoの設定ファイルを編集します。user_nameの部分に、普段ログインしている一般ユーザ名を指定します。
    # 最終行に追記する
    user_name    ALL=(ALL:ALL) ALL
  3. 一般ユーザに切り替え、sudoコマンドが正しく使えることを確認します。

アップデートをコマンド一発で確認するためのエイリアスを作成する

毎回コマンドを打つのが面倒なので。

  1. 以下のファイルをエディタで開きます:
    $ vim ~/.bashrc
  2. 以下をファイルの末尾に追記します。
    pkg audit -Fはパッケージの脆弱性情報をダウンロードし、インストールされたパッケージに該当するものがある場合に表示するコマンドです。portsで使用できる同様のコマンドには「portaudit」があります。
    alias u='sudo freebsd-update fetch ; sudo freebsd-update install ; sudo pkg update ; sudo pkg upgrade ; sudo pkg audit -F'
  3. 以降は一般ユーザでuと入力します。

デスクトップ環境(LXQt)の構築

Intel ディスプレイドライバのインストール

Intel HD Graphics 620向けのドライバがカーネルに組み込まれていないため、X Window Systemを起動しようとするとクラッシュしてしまいます。そこで、ドライバをPackages経由でインストールします。カスタムカーネルを作成する必要はありません。
参考:Chapter 5. The X Window System | FreeBSD Documentation Portal
参考:FreeBSD での X.org の設定の仕方

  1. リポジトリをアップデートしdrm-kmodlibva-intel-driverをインストールします:
    # pkg update -f
    # pkg install drm-kmod
    # pkg install libva-intel-driver mesa-libs mesa-dri
  2. 以下のコマンドを入力し、カーネルモジュールを有効化します。同時に/etc/rc.confに設定が書き込まれます:
    # sysrc kld_list+=i915kms
  3. 以下のファイルを新規作成します:
    # vi /usr/local/etc/X11/xorg.conf.d/driver-scfb.conf
  4. 以下の内容を記入し、保存します:
    Section "Device"
    Identifier "Device0"
    Driver "scfb"
    EndSection
  5. 再起動します:
    # shutdown -r now

LXQtのインストール

以下のWebサイトに様々なデスクトップ環境のセットアップを行う方法がとてもわかりやすく記載されています:
FreeBSD - デスクトップ環境構築 - FreeBSD あれこれ

フォントのインストール

# pkg update -f
# pkg install ja-font-bizud-gothic ja-font-bizud-mincho ja-font-plemoljp-nf noto-jp noto-emoji

プロポーショナルフォントのデフォルトとしてNoto Sans CJK JPNoto Serif CJK JPを、等幅フォントのデフォルトとしてPlemolJP35 Console NFを各アプリケーションに設定しました。

アイコンのインストール

デフォルトではほとんどのアイコンが表示されないため、追加でパッケージをインストールする必要があります。
以下のコマンドで利用可能なアイコンパックがいろいろ見つかります:

# pkg search icons
# pkg search icon
  • KDEのデフォルト:
    # pkg install kf6-breeze-icons
  • Lubuntuなどに採用されているやつ:
    # pkg install papirus-icon-theme
  • Windows 98 Second Edition風:
    # pkg install win98se-icon-theme
  • Ubuntuのデフォルト:
    # pkg install yaru-icon-theme

パッケージをインストールしたら、「LXQt 外観の設定」を開き、「アイコンテーマ」タブからお好みのものを選択してください。

「LXQt 外観の設定」のスクリーンショット。「アイコンテーマ」タブが選択され、利用可能なアイコンテーマの一覧が表示されている。

マウスカーソルの見た目がバラバラになる問題の解消

調査中。

日本語入力(fcitx-mozc)の設定

以下のWebサイトの手順を実行することで、日本語入力(fcitx5-anthy)が使えるようになります。MozcやiBusもPackages上に用意されています。
LXQt - FreeBSD 14.1 RELEASE - 日本語入力 - FreeBSD あれこれ

オーディオの設定

音量の変更&出力デバイスの切り替え方法

私の環境では、追加でドライバを導入することなくサウンドが再生されましたが、イヤホンを抜き差しした際に自動で出力デバイスが切り替わらないため、手作業で出力デバイスを変更する必要があります。
しかし、LXQtに同梱されているGUIミキサーには出力デバイスの切り替え機能が搭載されていないみたいです(mixerコマンドを使用することでCLI上から変更が可能です)。
そこで、DSBMixerというサードパーティ製のGUIミキサーをインストールしています。

  1. パッケージをアップデートしDSBMixerをインストールします:
    # pkg update -f
    # pkg install dsbmixer
  2. スタートメニュー(Application Menu)にDSBMixerが追加されているはずです。スタートアップに登録(設定→セッション→自動起動)し、LXQtに標準搭載されているミキサーをパネル(タスクバー)から取り除くことをおすすめします。DSBMixerを起動すると、パネル(タスクバー)内のシステムトレイにスピーカーのアイコンが表示されます。このアイコンをクリックすると、DSBMixerのウィンドウが表示されます。
  3. メニューバーの「File」→「Preferences」をクリックして設定画面を開き、「Default devices」タブをクリックすると、出力デバイスを切り替える画面が表示されます。
    DSBMixerの「Preferences」のスクリーンショット。メニューバーの「File」→「Preferences」がマウスカーソルで選択されている。
  4. 私の環境では、「<Conexant CX20751/2 (Analog)>」がPC内臓のデバイスで、「<Conexant CX20751/2 (Right Analog)>」がイヤホンジャックでした。「OK」クリック後に表示されるダイアログでオプションを選択することで、現在すでに再生している音声も出力デバイスを切り替えることができます。

    下の方にある「Test sound」をクリックすると音割れポッターレベルの大音量でホワイトノイズが流れるため、ご注意ください。

    DSBMixerの「Preferences」画面のスクリーンショット。「Default devices」タブが選択され、出力デバイスの一覧が表示されている。

Firefoxでサウンドが再生されない問題の修正

about:configを開き、「media.cubeb.backend」に「oss」(String型)を設定し、Firefoxを再起動します。
アドレスバーにabout:restartrequiredを入力すると、Firefoxを再起動するボタンが表示されます。

Wi-Fiの設定(調査中)

FreeBSDにはドライバがないのか、ideapad 310に搭載されているWi-Fiカードが動作しませんでした。
ドライバの導入方法については、現在調査中です。

ProtonVPNを使用する

私はProton VPNの有料プランを契約して、設定可能なデバイス全てで常時接続しています。しかし、FreeBSDには現在、Proton VPNの公式クライアントをインストールする方法が存在しません。過去にCLI版がpkgで利用可能だったらしいですが、現在はなくなっているようです。
代替策として、FreeBSDにWireguardクライアントやOpenVPNクライアントをインストールし、ProtonVPNの設定ファイルをアカウントのダッシュボードからダウンロード(OpenVPNの設定方法Wireguardの設定方法)して接続してみました。ためしにFirefoxで「あなたの IPv6 をテストしましょう。」を開いてみると、IPv4アドレスはVPNサーバのものに変わっていましたが、なんとIPv6アドレスの欄にISPのアドレスがそのまま表示されていました。
そこで、FirefoxにProton VPNの公式アドオンをインストールして使用しています。アドオン導入後に再度テストページを開くと、きちんとIPv6アドレスも変更されていました。すべての通信をVPNに経由させることが望ましいですが、妥協してFirefoxの通信のみVPNを使用することにしました。

メッセンジャーのインストール

Signal

公式サイト:Signal >> 自宅
私が最もよく使用するメッセンジャーです。LinuxやWindows版と同一のネイティブクライアントが普通に使えます。素晴らしい!
Web版は存在しないようです。

$ sudo pkg install signal-desktop

Telegram

公式サイト:Telegram Messenger
Proton VPNに接続した状態でログインした数十分後にアカウントがBANされてしまいました。関連性は不明ですが、何らかの機械的なチェックに引っかかってしまった可能性も考えられます(本当の原因は不明であり、確定ではありません)。珍しいUAやVPN経由でログインを行うとアカウントが制限されるサービス(LINEヤフーなど)がまれに見られるのでご注意ください。
ブラウザでWebクライアントを利用することもできます。

$ sudo pkg install telegram-desktop

Wire

公式サイト:Wire - Simply the most Secure Messenger
packagesには見つかりませんでした。ブラウザでWebクライアントを利用できます。

Element(旧:Riot.im)

公式サイト:Element | Secure collaboration and messaging
element-webというパッケージがありますが、使い方がよくわからず。ブラウザでWebクライアントを利用できます。

Discord

公式サイト:Discord - 楽しみ満載のグループチャットでゲームを
linux-discordというパッケージがありますが、Linux向けのバイナリを互換機能を用いて動作させる仕組みのようで、linux-rl9-*関連の大量の依存関係がインストールされます。諦めてWebクライアントを使いました。

LINE

たしかChromium系のブラウザ拡張機能があったと記憶しています。あのアイコンを見るだけで拒絶反応を起こす体質なので試していません。アカウントはこの記事を書く以前に爆破済みです。

DRMを必要とする動画配信サービスはFirefoxで利用できないものが多い

WindowsやmacOS、Linuxのパッケージで提供されているFirefoxには通常、Widevineが内蔵されていますが、FreeBSDのpkg版には含まれていないようです。FreeBSD版のFirefoxでWidevineを使用する方法は現在調査中です。

  • YouTube/YouTube Musicとニコニコ動画
    • こちらはDRMが必要ないので普通に再生できます
  • Spotify
    • 再生できず。代替となるWeb-APIを使用したクライアントがPackagesに存在するようなので、使用方法について現在調査中です。
  • Amazon Prime Video
    • 再生できず
  • Netflix
  • radikoJCBAインターネットサイマルラジオ湘南ビーチFM
    • すべて再生できました。湘南ビーチFMはmpgaで配信してくれているので非常にありがたい(VLCでも再生可能です)。