Edited at

Arch Linux快適デスクトップ環境の構築

2019年5月追記

この記事は2013年に書かれた内容をベースにしており情報が古いです。

2019年版の Arch Linux 記事を書いたので、そちらを参照してください。

https://qiita.com/xorphitus/items/d543931ecd2c441e462f

編集リクエストの受付けもこれに伴い凍結いたします。


数年前、別の方がさらに数年前に買ったPCパーツを譲ってもらい、Arch Linuxを軽ーく入れて愛用していたのだが、とうとうお亡くなりに。

やけになって、今どき(?)なPCパーツを買ってやった。初UEFI。


SSDも初だと思ったら、手持ちのMacBook Airに載っていた。

せっかくだから初LVMもしよう。

買ったもの


  • CPU: Intel Core i7-4470K BOX / 34,980yen

  • M/B: ASRock H87 Performance / 10,980yen

  • Mem: ADATA AD3U1600W8G11-2 (Bulk) / 9,980yen

  • SSD: Intel 520 SSDSC2CW120A3K5 / 14,980yen

  • DVD Drive: LG GH24NS95+S (Bulk) / 1,980yen

  • 電源ユニット: 玄人志向 KRPW-PT500W/92+ / 8,980yen

  • ケース: ZALMAN Z9U3 / 5,800yen

total: 87,590yen (including tax, 2013/8/11)

メディアにarchlinux-2013.08.01-dual.isoを焼いてそれをBoot。USBメモリではなく、CDやDVDを使うのがおすすめ。理由はこの後。

起動したらBoot Arch Linux (x86_64)を選択してインストール開始。


キーボードレイアウト

個人的には不要。英語のままで十分。


インターネット接続の確立

ping打ってみたら返ってきたので何もしなかった。


ディスク周りのスタンバイ


パーティション

ここからが本番。いくつか条件がある。


  • UEFIなので/bootは512MB以上のVFat

  • SSDでTrimを使うため、/Ext4BtrfsJFSXFSのいずれか

https://wiki.archlinux.org/index.php/Solid_State_Drives#TRIM

今回は



  • sda1を512MBのVFat


  • sda2を残り全容量のExt4 (おまけにLVM) とすることとした

まずは新規のディスクなのでoをタイプし ( create a new empty GPT partition table) GUIDパーティションテーブルを作成する。

次いでn (add a new partition) をタイプする。ここでは


  • Partition number 1 に 512MB

  • Typeは、ef00 EFI System

を選択する。

再びnをタイプして


  • partition number 2 に残り全部

  • Type は 8e00 Linux LVM を選択

swapパーティションは不要。必要ならswapfileを使うし、またせっかくメモリが16GBもあるのでswapinessも下げる。

ここでp (print the partiotion table) で確認をする。

最後にw (write table to disk and exit) にてパーティショニング完了。


LVM設定

https://wiki.archlinux.org/index.php/LVM

まずはLVMの物理ボリュームを作成する。

# pvcreate /dev/sda2

確認は

# pvdisplay

次にLVMのボリュームグループを作成する。

# vgcreate VolGroup00 /dev/sda2

確認は

# vgdisplay

全て/に割当てる。

# lvcreate -l +100%FREE VolGroup00 -n lvolroot

-lが割当量、-nが名前を指定するオプション。

ちなみにこれに失敗する場合はmodprov dm-modせよとArch Wikiにあったが、不要だった。

再度確認。

# lvdisplay


ファイルシステムの構築

# mkfs.vfat -F32 /dev/sda1

# mkfs.ext4 /dev/mapper/VolGroup00-lvolroot


ベースシステムのインストール

まずはマウントする。

# mount /dev/mapper/VolGroup00-lvolroot /mnt

# mkdir -p /mnt/boot
# mount /dev/sda1 /mnt/boot

なお、sda1/bootではなく/boot/efiにマウントするような話もちらほら出ているが

/boot/efiはGRUB2の場合の模様。

ではインストール。まずは

# vi /etc/pacman.d/mirrorlist

にて

Server = http://ftp.jaist.ac.jp/pub/Linux/ArchLinux/$repo/os/$arch

をServerのリストの先頭行に配置する。その上で

pacstrap -i /mnt base base-devel

とする。

なお、インストール対象パッケージを選別したい場合は-iオプションは外すこと。


システムの設定


fstabの生成

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

ここでSSDのために

# vi /mnt/etc/fstab

