Gentoo Linux 20121213 をインストールする

> [!NOTE]
> この記事は 2013/03/16 に [momoto.github.io](http://momoto.github.io/) へ投稿した内容を Qiita へ移行してきたものです

　Gentoo Linux 20121213 をインストールした手順の記録です。インストールメディアは install-x86-minimal-20121213.iso を使用しています。DHCP によりネットワークは既に接続できる状態を前提にしています。

## 1. 起動

![01-2.png](https://qiita-image-store.s3.amazonaws.com/0/58/0557b4a8-5baf-d9f9-8d21-c941cb481240.png)

　カーネルとブートオプションの指定画面では、特に何も指定しないままEnterキーを押してインストールを始める。すぐにキーボード配列の選択画面が現れるので、日本語配列のキーボードを使用している場合は `22` と入力する。

![02.png](https://qiita-image-store.s3.amazonaws.com/0/58/9501f76f-1b1a-2fba-dffd-0b1bf9f0be91.png)

　起動が完了し root にログインできたら、ping コマンド等でネットワークへの接続を確認する。

![03.png](https://qiita-image-store.s3.amazonaws.com/0/58/d1d9d98b-3632-1f7b-c317-df33623b7026.png)

## 2. ストレージデバイスの準備

　Gentoo Linuxをインストールするストレージデバイスを用意していく。SCSI またはシリアルATA で接続されているデバイスは `lsscsi` コマンドで一覧できるので、システムを記録するブロックデバイス（/dev/sdaなど）を確認する。この記事では `parted` を使用して、単純なブートパーティションとルートパーティションを /dev/sda に作成する。

```:ブロックデバイスの確認
livecd ~ # lsscsi
[0:0:0:0]    disk    ATA      VBOX HARDDISK    1.0   /dev/sda
[2:0:0:0]    cd/dvd  VBOX     CD-ROM           1.0   /dev/sr0
```

　`parted` で使用できるコマンドは `help` で確認することができる。`mklabel` でパーティションラベルを指定し、`mkpart` でパーティションを区切っていく。

```shell-session:partedを使用したパーティショニング
livecd ~ # parted /dev/sda

GNU Parted 3.1
Using /dev/sda
Welcome to GNU Parted! Type 'help' to view a list of commands.

(parted) mklabel msdos # パーティンションラベルを指定
(parted) mkpart primary ext2 0 32mb # ブートパーティションを作成

Warning: The resulting partition is not properly aligned for best performance.
Ignore/Cancel? i # 開始位置がディスクのオフセットとアラインメント要求に一致しない場合の警告

(parted) mkpart primary ext4 32mb -1s # ルートパーティションを作成

Warning: The resulting partition is not properly aligned for best performance.
Ignore/Cancel? i

(parted) print # 作成したパーティションの確認

Model: ATA VBOX HARDDISK (scsi)
Disk /dev/sda: 8590MB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags:

Number  Start   End     Size    Type     File system  Flags
 1      512B    32.0MB  32.0MB  primary
 2      32.0MB  8590MB  8558MB  primary

(parted) quit # 対話を終了する

Information: You may need to update /etc/fstab.
```

　次に、上で作成したパーティションにファイルシステムを適用する。上記例の `mkpart` で指定したように /dev/sda1 に ext2 を、/dev/sda2 に ext4 を適用する。

```shell-session:ファイルシステムのフォーマット
livecd ~ # mkfs.ext2 /dev/sda1
mke2fs 1.42 (29-Nov-2011)
Filesystem label=
OS type: Linux
...
Allocating group tables: done
Writing inode tables: done
Writing superblocks and filesystem accounting information: done

livecd ~ # mkfs.ext4 /dev/sda2
mke2fs 1.42 (29-Nov-2011)
Filesystem label=
OS type: Linux
...
Allocating group tables: done
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done
```

　パーティションとファイルシステムが用意できたら、ルートパーティションは /mnt/gentoo へ、ブートパーティションは /mnt/gentoo/boot へ、それぞれのディレクトリへマウントする。

```shell-session:パーティンションのマウント
livecd ~ # mount /dev/sda2 /mnt/gentoo/
livecd ~ # mkdir /mnt/gentoo/boot
livecd ~ # mount /dev/sda1 /mnt/gentoo/boot/
```

## 3. システムのインストール

### 3-1. stage3 tarballとportageのダウンロード

　まず、システムをインストールしようとしているマウントポイント /mnt/gentoo へ移動し、`links` コマンドで Gentoo ミラーリストへアクセスする。

```shell-session:Gentooミラーリストへアクセス
livecd ~ # cd /mnt/gentoo/
livecd gentoo # links http://www.gentoo.org/main/en/mirrors.xml
```

テキスト/ グラフィックウェブブラウザの `links` でミラーリストにアクセスすると次の画像のように表示される:

![04.png](https://qiita-image-store.s3.amazonaws.com/0/58/3cd7240f-658f-c595-73b3-9ddfa62fa076.png)

　`links` が起動したらミラーリストから国内のミラーへ移り、`stage3-<architecture>–<release>.tar.bz2とportage-latest.tar.bz2` をダウンロードする。[JAIST（北陸先端科学技術大学院大学）](http://ftp.jaist.ac.jp) のミラーであれば [releases/x86/current-stage3/](http://ftp.jaist.ac.jp/pub/Linux/Gentoo/releases/x86/current-stage3/) と [snapshots/](http://ftp.jaist.ac.jp/pub/Linux/Gentoo/snapshots/) のディレクトリに配置されている。ダウンロード後、それぞれの tarball を次のオプションで展開する。

```shell-session:tarballの展開
livecd gentoo # tar xvjpf stage3-*.tar.bz2
livecd gentoo # tar xvjf /mnt/gentoo/portage-latest.tar.bz2 -C /mnt/gentoo/usr
```

### 3-2. Portage の設定

　続いて、/etc/make.conf に Portage の変数を設定する。最低限、必要な変数である-marchには命令セットアーキテクチャを指定する。環境やプログラムによって最適な設定は異なるものであるし、Portage の設定はシステムに広く影響しうるので、この記事では [Gentoo Linux ドキュメント](https://wiki.gentoo.org/wiki/Handbook:X86) で一般的と紹介されている例を使用する。

```shell-session:Portageの変数の設定
livecd gentoo # touch /mnt/gentoo/etc/make.conf
livecd gentoo # nano -w /mnt/gentoo/etc/make.conf

  ---
  CFLAGS="-O2 -march=i686 -pipe"
  CXXFLAGS="${CFLAGS}"
  MAKEOPT="-j2"
```

　`mirrorselect` コマンドでミラーを選択する。選択したミラーの情報は /etc/make.conf に記録される。

```shell-session:ミラーの選択
livecd gentoo # mirrorselect -i -o >> /mnt/gentoo/etc/make.conf
* Downloading a list of mirrors... Got 222 mirrors.
```

![05.png](https://qiita-image-store.s3.amazonaws.com/0/58/f06ed070-41a3-4bbf-fba7-cc086174b71d.png)

### 3-3. /proc と /dev のマウント、chroot、ロケールとタイムゾーンの設定

```shell-session:/procと/devのマウント
livecd gentoo # mount -t proc none /mnt/gentoo/proc/
livecd gentoo # mount --rbind /dev/ /mnt/gentoo/dev/
```

```shell-session:新しくインストールした環境へchroot
livecd gentoo # chroot /mnt/gentoo/ /bin/bash
livecd / # env-update
>>> Regenerating /etc/ld.so.cache...
livecd / # source  /etc/profile
livecd / # export PS1="(chroot) $PS1"
```

/etc/locale.gen から指定するロケールの行（ja_JP.UTF-8 UTF-8）をアンコメントして `locele-gen` コマンドを実行する。

```shell-session:ロケールの指定
(chroot) livecd / # nano -w /etc/locale.gen
(chroot) livecd / # locale-gen
 * Generating 1 locales (this might take a while) with 1 jobs
 *  (1/1) Generating ja_JP.UTF-8 ... [ ok ]
 * Generation complete
(chroot) livecd / #
```

```shell-session:タイムゾーンの設定
(chroot) livecd / # cp /usr/share/zoneinfo/Japan /etc/localtime
```

### 3-4. Portageによるインストール

```shell-session:Portageツリーを最新状態に更新
(chroot) livecd / # emerge --sync

 ...
 * An update to portage is available. It is _highly_ recommended
 * that you update portage now, before any other packages are updated.

 * To update portage, run 'emerge portage' now.


 * IMPORTANT: 7 news items need reading for repository 'gentoo'.
 * Use eselect news to read news items.

(chroot) livecd / #
```

サポートされているプロファイルの一覧を確認し、選択する。

```shell-session:プロファイルの選択
(chroot) livecd / # eselect profile list
Available profile symlink targets:
  [1]   default/linux/x86/13.0
  [2]   default/linux/x86/13.0/selinux
  [3]   default/linux/x86/13.0/desktop
  [4]   default/linux/x86/13.0/desktop/gnome
  [5]   default/linux/x86/13.0/desktop/kde
  [6]   default/linux/x86/13.0/developer
  [7]   hardened/linux/x86
  [8]   hardened/linux/x86/selinux
  [9]   hardened/linux/uclibc/x86
(chroot) livecd / #
(chroot) livecd / # eselect profile set 1
```

gentoo-sourcesをインストールする。このパッケージにはLinuxカーネルが含まれている。

```shell-session:gentoo-sourcesのインストール
(chroot) livecd / # emerge gentoo-sources
```

　カーネルソースのコンフィギュレーションとコンパイルする。ここではマニュアル（手動）ではなく genkernel を使用する。

```shell-session:カーネルソースのコンフィギュレーションとコンパイル
(chroot) livecd / # emerge genkernel
(chroot) livecd / # genkernel all
```

## 4. 再起動

　再機動をする前にシステムで使用するパーティションを /etc/fstab へ記述する。上述の例であれば /dev/sda1 と /dev/sda2 のふたつを記述する。

```shell-session:/etc/fstabの編集
(chroot) livecd / # nano -w /etc/fstab

  ---
  /dev/sda1               /boot           ext2            noauto,noatime  1 2
  /dev/sda2               /               ext4            noatime         0 1
  #/dev/cdrom              /mnt/cdrom      auto            noauto,ro       0 0
```

　次にブートローダをインストールする。GRUB を使用する場合、emerge でインストールし、/boot/grub/grub.conf を書き換えた後、`grub-install` を実行する。

```shell-session:GRUBのインストール
(chroot) livecd / # emerge grub
(chroot) livecd / # nano -w /boot/grub/grub.conf

  ---
  default 0
  timeout 30
  splashimage=(hd0,0)/boot/grub/splash.xpm.gz

  title Gentoo Linux 3.7.10
  root (hd0,0)
  kernel /boot/kernel-genkernel-x86-3.7.10-gentoo root=/dev/ram0 real_root=/dev/sda2
  initrd /boot/initramfs-genkernel-x86-3.7.10-gentoo
  ---

(chroot) livecd / # grep -v rootfs /proc/mounts > /etc/mtab
(chroot) livecd / # grub-install --no-floppy /dev/sda
```

　最後にchroot環境を抜けて、マウントしたパーティションをアンマウントし、再起動する。

```:再起動
(chroot) livecd / # exit
livecd gentoo # cd
livecd ~ # umount -l /mnt/gentoo/dev{/shm,/pts,}
livecd ~ # umount -l /mnt/gentoo{/boot,/proc,}
livecd ~ # reboot
```

　再起動の後、ブートローダが動作してシステムが起動されたらインストールが完了する。インストールの後は、上述の手順からは省いていたシステム設定（ユーザーの追加、パスワード変更）を行なっていく。

![07.png](https://qiita-image-store.s3.amazonaws.com/0/58/d2a23a68-d8f3-8fcb-babd-c622f4c4eece.png)

![08.png](https://qiita-image-store.s3.amazonaws.com/0/58/39fc057c-b1d7-8e04-4931-c2732d7d3f72.png)

## 参考

- [Gentooハンドブック（日本語）](https://wiki.gentoo.org/wiki/Handbook:Main_Page/ja)