2014年2月16日日曜日

Arch Linux インストール (OSインストール編) | BIOS, MBR, GRUB, 2014.02.01でインストール

インストール関連記事
インストール関連記事はArch Linuxインストールのページにまとめてあります。それぞれ好みのインストールモードに合わせて参照してください。

OSインストール編の最新記事はこちら(2015/2/6)。

はじめに
Arch Linux x86_64をBIOS起動でインストールする。ブートローダはGRUBを使い、パーティショニングはMBRで行う。

インストールするPCの環境は、
MB: ASUS P8Z77-M PRO, (UEFI BIOSのVersion 0801)
CPU: Intel i7-3770S
SSD: Crucial m4 CT512M4SSD2

*現在はUEFIでの起動は使っていない。GRUBや Gummibootを使ってUEFI起動には成功したものの、インストール後のSSDを別のSSDに繋ぎ変えたところ、OSが起動できなくなった。以下の手順で、UEFIで起動できなくなる現象が発生する。
Arch Linuxインストール直後のSSDをつないでいたSATAポートに、別のOSが入っているSSDをつないで起動
-> Arch Linuxインストール直後のSDDに繋ぎ戻して、Arch LinuxをUEFI起動を試みる
-> OSが検出されず起動失敗

UEFI起動にしたらかと言って特に起動時間が短くなったと感じるわけでもなかった(そもそもSSDからのArch Linuxの起動は速いから、ストレスを感じたことはない)。UEFI起動をするためのインストールは多少手間がかかることもあるので、Linux初心者であればレガシーなBIOSモードがオススメな気がする。 以下の手順はBIOS起動をするためのインストール手順。


他のディストリビューションとの違い
Arch Linuxのインストールは以下のようにコマンドラインで行うので、始終キーボードの操作になります。UbuntuやFedora、Cent OSとかの、グラフィックなインストールはないので、多少勝手が違います。Ubuntuみたいに「おまかせ設定でインストール」も、もちろんないのでビギ ナーは少し苦労する。


isoファイルからイメージディスクを作成する
https://www.archlinux.org/download/のミラーサイトから、archlinux-2014.02.01-dual.isoをダウンロードし、イメージディスクとして書き込む。braseroを使う場合は、「イメージの書き込み」から、「書き込むディスクイメージの選択」でarchlinux-2014.02.01-dual.isoを選んで、書き込めばよい。




インストール
作製したイメージディスクをCDドライブに入れて起動。bios (uefi) からBoot Priorityを、UEFIマークが付いていないCDドライブに変更しておく。CDからインストーラが起動するので、Boot Arch Linux (x86_64)を選択。Arch Linuxのインストーラがrootで起動する。
はじめに、キーボードに合わせて、キーボードレイアウトを選択。デフォルトはus。
# loadkeys jp106

インターネット接続の確立をする。有線でdhcp環境であれば、自動でdhcpcdが起動するので特に設定は不要。www.google.comにpingを打てばインターネット接続ができているか分かる。


ドライブの準備1 (パーティショニング)
必要であればdd if=/dev/zero of=/dev/sdX bs=1M count=4で既存のデータを削除しておく。
以下のような設定でパーティショニングする。GPTではなくMBRを使う。BIOSモードでGPTを使うとboot用の特別なパーティションを作るとか色々と面倒なので、GPTは使わない。

/dev/sda1: /boot (1 GB, GummibootではUEFI System Partitionとbootパーティション兼用がよい)
/dev/sda2: swap (32 GB, swap)
/dev/sda3: / (64 GB, rootディレクトリ)
/dev/sda4: /home (残りの領域, homeディレクトリ)

fdiskを使う。cfdiskは開始のセクターが2048ではなく、64となるので使わない!
# fdisk /dev/sda

Command (m for help): o (新しいMBRパーティションテーブルを作る)
Command (m for help): n
Select (default p): p
Partition number : 1
First sector: (デフォルトで2048から始まるようになっているので、何も入力せずにリターン)
Last sector: +512MB
Command (m for help): n
Select (default p): p
Partition number: 2
First sector: 
Last sector: +64G
Command (m for help): n
Select (default p): p
Partition number: 3
First sector: 
Last sector: +64G
Command (m for help): n
Select (default e): p
Partition number: 4
First sector: 
Last sector: 
Command (m for help): a (Partition 1にブートフラグをつける)
Partition number: 1
Command (m for help): t (Partition 2にswap用のコードつける)
Partition number : 2
Hex code : 82
Command (m for help): w