にて、各パーティションにnoatimediscardのフラグをそれぞれ立てる。前者はジャーナルの無効化による書き込み回数減、後者はTrimの有効化による書き込みの性能劣化防止。


ルート変更

# arch-chroot /mnt


Localeの設定

# vi /etc/locale.gen

にて、次の2行のコメントアウトをそれぞれ外す。

en_US.UTF-8 UTF-8

ja_JP.UTF-8 UTF-8

続いて

# locale-gen

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


コンソールフォントとキーマップ

最初の時点で変えてないから不要


タイムゾーン

ln -s /usr/share/zoneinfo/Asia/Tokyo /etc/localtime


ハードウェアクロック

hwclock --systohc --utc


ホストネーム

echo お好みのほすとねーむ > /etc/hostname


ネットワーク設定

systemctl enable dhcpcd.service


pacmanの設定

まずは

# vi /etc/pacman.conf

にて multilib のコメントアウトを外して32bitパッケージを利用可能にする。

# pacman -Sy


initial ramdisk環境の作成

LVMでは必須の様子。

LVMを使っている場合にはrootファイルシステムを読み込もうにも、先にLVMの設定を読み込んでる必要がある。それをやるのがこのinitrdの役割。

# vi /etc/mkinitcpio.conf

にて、lvm2HOOKblockfilesystemsの間に追加。順序に意味があるかは未調査だが、Arch Wikiに倣った。

https://wiki.archlinux.org/index.php/LVM#Add_lvm_hook_to_mkinitcpio.conf

最後に

# mkinitcpio -p linux


rootパスワードの設定

# passwd


ブートローダのインストールと設定

https://wiki.archlinux.org/index.php/UEFI_Bootloaders

デュアルブート対策でGummibootにしたが、冷静に考えたらArch以外のOSをこのマシンで起動する機会は自分にはなさそうだ…。

https://wiki.archlinux.org/index.php/Gummiboot

# pacman -S gummiboot

# umount /sys/firmware/efi/efivars
# modprove -r efivars
# modprove efivarfs
# mount -t efivarfs efivarfs /sys/firmware/efi/efivars
# gummiboot install

ちなみにumountはArch Wikiに合わせて行ったものの

umount: /sys/firmware/efi/efivars/: not mounted

と出てきたので、不要なステップだった。

# vi /boot/loader/loader.conf

にて、設定を変更。

default arch

timeout 4

続いて

# vi /boot/loader/entries/arch.conf

にて

title Arch Linux

linux /vmlinuz-linux
initrd /initramfs-linux.img
options root=/dev/mapper/VolGroup00-lvolroot rw


Gummibootインストール トラブルシュート記録 1

# gummiboot install

の時に

File system /boot is not an EFI ystem Partition (ESP)

と出てきた場合、パーティションのTypeの指定が誤っている。

exitumountして、gdiskPartition number 1のTypeをef00で作りなおすこと。


Gummibootインストール トラブルシュート記録 2

Not booted with EFI, skipping EFI variable setup.

と出てくる、または/sys/firmware/efi/efivarsが存在してない場合。

結論から言うと、インストールメディアにUSBメモリはなくCD, DVDを使うことで回避可能。

こちらがヒントっぽい。

http://boronology.blogspot.jp/2012/10/arch-linux-on-uefi-arch201210.html

恐らくUEFIではなくBIOSから起動している扱いになっていることで/sys/firmware/efiが作成されていない???

MacBook AirでUSBメモリにisoを焼いて作業していたこともあり、上記エントリにならってUNetBootInを使うことにしたのだが、これが罠だっだ。起動しない。

Missing operating system.

Reboot and Select proper Boot device
or Insert Boot Media in selected Boot device and press a key

https://wiki.archlinux.org/index.php/USB_Installation_Media_(%E6%97%A5%E6%9C%AC%E8%AA%9E)#UNetbootin_.E3.82.92.E4.BD.BF.E3.81.86

によるとsyslinux.cfgを修正すればOKらしいので、その方針で進めてみたが結果は変わらず。

なお、最終的に自分はArchをUSBメモリから起動し、その環境でCDを焼き、そのCDをインストール用のメディアとして使うことで解決した。

# wget http://ftp.jaist.ac.jp/pub/Linux/ArchLinux/iso/2013.08.01/archlinux-2013.08.01-dual.iso

# pacman -Sy
# pacman -S cdrkit
# wodim -v -sao dev=/dev/cdrw archlinux-2013.08.01-dual.iso


アンマウントとリブート

# exit

# umount /mnt/boot
# umount /mnt
# reboot

