117
Help us understand the problem. What are the problem?

More than 3 years have passed since last update.

posted at

updated 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のいずれか

今回は

  • 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設定

まずは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

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

デュアルブート対策で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を設定しても音が出ない場合。

参考

$ 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でパフォーマンスを出すために

こちらを参考

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

全然関係ないけおど、RealforceのDIPスイッチ (1番)をONにしても、Ctrl, CapsLockが逆にならなかった。
試しに別のUSBポートに刺しかえたら上手くいった。何だったんだ…。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Sign upLogin
117
Help us understand the problem. What are the problem?