ドライブの準備2(パーティションのフォーマットとマウント)
以下の形式でフォーマットする。
/dev/sda1: ext2 (boot)
/dev/sda2: swap (swap)
/dev/sda3: ext4 (root)
/dev/sda4: ext4 (home)

コマンドで、
# mkfs.ext2 /dev/sda1
# mkswap /dev/sda2
# swapon /dev/sda2
# mkfs.ext4 /dev/sda3
# mkfs.ext4 /dev/sda4

フォーマットできたら、以下の通りマウントする。コマンドの順番を変えないように注意する。ESPを/boot以外にマウントしていると、以降色々と面倒な設定があるので、/bootにマウントする。

# mount /dev/sda3 /mnt (ルート用のパーティション(ここではsda3)を、/mntにマウントする)
# mkdir /mnt/boot (bootフラグを付けたbootパーティションを、このディレクトリにマウントする)
# mount /dev/sda1 /mnt/boot
# mkdir /mnt/home
# mount /dev/sda4 /mnt/home

インストール
/etc/pacman.d/mirrorlistでjaistのサーバーを一番上に持ってくる。
# vi /etc/pacman.d/mirrorlist

pacstrapで、baseとbase-develをインストール。
# pacstrap /mnt base base-devel

fstabの生成。
# genfstab -U -p /mnt >> /mnt/etc/fstab

chrootする。
# arch-chroot /mnt /bin/bash

localeの設定。/etc/locale.genで、en_US.UTF UTF-8とja_JP.UTF UTF-8のコメントアウトを解除する。
# vi /etc/locale.gen

...
#en_SG ISO-8859-1  
en_US.UTF-8 UTF-8  ←#を削除。
#en_US ISO-8859-1  
...
#ja_JP.EUC-JP EUC-JP  
ja_JP.UTF-8 UTF-8   ←#を削除。
#ka_GE.UTF-8 UTF-8 
...

locale-genでlocaleを生成。
# locale-gen

locale.confを作成。ただし、システムのインストールが終わって、Xと日本語フォントをインストールしたら、ja_JP.UTF-8に変更する。
# echo LANG=en_US.UTF-8 > /etc/locale.conf
# export LANG=en_US.UTF-8

キーマップを変更。
# loadkeys jp106

また、/etc/vconsole.confにも、KEYMAP=jp106と記入しておく。
# vi /etc/vconsole.conf

タイムゾーンの設定。
# ln -s /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
# hwclock --systohc --utc

ホストネームの設定
# echo myhostname > /etc/hostname

ネットワーク接続の設定をする。有線でdhcp回線がひとつ繋がっているだけの時は、以下の通り。
# systemctl enable dhcpcd.service


pacmanの設定。必要であれば、/etc/pacman.confの[multilib]とInclude = /etc/pacman.d/mirrorlistのコメントアウトを解除する。そして、pacman -Syでデータベースをアップデート。[multilib] リポジトリを有効にすることで、64ビット環境の Arch Linux で32ビットアプリケーションの動作・ビルドができるようになる。自分は、32ビットアプリケーションを使っていないので、[multilib]はコメントアウトしたままにしている。
# vi /etc/pacman.conf

...
[multilib]
Include = /etc/pacman.d/mirrorlist
...

# pacman -Sy 

ルートパスワードを設定
# passwd

*2014/12/23追記
Intel製のCPUを使っている場合は、Intel のマイクロコードのアップデートを有効にするために、intel-ucodeをインストールする。
# pacman -S intel-ucode

linux 3.17-2および、linux-lts 3.14.21-2のバージョン以降、マイクロコードが、ブートプロセスの初期に読み込まれないと有効にならなくなったためである。intel-ucodeをインストールしておけば、以下のgrub-mkconfigを実行すると、ブート時にintel-ucode.imgを読み込む設定が自動的に加わる。

AMD CPUの場合は、特にucodeのインストールは必要ないっぽい。ベースシステムのインストールの際、linux-firemwareがインストールされてこのパッケージの中に/usr/lib/firmware/amd-ucode/microcode_amd.bin等が含まれている。
*2014/12/23追記ここまで

ブートローダ(GRUB)のインストール
grub パッケージをインストールしてから grub-install を実行する。
# pacman -S grub
# grub-install --target=i386-pc --recheck /dev/sda
# grub-mkconfig -o /boot/grub/grub.cfg

設定はこれで終わりなので、再起動する。reboot直後、CDを取り出しておく。
# exit
# umount -R /mnt
# reboot


参考:
[1]Beginners' Guide/Installation
[2]http://opamp.hatenablog.jp/entry/2013/10/30/233548

