コンソールでも快適なArch Linuxの環境を整える

## 0.はじめに

今回構築する環境は以下のようなものです

- Zen Kernel
- fbterm
- Anthy + uim
- zsh
- tmux
- ***Spacemacs***

あとその他もろもろのものが入りますが大きなものはこんな感じです。



## 1.Arch Linuxインストール

作業手順を以下に示します。

```bash
#キー配列を日本語に
$ loadkeys jp106

#WiFiに接続する(有線の場合は不要)
$ wifi-menu

#NTPに同期する
$ timedatectl set-ntp true

#パーティショニング
#fdisk -lで対象のディスクを確認しておく
#boot:1GiB
#swap:2GiB(メモリと同容量を推奨、8GiB以上のメモリがあればいらないかも)
#root:残り容量すべて
$ parted /dev/sda
(parted)>mklabel msdos
(parted)>mkpart primary ext4 1MiB 1GiB
(parted)>mkpart primary linux-swap 1GiB 3GiB
(parted)>mkpart primary ext4 3GiB 100%
(parted)>q

#ファイルシステムの作成
$ mkfs.ext4 /dev/sda1
$ mkswap /dev/sda2
$ swapon /dev/sda2
$ mkfs.ext4 /dev/sda3

#マウント
$ mount /dev/sda3 /mnt
$ mkdir /mnt/boot
$ mkdir /mnt/home
$ mount /dev/sda1 /mnt/boot

#ミラーリストを変更しておく
#Ctrl+Wで"Japan"を検索し、URLをCtrl+kで切り取り、一番上までもっていってCtrl+Uでペースト
#Ctrl+O,Ctrl+xで保存し終了する
$ nano /etc/pacman.d/mirrorlist

#ベースシステムのインストール
$ pacstrap /mnt linux-zen base base-devel linux-firmware networkmanager nano emacs git acpi tlp anthy uim

#fstabの作成
$ genfstab -U /mnt/ >> /mnt/etc/fstab

#システムに入る
$ arch-chroot /mnt /bin/bash

#ロケールの設定
#en_US.UTF-8 UTF-8
#ja_JP.UTF-8 UTF-8
#上の二行をコメントアウトする
$ nano /etc/locale.gen
$ locale-gen
$ echo LANG=en_US.UTF-8 > /etc/locale.conf

#コンソールフォントとキーマップの設定
#KEYMAP=jp106
#FONT=lat9w-16
#上の２行を書き込む
$ nano /etc/vconsole.conf

#タイムゾーンの設定とハードウェアクロックの設定
$ ln -sf /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
$ hwclock --systohc --utc
#Windowsとのデュアルブート時には下記のコマンドも実行する
timedatectl set-local-rtc true

#ホスト名
$ echo YOURHOSTNAME > /etc/hostname
#127.0.0.1 localhost.localdomain localhost YOURHOSTNAME
#::1   localhost.localdomain localhost YOURHOSTNAME
#上の２行を書き込む
$ nano /etc/hosts

#ネットワークの設定
$ systemctl enable NetworkManager

#パスワードの設定
$ passwd

#grubのインストール
$ pacman -S os-prober grub
$ grub-install --target=i386-pc --recheck /dev/sda
$ grub-mkconfig -o /boot/grub/grub.cfg

#システムから出る
$ exit
$ umount -R /mnt
$ reboot
```



## 2.ユーザーの追加

yayを使うためには非rootユーザーが必要なのでここで作成しておく

```bash
$ sudo useradd -b/home USERNAME
$ sudo passwd USERNAME
$ sudo mkdir /home/USERNAME
$ sudo chown USERNAME /home/USERNAME
```

このままだとsudoで怒られるので設定をする

```bash

#viを入れていない場合怒られるので一時的にデフォルトエディタをnanoに変更
$ export EDITOR=nano
#%wheel ALL=(ALL) ALL
#上記の行のコメントアウトを外し、%wheelを上で追加したユーザー名に変更して保存、終了
$ visudo
```



## 3.yayのセットアップ

