LoginSignup
2
0

More than 5 years have passed since last update.

ArchLinux4でデスクトップLinux環境の構築

Last updated at Posted at 2018-01-07

記事について

ネットブックくらいのスペックのしょぼPCにCentOS7入れて使ってたら重かったので、こちらに紹介されている中でArchLinuxに挑戦してみた際の備忘録。
実施日の2017年12月22日時点での情報に基づいて記載する。

前提

参考

:ballot_box_with_check: Arch Linuxインストール - 普段使いのArch Linux
:ballot_box_with_check: インストールガイド - ArchWiki

OS本体のインストール

インストールメディアの作成

ArchLinux JP Projectからインストールイメージを入手し、インストールメディアを作成する。筆者の場合はUSBメディアで作成。

Macbookでイメージファイルを書き込む。
/dev/disk2/dev/rdisk2 のディスク番号は diskutil list と入力すれば確認できるので実施環境に合わせて置き換える。

$ hdiutil convert -format UDRW -o ~/Downloads/archlinux-2017.12.01-x86_64.img ~/Downloads/archlinux-2017.12.01-x86_64.img
$ mv ~/Downloads/archlinux-2017.12.01-x86_64.img.dmg ~/Downloads/archlinux-2017.12.01-x86_64.img
$ diskutil unMountDisk /dev/disk2
$ sudo dd if=~/Downloads/archlinux-2017.12.01-x86_64.img of=/dev/rdisk2 bs=1m

インストールメディアで起動

作成したメディアでUSBブートする。
基本的にこちらの記事の流れに沿って実施。
:ballot_box_with_check: Arch Linuxインストール (OSインストール編)| UEFI, GPT, XFSを使用してインストール - 普段使いのArch Linux

まずはUEFI BIOSを参考記事に倣って設定する。
起動時のDELLのロゴが表示されている画面で F2 キーを押す。

UEFI画面が表示されるので SATA ModeAHCI に設定。 (筆者の場合最初から選択されてた)

qiita1.jpg

Boot List OptionUEFI に設定。 (筆者の場合最初から選択されてた)
Secure BootDisabled に設定。
Load Legacy Option RomDisabled に設定。

qiita2.jpg

CMSモードに関する設定は、それらしい単語が見当たらなかったので、とりあえずこれで開始。
USB差込口にインストールメディアを差し込んで、F10 を押下。

再びDELLのロゴが表示されるので今回は F12 を押して Boot Option 画面に移行。

メニューが表示されるので、USB1 - UEFI OS (<メディアのボリュームラベル?>) を選択する。

qiita3.jpg

プロンプトが表示されたら、記事にもある通りEFIモードの確認とキーボード配列の設定をする。

# ls /sys/firmware
apci dmi efi memmap
# loadkeys jp106

無線ネットワークの接続

本機では無線ネットワークインターフェースしか持っていないので、USBブート後に以下の記事を参考にネットワーク設定をする必要がある。
:ballot_box_with_check: ワイヤレス設定 - ArchWiki

PCに使われているNIC等によってはデバイスドライバやファームウェアを自分でインストールする必要がある様だが、幸い今回使用したマシンはその必要は無い。
環境に合わせて手探りで設定していく必要があるが、本記事では簡潔にしたいので前述の環境を前提とした設定に関する操作内容だけ記す。1

筆者のネットワーク環境がWPA-PSKのWi-Fiを利用していたので、WPAの認証設定をファイルに記載する。

/etc/wpa_supplicant.conf
ctrl_interface=/run/wpa_supplicant
ctrl_interface_group=wheel
update_config=1
ap_scan=1

network={
  ssid="Your-SSID"
  psk="Your-PASSWORD"
}

ファイルが出来たら以下を実行。

# iw dev wlp1s0 set type ibss
# ip link set wlp1s0 up
# wpa_supplicant -D nl80211,wext -i wlp1s0 -c /etc/wpa_supplicant.conf
Successfully initialized wpa_supplicant
wlp1s0: SME: Trying to authenticate with c0:25:a2:49:0e:93 (SSID='Your-SSID' freq=5180 MHz)
wlp1s0: Trying to associate with c0:25:a2:49:0e:93 (SSID='Your-SSID' freq=5180 MHz)
wlp1s0: Associated with c0:25:a2:49:0e:93
wlp1s0: CTRL-EVENT-SUBNET-STATUS-UPDATE status=0
wlp1s0: WPA: Key negotiation completed with c0:25:a2:49:0e:93 [PTK=CCMP GTK=CCMP]
wlp1s0: CTRL-EVENT-CONNECTED - Connection to c0:25:a2:49:0e:93 completed [id=0 id_str=]
wlp1s0: CTRL-EVENT-REGDOM-CHANGE init=COUNTRY_IE type=COUNTRY alpha2=JP