スポンサーリンク

スポンサーリンク


関連コンテンツ


この記事をシェアする

6 件のコメント:

  1. とても役に立ちました。ありがとうございました。ひとつ質問なのですが# ln -s /usr/share/zoneinfo/Asia/Tokyo /etc/localtime というのは# ln -s /usr/share/zoneinfo/Asia/Tokyo /etc/localetimeで脱字でしょうか?

    返信削除
    返信
    1. メッセージいただき、ありがとうございました。
      記事がお役に立てて、幸いです!

      質問いただきました、タイムゾーンのリンクの作成ですが、記事の通りの表記で間違っておりません。

      リンクのファイル名である「localtime(ローカルタイム)」は、「PC使用環境の現地時刻」という意味になっています。
      初期設定で、「locale(ロケール、"現地"の意)」という単語も出てきていますが、これは「使用環境の国、言語」を設定する際に、ファイル名として使われています。
      本記事では、「locale(ロケール)」には、en_US.UTF UTF-8とja_JP.UTF UTF-8を設定しています。

      設定には、紛らわしい表記がいくつかあります。例えば、「ja」と「jp」。思い込みで設定ファイルを書いてしまうと、コマンドが通らなかったり、設定が有効にならないことがありますので、ご注意ください。

      今回は大丈夫でしたが、記事中の本当に間違っている箇所もあるかもしれませんので、気兼ねなくお問い合わせ下さい。
      今後とも、当ブログをよろしくお願いいたします。

      削除
  2. はじめまして。苦戦していましたが、この記事のおかげでArchの導入に成功しました。
    ありがとうございます。

    しかし、インストール後に一切ネット接続ができず困っています。
    Wifi-menuコマンドを使おうにも、別なパッケージが必要だそうで、結局ネットに繋がっていないため導入できません。

    どうすればいいでしょうか?ネットへの接続方法について、教えて頂けると幸いです。

    返信削除
    返信
    1. こちらこそ、はじめまして。
      WiFi接続していないので、予測も交えての回答となりますが、ご容赦ください。


      まず、Arch Linuxをインストールする際に、WiFiの接続の設定を2度行う必要があります。
      1度目は、デバイスをマウントした後(=/etc/pacman.d/mirrorlistの編集前)。
      2度目は、ホストネームの設定後。

      WiFi接続は、以下の4つの手順で可能になる思います。
      1.dialogパッケージのインストール
      # pacman -S dialog

      2.「WiFiのデバイス名」の確認(ip linkと入力しエンター)
      # ip link
      (出力を確認。「wlp…」が「WiFiのデバイス名」となります。)

      3.WiFiデバイスの有効化
      # ip link set 「WiFiのデバイス名」 up

      4.WiFiのパスワード入力
      # wifi-menu 「WiFiのデバイス名」
      (メニューが出てくるので、メニューに従ってWiFiパスワードを設定)


      Arch Linuxのインストール時に、以上のWiFi接続はうまくいっているでしょうか?

      削除
    2. 成功しました。3.WiFiデバイスの有効化が出来ていなかったようです。ありがとうございました。

      削除
    3. お役に立てたようで、幸いです。

      なお、上記の設定は一時的な設定ですので、システムを再起動すると設定が消えてしまいます。
      永続的な設定を行うためには、「2度目の、ホストネームの設定後」において、以下の手順でWiFi接続の設定を行えば、良いはずです。

      2−1.dialog, wpa_supplicantパッケージのインストール
      # pacman -S dialog wpa_supplicant

      2−2.「WiFiのデバイス名」の確認(ip linkと入力しエンター)
      # ip link
      (出力を確認。「wlp…」が「WiFiのデバイス名」となります。)

      2−3.WiFiデバイスの有効化
      # ip link set 「WiFiのデバイス名」 up

      2−4.WiFiの接続設定
      # wifi-menu -o「WiFiのデバイス名」
      (メニューが出てくるので、メニューに従ってWiFiパスワードを設定)
      ※この操作により、/etc/netctl以下に「WiFiの設定ファイル」が自動生成される。
      ※この「WiFiの設定ファイル」のファイル名を # ls /etc/netctl で調べる。# ls /etc/netctl の出力結果で、examples hooks interfaces以外のファイル名が「WiFi設定ファイル」のファイル名となるはずです。

      2−5.WiFi接続設定を、永続的な設定として登録
      # netctl start 「WiFi設定ファイル」のファイル名
      (パスではないので、ファイル名に/etc/netctl は不要)

      削除