Thu Oct 16 23:34:25 JST 2014

Arch linux を入れた。

しつこいくらい言ってるけど、なにか成功した人間は普通、面倒だとか忠実に再現できないといった理由から、 成功に至るまでの道を正確に書き残さない。 それでもあとからその道をなぞりたい人は、そういった書き残しが助けになる。 だからできるだけ書こう。 これは、あまり強くない私からのお願いです。

ネットに転がっている情報を随分と利用した。 それでも、それらは断片的であったり、 自分の場合に当てはめていくつかの語を置き換える作業が必要だったりする。 これはもちろん当然だ。 ここには、自分の場合だけを書くことにする。

install Arch linux

あーち・りなっくすを入れることにした。 Debianが良かったのだけれど、インストールの最初で、無線LANを認識できないと宣ったから。

disk の作成

ディストリビューションのisoファイルは Arch Linux - Downloads にある。私はいつもOSはUSBメモリから入れている。

ダウンロードしたisoファイルが ~/Downloads/archlinux.iso とする。 USBメモリを、たとえば、 /dev/sdc とする。

私はいつも、挿したUSBメモリが /dev/sd何 であるかを見つけるのに、 USBメモリを挿してない状態の ls /dev/sd* と、挿した後のそれとの diff を見ることで確認している。

このとき、

# dd if=~/Downloads/archlinux.iso of=/dev/sdc

によって、USBメモリがインストールディスクとして使える。ddコマンドはブロックサイズを指定することで、書き込みが高速になる。 man dd によれば、

  ibs=BYTES

read up to BYTES bytes at a time (default: 512)

とある。めいっぱい、大きな数字を指定すればよい。

isoの起動

インストールさしたいPCにUSBメモリを挿して起動すれば、Arch linux が起動する。 せずに、すでに入っているOSが起動するならば、 もう一度、USBメモリを挿した状態で、起動して、F2とかF11とかF12とかCtrl+I とかで、さっとBIOS 設定画面に入って、 bootの優先順位を、USB を最高位にする。

インストール作業

インストールは、他のディストリビューションのように、次へを無闇にクリックしてれば完了するものではない。 大変に残念だ。 archisoというhostnameの、rootとしてログインした端末が表示される。 すべてCUIの作業で、インストールを行う。

まず、キーボードはUS配列 (ASCII配列?) としてあるので、日本語配列を使ってる人間は、 操作が困るようなら、(ほんというと困らないはずだけど)

# loadkeys jp106 

とする。あと、大量のソフトウェアをダウンロードすることを行うので、ネットの接続が必要。 有線は勝手に認識されるらしい。 私は無線LANしかないので、次のように、

# wifi-menu # 無線をつなぐ。グラフィカルな画面で接続設定が行われる

次にパーティション分け。 私の場合を、説明する。 必要なのは、3つか、あるいは4つのパーティション。 今回は3つにした。

  1. BIOS boot (1007KB)
  2. boot (100MB + alpha)
  3. /home (remain)

4つめとして、 swap (3GB) があってもよかった。 メモリが足りないと、swapは必要になるし、 これは、考えが足りてなかったけれど、hibernateさせるのにもswapは当然使われる。 そのためのswapのサイズは、RAMの中をそのまま書き込むのだから、RAMの同じサイズとも思われそうだけど、 実際は、2/5だとか、半分だとか。

swapパーティションがなくて、hibernateさせる場合は、swapfile を使うことになる。後述する。

上の、1-3のパーティションを作成したいのだった。 パーティションを書くツールはいくつかあって、 fdisk とか cgdisk とか gdisk とかで、今回は gdisk.

# gdisk /dev/sda
p
1. うんたら
2. うんたら
3. うんたら

すでに3つのパーティションが存在してたけど、綺麗にやりたいので、一旦全部消す

d
1
d
2
d
3

そんで作成

n
1

1007K
ef02 # BIOS boot だけ、正しくタイプを指定

n
2

101M

n
3

+0 # 残り全部

w # 以上の設定で実際に書く
q # quit

以上で、パーティション、/dev/sda1, /dev/sda2, /dev/sda3 ができた。 これらを ext4 で初期化する。

# mkfs.ext4 /dev/sda1
# mkfs.ext4 /dev/sda2
# mkfs.ext4 /dev/sda3

これらのうち、/home用パーティションを /mnt に、BIOS boot用パーティションを /mnt/boot にマウントして、これからようやくインストール作業を行う。

# mkdir /mnt/boot
# mount /dev/sda3 /mnt      # 今の場合、Number 3 が/home用
# mount /dev/sda2 /mnt/boot # 今の場合、Number 2 がBIOS boot
# pacstrap /mnt base base-devel

最後行で、大量の基本コマンドのダウンロードが行われる。

起動設定

BIOSから、/dev/sda2, /dev/sda3 がちゃんとマウントされるように fstabの設定を次のようにする。

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

すでに、/mntにはArch linux がインストールされている。 その中に次のようにしてログインする。

# arch-chroot /mnt
%

プロンプトが小さくなる。