成功したのが確認できたら、Ctrl + C で一旦終了し、以下でバックグラウンド実行させておく。

# wpa_supplicant -B -D nl80211,wext -i wlp1s0 -c /etc/wpa_supplicant.conf

DHCPからIPアドレスを取得し、ping で接続確認する。

# dhcpcd wlp1s0
DUID 00:01:00:01:21:cf:bc:ca:2c:6e:85:2f:46:35
wlp1s0: IAID 85:2f:46:35
wlp1s0: soliciting a DHCP lease
wlp1s0: offered 192.168.0.107 from 192.168.0.1
wlp1s0: probing address 192.168.0.107/24
wlp1s0: soliciting an IPv6 router
wlp1s0: leased 192.168.0.107 for 86400 seconds
wlp1s0: adding route to 192.168.0.0/24
wlp1s0: adding default route via 192.168.0.1
forked to background, child pid 649

# ping -c3 google.com
PING google.com (172.217.26.14) 56(84) bytes of data.
64 bytes from nrt20s02-in-f14.1e100.net (172.217.26.14): icmp_seq=1 ttl=52 time 6.80 ms
64 bytes from nrt20s02-in-f14.1e100.net (172.217.26.14): icmp_seq=2 ttl=52 time 112 ms
64 bytes from nrt20s02-in-f14.1e100.net (172.217.26.14): icmp_seq=3 ttl=52 time 6.04 ms

--- google.com ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2003ms
rtt min/avg/max/mdev = 6.047/41.862/112.733/50.114 ms

ストレージの整備

ネットワーク設定が完了したら、再度こちらの記事に従う。
:ballot_box_with_check: Arch Linuxインストール (OSインストール編)| UEFI, GPT, XFSを使用してインストール - 普段使いのArch Linux

# lsblk
NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
loop0    7:0    0 409.5M  1 loop /run/archiso/sfs/airootfs
sda      8:0    0 119.2G  0 disk
├─sda1   8:1    0   200M  0 part
├─sda2   8:2    0     1G  0 part
└─sda3   8:3    0   118G  0 part
sdb      8:16   1   7.2G  0 disk
├─sdb1   8:17   1   516M  0 part /run/archiso/bootmnt
└─sdb2   8:18   1    64M  0 part

インストール先は /dev/sda として進める。
参考記事では512GBのストレージで記載されているので、128GBしか無い本機に合わせて以下のように内訳た。

パーティション フォーマット 用途 マウントポイント サイズ
/dev/sda1 FAT32 UEFI System Partition /boot 512MB
/dev/sda2 swap swap領域 8GB
/dev/sda3 XFS rootディレクトリ / 32GB
/dev/sda4 XFS 一般ユーザーのhomeディレクトリ /home 残り

gdisk で、自環境に合わせて以下の通りに設定。

# gdisk /dev/sda
GPT fdisk (gdisk) version 1.0.3

Partition table scan:
  MBR: not present
  BSD: not present
  APM: not present
  GPT: not present

Creating new GPT entries.

Command (? for help): o
This option deletes all partitions and creates a new protective MBR.
Proceed? (Y/N): y

Command (? for help): n
Partition number (1-128, default 1):
First sector (34-250069646, default = 2048) or {+-}size{KMGTP}:
Last sector (2048-250069646, default = 250069646) or {+-}size{KMGTP}: +512M
Current type is 'Linux filesystem'
Hex code or GUID (L to show codes, Enter = 8300): ef00
Change type of partition to 'EFI System'

Command (? for help): n
Partition number (2-128, default 2):
First sector (34-250069646, default = 1050624) or {+-}size{KMGTP}:
Last sector (1050624-250069646, default = 250069646) or {+-}size{KMGTP}: +8G
Current type is 'Linux filesystem'
Hex code or GUID (L to show codes, Enter = 8300): 8200
Change type of partition to 'Linux swap'

