archLinux
vmware

VMwareにArch Linuxをインストールしよう

はじめに

仮想環境にさくっとArch Linuxをインストールしてみようという記事です。

準備

以下の2つは必ず用意しましょう。インストールディスクは多少古くてもどうせ最新版がインストールできるのでいちいち落とし直さなくてもいいかもしれません。

仮想マシンの作成

マシンスペックと相談して適当な仮想マシンを用意してください。今回は以下のような構成で作ってみました。

  • 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 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-8ja_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も編集してください。

/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 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

おしまい

とりあえずこれで一通りは使えるようになります。

この後この環境をどう育てていくかはユーザー次第ですので、各自楽しみながら環境構築にいそしみましょう。