2011年01月10日

Gentoo linux Install Memo

PT2を購入したため、FreeBSDからLinuxに乗り換えました。乗り換えたLinuxのディストリビューションはgentooです。この記事は導入時のメモをまとめたものです。

ハードウェア

導入したハードウェアのスペックは以下の通りです。

M/B:BIOSTER GTA880GB+
CPU:Phenom II X6 1065T 2.9GHz
MEM:DDR3-1066 16GB
Storage:
 [SSD]Intel X25-V 40GB
 [HDD]Seagete 2TB x4

LiveUSBの作成

インストール用のLiveCDを使用せずに、USBメモリにLiveCDのデータを書きこんでインストールを行いました。Gentoo Linux LiveUSB HOWTOを参考にしました。

Boot

インストール作業はGentoo Linux x86 ハンドブックを見ながら行いました。

コンソールでインストール作業を行うのは不便なので、LiveUSBからブート後、コンソールが立ち上がったらsshdを起動。dhcpサーバーがネットワーク内にあれば、gentooのLiveCDはdhpcで自動的にネットワーク設定を行ってくれるため、特に設定をせずに起動することができます。
また同時にインストール時のrootのログインパスワードも設定しました。

# passwd
# /etc/init.d/sshd start

Diskの設定

40GBの容量のSSDにシステムをインストールしたいと思います。/bootや/usrなどでパーティションを分けずに/のみで運用する予定のため、/dev/sda1を1つ作って書き込みを行いました。
また、スワップディスクはメモリが16GBもあるため必要無しと判断して作成しません。

# cfdisk /dev/sda
Disk has been changed.

WARNING: If you have created or modified any
DOS 6.x partitions, please see the cfdisk manual
page for additional information.

ファイルシステムはext4としました。本当ならばbtrfsが良かったのですが、現時点では開発段階なため見送りました。
ラベル名はROOT。

# mkfs.ext4 -L ROOT /dev/sda1
mke2fs 1.41.9 (22-Aug-2009)
Filesystem label=ROOT
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
2444624 inodes, 9769520 blocks
488476 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=4294967296
299 block groups
32768 blocks per group, 32768 fragments per group
8176 inodes per group
Superblock backups stored on blocks:
        32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
        4096000, 7962624

Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 33 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.

ファイルシステムを作成後マウント。SSDでtrimコマンドを使用するためにdiscardオプションを付けました。

# mount -o discard /dev/sda1 /mnt/gentoo

stage3、及びportageの取得

http://ftp.iij.ad.jp/pub/linux/gentoo/releases/amd64/current-stage3/からstage3-amd64-20110106.tar.bz2を、http://ftp.iij.ad.jp/pub/linux/gentoo/releases/snapshots/current/からportage-latest.tar.bz2をダウンロードし、展開しました。

# cd /mnt/gentoo/
# links http://www.gentoo.org/main/en/mirrors.xml
# tar xvjpf stage3-amd64-20110106.tar.bz2
# tar xvjf portage-latest.tar.bz2 -C /mnt/gentoo/usr
# rm stage3-amd64-20110106.tar.bz2
# rm portage-latest.tar.bz2

ついでにportageを取得するミラーサイトの選択をしておきました。

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

chrootのための作業

chrootしてインストールした環境に入る前に、dnsのresolv.confを書き換えます。そして、/procと/devを使用できるようにしました。

# cp -L /etc/resolv.conf /mnt/gentoo/etc/
# mount -t proc none /mnt/gentoo/proc
# mount -o bind /dev /mnt/gentoo/dev

そしてインストールした環境に入ります。

# chroot /mnt/gentoo /bin/bash
# env-update
>>> Regenerating /etc/ld.so.cache...
l# source /etc/profile

カーネルコンパイルの準備

先ほど、最新のportageを取得したので無意味ですが、念のためemergeの更新をしました。

# emerge --sync

次にUSEフラグの設定を行いました。まず、現在設定されているのUSEフラグを出力します。

# emerge --info
Portage 2.1.9.25 (default/linux/amd64/10.0, gcc-4.4.4, glibc-2.11.2-r3, 2.6.34-gentoo-r12 x86_64)
=================================================================
System uname: Linux-2.6.34-gentoo-r12-x86_64-AMD_Phenom-tm-_II_X6_1065T_Processor-with-gentoo-1.12.14
・
・(略)
・
USE="acl amd64 berkdb bzip2 cli cracklib crypt cups cxx dri fortran gdbm gpm iconv ipv6 mmx modules mudflap multilib ncurses nls nptl nptlonly openmp pam pcre perl pppd python readline session sse sse2 ssl sysfs tcpd unicode xorg zlib"
・
・(略)
・

USEフラグの個々の詳細までは分かりませんが、パッと見でいらないものを設定から外しました。ついでに、コンパイルオプションの設定も行いました。使用したCPUはPhenom X6なので、7スレッド同時にコンパイルが走るように指定。
/etc/make.confを編集。

# These settings were set by the catalyst build script that automatically
# built this stage.
# Please consult /usr/share/portage/config/make.conf.example for a more
# detailed example.
CFLAGS="-march=amdfam10 -O3 -pipe"
CXXFLAGS="${CFLAGS}"
# WARNING: Changing your CHOST is not something that should be done lightly.
# Please consult http://www.gentoo.org/doc/en/change-chost.xml before changing.
CHOST="x86_64-pc-linux-gnu"
# These are the USE flags that were used in addition to what is provided by the
# profile used for building.
USE="mmx sse sse2 -gtk -gnome -kde -xorg -cups -pppd"

MAKEOPTS="-j7"
GENTOO_MIRRORS="http://ftp.iij.ad.jp/pub/linux/gentoo/"

ロケールも設定をしておきます。/etc/locale.genを編集しja_JP.UTF-8 UTF-8のコメントアウトを外しました。

# locale-gen
 * Generating 1 locales (this might take a while) with 1 jobs
 *  (1/1) Generating ja_JP.UTF-8 ...                                                                 [ ok ]
 * Generation complete

タイムゾーンの設定は以下のコマンドで行いました。

# cp /usr/share/zoneinfo/Asia/Tokyo /etc/localtime

カーネルコンパイル

まず、カーネルソースの取得とカーネルコンパイル用のプログラムをインストールした後、コンフィグメニューを表示するオプションを付けてカーネルをコンパイルしました。

# emerge gentoo-sources
# emerge genkernel
# genkernel --menuconfig all

コンパイルオプションは、以下のように設定しました。ルートファイルシステムにext4を使用しているため、カーネルに組み込んでおく必要があります。File Systemの項目のext4を有効にしました。

<*> The Extended 4 (ext4) filesystem 
 [*] Ext4 extended attributes (NEW) 
 [*] Ext4 POSIX Access Control Lists
 [ ] Ext4 Security Labels 
 [ ] EXT4 debugging support (NEW)        

fstabの設定

LABELを指定しているので、デバイス名で指定せずにラベル名でルートがあるデバイスを指定しました。
/etc/fstabを編集。

LABEL=ROOT              /               ext4            discard,relatime,noatime        0 1
shm                     /dev/shm        tmpfs           nodev,nosuid,noexec     0 0

grubの設定

grubの設定は以下のようにしました。ディスクにLABELを付けているので、デバイス名ではなくラベル名でrootの場所を教えています。

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

title Gentoo Linux 2.6.36-r5
root (hd0,0)
kernel /boot/kernel-genkernel-x86_64-2.6.36-gentoo-r5 root=/dev/ram0 real_root=LABEL=ROOT
initrd /boot/initramfs-genkernel-x86_64-2.6.36-gentoo-r5