Command (? for help): n
Partition number (3-128, default 3):
First sector (34-250069646, default = 17827840) or {+-}size{KMGTP}:
Last sector (17827840-250069646, default = 250069646) or {+-}size{KMGTP}: +32G
Current type is 'Linux filesystem'
Hex code or GUID (L to show codes, Enter = 8300):
Change type of partition to 'Linux filesystem'

Command (? for help): n
Partition number (4-128, default 4):
First sector (34-250069646, default = 84936704) or {+-}size{KMGTP}:
Last sector (84936704-250069646, default = 250069646) or {+-}size{KMGTP}:
Current type is 'Linux filesystem'
Hex code or GUID (L to show codes, Enter = 8300):
Change type of partition to 'Linux filesystem'

Command (? for help): w

Final checks comlete. About to write GPT data. THIS WILL OVERWRITE EXISTING
PARTITIONS!!

Do you want to proceed? (Y/N): y
OK; writing new GUID partition table (GPT) to /dev/sda.
Warning: The kernel is still using the old partition table.
The new table will be used at the next reboot or after you
run partprobe(8) or kpartx(8)
The operation has completed successfully.

筆者のケースではWarningメッセージに「カーネルが古いパーティションテーブル参照してるから再起動してからな」的なことが書いてあったので一旦落として再び電源を入れる。

# shutdown -h now

ドライブのフォーマットとマウントは参考記事の通り。

(各パーティションをそれぞれのファイルシステムでフォーマット)
# mkfs.fat -F32 /dev/sdX1
# mkswap /dev/sdX2
# swapon /dev/sdX2
# mkfs.xfs -m crc=1 /dev/sdX3
# mkfs.xfs -m crc=1 /dev/sdX4

(マウント)
# mount /dev/sdX3 /mnt
# mkdir /mnt/home /mnt/boot
# mount /dev/sdX4 /mnt/home
# mount /dev/sdX1 /mnt/boot

インストール実施

以降も最後まで参考記事の通り。
ほぼ書き写しになってしまうがここでも簡潔に操作内容だけに端折って記載。

日本のサーバーを優先して参照するよう、ミラーリストを編集。

/etc/pacman.d/mirrorlist
##
## Arch Linux repository mirrorlist
## Sorted by mirror score from mirror status page
## Generated on 2017-12-01
##

## Japan
Server = http://ftp.jaist.ac.jp/pub/Linux/ArchLinux/$repo/os/$arch
## Japan
Server = http://ftp.tsukuba.wide.ad.jp/Linux/archlinux/$repo/os/$arch
...
...
...

ベースシステムをインストールして、fstab(ファイルシステムテーブル)をインストール先に作成。

# pacstrap /mnt base base-devel
# genfstab -U -p /mnt >> /mnt/etc/fstab

マシンストレージに chroot する。

# arch-chroot /mnt /bin/bash

各種設定ファイルを編集。

locale生成の準備。
/etc/locale.genen_US.UTF-8 UTF-8ja_JP.UTF-8 UTF-8 の行をコメントインする。

/etc/locale.gen
...
#en_SG ISO-8859-1  
en_US.UTF-8 UTF-8        <- コメントインする
#en_US ISO-8859-1  
...
#ja_JP.EUC-JP EUC-JP  
ja_JP.UTF-8 UTF-8        <- コメントインする
#ka_GE.UTF-8 UTF-8 
...

/etc/hosts にホスト名記載。myarch がそれにあたるので任意に置き換える。

/etc/hosts
#
# /etc/hosts: static lookup table for host names
#

127.0.0.1 localhost.localdomain localhost myarch
::1  localhost.localdomain localhost myarch

各種設定を実施。

(ホスト名設定)
# echo myarch > /etc/hostname

(ロケールの生成と設定)
# locale-gen
# echo 'LANG=en_US.UTF-8' > /etc/locale.conf
# export LANG=en_US.UTF-8

(キーマップ設定)
# loadkeys jp106
# echo 'KEYMAP=jp106' > /etc/vconsole.conf

(タイムゾーン設定)
# ln -sf /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
# hwclock --systohc --utc

(dhcpcdサービスを有効化)
# systemctl enable dhcpcd.service

(rootパスワード設定)
# passwd

pacmanで各種パッケージインストールとgrubの導入。

(パッケージインストール)
# pacman -Syy
# pacman -S intel-ucode
# pacman -S dosfstools efibootmgr

(ブートローダーgrubの導入)
# pacman -S grub
# grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=arch_grub --recheck
# mkdir /boot/EFI/boot
# cp /boot/EFI/arch_grub/grubx64.efi /boot/EFI/boot/bootx64.efi
# grub-mkconfig -o /boot/grub/grub.cfg

