こぶ茶

メモ帳 for me / コピペ,車輪の再発明の雰囲気がむんむんとする

Windows8発売記念にGentooインストールする part 1

前回 ノーガード戦法で挑んだら痛い目にあったので,今回はちゃんと ハンドブック(X86) を基にして進めるよ.
インストールの流れはこんな感じ.


1. インストールCDの起動
2. ネットワーク設定
3. ディスクの準備
4. インストールファイルの準備
5. ベースシステムの準備
6. カーネル設定
7. システム設定
8. 必要なシステムツールのインストール
9. ブートローダ設定
10. 締め括り


1. インストールCDの起動

インストールCDをダウンロードして起動する

Gentoo Linux -- Gentoo Linux Mirrors から適当に近いミラーサイトを選ぶ.
インストールCDのisoは releases/x86/autobuilds/current-iso にある.
今回はVirtual BoxのVM上にインストールするので,VMにiso読み込ませて起動する.

f:id:kobtea:20121030201651j:plain

なんか押せって書いてあるので,適当にENTER押す.
でプロンプトが出てくる.


2. ネットワーク設定

既に繋がってるかもよ

「もしかしたらネット既に繋がってるかもよ!」なんてハンドブックさんが言うものだから,確認する.

# /sbin/ifconfig
lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:4 errors:0 dropped:0 overruns:0 frame:0
          TX packets:4 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:260 (260.0 B)  TX bytes:260 (260.0 B)

そんなことなかった.


接続設定する

net-setupスクリプトで設定すると簡単らしい.

# net-setup eth0

f:id:kobtea:20121109051635j:plain

こんな画面が立ち上がって,色々聞かれるので答える.

2. My network is wired
1. Use DHCP to auto-detect my network settings

今回はDHCP使うよ.
設定がすんだら,もう一度.

# /sbin/ifconfig
eth0      Link encap:Ethernet  HWaddr .....
          inet addr: .....
          inet6 addr: .....
          .....

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          .....

eth0があらわれた!!

# ping -c 3 www.gentoo.org
PING www-bytemark-v4v6.gentoo.org (89.16.167.134) 56(84) bytes of data.

繋がってるね.


3. ディスクの準備

パーティション構成を考える

ハンドブックと同じ構成にする.

パーティション ファイルシステム サイズ 種別
/dev/sda1 ext2 32M ブートパーティション
/dev/sda2 (swap) 512M スワップパーティション
/dev/sda3 ext3 残り全部 ルートパーティション

 

fdiskを起動する

fdiskを起動する.
現在のパーティション情報を表示するにはpコマンド.

# fdisk /dev/sda

Command (m for help): p

Disk /dev/sda: 8589 MB, 8589934592 bytes
255 heads, 63 sectors/track, 1044 cylinders, total 16777216 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x37e43fb4

   Device Boot      Start         End      Blocks   Id  System

当然だけど何もないね.まっさらやで.


パーディションを作成する

まずはブートパーティション.
新規パーティション作成はnキーを押す.

Command (m for help): n

プライマリパーティションなのでpキーを押す.

Command action
  e   extended
  p   primary partition (1-4)
p

1番目のパーティションなので1キー.
パーティションの開始位置はデフォルトで良いのでENTERキー.
ブートパーティションのサイズは32Mの予定なので,+32M.

Partition number (1-4, default 1): 1
First secter (2048-10485759, default 2048): <ENTER>
Using default value 2048
Last secter, +sectors or +size{K,M,G} (2048-10485759, default 10485759): +32M

pキーで追加されてる確認する.大丈夫そうだ.

Command (m for help): p

Disk /dev/sda: 8589 MB, 8589934592 bytes
255 heads, 63 sectors/track, 1044 cylinders, total 16777216 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x37e43fb4

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1            2048       67583       32768   83  Linux

ブートパーティションなので,ブート可能にする設定を.
aキーを押した後,ブート可能にしたいパーティション番号を入力する.

Command (m for help): p
Partition number (1-4): 1


