はじめに
仮想環境にさくっとArch Linuxをインストールしてみようという記事です。
準備
以下の2つは必ず用意しましょう。インストールディスクは多少古くてもどうせ最新版がインストールできるのでいちいち落とし直さなくてもいいかもしれません。
-
VMware Workstation Player
- あるいはVMware Fusionなど
- archlinux-20xx.xx.xx-dual.iso
仮想マシンの作成
マシンスペックと相談して適当な仮想マシンを用意してください。今回は以下のような構成で作ってみました。
- HDD : 48GB
- RAM : 4GB
- CPU : 8 cores
EFIモードへの切り替え
仮想マシンの設定ファイルhoge.vmx
をテキストエディタで開いて、最終行に以下を付け足します。
firmware = "efi"
リモートインストールの準備
仮想マシンにぽちぽちコマンドを打っていくのはつらいのでSSH経由でインストールします。rootのパスワードを設定し、sshdを起動して、ipアドレスを確認します。
# passwd
# systemctl start sshd
# ip a
以降はSSHクライアント側から作業をします。
時刻の設定
公式マニュアルではまず時刻を設定することを推奨しているので、ここで実施します。
# timedatectl set-ntp true
ディスクの準備
EFI環境なので、EFI領域をまずは確保します。なお、RAMを4GB確保してあるので今回はSwapを作成しません。550MiBだけEFI領域を確保して、残りは全部rootパーティションにしてしまいます。
# parted /dev/sda
GNU Parted 3.2
Using /dev/sda
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) mklabel gpt
(parted) mkpart ESP fat32 1MiB 551MiB
(parted) set 1 boot on
(parted) mkpart primary btrfs 551MiB 100%
(parted) quit
Information: You may need to update /etc/fstab.
続いてディスクのフォーマットを行います。
# mkfs.vfat -F32 /dev/sda1
# mkfs.btrfs /dev/sda2
ディスクのマウントも行いましょう。
# mount /dev/sda2 /mnt
# mkdir /mnt/boot
# mount /dev/sda1 /mnt/boot
ベースシステムのインストール
ミラーサイトの優先順位を変更して、日本のサーバーを優先的に見に行くようにします。Japanと書かれている行を先頭に移動させます。
# vim /etc/pacman.d/mirrorlist
また、pkgbuildのミラーが比較的速めなので、追加しておくと便利かもしれません。
Server = https://jpn.mirror.pkgbuild.com/$repo/os/$arch
続いてインストールに必要なものを全てインストールしてしまいます。
# pacstrap /mnt base base-devel linux linux-firmware btrfs-progs intel-ucode neovim dosfstools openssh ccache zsh zsh-completions zsh-syntax-highlighting
各種設定
起動に必要な設定を行っていきます。
まずはfstabを自動生成します。
# genfstab -U /mnt >> /mnt/etc/fstab
chroot環境に入りましょう。
# arch-chroot /mnt
vim
コマンドでneovimが起動するようにエイリアスを貼っておきます。
# alias vim=nvim
日本時間でタイムゾーンをセットしておきます。
# ln -sf /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
# hwclock --systohc
ロケールを設定します。en_US.UTF-8
とja_JP.UTF-8
の部分のコメントを外しておきます。
# vim /etc/locale.gen
locale-genを実行して反映させます。
# locale-gen
システムで使う言語を日本語に設定します。
# echo LANG=ja_JP.UTF-8 >> /etc/locale.conf
HostNameを設定します。YOUR_HOSTNAME
の部分は自由に変えてください。
# echo YOUR_HOSTNAME >> /etc/hostname
/etc/hosts
も編集してください。
127.0.0.1 localhost
::1 localhost
127.0.1.1 YOUR_HOSTNAME.localdomain YOUR_HOSTNAME
rootのパスワードを設定します。
# passwd
ネットワーク起動を自動化します。
まずアダプタ名を調べます。ip a
コマンドで調べてください。僕の環境ではens33でした。
その情報を元に設定ファイルを書きます。/etc/systemd/network/wired.network
に以下のように記述してください。
[Match]
Name=ens33
[Network]
DHCP=yes
最後にsystems-netowrkdとsystemd-resolvedを有効にします。
# systemctl enable systemd-networkd
# systemctl enable systemd-resolved
AUR周りの設定
後々使うことになるのでこれも最適な感じに設定しておきます。設定ファイルを開きましょう。
# vim /etc/makepkg.conf
CFLAGSとCXXFLAGSを以下のように変更します。
CFLAGS="-march=native -O2 -pipe -fstack-protector-strong --param=ssp-buffer-size=4 -D_FORTIFY_SOURCE=2"
CXXFLAGS="${CFLAGS}"
MAKEFLAGSのコメントを外し、コンパイル時に用いるコア数を指定します。実コア数+1ぐらいがいいかも。
MAKEFLAGS="j9"
BUILDENVで「!」をつけて無効にされているccacheを有効にしておきます。
BUILDENV=(!distcc color ccache check !sign)
COMPRESSXZも並列で圧縮できるよう-T 0
を加えておきます。
COMPRESSXZ=(xz -c -z - -T 0)
ブートローダーの書き込み
EFI環境であることに留意して、作業します。といってもsystemd-bootを使うだけなので簡単です。以下のコマンドでインストール可能です。
# bootctl --path=/boot install
起動のための設定ファイルを書きます。その前にまずrootパーティション
のUUIDを調べましょう。
# blkid -s PARTUUID -o value /dev/sdxY
<UUID>
の部分に↑のコマンドで調べた結果を記述してください。
# vim /boot/loader/entries/arch.conf
title Arch Linux
linux /vmlinuz-linux
initrd /initramfs-linux.img
options root=PARTUUID=<UUID> rw
選択画面の設定を書きます。既に何か書いてあるファイルですが、内容を消してしまっても大丈夫です。
# vim /boot/loader/loader.conf
default arch
timeout 3
ユーザーの作成
インストール後に使う一般ユーザーを作成します。USER_NAME
の部分をお好きなものに変更してください。
# useradd -m -G wheel -s /bin/zsh USER_NAME
# passwd USER_NAME
sudoが使えるように設定しておきます。nvimで編集したいので環境変数を一時的に与えます。
# EDITOR=nvim visudo
以下の行のコメントを外すだけでOKです。
%wheel ALL=(ALL) ALL
インストールの完了
chroot環境を抜けて再起動すれば終了です。リブート時に勝手にアンマウントしてくれるのでその辺は心配しなくて大丈夫です。
# exit
# reboot
再起動したらGUIが動くように設定していきます。
リモート接続の確立
まずは仮想マシン側で先ほど作成した一般ユーザーでログインし、sshdを起動してIPアドレスを確認します。初回のsudoは説明が日本語で表示されるため文字化けしますが、気にせずパスワードを入力してください。
$ sudo systemctl start sshd
$ ip a
systemd-resolvedの設定
このままだとDNS解決ができないので、設定していきます。
まずは/etc/resolve.conf
をsystemdで用意した物に差し替えます。
$ sudo mv /etc/resolv.conf /etc/resolv.conf.orig
$ sudo ln -s /run/systemd/resolve/resolv.conf /etc/resolv.conf
続いて/etc/nsswitch.conf
のdnsをresolvに書き換えます。
$ sudo sed -i -e 's/hosts: files dns/hosts: files resolve/g' /etc/nsswitch.conf
.zshrcを仕込む
ちょっと作業がもたつくので自作の物にすり替えておきます。
$ curl -o ~/.zshrc https://raw.githubusercontent.com/aruneko/dotfiles/master/.zshrc
$ source ~/.zshrc
リポジトリの編集
multilibが利用できるようにしましょう。設定ファイルを開きます。
$ sudo vim /etc/pacman.conf
multilibのコメントを外します。
[multilib]
Include = /etc/pacman.d/mirrorlist
あとはリポジトリを再読込しましょう。
$ sudo pacman -Syu
yayの導入
今回はAURヘルパーとしてyeyを使いたいと思います。以下の手順で簡単に導入できます。最後にディレクトリを消していますが、この操作は任意です。
$ sudo pacman -S git
$ git clone https://aur.archlinux.org/yay-bin.git
$ cd yay-bin
$ makepkg -si
$ cd ../
$ rm -rf yay-bin
VMware Toolsのインストール
とりあえず公式リポジトリのものを入れておけばOKです。X11と一緒に入れておきます。
$ yay -S xorg-server xorg-xinit open-vm-tools xf86-input-vmmouse xf86-video-vmware gtkmm3
バージョン情報を読み取れるようにしておきます。
$ su -c "cat /proc/version > /etc/arch-release"
関連サービスが起動時に立ち上がるように設定しましょう。
$ sudo systemctl enable vmtoolsd
$ sudo systemctl enable vmware-vmblock-fuse
時計はsystemdで同期します。
/etc/systemd/timesyncd.conf
で、ntpサーバーのアドレスが指定可能です。各ネットワーク網に適したサーバーを指定してください。
$ sudo timedatectl set-ntp true
デスクトップ環境のインストール
今回はCinnamonを使ってみることにします。端末エミュレーターにはsakuraを利用します。フォントも文字化けしないように日本語対応のものを入れておきましょう。
$ yay -S cinnamon cinnamon-translations lightdm lightdm-gtk-greeter lightdm-gtk-greeter-settings adobe-source-han-sans-jp-fonts adobe-source-han-serif-jp-fonts sakura
好みに応じて、下記記事を参考にCicaを入れても良いと思います。
[For Archilinux] 手っ取り早く Cica v2 を使いたかったので AUR の PKGBUILD を以下のように編集して突っ込んだ。
lightdmが起動時に有効になるようにしておきます。
ついでにビットマップフォントも無効化します。残念な見た目になりますので。
$ sudo systemctl enable lightdm
$ sudo ln -s /etc/fonts/conf.avail/70-no-bitmaps.conf /etc/fonts/conf.d/
GTKテーマの導入
お気に入りのテーマを入れておきます。今回はmateriaとpapirusと壁紙を導入します。
$ yay -S materia-gtk-theme papirus-icon-theme archlinux-wallpaper
Fcitxの導入
日本語入力ができるようにしておきましょう。とりあえず関連ソフトウェアを導入します。
$ yay -S fcitx-mozc fcitx-im fcitx-configtool
また、GTKやQtなどで有効になるように.xprofileを作成して以下の内容を書き込みます。
export GTK_IM_MODULE=fcitx
export QT_IM_MODULE=fcitx
export XMODIFIERS=@im=fcitx
その他必要なソフトウェアの導入
Firefoxとかjdkとかよく使うものをここで入れておきます。
$ yay -S firefox-i18n-ja alsa-utils
おしまい
とりあえずこれで一通りは使えるようになります。
この後この環境をどう育てていくかはユーザー次第ですので、各自楽しみながら環境構築にいそしみましょう。