% sed -i -e 's/^#en_US.UTF-8 UTF-8/en_US.UTF-8 UTF-8/' -e 's/^#ja_JP.UTF-8 UTF-8/ja_JP.UTF-8 UTF-8/' /etc/locale.gen
% locale-gen

sedで書いたけど、nanoなりviなりのエディタで、コメントアウトすればいい。

% echo LANG=en_US.UTF-8 > /etc/locale.conf
% export LANG=en_US.UTF-8
% echo KEYMAP=us > /etc/vconsole.conf
% ln -s /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
% hwclock --systohc --utc
% echo "host name" > /etc/hostname
% passwd
(root password)
(root password again)

introduce GRUB2

% pacman -S os-prober
% pacman -S grub
% grub-install --recheck /dev/sda
% grub-mkconfig -o /boot/grub/grub.cfg # !important
% acman -S wireless_tools wpa_supplicant wpa_actiond dialog
% systemctl enable netctl-auto@wlp2s0
% systemctl enable dhcpcd.service

後片付け

% exit
# umount -R /mnt
# reboot

適当な、Intelとか画面に表示されてるタイミングでUSBメモリを外す。 GRUB2画面が出、Archlinuxが起動する。 root/(password) でログインできる。

個人設定

# wifi-menu
# useradd -m -g wheel cympfh
# passwd user
(user password)
(user password again)
# visudo
s/^%wheel ALL=(ALL) ALL/wheel ALL=(ALL) ALL/
# pacman -S xorg-server xorg-server-utils xorg-xinit xorg-xclock xterm
# pacman -S xorg-drivers
# pacman -S xf86-video-intel
# # 参考; lspci | grep VGA
# # 参考; https://wiki.archlinux.org/index.php/Xorg#Driver_installation
# pacman -S slim arhlinux-themes-slim slim-themes
# nano /etc/slim.conf
login_cmd exec /bin/zsh -l ~/.xinitrc %session
daemon yes
current_theme archlinux-simplyblack
# systemctl enable slim.service
# reboot

そろそろ、userでログインする。

i3, dropbox, feh, fcitx の導入

% pacman -S i3-wm dropbox feh
% pacman -S fcitx fcitx-mozc fcitx-configtool
% cat << EOM > ~/.xinitrc
setxkbmap us -option ctrl:nocaps
sh .fehbg
dropboxd &

export GTK_IM_MODULE=fcitx
export XMODIFIERS="@im=fcitx"
export QT_IM_MODULE=fcitx
export DefaultIMModule=fcitx

exec i3

また、ログオフしてログインしなおす。 slimのためにログイン画面はグラフィカルになっていて、 i3としてログインできる。 i3は初回起動時、設定ファイル .i3/config を作成するかと聞いてくるので、 作ってもらう。

IM

IMであるところの、fcitx は、先の .xinitrc から呼んでいないので起動していない。 そこから呼んだところで、うまく動かなかった。.i3/cofigから呼ぶことにする。

一番最後くらいの行にでも

echo exec --no-startup-id fcitx >> ~/.i3/config

とする。また次回ログインすると、fcitxが動いて働く。

壁紙の設定

feh --bg-fill /path/wallpaper.jpg

とすると、壁紙になる。あと、~/.fehbg というファイルが自動で生成される。 これは .xinitrc から、shスクリプトとして実行することで、 起動時に壁紙として設定される。 fehへのオプションとして、 --bg-fill のかわりに、 --bg-max とか、あといくつかある。 (参考; man feh)

Flashplayer on the browser

browser は firefox が入ってる。 Adobe近世のFlash Player は次のように入れて、不自由に動画を再生できる。

pacman -S extra/flashplugin

swapfile to hibernate

hibernate (suspend into disk) や、suspend (suspend into RAM) をするのに、 今まで、 pm-hibernate, pm-suspend コマンドを使っていた。 これは次のパッケージに含まれる。

pacman -S pm-utils

さて、おそらく sudo pm-hibernate としても、うまくハイバーネートしない。

sudo fallocate -l `/sys/power/image_size` /swap
sudo echo '/swap   swap    swap    defaults        0       0 ' > /etc/fstab
sudo mkswap /swap
sudo swapon /swap

これで、/swapが、スワップ領域として使われるようになる。 次に、GRUB2に、/swapを再開位置とさせる設定を行う。

次のコマンド出力の、ext 0 の、physical_offsetを読んでメモしておく。

sudo filefrag -v /swap

私の場合は、 276480 がオフセット位置であった。 数字のオーダーは人によって結構違う。

sudoedit /etc/default/grub
GRUB_CMDLINE_LINUX_DEFAULT="quiet"

っていう行が割と頭にあるので、

GRUB_CMDLINE_LINUX_DEFAULT="resume=/dev/sda3 resume_offset=276480 acpi_sleep=nonvs"

とする。 /dev/sda3 は、私の、ホームディレクトリのあるパーティション。 GRUBの設定を書き直したので、最後に必ず

sudo grub-mkconfig -o /boot/grub/grub.cfg 

として完了する。

書き残したことあるかな。 あったら追記しよう。