要らないかもしれないけど、iw コマンドと wpa_supplicant もインストール。2

# pacman -S iw wpa_supplicant

OS本体のインストールは一通り終わったので、マウント解除等して再起動。

# exit
# umount -R /mnt
# shutdown -h now

デスクトップ環境の構築

OS本体がインストール出来たらステップ2として以下が用意されている。マジ親切。
:ballot_box_with_check: Arch Linuxインストール (デスクトップ環境・日本語化編) | X, GNOME, 日本語フォント, 日本語入力の設定 - 普段使いのArch Linux

ネットワーク接続の設定

インストール時はインストールメディアのツールで無線ネットワークに手動接続していたので、netctl を利用して起動したら接続するよう以下を参考に設定する。
:ballot_box_with_check: netctl - ArchWiki

# cp /etc/netctl/examples/wireless-wpa /etc/netctl/

コピーしたプロファイルを編集する。

/etc/netctl/wireless-wpa
Description='A simple WPA encrypted wireless connection'
Interface=wlp1s0
Connection=wireless
Security=wpa
IP=dhcp
ESSID=Your-SSID
Key=\"82d9a7fe6a2ad4edffad767cc3e6a5f5031ea5586e3ed54ad85856dc67e98133

最後の Keywpa_passphrase を利用してパスワードを暗号化する。

# wpa_passphrase Your-SSID Your-PASSWORD
network={
  ssid="Your-SSID"
  #psk="Your-PASSWORD"
  psk=82d9a7fe6a2ad4edffad767cc3e6a5f5031ea5586e3ed54ad85856dc67e98133
}

出力されたテキストの psk= に続く英数字列を、プロファイルの Key=\" の後に続けて記載する。

プロファイルが出来たら接続を試してみる。

# ip link set wlp1s0 down (インターフェースが立ち上がっている場合はdownさせる)
# netctl start wireless-wpa

IPアドレスが取得できるまでに数秒程度待つ必要があるが、これで ping が通ればプロファイルは問題無いので、以下の通り自動接続を有効にする。
うまく行かなかった場合はこちらを参照。

# netctl enable wireless-wpa

デスクトップ環境の導入

Wi-Fi接続できたら、あとは基本的に最後まで参考記事に従って作業する。
:ballot_box_with_check: Arch Linuxインストール (デスクトップ環境・日本語化編) | X, GNOME, 日本語フォント, 日本語入力の設定 - 普段使いのArch Linux

ただし、トップバーにFcitxを統合するTopIconsのインストールする際にFirefoxでWebページにアクセスするよう紹介されているが、筆者が試した際にはFirefoxの拡張機能であるGNOME Shell Integrationが検出できないと表示され、促されたリンク先のドキュメントでGoogle Chrome使え的なことが書かれており、個人的にもその方が望ましいと思ったのでその手順を後述する。

Google Chrome の導入

$ packer -S google-chrome

こんだけっす。

TopIconsの導入は参考記事にあるWebページへChromeでアクセスして、Firefoxを例に紹介されている内容と同様の操作をすれば勝手に入れてくれる。

Google Noto フォントの導入

参考記事にはIPAフォント導入の際にGoogleのNotoフォントも推奨されていたので、試しに入れてみたところだいぶ見違えたので手順を記す。

フォントパッケージのインストール

:ballot_box_with_check: Google Notoフォント(源ノ明朝、源ノ角ゴシック)をインストールして使ってみる - 普段使いのArch Linux
上記を参考に進めるも、noto-fonts-cjk-otf パッケージは筆者が導入した際には1.6GBあり、packerでインストールすると1.9GBしか無い /tmp にダウンロードしてさらに展開してしまい容量が溢れてエラー終了してしまったので、yaourtで入れた。

特に上記問題を気にしなくて良い環境であれば、参考記事の通りにすれば入るはず。

fstabに以下のように指定するとtmpfs領域を拡張できるようなのでメモリが十分な環境であればこれでも良いかもしれません。筆者の場合は、3GBに拡張したところ足りず、3.7GB指定するとOSが立ち上がらなくなりました:expressionless:

/etc/fstab
...
...
...
tmpfs /tmp tmpfs nodev,nosuid,size=3G 0 0

