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
でよい。あるいはgdisk
やfdisk
もあるけど、やりづらいので自分は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はまぁ、なくてもいいかなと。
-
ESP(EFI System Partition)用に512MB
-
タイプコードはef00
-
FAT32でフォーマットする (https://wiki.archlinux.org/index.php/Unified_Extensible_Firmware_Interface_(%E6%97%A5%E6%9C%AC%E8%AA%9E)))
-
デュアルブートの場合はすでにWindows側で作られているので要らないはず。
-
/bootに200MBぐらい
-
残り全部が/。
フォーマット、マウント
切り分けが終わったらそれぞれ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上では別の設定をしなくてはいけないはず。探さねば。