AURなパッケージが使いたいのでyayを入れます

```bash
$ git clone https://aur.archlinux.org/yay.git
$ cd yay
$ makepkg -si
```



## 4.日本語環境の整備

fbtermをインストールする。

```bash
$ yay -S fbterm ttf-inconsolata-g

#インストール後に
$ sudo gpasswd -a USERNAME video

#uimの設定
#(define default-im-name 'anthy)
#(define-key generic-on-key? '("<Control> "))
#(define-key generic-off-key? '("<Control> "))
#上の三行を書き込む
$ nano ~/.uim

#fbtermの設定
#font-names=Inconsolata\-g
#font-size=16
#上記のように変更する
$ nano ~/.fbtermrc
```



# 5.zshとtmuxの設定

今回はpreztoを使用するのでその設定もする

```bash
#zshとtmuxのインストール
$ yay -S zsh tmux

#デフォルトシェルの変更
#/usr/bin/zshを指定する
$ chsh

#fbtermを一回起動しておく
$ fbterm
$ exit

#Zsh起動
$ zsh

#リポジトリをclone
$ git clone --recursive https://github.com/sorin-ionescu/prezto.git "${ZDOTDIR:-$HOME}/.zprezto"

#設定ファイルの生成
$ setopt EXTENDED_GLOB
for rcfile in "${ZDOTDIR:-$HOME}"/.zprezto/runcoms/^README.md(.N); do
  ln -s "$rcfile" "${ZDOTDIR:-$HOME}/.${rcfile:t}"
done

#tmux plugin managerのインストール
$ git clone https://github.com/tmux-plugins/tpm ~/.tmux/plugins/tpm

#tmuxの設定
#set-option -g status-position top
#set-option -g status-right-length 90
#set-option -g status-left-length 90
#set-option -g status-interval 1
#set-option -g status-justify centre
#set -g @plugin 'tmux-plugins/tpm'
#set -g @plugin 'tmux-plugins/tmux-cpu'
#set -g @plugin 'tmux-plugins/tmux-battery'
#set -g status-right "Batt:#{battery_icon} #{battery_percentage} #{battery_remain} |CPU:#{cpu_percentage} |%H:%M:%S "
#run-shell '~/.tmux/plugins/tpm/tpm'
#上の行をすべて書き込む
$ nano ~/.tmux.conf
```



## 6.fbtermやtmux、Anthyの自動起動

.zshrcに追記すればよい

```bash
#if [ $SHLVL = 1 ];then
#  fbterm
#fi
#if [ $SHLVL = 2 ];then
#  uim-fep
#fi
#if [ $SHLVL = 3 ];then
#  tmux
#fi
#上の行をすべて追記する
$ nano ~/.zshrc
```



# 7.Spacemacsのインストール、設定(C++の環境構築も行う)

``` bash
#Spacemacsのインストール
$ git clone https://github.com/syl20bnr/spacemacs ~/.emacs.d

#初回セットアップをしておく
$ emacs

#clangのインストール
$ yay -S clang

#Emacsの設定
$ emacs
(Emacs)>M-x package-install lsp-mode lsp-ui company-lsp clang-format

#.spacemacsの設定
#(defun dotspacemacs/layers ()
#  ;; ...
#  (setq-default
#   ;; ...
#   dotspacemacs-additional-packages
#   '(
#     lsp-mode
#     lsp-ui
#     company-lsp
#     clang-format
#     )
#  ))
#(defun dotspacemacs/user-config ()
#  ;; ...
#  (add-hook 'c++-mode-hook 'company-mode)
#  (add-hook 'c++-mode-hook 'flycheck-mode)
#  (add-hook 'c++-mode-hook #'lsp)
#  )
#上記のセクションに追記する
$ nano ~/.spacemacs
```



## 8.もろもろの便利ツールを入れる

exaやbat、hexylなんかを入れる

```bash
$ yay -S exa bat hexyl fd procs ripgrep htop
```



## 9.おわり

このあともう一回実際にインストールして検証するので間違いがあれば修正します。