俺様サーバー構築記 - Arch Linux + ZFS に Xfce をインストール →回復術とやり直し@ノートパソコン(BIOS)

「[俺様サーバー構築記 - 基本方針](https://qiita.com/katz_engineer/items/dbabcff4e14e9db2b10f)」に基づいて自宅サーバーの構築を進めていますが、[前回](https://qiita.com/katz_engineer/items/9d177766baf95c1e2674)はノートパソコンにも Arch Linux + ZFS をインストールしました。

今回からしばらくは、そのノートパソコンにデスクトップ環境をインストールします。その最初となる今回は、実は失敗したんですが:cry: ZFSのお陰ですぐに回復できて、インストールをやり直したというお話です。

なお、デスクトップ環境インストールの全体的な手順は下記の参考文献を元にしました。

参考文献: [ArchLinuxのインストール 2.GUI(xfce)&日本語環境構築編 - グレインの備忘録](http://grainrigi.hatenablog.com/entry/2017/12/02/221247)

# スナップショット

意志と魔力で何でも実現できる異世界と違って、現実世界で何かをしたければそれなりの仕込みが必要です。膨大な魔力を掛ける代わりに結構な手間暇を掛けて ZFS on Linux を仕込んだので、後は意志の代わりにスナップショットを撮るだけです。

参考文献1: [Documentation Home  > Oracle Solaris ZFS 管理ガイド  > 第 7 章 Oracle Solaris ZFS のスナップショットとクローンの操作  > ZFS スナップショットの概要  > ZFS スナップショットを作成および破棄する](https://docs.oracle.com/cd/E19253-01/819-6260/6n89n6cjb/index.html)
参考文献2: [Documentation Home  > Oracle Solaris ZFS 管理ガイド  > 第 7 章 Oracle Solaris ZFS のスナップショットとクローンの操作  > ZFS スナップショットの概要  > ZFS スナップショットを表示してアクセスする](https://docs.oracle.com/cd/E19253-01/819-6260/gbiqe/index.html)

（2019/03/22 修正ここから）

```
# zfs snapshot tank/main@$(date +%Y%m%d_%H%M%S)_before_Xfce
# ls -l /.zfs/snapshot
total 0
drwxrwxrwx 1 root root 0 Mar 23 00:43 20190323_004319_before_Xfce
```
（2019/03/22 修正ここまで）

# Xorg

一番最初はxserverのインストールです。

参考文献: [Xorg - ArchWiki](https://wiki.archlinux.jp/index.php/Xorg)

## ドライバーのインストール

まずはグラフィックスカードを確認。

```
# lspci | grep -e VGA -e 3D
00:02.0 VGA compatible controller: Intel Corporation Mobile 4 Series Chipset Integrated Graphics Controller (rev 07)
```

Intelだったので、Intel用のドライバをインストールします。

```
# pacman -Syy
（省略）
# pacman -S xf86-video-intel
（省略）
```

```
# pacman -S xorg-server xorg-apps
（依存しているライブラリが山程出てくるが、全部入れる）
```

mesa というパッケージもインストールの必要がありますが、ディスプレイドライバの依存パッケージらしく、 xf86-video-intel をインストールした時に自動的にインストールされています。

# キーボード

ここでキーボードを設定します。

参考文献: [Xorg でのキーボード設定 - ArchWiki](https://wiki.archlinux.jp/index.php/Xorg_でのキーボード設定)

```
# cd /etc/X11/xorg.conf.d/
# ls -a
.  ..
# cat >10-keyboard.conf <<___
> Section “InputClass”
>     Identifier “Keyboard Defaults”
>     MatchIsKeyboard “yes”
>     Option “XkbLayout” “jp”
> EndSection
> ___
```

# デスクトップ環境 Xfce

古いマシンなので、軽量な Xfce を選択してみました。
参考文献: [Xfce - ArchWiki](https://wiki.archlinux.jp/index.php/Xfce)

色んなちょっとしたツール類も欲しいので xfce4-goodies もインストールします。
Gaminが強く推奨されているらしいので、それも入れます。

（2019/04/14 ここから）
今日[3台目をインストール](https://qiita.com/katz_engineer/items/d4a82d279f77d7ec8bde)していて気付いたのですが、 gamin というパッケージは無くなっているようです。ArchWikiにはまだ書かれていないようですが… 英語版とかフォーラムとかチェックしていないので詳細は不明です。そのため下記にはまだ gamin を書いていますが、パッケージが見つからないようならインストールしない方向で。ひとまずそれで問題は発生していないようです。
（2019/04/14 ここまで）

```
# pacman -S xfce4 xfce4-goodies gamin
〈色んなライブラリが出てくるが、全部入れる〉
```

ここらで一度、起動テストしてみます。

```
# startxfce4
```

真っ暗な画面で暫く待たされます。ホント心臓に悪い。どうにかなりませんかねぇ。

そして何だかよくわかない選択ダイアログが。

```
Welcome to the first start of the panel
Choose below which setup you want for the first startup.
[Use default config] [One empty panel]
```

よくわかりませんが、とりあえずデフォルトって方を選んでみました。
…ほほう、こんな画面になりますか。

# ディスプレイマネージャ LightDM

Xfceだと、ディスプレイマネージャはLightDMの一択のようです。

```
# pacman -S lightdm lightdm-gtk-greeter
〈省略〉
# systemctl enable lightdm.service
Created symlink /etc/systemd/system/display-manager.service -> /usr/lib/systemd/system/lightdm.service.
```

# フォント

```
# pacman -S otf-ipafont
```

# ロケール

```
# cat /etc/locale.conf
LANG=C
# echo LANG=ja_JP.EUC-JP >/etc/locale.conf
```

はい。
私は UTF-8 が死ぬほど嫌いです。
自分の趣味の環境くらいは我儘を通させていただきます。
良い子の皆さんは UTF-8 にしましょう。

# 一般ユーザーを作成

いい加減、一般ユーザーを作らなきゃいけませんな。
いつまでもrootを使い続ける訳にはいきません。

```
# useradd -m taro
# passwd taro
New password: 〈taroのパスワード〉
Retype new password: 〈taroのパスワードをもう一度〉
passwd: password updated successfully
```

# マシン再起動、そして失敗

```
# reboot
```

…コケました。起動しません。何という事でしょう。

起動してSystemdの [  OK  ] 表示が続いた後、下記のように表示された所でウンともスンとも言わなくなりました。

```
〈省略〉
[  OK  ] Reached target Basic System.
         Starting Login Service...
         Starting Permit User Sessions...
[  OK  ] Started D-Bus System Message Bus.
[  OK  ] Started Permit User Sessions.
         Starting Light Display Manager...
[  OK  ] Started Login Service.
[FAILED] Failed to start Light Display Manager.
See 'systemctl status lightdm.service’ for details.
[  OK  ] Reached target Graphical Interface.
```

実は、ここで Ctrl+Alt+F2 キーを押すと2番目の仮想コンソールに切り替わって、GUIではないプロンプトが出てログイン可能でした。
色々調べた結果、ディスプレイマネージャ LightDM を入れ直して、それからrebootしたら起動してしまったのでした。
どうして LightDM を入れ直す必要があったのかが不明です。ここにメモしながらの作業だったから、操作ミスした可能性が濃厚。

折角なので、これをインストール失敗と捉えて、作業前の状態に巻き戻す事にしました。
以下はその為の作業手順です。

# スナップショットにロールバックする

参考文献: [Documentation Home  > Oracle Solaris ZFS 管理ガイド  > 第 7 章 Oracle Solaris ZFS のスナップショットとクローンの操作  > ZFS スナップショットの概要  > ZFS スナップショットにロールバックする](https://docs.oracle.com/cd/E19253-01/819-6260/gbcxk/index.html)

ZFSを埋め込んだarchisoのUSBメモリを使用して起動し、最初に撮ったスナップショットを確認します。

（2019/03/22 修正ここから）

```
# loadkeys jp106
# zpool import -d /dev/disk/by-id -R /mnt tank
# ls -l /mnt/.zfs/snapshot
total 0
drwxrwxrwx 1 root root 0 Mar 22 15:55 20190323_004319_before_Xfce
# zfs list -t snapshot
NAME                                    USED  AVAIL  REFER  MOUNTPOINT
tank/main@20190323_004319_before_Xfce  17.5M      -  1.91G  -
```
（2019/03/22 修正ここまで）

この通り[仕込みは済んでいる](https://qiita.com/katz_engineer/items/f42a2536c74b9123bc33#%E3%82%B9%E3%83%8A%E3%83%83%E3%83%97%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88)ので、後は魔法の呪文を唱えるだけ。

（2019/03/22 修正ここから）

```
# zfs list -t snapshot -o name -s name | tail -n1 | xargs -t zfs rollback
zfs rollback tank/main@20190323_004319_before_Xfce
```
（2019/03/22 修正ここまで）

そして再起動。

```
# shutdown -h now
```

電源が切れたらUSBメモリを抜いて、電源を入れ直します。

見事に時間が巻き戻りました！最初にスナップショットを撮った時の状態、即ち xserver などGUI関係を入れる直前に戻ります。

そしてインストール作業をやり直したら、今度は上手くいきました。
やったね:thumbsup_tone1: