1. Qiita
  2. 投稿
  3. archLinux

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

  • 6
    いいね
  • 5
    コメント

はじめに

仮想環境にさくっと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クライアント側から作業をします。

ディスクの準備

EFI環境なので、EFI領域をまずは確保します。なお、RAMが4GB確保してあるので今回はSwapは作成しません。512MiBだけ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 513MiB
(parted) set 1 boot on
(parted) mkpart primary btrfs 513MiB 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

続いてインストールに必要なものを全てインストールしてしまいます。

# pacstrap /mnt base base-devel vim dosfstools openssh ccache zsh zsh-completions zsh-syntax-highlighting

各種設定

起動に必要な設定を行っていきます。

まずはfstabを自動生成します。

# genfstab -U -p /mnt >> /mnt/etc/fstab

chroot環境に入りましょう。

# arch-chroot /mnt /bin/bash

HostNameを設定します。YOUR_HOSTNAMEの部分は自由に変えてください。

# echo YOUR_HOSTNAME >> /etc/hostname

ホストマシン側に合わせて、日本時間でタイムゾーンをセットしておきます。

# ln -s /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
# hwclock --systohc --localtime

ロケールを設定します。en_US.UTF-8ja_JP.UTF-8の部分のコメントを外しておきます。

# vim /etc/locale.gen

locale-genを実行して反映させます。

# locale-gen

システムで使う言語を日本語に設定します。

# echo LANG=ja_JP.UTF-8 >> /etc/locale.conf

rootのパスワードを設定します。

# passwd

ネットワーク起動を自動化します。

まずアダプタ名を調べます。ip aコマンドで調べてください。僕の環境ではens33でした。

その情報を元に設定ファイルを書きます。/etc/systemd/network/wired.networkに以下のように記述してください。

[Match]
Name=ens33

[Network]
DHCP=ipv4

最後に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)

ブートローダーの書き込み

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が使えるように設定しておきます。

# 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

リポジトリの編集

yaourtとmultilibが利用できるようにしましょう。設定ファイルを開きます。

$ sudo vim /etc/pacman.conf

multilibのコメントを外します。

[multilib]
Include = /etc/pacman.d/mirrorlist

末尾にこれを付け足します。

[archlinuxfr]
SigLevel = Optional TrustAll
Server = http://repo.archlinux.fr/$arch

あとはリポジトリを再読込して、yaourtを導入しましょう。

$ sudo pacman -Syu
$ sudo pacman -S yaourt

VMware Toolsのインストール

とりあえず公式リポジトリのものを入れておけばOKです。X11と一緒に入れておきます。

$ yaourt -S xorg-server xorg-xinit open-vm-tools xf86-input-vmmouse xf86-video-vmware gtkmm

バージョン情報を読み取れるようにしておきます。

$ su -c "cat /proc/version > /etc/arch-release"

関連サービスが起動時に立ち上がるように設定しましょう。

$ sudo systemctl enable vmtoolsd
$ sudo systemctl enable vmware-vmblock-fuse

時計はホスト側と同期します。

$ yaourt -S ntp
$ sudo vmware-toolbox-cmd timesync enable
$ sudo systemctl enable ntpd
$ sudo systemctl start ntpd

デスクトップ環境のインストール

今回はCinnamonを使ってみることにします。端末エミュレーターにはsakuraを利用します。フォントも文字化けしないように日本語対応のものを入れておきましょう。

$ yaourt -S cinnamon lightdm lightdm-gtk-greeter lightdm-gtk-greeter-settings otf-ipaexfont otf-source-han-code-jp adobe-source-han-sans-jp-fonts sakura

lightdmが起動時に有効になるようにしておきます。
ついでにビットマップフォントも無効化します。残念な見た目になりますので。

$ sudo systemctl enable lightdm
$ sudo ln -s /etc/fonts/conf.avail/70-no-bitmaps.conf /etc/fonts/conf.d/

Fcitxの導入

日本語入力ができるようにしておきましょう。とりあえず関連ソフトウェアを導入します。

$ yaourt -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とかよく使うものをここで入れておきます。

$ yaourt -S firefox-i18n-ja alsa-utils flashplugin jdk

おしまい

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

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