--- categories: "Linux" comments: true date: "2014-09-07T00:00:00+09:00" title: "VirtualBoxでArch Linuxのインストール練習" --- VAIO Proにcygwin入れたりして頑張っていたのだが、そろそろしんどくなってきたので、まともに開発に使える環境作るかーってことでデュアルブートを試みることに。デュアルじゃなくてOS丸ごと入れ替えたら?という話もありそうだが、仕事で使うのでWindowsを潰せない。かと言って仮想マシンだとこのPCのスペックでは心許ない。。ってことでデュアル。 ではディストリは何を使うか?だが、以前Ubuntuを使ったデュアルブートは構築した経験があるし、GUIでポチポチインストールするんじゃあんまり勉強にはならなさそうだなーということで、思い切ってArch Linuxを選んだ。ミニマルを是とするディストリだが、ミニマルどころか最初はsudoすら入っていないという徹底っぷり。使うものだけ入れろ!というポリシーは大変に共感できるものではあるが、それは当然難易度の高さと引き換えなわけで。。 さすがにぶっつけ本番は怖すぎるので、まずはiMac(OS X Marverics)上のVirtualboxでデスクトップ環境が立ち上がるとこまでやってみた。難易度が確かに高いOSではあるが、[Wiki](https://wiki.archlinux.org/)が非常に充実しているので、案外迷うこともないとは思う。逆に言えば、ここの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))](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を兼ねさせることも可能](https://wiki.archlinux.org/index.php/Unified_Extensible_Firmware_Interface_(%E6%97%A5%E6%9C%AC%E8%AA%9E)#EFI_System_Partition)らしいいのだが、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](http://www.atmarkit.co.jp/ait/articles/0812/26/news120.html) ### 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上では別の設定をしなくてはいけないはず。探さねば。 # 参考 * [Arch Linux インストールから awesome 導入まで - Qiita](http://qiita.com/co-me@github/items/12f21126c5117e07decd) * [UEFIでArchLinuxをインストールする - opamp_sando's blog](http://opamp.hatenablog.jp/entry/2013/10/30/233548) * [Arch Linux インストールメモ 3 - あんパン](http://masawada.hatenablog.jp/entry/2013/06/10/225748) * [Arch Linux快適デスクトップ環境の構築 - Qiita](http://qiita.com/xorphitus/items/3711895eb5d9f946c782) * [ArchLinuxでibus+mozcな環境を構築 - opamp_sando's blog](http://opamp.hatenablog.jp/entry/2013/08/13/201544)