yaourtのダウンロード先を /etc/yaourtrc で任意のディレクトリに変更できるので、以下のように編集。
yaourtやpacker等のAURヘルパーはrootでは起動できないように制御されている様なので、インストールを実行する一般ユーザーがアクセスできてかつ十分な空きサイズのあるパーティション内のディレクトリパスを指定する。

/etc/yaourtrc
...
TMPDIR="/home/genericuser/Downloads/tmp"
...

編集が完了したら、一般ユーザーで以下を実施。

$ yaourt -S --noconfirm noto-fonts-cjk-otf

終わったら /etc/yaourtrc の内容を元に戻しておく。

また、Notoフォントの等幅体は参考先でも行間が広いとあり、確かにターミナルフォントに使うと微妙だったので、源ノ角ゴシックを調整したNasuフォントが公開されていて、AURにあったのでそちらを導入。
:link: Nasuフォント - itouhiroはてなブログ

$ packer -S --noedit ttf-nasu

Fontconfigを書く

参考記事にもある通り、インストールしただけでは反映されないようなので、以下あたりを参考に ~/.config/fontconfig/fonts.conf を作成して編集する。
:ballot_box_with_check: Fontconfigでデフォルトのフォントを設定する方法 - 普段使いのArch Linux
:ballot_box_with_check: Fontconfigことはじめ - TechRacho

~/.config/fontconfig/fonts.conf
<?xml version='1.0'?>
<!DOCTYPE fontconfig SYSTEM 'fonts.dtd'>
<fontconfig>
 <match target="pattern">
   <test qual="any" name="family"><string>sans-serif</string></test>
   <edit name="family" mode="prepend" binding="same"><string>Noto Sans CJK JP</string>  </edit>
 </match>
 <match target="pattern">
   <test qual="any" name="family"><string>serif</string></test>
   <edit name="family" mode="prepend" binding="same"><string>Noto Serif CJK JP</string>  </edit>
 </match>
 <match target="pattern">
   <test qual="any" name="family"><string>monospace</string></test>
   <edit name="family" mode="prepend" binding="same"><string>NasuM</string>  </edit>
 </match>
</fontconfig>

編集が終わったら以下で反映させる。

$ fc-cache

ネットワークマネージャーを有効化

トップメニューのアクティビティ→設定→Wi-FiでWi-Fiネットワークの管理ができる様なので、netctlで自動接続させていたのをネットワークマネージャーに移管させる。3

netctlの接続を切って、自動接続も無効化。

# netctl stop wireless-wpa
# netctl disable wireless-wpa

NetworkManagerを起動する。

# systemctl start NetworkManager.service

トップメニューのアクティビティ→設定→Wi-Fiで正しく設定できたらサービスを有効化しておく。

# systemctl enable NetworkManager.service

ステップ3は用途や好みに依るところが大きいのでスキップ。

仕上がり

こんな感じです。

Screenshot from 2017-12-26 17-04-29.png

Screenshot from 2017-12-26 17-06-02.png

フォントきれいって言ってもMac+Retinaには敵わないけど、軽量Liunxのデスクトップ環境でここまでなるなら個人的には満足。
CentOS7と比べて軽いのかはわからない。特に問題も不満もないけどクリーンインストールしたばかりだからかもしれない。

所感

デスクトップ環境はおまけでいいやくらいの気持ちでやってみたら、思った以上に上質な環境4が出来上がってじわじわ楽しくなって、時間も本来の目的も昼飯も就寝時間のデッドラインもHORIZON Zero Dawnを進めるのもクリスマスも忘れて没頭してしまった。

公式ドキュメントが豊富でJP Projectの日本語サポートもかなりしっかりしているので、ハードルは高くても手探り感を楽しみながら取り組めたし運用しても楽しそうなので、デスクトップLinuxをちゃんと運用してみる良いきっかけかも!(先月買ったMacbookを見つめながら)


  1. 手探りの仕方はArchWikiを直接見た方がわかりやすいのでそちらにお任せ 

  2. 今まで利用してきた iw コマンドや wpa_supplicant はインストールメディア内のものなのでマシンにインストールしたOSで起動するとこれらが無い。iw などは便利そうなので無線環境しか無い本機では入れておいても良さそう 

  3. OSインストール後の時点でNetwork Managerに任せても良いのかもしれないけど、XとGNOME入れるまでGUIも無いので本記事としてはこのタイミングで記す 

  4. フォントの綺麗さに依るところが大きい気がしますが 

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0