chroju.dev/blog

the world as code

VirtualBoxでArch Linuxのインストール練習

VAIO Proにcygwin入れたりして頑張っていたのだが、そろそろしんどくなってきたので、まともに開発に使える環境作るかーってことでデュアルブートを試みることに。デュアルじゃなくてOS丸ごと入れ替えたら?という話もありそうだが、仕事で使うのでWindowsを潰せない。かと言って仮想マシンだとこのPCのスペックでは心許ない。。ってことでデュアル。

ではディストリは何を使うか?だが、以前Ubuntuを使ったデュアルブートは構築した経験があるし、GUIでポチポチインストールするんじゃあんまり勉強にはならなさそうだなーということで、思い切ってArch Linuxを選んだ。ミニマルを是とするディストリだが、ミニマルどころか最初はsudoすら入っていないという徹底っぷり。使うものだけ入れろ!というポリシーは大変に共感できるものではあるが、それは当然難易度の高さと引き換えなわけで。。

さすがにぶっつけ本番は怖すぎるので、まずはiMac(OS X Marverics)上のVirtualboxでデスクトップ環境が立ち上がるとこまでやってみた。難易度が確かに高いOSではあるが、Wikiが非常に充実しているので、案外迷うこともないとは思う。逆に言えば、ここのInstallation GuideとBeginner's Guideにきちんと目を通した上でやるべき。こんなブログ記事だけに頼らずに。

なお、えっらい長い記事になった模様。

事前チェック

VAIO ProがUEFI環境なんで、今回の練習でもUEFIを用いることにした。Virtualboxの場合は仮想マシンの設定から「UEFI」を有効化できる。他にも初期設定ではインストールメディアをつないだり、外部メディアからの起動準備を優先させたりして、準備完了。

起動するといきなりシェルが現れる。ここから全部自力でコマンド打って入れてけというストイックさ。ひとまずはUEFIで起動しているか確認するため、UEFI変数を表示。

# mount -t efivarfs efivarfs /sys/firmware/efi/efivars
# efivar -l

続いてキーボードマッピング変更。 jp106とかusとか適宜。やらなくてもインストールぐらいはなんとかなるかもしれんが、viでコロンの位置違ったりすると不便。地味に。

# loadkeys hoge

事前チェックはこれぐらい。

パーティション

続いてパーティション分割。まずはfdisk -lによりハードディスクのデバイス名を確認し、そのデバイス名に対してcgdiskコマンドを実行。今回はGPTを用いるのでcgdiskだが、MBRならcfdiskでよい。あるいはgdiskfdiskもあるけど、やりづらいので自分はcを頭に付ける。

なおMBRとGPTの選択に関してはwiki内に記述がある。

