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を使うため、
/
はExt4
、Btrfs
、JFS
、XFS
のいずれか
今回は
-
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
にマウントするような話もちらほら出ているが
- https://bbs.archlinux.org/viewtopic.php?id=155030
- https://wiki.archlinux.org/index.php/UEFI_Bootloaders
/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
にて、各パーティションにnoatime
、discard
のフラグをそれぞれ立てる。前者はジャーナルの無効化による書き込み回数減、後者は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
にて、lvm2
をHOOK
のblock
、filesystems
の間に追加。順序に意味があるかは未調査だが、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の指定が誤っている。
exit
、umount
して、gdisk
でPartition 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でログイン。
LANG
にja_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_id
、device_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ポートに刺しかえたら上手くいった。何だったんだ…。