ここでCD、USBメモリを取り出す。

ちゃんと起動できることを確認


デスクトップ機化への道のり

起動したらrootでログイン。

LANGja_JP.UTF-8を指定しているのためXが起動していないとコンソールが日本語を表示できずによく化ける。そこで

# export LANG=en_US.UTF-8

により、ASCIIだけの世界にしておく。


パッケージの最新化

# pacman -Syu


個人ユーザ作成

# useradd -m {username}

# passwd {username}
# pacman -S sudo
# visudo

個人ユーザがsudoで色々できるようにするため、以下を記述する。

{username} ALL=(ALL) ALL


Xの導入

# pacman -S xorg-server

Window Managerには軽量なOpenboxを採用。マシンスペックがよくなったというのに、あまり無駄な豪華さは求めていない。

-> Xmonad (Haskellで設定を記述するタイル型WM) に移行しました。

一応、Openbox導入のパッケージインストールコマンドを記述しておく。

# pacman -S openbox

最初にlibglに何を使うか質問されるが、1) mesa-libglを選んでみた。

お守り的にxtermも入れておく。

# pacman -S xterm


ドライバの導入

# lspci | grep VGA

とすると

00:02.0 VGA compatible controller: Intel Corporation Xeon E3-1200 v3/4th Gen Core Processor Integrated Graphics Controller (rev 06)

Intelの文字発見。というわけで

# pacman -S xf86-video-intel

ここでpacman後に出たメッセージに/etc/X11/xorg.conf/20-intel.confがどうとかって出るけれど、このファイルは不要。

https://wiki.archlinux.org/index.php/Intel_Graphics_(%E6%97%A5%E6%9C%AC%E8%AA%9E)


SLiMの導入

SLiMによってstartxコマンドなしで起動時にXが立ち上がるようにする。

# pacman -S slim

# systemctrl enable slim.service


SLiM トラブルシュート

slimコマンドを実行した時に

Faliled to execute loggin command

と出るのは、.xinitrc が書いてないことが原因なので、/home/{username}/.xinitrc

#!/bin/sh

exec openbox-session

くらいを記述しておく。


X トラブルシュート マウスとキーボードが利かない

.xinitrcにて、exec openbox-sessionの前にexec xtermとうっかり書いたのが問題だった。Shellの勉強足りてない…。

それを消したら上手くいった。


最低限必要な武器を導入

# pacman -S emacs zsh tmux openssl git vim

Githubから設定ファイル群をcloneする。

# git clone http://github.com/xxxxx/xxxxx.git

# dotfiles/setup.sh


zshの導入

前項でインストールだけは終えているので、設定の変更。

$ chsh

対話でどのシェルにするか聞かれるので、/bin/zsh とする

加えてSLiMのzsh設定として、/etc/slim.confに以下を編集をする。

コメントアウト

login_cmd           exec /bin/sh - ~/.xinitrc %session

追記

login_cmd exec /bin/zsh -l ~/.xinitrc %session


まっとうな日本語フォント

# yarourt -S ttf-ricty


yaourt導入