ブートローダに GRUB Legacy を使う場合、MBR を使うべきです。 古い BIOS を使う Windows (32ビット、64ビット両方) とのデュアルブートをするなら、MBR を使うべきです。 BIOS の代わりに UEFI を使う64ビットの Windows とデュアルブートをするなら、GPT を使うべきです。 [https://wiki.archlinux.org/index.php/Partitioning_(%E6%97%A5%E6%9C%AC%E8%AA%9E)](https://wiki.archlinux.org/index.php/Partitioning_(%E6%97%A5%E6%9C%AC%E8%AA%9E))

分け方はわりと適当。swapはまぁ、なくてもいいかなと。

フォーマット、マウント

切り分けが終わったらそれぞれmkfsコマンド使ってフォーマットする。基本的にはext4でフォーマットするが、ESP用の領域はさっき書いた通りFAT32でフォーマットしておく必要がある。

  • mkfs.ext4 /dev/sda1でフォーマット
  • FAT32の場合はmkfs.vfat -F32
  • -vオプションで詳細表示、-cで不良ブロックのチェック
  • Windowsデュアルブートの場合、WinのEPSがある領域を/bootに指定する

そしてマウント。こんな感じで。

# mount /dev/sda1 /mnt

なお、EFISTUBの場合はESPと/mnt/bootを兼ねさせることも可能らしいいのだが、EFISTUBってなに。。。? とりあえずgrub使う場合にEFISTUBのことは考えなくていいらしいので一旦無視した。

マウントが終わったらlsblk -fでパーティションレイアウトの確認をしておく。念のため。

インストール

いよいよインストールである。本来ならその前にインターネット接続の設定が必要だが、Virtualboxの場合は特に何もせずつながってしまったので何もしていない。システムファイルのインストールでは、/etc/pacman.d/mirrorlistの上から優先的にミラーサイトが使われるので、好みのがあるなら予め編集して並び替えておく。基本的には日本(筑波大だが)を一番上にしとけば良いかと。

# pacstrap /mnt base base-devel

vimとかgrubとか必要なものがあれば、このコマンドの後にスペース空けて続けることで一緒に落とせる。この後の作業をある程度楽にできるかなということで、自分はvimとbashを、あとsudo(このディストリsudoすら入ってない!!)を落としておいた。

インストールがつつがなく終わったら、fstabを生成。

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

そしてchroot。

# arch-chroot /mnt /bin/bash

インストール後の処理

ここからインストール後の諸設定をば。

localeの変更

# vim /etc/locale.gen

使う言語をコメント解除。基本はen_USとja_JPあたりでOKのはず。で、以下を打つ。

# locale-gen
# vim /etc/locale.conf`

さっきコメント解除した言語をLANG=で指定。LANG=ja_jp.UTF-8とか。ただしGUI環境入れずに日本語使おうとすると化けるので、この時点ではen_usが無難。

Timezone

/etc/localtimeを置き換える。

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

デフォルトのコンソールフォントとキーマップ変更

/etc/vconsole.confを編集して、デフォルトのキーマップとコンソールフォントを設定する。

# vim /etc/vconsole.conf
KEYMAP=jp106
FONT=Lat2-Terminus16

ハードウェアクロック

自分はよく知らんかったのだが、ハードウェアクロックとシステムクロックってのがあるらしい。で、ハードウェアクロックにUTCを設定しておく。

# hwclock --systohc --utc

参考:実践でも役立つLPICドリル(8):Linux時刻管理の仕組みと設定 (1/4) - @IT

hostname

# echo hostname > /etc/hostname

rootパスワード変更

# passwd

ブートローダー設定

Gummibootとか使ってみようかなとも思ったけど、初めてだし一般的によく使われているであろう、GRUB2を使うことに。どうでもいいけどパッケージマネージャの名前が「pacman」って面白いでふね。オプションなしで打つとAAも出てくるけど、権利関係とかどうしてんだろ。。

# pacman -S grub efibootmgr
# mkdir -p /boot/efi/EFI
# grub-install --target=x86_64-efi --efi-directory=/boot/efi --boot-direcotory=/boot/efi/EFI --bootloader-id=grub --recheck

GRUB設定ファイルの自動生成。当たり前だがここで指定のディレクトリを誤ると立ち上がらない。自分は何度かハマったんだが、grub-installしたときに--boot-direcotoryオプションで指定した場所で良い、はず。

# grub-mkconfig -o /boot/efi/EFI/grub/grub.cfg

そして再起動!

# exit
# umount -R /mnt
# reboot

デスクトップ環境

ここからはデスクトップ環境を構築していく。要らないならすっ飛ばしでも。

まずは作業用のユーザーを作成。

# useradd -m hoge
# passwd hoge
# visudo  #sudo実行可能にしておく

続いてVirtualBox特有のものとして、ゲストユーティリティをpacmanを使って入れる。普通ならVirtualbox側のメニューから仮想CD-ROMをマウントさせるところだが、Arch Linuxの場合はこの方法だとインストールができない(エラーが表示される)。

$ sudo pacman -S virtualbox-guest-utils
$ sudo vim /etc/modules-load.d/virtualbox.conf

virtualbox.confを開いたら、下記の通り書き入れておく。これでVirtualbox関連のモジュールが起動した時に自動でロードされるようになる。

vboxguest
vboxsf
vboxvideo

そしてデスクトップ環境に必要なもろもろのインストール。これまでGNOMEぐらいしか使ったことがなくてよくわかってなかったのだが、LinuxのGUI環境を提供するツールは大きくこんな感じで分けられる、みたい。

  • ディスプレイマネージャー

  • グラフィカルなログイン環境を提供する

  • Slim、GDM、KDMなど

  • ウィンドウマネージャー

  • ウィンドウ周りの機能を提供する

  • スタック型=Windowsっぽいウィンドウを重ねるタイプ(Xfwmなど)

  • タイル型=ウィンドウがオーバーラップしないタイプ(Bspwmなど)

  • 動的=どちらもいける(awesomeなど)

  • デスクトップ環境

  • 様々なツールを一括提供するGUIキット

  • GNOME、KDE、Xfceなど

したがってGNOMEあたりを入れてしまうのが一番簡単なようなのだが、ここまで来たらきちんとやっておきたいし、せっかく最小ディストリなのに重いツールを入れてしまうのももったいないので、Slimとawesomeを使うことにした。

$ sudo pacman -S xorg-server xorg-server-utils xorg-xinit xterm
$ sudo pacman -S slim archlinux-themes-slim slim-themes
$ sudo pacman -S awesome

X Window Systemの起動にはstartxコマンドを打つことになるが、このときのシーケンスとしては、まずxorg-xinitやSLiMなどでXを起動 => .xinitrcを見てウィンドウマネージャー等を起動という順序になる。.xinitrcに対して、どのウィンドウマネージャーを使うのかを教えてやらなくてはならない。またVirtuarlBox関連のドライバを同時に読みこませておかないとうまく起動しない。

$ cp /etc/skel/.xinitrc ~/
$ vim ~/.xinitrc
/usr/bin/VBoxClient-all
exec awesome

そしてstartxを使えばawesomeが立ち上がるはず。OSを起動した時に自動でGUIを立ち上げるには、slim.confを編集した上で、systemctlコマンドを使って有効化しておく。

$ sudo vim /etc/slim.conf
daemon yes
current_theme archlinux-simplyblack
$ systemctl enable slim.service

ためしにrebootしてみて、ログイン画面が表示されればOK。

日本語環境

GUIを使えるようにしたら日本語環境も整えたい。で、まずまずは/etc/locale.confを編集し、さっきやめておいた言語設定の変更を。。他にやることとしてはフォントの導入、IMEの導入、キーボードの設定。まずフォントからだが、pacmanではなくyaourtを使って入れることになる。

yaourt導入

pacmanにレポジトリを追加。

$ vim /etc/pacman.conf
[archlinuxfr]
SigLevel = Never
Server = http://repo.archlinux.fr/$arch

そしてyaourtを導入。

$ pacman -Sy yaourt

フォント導入

フォントの導入。yaourtを使ってインストールすると、そのままデフォルトとして設定されるみたい。複数入れておいて選択したい時とかどーすんの?って思うけど調べてない。とりあえず無難にRictyを。。

$ yaourt -S ttf-ricty

IME導入

ibus-mozcを使ってる例が多かったのでそうします。さっきと同じくpacman.confにレポジトリを追加した上でインストール。

[pnsft-pur]
SigLevel = Optional TrustAll
Server = http://downloads.sourceforge.net/project/pnsft-aur/pur/$arch
$ pacman -Sy mozc ibus-mozc

そしてibusをセットアップする。下記コマンドを実行するとグラフィカルな設定用ウィザードが表示されるので、ホットキーを使用可能とし、mozcをインプットメソッドとして指定する。

$ ibus-setup

ibusを起動時に自動で上げるための設定を入れる。.xinitrcを立ち上げて、exec awesomeよりも前に以下のように書き入れる。

export GTK_IM_MODULE=ibus
export XMODIFIERS=@im=ibus
export QT_IM_MODULE=ibus
ibus-daemon -drx

今のところ設定したのはここまで。残ってる問題としてはキーマップの設定がおかしい。vconsole.confはコンソール上でのキーボード設定だから、たぶんawesome上では別の設定をしなくてはいけないはず。探さねば。

参考