OpenBSD6.9を実機にインストール&日本語デスクトップ環境を導入する！

#目次
[1. はじめに(雑談)](#1-はじめに(雑談))
[2. 環境](#2-環境)
[3. インストールメディア作成](#3-インストールメディア作成)
[4. インストール](#4-インストール)
[5. デスクトップ環境](#5-デスクトップ環境)
[6. doasの設定](#6-doasの設定)

#1. はじめに(雑談)
私はPC初心者なのですが、今回の目標はタイトルの通りです (固い決意)。以前、一度サブデスクトップにOpenBSDを導入したのですが、Mateを入れたところ不安定すぎて挫折して、「もう不安定なのやだ！」となり Pop! OSを入れました (極端)。しかし幸運なことにOpenBSDのアップデートが去る5月にきていたようですし、丁度中古ノートパソコンを仕入れたので今度こそOpenBSDを導入したいと思います。

この記事は長ったらしい、と思ったそこのアナタ!
公式ドキュメントをどうぞ。

<a href="https://www.openbsd.org/faq/faq4.html">OpenBSD - Installation Guide</a>
<a href="https://ftp.openbsd.org/pub/OpenBSD/6.9/amd64/INSTALL.amd64">OpenBSD: INSTALL.amd64</a>


それから、以前のバージョンで似た内容の記事を書いている方がいらっしゃるので、
このあたりを読まれると幸せになれるかもしれません。

* <a href="https://yasuoka.net/~yasuoka/openbsd-desktop.html">30分でできる OpenBSD 日本語デスクトップ環境 [OpenBSD 4.9]</a>
* <a href="https://qiita.com/kinichiro/items/dac58e29b7fca01de705">OpenBSD 6.0 で Xfce4 日本語デスクトップ環境の構築</a>
* <a href="https://qiita.com/kinichiro/items/a2ed08d14d2d46e28fca">OpenBSD 6.5のインストール</a>
* <a href="https://www.omoikane.dev/posts/install-openbsd65/">OpenBSD6.5をuEFI対応PCにインストールする方法</a>
* <a href="https://cruel.org/freeware/openbsd/faq/faq8.html">OpenBSD - 般的な質問</a>

かなり古いですがこちらも参考になるやも知れません。

* <a href="https://fishers.mydns.jp/pc/unix/openbsd.html">OpenBSD 3.0 インストール</a>

この記事を見るような方は私の大先輩の方が多いかもしれませんので、そういった方々からすれば「そんなん当たり前やろ!」みたいなことを書くかもしれませんが、私のような、初心者ながら変わったOSに挑戦してみたい、という同志のために(あと自分用の備忘録として)あまり手順を飛ばさずに書いていきます。冗長に感じられるところは恐らく私が躓いたところなので詳細に書いていますが、読み飛ばして頂いて結構です。

#2. 環境
以下の作業は私のメインノートPC (MacBook Air [Early 2015])と<a href="https://www.balena.io/etcher/">balenaEtcher</a>で行ってますが、WindowsでもbalenaEtcherか<a href="https://getfedora.org/ja/workstation/download/">Fedora Media Writer</a>を導入すればほとんど同じ手順でできると思います。Linuxの場合もbalenaEtcherはAppImage形式で導入できるはずです。多分 dd コマンドで作成しても使えると思います (知らんけど)。

usbメモリはそこら辺のスーパーで売っていた KIOXIA の USB2.0 16GB のものです。全体をフォーマットするので内容を完全に消去して問題ないものを用意してください。また、usb3.0以降のものについてはこの手順が上手くいかない可能性もあるかもしれません。

###インストール先
TOSHIBA Dynabook R73/A
中古で買ってきたバッテリーがお亡くなりになってる子です。
記憶域は密林で入手した激安ssd (250GiB) にしてます。単純に衝撃が悪影響を与えうるHDDよりはマシかなというだけで換装したので深い意味はありません。

#3. インストールメディア作成
全体の手順としては、まず.imgファイルを<a href="https://www.openbsd.org/">OpenBSDのサイト</a>からダウンロードしてきて、それをbalenaEtcherでusbメモリにフラッシュしていきます。
![スクリーンショット 2021-08-10 22.47.10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1874028/487bddfd-d630-9d53-0bf6-ba1d9fd65b31.png)
この画像の中央の紫色になっている部分、ここがOpenBSDの最新バージョンのリリースページへのリンクです。投稿時点での最新バージョンはOpenBSD 6.9です。

![スクリーンショット 2021-08-10 22.56.45.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1874028/414da106-9486-a806-9c25-3502ac0e08f2.png)
先ほどのリンクに飛ぶとこのような画面が表示されます。これまた画像で紫色になっている部分は、"the FTP page"と書いてありますが、これはミラーサーバーのリストへのリンクですのでここに飛びます。

そうしたらミラーの一覧から好きなところを選んでください。今回は私がよく使っているJAISTのミラー (https)を使います。 Japan (Nomi, Ishikawa)と書いてあるやつです。

ミラーサーバーのリンクをクリックすると以下のような非常に質素なページに到達しますので、.isoファイルを探してください。
![スクリーンショット 2021-08-10 23.06.01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1874028/c909a72f-25a7-3b9a-be13-651cb73cfcf3.png)
今回は
/6.9/amd64 のディレクトリ配下にあった "install69.img" ファイルを
使います。

ダウンロードのフォルダに install69.img をダウンロードしたら、balenaEtcherを開き、"Flash from files" をクリックして今ダウンロードした .img ファイルを選択し、接続したusbメモリを選択すれば、Etcherがファイルをusbメモリに焼いて bootable usb の完成です。

![スクリーンショット 2021-08-11 1.23.59.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1874028/680bebc3-f6df-5fbe-f4a6-9b46ae9f5a8f.png)↑balenaEtcherの画面

MacBookの場合、「このフォーマットの記憶デバイスは読み込めません」といった旨のポップアップが出るかもしれませんが、無視していただいて大丈夫なはずです。

(※これは私だけかもしれませんが、Linux系のディストロの多くは.isoファイルを直接usbに焼ける気がするんですよね。その感覚に囚われていて最初このファイルの場所を見つけるのと「.isoではなく.imgファイルを焼く」ということに気付くまでしばらくハマった記憶があります。)

#4. インストール
さてここからは実際のインストール作業です。
まずは電源を落として、用意した bootable usb を接続します。
(※これ大事。 私はいつもこれを忘れて 起動→usb差す→もう一回起動する→BIOSに入り直す みたいなこといっつもやってるので...)

電源ボタンを押して起動してからBIOSに入るためにF2キーを連打!!!!!!
(ハードウェアによってキーやらBIOSの見た目やらは異なるので各自調べてください🙇‍♂️)
"Change Boot Order"みたいなことが書いてある項目からbootの順序を設定します。この場合なら特に何も考えずにUSB Memoryを一番上に持ってくれば良いはずです。

(BIOS画面で"Save and EXit"を選択して再起動する前の段階で有線LANを接続しておくことをお勧めします。)

こうして再起動すれば、もうUSBメモリからインストーラが立ち上がってくるはずです。

最初にデバイスに関する情報が全て表示されるので、その後

```zsh
"Welcome to the OpenBSD/amd64 6.9 installation program. 
(I)nstall, (U)pgrade, (A)utoinstall or (S)hell?"
```

と表示されるまで待ちます。
ここでは(I)nstallの "i" を選択します。

(注: ここからは多少なりともUnix系OSをCLIのインストーラーからインストール (Archとか) したことがある方なら下の解説を読まずとも指示に従わずとも進めると思うので、解説はCLIインストーラーに不案内な方へ向けた細かいものです。）

##基本設定とネットワーク

```zsh
Choose your keyboard layout:
```

 "jp" と入力してEnterを押します。

```zsh
System hostname? (short form, e.g. 'foo'): dynabook
```

なんでも良いので、半角アルファベット(小文字)でhostnameを指定します。
(Windowsではパソコン名とかPC名っていうんですかね？)
今回はなんの捻りもなくdynabookにしました。

```zsh
Available network interfaces are: iwm0 em0 vlan0
Which network interface do you wish to configure? (or 'done') [iwm0] em0
IPv4 address for em0? (or 'dhcp' or 'none') [dhcp]
em0: 192.168.xxx.xxx lease accepted from 192.168.xxx.xxx (??:??:??:??:??:??)
IPv6 address for iwm0? (or 'autoconf' or 'none') [none]
Available network interfaces are: iwm0 em0 vlan0.
Which network interfaces do you wish to configure? (or 'done') [done]
```

まず利用可能なネットワークインタフェースを表示してくれます。
[]内はデフォルトの内容で、デフォルトの設定のまま進む場合には何も入力せずにEnterを押すだけで良いです。

iwm0はwifi, em0はethernetのことのようです。
(cf. https://github.com/krzysztofengineer/openbsd/blob/master/installation/03-installation.md)

ここでは有線LANを繋いでおいたので、em0を選択しました。
基本的には何も考えずにデフォルトのままでEnterを押していけばよいと思います。
もしここで多少エラーが出ても恐らく大丈夫だと思いますので無視して続けてください。

```zsh
DNS domain name? (e.g. 'example.com') [my.domain]
DNS nameservers? (IP address list or 'none') [none]
```

ここも自分でドメイン管理を何か行っている、等でなければデフォルトで良いはずです。

```zsh
Password for root account? (will not echo)
Password for root account? (again)
```

一行目最後の"will not echo"というのは入力した文字を画面に表示しないという意味です。文字数が * で表示されることもないので自分の入力した内容が間違っていないか気をつけてください。

```zsh
Start sshd(8) by default? [yes]
Do you want the X Window System to be started by xenodm(1)? [no] yes
```

デフォルトはそれぞれ "yes", "no" ですが、他の方の記録を見る限り、別に必須というわけでもないようです。(xenodmは必要かも?)
OpenBSDの良いところは起動しているプロセスを自分が全て管理できる点ですので、各自の環境に合わせて選択していただければと思います。

```zsh
Setup a user? (enter a lower-case loginname, or 'no') [no] r
```
ここは設定 *必須* です。
セキュリティーの観点からGUIでのrootアカウントへのログインは基本的にできません。従って、ここでroot以外のユーザーを設定しなければGUIでのログインができません。ここでは適当に r というユーザーを作成しておきます。

```zsh
Full name for user r? [r]
Password for user r? (will not echo)
Password for user r? (again)
```

r は別に何か考えてつけた名前でもないので、フルネームもそのまま r としておきます。今のところ、別段アカウントのフルネームを設定する利点を感じたこともないので、気にする必要はさほどないと思います。パスワードはrootの時と同じ要領で設定してください。　

```zsh
Warning: root is targeted by password guessing attacks, pubkeys are safer.
Allow root ssh login? (yes, no, prohibit-password) [no]
```

これはデフォルトのままを強く推奨します。rootにsshでログインできるようにすることはセキュリティーの観点から危険だそうで、また今回利用するデスクトップ用途では基本的にさほど便利になるわけでもないと思うので、no にしておいた方が良いと思います。（ただ私はセキュリティーに関しても素人なので断定は致しません。）

>One of the biggest security holes you could open on your server is to allow directly logging in as root through ssh, because any cracker can attempt to brute force your root password and potentially get access to your system if they can figure out your password.
*「サーバー上にあなたが開きうる脆弱性の中で最も大きなものの一つが、『sshで直接rootとしてログインするのを許可する』ことです。なぜなら、あらゆるクラッカーが総当たり攻撃であなたのrootパスワードを破り、場合によってはあなたのシステムにアクセスすらしうるからです。」*
<a href="https://www.howtogeek.com/howto/linux/security-tip-disable-root-ssh-login-on-linux/">Security Tip: Disable Root SSH Login on Linux</a>

```zsh
What timezone are you in? ('?' for list) [Asia/Tokyo]
```
これは標準時の設定です。デフォルトで "Asia/Tokyo" が選択されているのでこのまま進みます。デフォルトの設定が違ったり、別の標準時を設定したかったりしたい場合には "?" で確認してそれを入力してください。
<br>
##記憶域
さて、ここからはディスクの設定です。

```zsh
Available disks are: sd0 sd1.
Which disk is the root disk? ('?' for details) [sd0] ?
```

基本的にはデフォルトで選択されているディスクで大丈夫かとは思いますが、念の為に確認しておきます。

```zsh
sd0: ATA, BIOSTAR (中略: 型番など) (238.56)
sd1: KIOXIA, TransMemory serial.(略: 型番？) (14.46)
Available disks are: sd0 sd1.
Which disk is the root disk? ('?' for details) [sd0]
```

()内は多分それぞれの記憶域の容量(GiB)ですかね。
デフォルトの設定通りATAのSSDがsd0でしたので再び表示された行では何も入力せずEnterを押します。
<br>
すると作成されるDisk 0-2までの一覧が表示されたのちに、

```zsh
Use (W)hole disk MBR, whole disk (G)PT or (E)dit? [gpt]
```

と訊いてきます。これも今回のような実機へのクリーンインストールでしたらデフォルト通りで良いと思います。

GPT で設定されるパーティションの一覧が表示されてそのまま設定して良いか確認してきます。

```zsh
The auto-allocated layout for sd0 is:
(中略: パーティション a ~ l までの一覧)
Use (A)uto layout, (E)dit auto layout, or create (C)ustom layout? [a]
```

これもデフォルトの設定で良いでしょう。

```zsh
Which disk you wish to initialize? (or 'done') [done]
```

ここもデフォルトで良い...と思います、たぶん。


##セットをインストール
上記のネットワーク設定でなんらかのエラーが出た方は以下を参考にdiskでの方法を試してみてください。
<a href="https://www.omoikane.dev/posts/install-openbsd65/">OpenBSD6.5をuEFI対応PCにインストールする方法</a>

以下ではhttpを選択します。

```zsh
Let's install the sets!
Location of sets? (disk http nfs or 'done') [http]
HTTP proxy URL? (e.g. 'http://proxy:8080', or 'none') [none]
```
プロキシのURL ... と言われてもわからないのでnoneで続行。

```zsh
HTTP Server? (hostname, list#, 'done' or '?') [none]
```

ここで '?' を打つとftpの一覧が出てくるのでそれを参照。
Enterを押して一行ずつスクロールしていくと、今回使おうとしているJAISTのサーバーがあった。

```zsh
97 ftp.heanet.ie/pub/OpenBSD    Dublin, Ireland
* 98 ftp.jaist.ac.jp/pub/OpenBSD  Nomi, Ishikawa, Japan
99 www.ftp.ne.jp/pub/OpenBSD    Saitama, Japan
100 ftp.riken.jp/pub/OpenBSD    Wako-City, Saitama, Japan
101 mirror.litnet.lt/pub/OpenBSD Kaunas, Lithuania
```

98番だったので、qでこのページャから出てから

```zsh
HTTP Server? (hostname, list#, 'done' or '?') [none] 98
HTTP Server? (hostname, list#, 'done' or '?') [ftp.jaist.ac.jp]
Server directory? [pub/OpenBSD/6.9/amd64]
```
ここでEnterを押すと進めた。やったー！！

```zsh
Select sets by entering a set name, a file name pattern or 'all'. 
De-select sets by prepending a '-', e.g.: '-game*'. Selected sets are labelled '[X]'.
(中略: 各セットの名前)
Set name(s)? (or 'abort' or 'done') [done]
```

デフォルトでは全てのセットが選択されている。

説明によると -game* と入力すれば game~ という名前のセットから選択を全て外すことができる便利機能があるらしいが、初回のインストールでは全てのセットをインストールすることが推奨されているので、特に操作せずにこのまま進む。
そうするとプログレスバーが表示されてインストールが始まる。![image0.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1874028/ed9193f9-101d-4110-d499-7f67c4abc66e.jpeg)
表示されるプログレスバーの例

```zsh
Location of sets? (disk http nfs or 'done') [done]
```

ここでEnterを押せば、インストールは終了です！　
あとはもう一度Enterを押して再起動・USBメモリを取り外せば完了するはずです。お疲れ様でした！！


##ヒント
もしインストールで詰まってにっちもさっちも行かなくなってしまった場合、Ctrl + C でインストール自体をキャンセルし、

```zsh
# reboot
```

で再起動してインストールを最初からやり直すことができます。
2回目以降は意外と早く進められるので、詰まったら割とお勧めです。


#5. デスクトップ環境
実はこの時点でxwindowを利用した最低限のデスクトップ環境ができています。
これからはログインすると表示されるターミナルをつかっていきます。
![image0-2.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1874028/d5950a87-6d19-479b-7460-f17bb269b2d3.jpeg)
インストール時に設定したroot以外のユーザー名を打ち込み、パスワードを入力します。

![xwindow.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1874028/d7217dce-f279-3fd1-eeb3-7083ff028bf6.jpeg)
こんな感じの画面が表示されるはずです。今、ターミナルが先ほどログインしたユーザーの権限で開かれています。

```zsh
dynabook$ su -
Password:
dybabook# syspatch #OSのパッチを適用
dynabook# pkg_add -u #アップデート
```

もしなんらかのファイルを編集したい場合には、デフォルトで mg というテキストエディタが導入されています。
（もちろん vim や nano も pkg_add コマンドで導入可能です。）
mg を使う場合、Ctrl + x を押して Ctrl + c を押すとバッファを保存するか聞かれるので指示通り回答すれば終了できます。
<a href="https://man.openbsd.org/mg.1">mg(1) - OpenBSD man page</a>

xfceが最も使われていそうなのでxfceデスクトップを導入していきましょう。
まずはpkg_addコマンドで必要なパッケージをインストールします。私はnanoエディタを主に使っているのでついでにnanoもインストールしておきます。

```bash
dynabook# pkg_add xfce xfce-extras consolekit2 scim-anthy mixfont-mplus-ipa-20060520p7 mplus-fonts-063a nano
```

nanoで.xsessionファイルを設定します。
>Xfce4 のデスクトップにログインするユーザでログインして、ログインディレクトリ配下の .xsession を作成します。
以下の設定でユーザがログインマネージャからログインした後に Xfce4 が起動されます。
$HOME/.xsession

<a href="https://qiita.com/kinichiro/items/a2ed08d14d2d46e28fca">OpenBSD 6.5のインストール</a>

```bash:$HOME/.xsession
export LANG=ja_JP.UTF-8
export XMODIFIERS="@im=SCIM"
export GTK_IM_MODULE=xim
export QT_IM_MODULE=xim
scim -d
exec ck-launch-session startxfce4
```

ここまで設定したら再起動します。

これで起動した際にxfceデスクトップ環境が利用可能なはずです。

(うまく行かない場合には .xsession ファイルが一般ユーザーではなく root のホームディレクトリに設定されていないか確認してください。)
![xfce.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1874028/f9ff5c1c-5141-ffc3-4a90-ea7be342ddaf.jpeg)


#6. doasの設定
OpenBSDにはsudoコマンドの代わりにdoasというコマンドが導入されています。
こいつは使用前に /etc/doas.conf ファイルを設定する必要があるのでそれをやっていきましょう。

```bash:/etc/doas.conf
permit r as root cmd su
permit r as root cmd reboot
permit persist setenv { PKG_CACHE PKG_PATH } aja cmd pkg_add
permit setenv { -ENV PS1=$DOAS_PS1 SSH_AUTH_SOCK } :wheel
permit nopass r as root cat
permit nopass keepenv setenv { PATH } root as root
```

正直私もこの設定がどのくらい大丈夫なものなのかわからないのですが今のところこれでやってます。

doasコマンドに関してはもう少し詳しい記事を書いている方がいらっしゃるので参考にどうぞ。

<a href="https://qiita.com/belgianbeer/items/b2b63815d7c6c7a171ee">sudo がアレなので doas に乗り替えてみる</a>

これで一旦日本語デスクトップ環境の導入は終了です。お疲れ様でした！