次に,スワップパーティションを作成する.
新規パーティション: n
プライマリパーティション: p
パーティション番号: 2
作成開始位置: < ENTER >
パーティションサイズ: +512M

This is スワップだぜ,な設定をするにはtキー.
対象パーティション番号を入れた後,パーティションタイプをLinux swapに対応する82を入力する.
Lキーを押すとタイプ一覧が見られる.

f:id:kobtea:20121109053119j:plain


最後に,ルートパーティションを作成する.
新規パーティション: n
プライマリパーティション: p
パーティション番号: 3
作成開始位置: < ENTER >
パーティションサイズ: < ENTER > (残り全部を割り当てる)


ちゃんと作れたか確認する.

Command (m for help): p

Disk /dev/sda: 8589 MB, 8589934592 bytes
255 heads, 63 sectors/track, 1044 cylinders, total 16777216 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x37e43fb4

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048       67583       32768   83  Linux
/dev/sda2           67584     1116159      524288   82  Linux swap / Solaris
/dev/sda3         1116160    16777215     7830528   83  Linux

大丈夫そうだね.
wキーで保存し終了する.
alterがalertに見えてビクッとしたのは内緒.


ファイルシステムを作成する

パーティションにファイスシステムを適用する.
sda1はブートパーティションなのでext2,sda3はルートパーティションなのでext3.
スワップパーティションのsda2はmkswapで初期化した後,swaponで有効にする.すわぽん!!

# mkfs.ext2 /dev/sda1
# mkfs.ext3 /dev/sda3
# mkswap /dev/sda2
# swapon /dev/sda2

 

マウントする

# mount /dev/sda3 /mnt/gentoo
# mkdir /mnt/gentoo/boot
# mount /dev/sda1 /mnt/gentoo/boot

 

4. インストールファイルの準備

日付の確認をする

先に進める前に、日時をチェックして、更新しておく必要があります。
狂った時計は後でおかしな結果が起きる元になります。
 

Gentoo Linux ドキュメント -- Gentooインストールファイルをインストールする

ひぃ!
dateの日付表記はMMDDhhmmYYYYらしい.(例: 2012年11月1日12時10分 -> 1101121102012)

# date
Wed Oct 31 09:49:50 UTC 2012
# date 1101121102012

 

stage3 tarball, Portageをインストールする

stage3 tarballは最小限のGentoo環境を含んだアーカイブ,とのこと.
Portageはソフトウェア管理ツールで,DebianのAPTみたいなものという認識であってるのかな.
早速ダウンロードしてくる.

# cd /mnt/gentoo
# links http://www.gentoo.org/main/en/mirrors.xml

f:id:kobtea:20121109054223j:plain

ミラーサイト一覧が出てくるので,近い所を適当に選ぶ.
Internet Initiative Japan (http)にした.IIJさんお邪魔します.
releases/x86/autobuilds/current-stage3/stage3-i686-20121016.tar.bz2をダウンロード.
snapshots/portage-latest.tar.bz2をダウンロード.
でもって展開する.

# tar xvjpf stage3-i686-20121016.tar.bz2
# tar xvjf /mnt/gentoo/portage-latest.tar.bz2 -C /mnt/gentoo/usr

ゆったりと待つ.


コンパイルオプションを設定する

# nano -w /mnt/gentoo/etc/make.conf

以下を記述する.

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

CFLAGSはCの,CXXFLAGSはC++gccコンパイルオプション.

  • O2はレベル2の最適化オプション.
  • marchは対象アーキテクチャの指定.
  • pipeは,コンパイル時の情報のやり取りにテンポラリファイルじゃなくてパイプを使うオプションらしい.

MAKEOPTSは,パッケージのインストール時にいくつの平行コンパイルを許すかの定義らしい.
目安は(システムのCPU数)+1らしいよ.


5. ベースシステムの準備

ミラーサイトを設定する

Portageソースコードをダウンロードするにあたって,近い場所なんかを登録しておく.

# mirrorselect -i -o >> /mnt/gentoo/etc/make.conf

を選択.

rsyncサーバのミラーも登録しておく.

# mirrorselect -i -r -o >> /mnt/gentoo/etc/make.conf

