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

  • 88
    いいね
  • 2
    コメント
この記事は最終更新日から1年以上が経過しています。

数年前、別の方がさらに数年前に買った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導入

/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 = http://downloads.sourceforge.net/project/pnsft-aur/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ポートに刺しかえたら上手くいった。何だったんだ…。