記事について
ネットブックくらいのスペックのしょぼPCにCentOS7入れて使ってたら重かったので、こちらに紹介されている中でArchLinuxに挑戦してみた際の備忘録。
実施日の2017年12月22日時点での情報に基づいて記載する。
前提
- ArchLinux4.14.7-1
- Dell Inspiron 11 3000 エントリー・プラス (価格.com限定)
- Intel Pentium® CPU N3700 @ 1.60GHz/4core Processor
- 4GB Memory
- 128GB SSD Strage
参考
Arch Linuxインストール - 普段使いのArch Linux
インストールガイド - 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ブートする。
基本的にこちらの記事の流れに沿って実施。
Arch Linuxインストール (OSインストール編)| UEFI, GPT, XFSを使用してインストール - 普段使いのArch Linux
まずはUEFI BIOSを参考記事に倣って設定する。
起動時のDELLのロゴが表示されている画面で F2 キーを押す。
UEFI画面が表示されるので SATA Mode
を AHCI
に設定。 (筆者の場合最初から選択されてた)
Boot List Option
を UEFI
に設定。 (筆者の場合最初から選択されてた)
Secure Boot
を Disabled
に設定。
Load Legacy Option Rom
を Disabled
に設定。
CMSモードに関する設定は、それらしい単語が見当たらなかったので、とりあえずこれで開始。
USB差込口にインストールメディアを差し込んで、F10 を押下。
再びDELLのロゴが表示されるので今回は F12 を押して Boot Option 画面に移行。
メニューが表示されるので、USB1 - UEFI OS (<メディアのボリュームラベル?>)
を選択する。
プロンプトが表示されたら、記事にもある通りEFIモードの確認とキーボード配列の設定をする。
# ls /sys/firmware
apci dmi efi memmap
# loadkeys jp106
無線ネットワークの接続
本機では無線ネットワークインターフェースしか持っていないので、USBブート後に以下の記事を参考にネットワーク設定をする必要がある。
ワイヤレス設定 - ArchWiki
PCに使われているNIC等によってはデバイスドライバやファームウェアを自分でインストールする必要がある様だが、幸い今回使用したマシンはその必要は無い。
環境に合わせて手探りで設定していく必要があるが、本記事では簡潔にしたいので前述の環境を前提とした設定に関する操作内容だけ記す。1
筆者のネットワーク環境がWPA-PSKのWi-Fiを利用していたので、WPAの認証設定をファイルに記載する。
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
ストレージの整備
ネットワーク設定が完了したら、再度こちらの記事に従う。
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
インストール実施
以降も最後まで参考記事の通り。
ほぼ書き写しになってしまうがここでも簡潔に操作内容だけに端折って記載。
日本のサーバーを優先して参照するよう、ミラーリストを編集。
##
## 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.gen
の en_US.UTF-8 UTF-8
と ja_JP.UTF-8 UTF-8
の行をコメントインする。
...
#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: 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として以下が用意されている。マジ親切。
Arch Linuxインストール (デスクトップ環境・日本語化編) | X, GNOME, 日本語フォント, 日本語入力の設定 - 普段使いのArch Linux
ネットワーク接続の設定
インストール時はインストールメディアのツールで無線ネットワークに手動接続していたので、netctl
を利用して起動したら接続するよう以下を参考に設定する。
netctl - ArchWiki
# cp /etc/netctl/examples/wireless-wpa /etc/netctl/
コピーしたプロファイルを編集する。
Description='A simple WPA encrypted wireless connection'
Interface=wlp1s0
Connection=wireless
Security=wpa
IP=dhcp
ESSID=Your-SSID
Key=\"82d9a7fe6a2ad4edffad767cc3e6a5f5031ea5586e3ed54ad85856dc67e98133
最後の Key
は wpa_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接続できたら、あとは基本的に最後まで参考記事に従って作業する。
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フォントも推奨されていたので、試しに入れてみたところだいぶ見違えたので手順を記す。
フォントパッケージのインストール
Google Notoフォント(源ノ明朝、源ノ角ゴシック)をインストールして使ってみる - 普段使いのArch Linux
上記を参考に進めるも、noto-fonts-cjk-otf
パッケージは筆者が導入した際には1.6GBあり、packerでインストールすると1.9GBしか無い /tmp
にダウンロードしてさらに展開してしまい容量が溢れてエラー終了してしまったので、yaourtで入れた。
特に上記問題を気にしなくて良い環境であれば、参考記事の通りにすれば入るはず。
fstabに以下のように指定するとtmpfs領域を拡張できるようなのでメモリが十分な環境であればこれでも良いかもしれません。筆者の場合は、3GBに拡張したところ足りず、3.7GB指定するとOSが立ち上がらなくなりました
...
...
...
tmpfs /tmp tmpfs nodev,nosuid,size=3G 0 0
yaourtのダウンロード先を /etc/yaourtrc
で任意のディレクトリに変更できるので、以下のように編集。
yaourtやpacker等のAURヘルパーはrootでは起動できないように制御されている様なので、インストールを実行する一般ユーザーがアクセスできてかつ十分な空きサイズのあるパーティション内のディレクトリパスを指定する。
...
TMPDIR="/home/genericuser/Downloads/tmp"
...
編集が完了したら、一般ユーザーで以下を実施。
$ yaourt -S --noconfirm noto-fonts-cjk-otf
終わったら /etc/yaourtrc
の内容を元に戻しておく。
また、Notoフォントの等幅体は参考先でも行間が広いとあり、確かにターミナルフォントに使うと微妙だったので、源ノ角ゴシックを調整したNasuフォントが公開されていて、AURにあったのでそちらを導入。
Nasuフォント - itouhiroはてなブログ
$ packer -S --noedit ttf-nasu
Fontconfigを書く
参考記事にもある通り、インストールしただけでは反映されないようなので、以下あたりを参考に ~/.config/fontconfig/fonts.conf
を作成して編集する。
Fontconfigでデフォルトのフォントを設定する方法 - 普段使いのArch Linux
Fontconfigことはじめ - TechRacho
<?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は用途や好みに依るところが大きいのでスキップ。
仕上がり
こんな感じです。
フォントきれいって言ってもMac+Retinaには敵わないけど、軽量Liunxのデスクトップ環境でここまでなるなら個人的には満足。
CentOS7と比べて軽いのかはわからない。特に問題も不満もないけどクリーンインストールしたばかりだからかもしれない。
所感
デスクトップ環境はおまけでいいやくらいの気持ちでやってみたら、思った以上に上質な環境4が出来上がってじわじわ楽しくなって、時間も本来の目的も昼飯も就寝時間のデッドラインもHORIZON Zero Dawnを進めるのもクリスマスも忘れて没頭してしまった。
公式ドキュメントが豊富でJP Projectの日本語サポートもかなりしっかりしているので、ハードルは高くても手探り感を楽しみながら取り組めたし運用しても楽しそうなので、デスクトップLinuxをちゃんと運用してみる良いきっかけかも!(先月買ったMacbookを見つめながら)