を選択.


DNS情報をコピーする

今のDNS情報をマウント先でも使えるようにする.

# cp -L /etc/resolv.conf /mnt/gentoo/etc

 

/procと/devファイルシステムをマウントする

マウント先でも今の環境の情報を参照できるようにする.

# mount -t proc none /mnt/gentoo/proc
# mount --rbind /dev /mnt/gentoo/dev

 

新しい環境に入る

今まで作業していたインストールCD上の環境から,自分が作成した環境へと移る.

# chroot /mnt/gentoo /bin/bash
# env-update
# source /etc/profile
# export PS1="(chroot) $PS1"

おめでとうございます!あなたは自分のGentoo Linux環境に入ることができました。
 

Gentoo Linux ドキュメント -- Gentooベースシステムのインストール

ありがとうございます!!


Portageの設定をする

Portageツリーを最新にする.

# emerge --sync

 

ロケールを設定する

# nano -w /etc/locale.gen

ja_JP.UTF-8/UTF-8のコメントだけ外す.
更新を適用する.

# locale-gen

 

6. カーネル設定

タイムゾーンの設定をする

色々するちょっとその前に,タイムゾーンの設定をしておく.

# ls /usr/share/zoneinfo
# cp /usr/share/zoneinfo/Japan /etc/localtime

日本があったよ!


カーネルソースをインストールする

emergeを唱えるだけで落っこちてくるらしい.すごい.

# emerge gentoo-sources
# ls -l /usr/src/linux
lrwxrwxrwx 1 root root 18 Nov  5 08:04 /usr/src/linux -> linux-3.5.7-gentoo/

カーネルのバージョンは3.5.7らしい.


カーネルの設定をする

マニュアルでカーネルをコンフィギュレーションすることは、 Linuxユーザが行うべきオペレーションの中で、最難関と見なされることがあります。 これは、それほど真実ということでもありません。カーネルのコンフィギュレーションを数回こなせば、 難しかったことを思い出すことすらないでしょう。;)
 

Gentoo Linux ドキュメント -- カーネル設定

複数回...初見はここで失敗するということか...

カーネルに色々設定するにはmake menuconfigするらしい.

# cd /usr/src/linux
# make menuconfig

f:id:kobtea:20121109055240j:plain

まずはCPUの種類を選択する.

Processor type and features  --->
    Processor family (Pentium-Pro)  --->
        (X) Core 2/newer Xeon

Core iシリーズはこの選択肢らしいよ.

次に,扱いたいファイルシステムを選択する.

File systems  --->
    <*> Second extended fs support
    <*> Ext3 journalling file system support
    <*> The Extended 4 (ext4) filesystem
    <*> Reiserfs support
    <*> JFS filesystem support
    <*> XFS filesystem support

下の3つはいらない気がするけど,とりあえずハンドブックと同じ設定にする.
設定はこれでおわり.


コンパイル and インストール!

いよいよカーネルのコンパイル,インストール!

# make && make modules_install

どきどき...

f:id:kobtea:20121109055439j:plain
キタ━━━━(゚∀゚)━━━━??
怒られてないから多分上手く行ったはず!!

カーネルイメージを/bootにコピーする.

# cp arch/i386/boot/bzImage /boot/kernel-3.5.7-gentoo-r1

 

7. システム設定

ファイルシステム構成を設定する

fstab使って各パーティションの役割とか設定していく.

# nano -w /etc/fstab

/dev/BOOT       /boot       ext2        noauto,noatime  1 2
/dev/ROOT       /           ext3        noatime         0 1
/dev/SWAP       none        swap        sw              0 0
/dev/cdrom      /mnt/cdrom  auto        noauto,ro       0 0
/dev/fd0        /mnt/floppy auto        noauto          0 0

/dev/sda1       /boot       ext2        noauto,noatime  1 2
/dev/sda3       /           ext3        noatime         0 1
/dev/sda2       none        swap        sw              0 0
/dev/cdrom      /mnt/cdrom  auto        noauto,user     0 0
#/dev/fd0       /mnt/floppy auto        noauto          0 0