yaourtは開発が終了しています。(Requesting official statement from developers · Issue #382 · archlinuxfr/yaourt)

下記から開発が継続しているパッケージマネージャーを使用してください。

AUR ヘルパー - ArchWiki

/etc/pacman.conf以下を追記

[archlinuxfr]

SigLevel = Never
Server = http://repo.archlinux.fr/$arch

そして

# pacman --sync --refresh yaourt


日本語入力

mozcを導入する。

/etc/pacman.conf以下を追記

[pnsft-pur]

SigLevel = Optional TrustAll
Server = https://osdn.net/projects/ponsfoot-aur/storage/pur/$arch

そして

# sudo pacman -Syy

# sudo pacman -S mozc ibus-mozc emacs-mozc

~/.xinitrcに以下を追記

export GTK_IM_MODULE=ibus

export XMODIFIERS=@im=ibus
export QT_IM_MODULE=ibus
ibus-daemon --xim -d &

ここでIBusの設定をする。

$ ibus-setup

として、


  • 「一般」タブからショートカットに「backslash」を設定

  • 「インプットメソッド」タブからインプットメソッドに「Mozc」「English (US)」を追加

再起動する。

# sudo reboot


音の設定

# pacman -S alsa-utils

$ alsamixer

ここでmasterを1以上にする。


alsaトラブルシュート

alsamixerを設定しても音が出ない場合。

参考

https://wiki.archlinux.org/index.php/Advanced_Linux_Sound_Architecture#HDMI_output_does_not_work

$ aplay -l

にてカードとデバイスの番号を特定する。その番号が正しいかどうかは

$ aplay -D plughw:{card_id},{device_id} /usr/share/sounds/alsa/Front_Center.wav

で音が出るかどうかで判断する。

音の出るcar_iddevice_idを特定できたら、~/.asoundrcに以下を記述する。

pcm.!default {

type hw
card {card_id}
device {device_id}
}

ちなみに、以下も試したがこの環境では効果がなかった。

オンボードのIntelサウンドカードで音が出ない


https://wiki.archlinux.org/index.php/Advanced_Linux_Sound_Architecture#No_sound_with_onboard_Intel_sound_card

echo blacklist snd_intel8x0m | sudo tee /etc/modprobe.d/modprobe.conf


必要なツールを導入


コマンドライン充実系

pacman


  • tree

  • tig

  • the_silver_searcher

  • lsof

  • source-highlight

  • unzip

  • xorg-xmodmap

  • htop

  • dstat

  • iotop

yaourt


  • jq


GUI系ツール系

pacman


  • terminator

  • xpdf-japanese

  • gpicview

  • libreoffice

  • libreoffice-ja

  • gimp

  • vlc

  • hardinfo

  • skype

  • flashplugin

  • tint2

  • conky


  • obconf -> xmonad移行に伴い不要に


  • obkey -> xmonad移行に伴い不要に


  • obmenu -> xmonad移行に伴い不要に

  • firefox-i18n-ja

yaourt


  • googe-chrome-beta

  • dropbox-cli

~/.xinitircに以下を追記。

dropboxd &

skype &


デスクトップ通知

設定ファイルでいろいろ変更でき、かつシンプルなdunstにした。

# pacman -S dunst

$ mkdir ~/.config/dunst
$ cp /usr/share/dunstrc ~/.config/dunst/

~/.xinitrcには以下を記述。

dunst &


時計がおかしいので修正

# pacman -S ntp

# ntpd ntp.nict.jp


視覚効果


透過と壁紙設定

# yarourt -S compton

# pacman -S nitrogen
$ nitrogen {wallpapers_path}

nitrogenは壁紙設定のツールで、GUIが立ち上がる。

その上で~/.xinitirc

nitrogen --restore &

compton &

を記述。


transset-dfでterminator等の透過設定をする例もあるが使わない


terminatorの透過設定を使わないと、フォントも透過するため


ちなみにcomptonが入ってないとterminatorの透過設定が効かない



テーマの設定

http://box-look.org/index.php


からopenboxのテーマを落とす。NightLifeの3にした。

http://gnome-look.org/


からgtk 2.xのテーマを落としてzip解凍して ~/.theme に設置。Paranoidにした。

http://gnome-look.org/


から続いてアイコンと思ったら欲しいの (faenza) がレポジトリにあったのでpacmanで導入。

# pacman -S faenza-icon-theme

http://gnome-look.org/


から続いてマウスのテーマを落とす。Obsidian Cursorにした。

GUIツール経由で設定をする。

# pacman -S lxappearance lxappearance-obconf

$ lxappearance &

これでウィジェット、アイコンテーマ、マウスカーソル、ウィンドウ境界を先ほど導入したものに設定。


フォントの設定は全部一律でMigu 1C 10とそのBoldとした。


ちなみに、Obsidian Cursorを設定しようとするとcoreを吐いて落ちたが

その後は問題なく動作した


この時theme engineがないとエラーが出るので

# yaourt -S gtk-engine-murrine gtk-engine-equinox gtk-engines

で導入した。

ついでにIBusの設定でもフォントをMigu 1Cにしておく。


もともとはマウスカーソルを xcursor-silver-3d にしようと思っていたので


# yaourt -S xcursor-silver-3d


としたのだがlxappearanceの画面に出てこなかった

そこで gnome-look から tar.gz を落として lxappearance で食わせてみたがObsidian Cursor同様coreを吐いて落ちた


Obsidian Cursorとの違いは、その後の動作に支障が出た(選択画面に現れなかった)ことである



おまけ


SSDでパフォーマンスを出すために

こちらを参考

https://wiki.archlinux.org/index.php/Solid_State_Drives


RealforceのDIPスイッチが効かない

全然関係ないけおど、RealforceのDIPスイッチ (1番)をONにしても、Ctrl, CapsLockが逆にならなかった。

試しに別のUSBポートに刺しかえたら上手くいった。何だったんだ…。