上が編集前,下が編集後.
BOOT,ROOT,SWAPの部分にそれぞれ対応するパーティションを書く.
CDROMはroot以外でも使えるようにuserに変更した.
フロッピーは使う予定が皆無なのでコメントアウト.


マシンのホスト名を設定する

# nano -w /etc/conf.d/hostname

hostname="genta"

命名じぇんたくん!!
「げんた」じゃなくて「じぇんた」くん!!


ネットワークの設定をする

「ねえ、もうそれは済んでるんだけど」って気持ちになる前に、Gentooのインストールの初めに設定したネットワークは単にインストール用のものだったことを思い出してください。今ここで自分のGentooシステムに永続的なネットワーク設定をしていきましょう。
 

Gentoo Linux ドキュメント -- システム設定

最初に設定したのはインストールCD環境下のもので,これから行なう設定は自分のマシン環境下ということ.

とりあえずDHCPクライアントをインストールしておく.

# emerge dhcpcd

ネットワーク設定の編集をするよ.

# nano -w /etc/conf.d/net

config_eth0="dhcp"

DHCPはらくちんだなぁ.

ブート時自動でネットワーク接続するように設定する.

# cd /etc/init.d
# ln -s net.lo net.eth0
# rc-update add net.eth0 default

 

rootのパスワードを設定する

# passwd

これだけ.


システム情報を設定する

キーボードのキーマップをjp106に変える.

# nano -w /etc/conf.d/keymaps

keymap="jp106"

ハードウェアクロックにUTCを使っていないのなら、clock="local"をこのファイルに追加する必要があります。 さもなければ、いくらか時間がずれてしまうでしょう。
 

Gentoo Linux ドキュメント -- システム設定

とのことなので.

# nano -w /etc/conf.d/hwclock

clock="local"

 

8. 必要なシステムツールのインストール

必要そうなものをぽつぽつインストールする簡単なお仕事.

syslog-ng

システムのログを取ってくれる.

# emerge syslog-ng
# rc-update add syslog-ng default
# emerge logrotate

 

Cronデーモン

定期的に何かの処理を行いたい場合に便利.

# emerge dcron
# rc-update add dcron default
# crontab /etc/crontab

 

mlocate

locateでファイル検索をするための,インデックスを作成してくれる.

# emerge mlocate

 

9. ブートローダ設定

システムを起動するとき,カーネルを立ち上げてくれる存在,ブートローダ

GRUBのインストール

# emerge grub
# nano -w /boot/grub/grub.conf

title Gentoo Linux 3.5.7-r1
root (hd0,0)
kernel /boot/kernel-3.5.7-gentoo-r1 root=/dev/sda3

title Gentoo Linux 3.5.7-r1 (Rescue)
root (hd0,0)
kernel /boot/kernel-3.5.7-gentoo-r1 root=/dev/sda3 init=/bin/bb

1つ目は通常起動用,2つ目は非常時用.

設定が終わったら,いよいよインストール.

# grep -v rootfs /proc/mounts > /etc/mtab
# grub-install --no-floppy /dev/sda

 

システムを再起動する

全てのパーティションをアンマウントして再起動する.

# exit
# cd
# umount -l /mnt/gentoo/dev{/shm,/pts,}
# umount -l /mnt/gentoo{/boot,/proc,}
# reboot

インストールCD抜くのを忘れない.
どきどき...

f:id:kobtea:20121109060457j:plain

おぉ?

f:id:kobtea:20121109060543j:plain

おぉ!!じぇんたくん!!


10. 締め括り

ユーザを追加する

いつまでrootでいるつもりなのさ!

# useradd -m -G users,wheel,audio -s /bin/bash kobtea
# passwd kobtea
# su - kobtea

 

あとかたづけ

stage3 tarballとPortageスナップショットはもう使わないから消しておく.

# rm /stage3-*.tar.bz2*
# rm /portage-latest.tar.bz2*


とりあえずGentooインストールできたっぽい(∩´∀`)∩ワーイ
Windows 8発売おめでとう!!