2010/07/18

Gentooをインストールしてみた

デスクトップで動いているFedora12のKVMとHP Mini 1000にGentooをインストールしてみた
KVMの方は主に実験とdistccを動かしてHP Mini 1000でemergeするときの肩代わり
HP Mini1000の方は普通にX入れて常用する予定 (作業中)

主な参考サイトを先に書いておく
Gentoo Linux ドキュメント -- Gentoo Linux x86 ハンドブック
Gentoo Linux ドキュメント -- Gentoo Linux LiveUSB HOWTO
Gentoo Linux ドキュメント -- Gentoo distcc ドキュメント
Index of /pub/Linux/Gentoo/releases


さて、やることはほとんどGentoo Linux x86 ハンドブックのまんまなんだけど色々書いておく
いつものことだけど、なんでかって言うと自分で取捨選択したのを忘れないため

まず、どうやってインストールするかを選択する、isoイメージを使うかUSBメモリを作るか
KVMならisoをそのまま使えばいいと思う
HP Mini 1000はネットブックで光学ドライブがついていないので必然的にUSBメモリが必要になる
ということで、とりあえずUSBメモリの作成の仕方

ここから install-x86-minimal-xxxxxxxx.iso をダウンロードしておく
ついでに stage3-i686-xxxxxxxx.tar.bz2ここから portage-latest.tar.bz2 も貰ってくる

次にUSBメモリの準備、全て削除されてもよいものを用意する
/dev/sdb で認識されていると仮定して進める
fdiskを使い既存のパーティションを全て削除しFAT32のパーティションを作りアクティブにする
それが終わったらファイルシステムを作成する

# fdisk /dev/sdb
p 表示 d 削除 n 新規作成 t ID変更 (bがFAT32) a アクティブ w 書き込み

# mkdosfs -F 32 /dev/sdb1


準備が終わったらマウントしてisoの中身をコピー、編集をする
その時stage3とportageも一緒にコピーしておくと後でダウンロードする必要がなくなる

# mkdir usb iso
# mount -t vfat /dev/sdb1 usb
# mount -t iso9660 -o loop,ro install-x86-minimal-xxxxxxxx.iso iso

# cp -rv iso/* usb/
# mv usb/isolinux/* usb/
# mv usb/isolinux.cfg usb/syslinux.cfg
# rm -rf usb/isolinux*
# mv usb/memtest86 usb/memtest
# sed -i -e "s:cdroot:cdroot dobladecenter:" usb/syslinux.cfg
# sed -i -e "s:kernel memtest86:kernel memtest:" usb/syslinux.cfg

stage3とportageのコピー
# cp stage3-i686-xxxxxxxx.tar.bz2 portage-latest.tar.bz2 usb/

# umount usb iso
# rmdir usb iso


最後にブートローダの設定を行う、これでUSBメモリの作成は完了

# dd if=/usr/share/syslinux/mbr.bin of=/dev/sdb
# syslinux /dev/sdb1


ここまででインストールメディアの準備は終了しました
USBメモリからの場合は挿してBIOSの設定を行ってください
KVMでisoを使う場合は以下のようにするとブートできます

# qemu-kvm いつものコマンド -cdrom install-x86-minimal-xxxxxxxx.iso -boot d


ちなみに有線LANがある場合は後々楽なのでケーブルを接続しておく
起動するとまず boot: の表示で止まります、多分ここはそのままEnterで大丈夫
ダメな場合はここにオプション一覧が載っています
暫くすると << Load Keymap (Enter for default): の表示で止まります
日本語キーボードを使用している人は 22 です

初めに時刻の設定をしておく

# date
Fri Mar 29 16:21:18 UTC 2005

上記が合っていなかったら date MMDDhhmmYYYY の形式で指定する
# date 071820082010


ネットワークの設定だけど ifconfig してみてアドレスが取得されていない場合はここを参考に設定する
有線LANが接続されていて認識されていれば勝手にDHCPからアドレスを取ってきているはず

SSHで接続してインストールを続行したい場合の設定を行います
コピペ等ができて便利なのでおすすめ
これでifconfigで確認できるアドレスに他のマシンから接続できる

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


どうやらGentooのカーネルは IDEはhdXSATAはsdX で認識されるみたい
KVMもHP Mini 1000もIDE接続なのでHDDはhdaで認識されていた
ちなみにUSBメモリはsdaで認識されていた

次にインストール先パーティションの確保等を行う
/dev/hda1を/boot/dev/hda2を/ に、スワップは作成しなかった

# fdisk /dev/hda

# mke2fs /dev/hda1
# mke2fs -j /dev/hda2

# mount /dev/hda2 /mnt/gentoo
# mkdir /mnt/gentoo/boot
# mount /dev/hda1 /mnt/gentoo/boot


さて、ここまででようやくインストール先の準備ができたのでstage3とportageの展開をする
isoで起動した人はアーカイブを持っていないのでダウンロードする必要がある
上記の方法でUSBメモリを作成し予めコピーしておいた人は /mnt/cdrom にファイルがあるはず

# cd /mnt/gentoo

ダウンロードは以下でできる、カレントディレクトリに保存される、一番新しいのを探すこと
# links http://ftp.jaist.ac.jp/pub/Linux/Gentoo/releases/x86/current-stage3/
# links http://ftp.jaist.ac.jp/pub/Linux/Gentoo/releases/snapshots/current/

USBメモリの場合
# tar xvjpf /mnt/cdrom/stage3-i686-xxxxxxxx.tar.bz2
# tar xvjf /mnt/cdrom/portage-latest.tar.bz2 -C usr/

ダウンロードした場合
# tar xvjpf stage3-i686-xxxxxxxx.tar.bz2
# tar xvjf portage-latest.tar.bz2 -C usr/
# rm stage3-i686-xxxxxxxx.tar.bz2 portage-latest.tar.bz2


/etc/make.conf の設定を行う
distccを使うつもりなら -march=native を指定してはいけないらしい
ちょっとこだわりたければここで自分のCPUを参照
-march=native の展開の仕方はここを参照

# nano -w etc/make.conf
CFLAGS="-O2 -pipe -fomit-frame-pointer -march=prescott -msahf -mtune=generic"
CXXFLAGS="${CFLAGS}" ←CFLAGSを代入
MAKEOPTS="-j3" ←CPU+1を指定すればいいみたい、Atomは2スレッド実行できるので3

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


/proc/dev をマウントしてGentooの環境に chroot する
ここまでで下準備が終わりこれからはGentoo本体の設定になります

# cp -L /etc/resolv.conf etc/
# mount -t proc none proc
# mount -o bind /dev dev
# chroot /mnt/gentoo /bin/bash
# env-update
# source /etc/profile
# export PS1="chroot $PS1" ←わかりやすいように


まずemergeの同期と(恐らくアップデートしろと言われるので)アップデート

# emerge --sync
# emerge --oneshot portage


次にprofileとUSE、locale、タイムゾーンの設定

# eselect profile list
Available profile symlink targets:
[1] default-linux/x86/10.0 * ←*が付いているのが現在の設定
[2] default-linux/x86/10.0/desktop
[3] default-linux/x86/10.0/server
# eselect profile set 1 ←設定したいプロファイルの数値を指定

# nano -w /etc/make.conf
USE="-cups -gpm -ipv6 acpi truetype" ←マイナスを付けると除外、付けないと追加

# nano -w /etc/locale.gen
en_US.UTF-8
ja_JP.UTF-8 UTF-8 とりあえずこれらのコメントを外した

# locale-gen
# eselect locale list
Available targets for the LANG variable:
[1] C
[2] POSIX
[3] en_US.utf8
[4] ja_JP.utf8
[ ] (free form)
# eselect locale set 3 ←とりあえず英語

# cp /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
# echo Asia/Tokyo >/etc/timezone


ここからカーネルのコンパイル等を行うので非力なPCにインストールする場合は
distccをインストールしておくことでビルドを肩代わりできる
distccのインストールはここにまとめた

今回はとりあえずマニュアルでの設定はせずに genkernel を使用してカーネルのビルドする

# emerge gentoo-sources genkernel
# zcat /proc/config.gz >/usr/share/genkernel/arch/x86/kernel-config-2.6
# genkernel all ←凄く時間がかかります


/etc/fstab の設定
ファイルを覗くと色々と書いてあるが正確なものではなくテンプレートなので
不要な部分はコメントアウトすること

# nano -w /etc/fstab
/dev/hda1 /boot ext2 noauto,noatime 1 2
/dev/hda2 / ext3 noatime 0 1


ネットワーク関係の設定、詳しくはここ

# nano -w /etc/conf.d/hostname
HOSTNAME="Gentoo-KVM" ←マシン名、適当に

# nano -w /etc/conf.d/net
config_eth0=( "dhcp" )
IPアドレスを固定する場合はこうする
config_eth0=( "192.168.0.2 netmask 255.255.255.0 brd 192.168.0.255")
routes_eth0=( "default via 192.168.0.1" )

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

# emerge dhcpcd


システムの設定

# passwd

# nano -w /etc/conf.d/keymaps
keymap="jp106"

# nano -w /etc/conf.d/hwclock
clock="local"


とうとうGRUBの設定です、これが終われば再起動して終了です

# emerge grub
# ls /boot
System.map-genkernel-x86-2.6.34-gentoo-r1
boot
grub
initramfs-genkernel-x86-2.6.34-gentoo-r1 ←覚えておく
kernel-genkernel-x86-2.6.34-gentoo-r1 ←覚えておく

# nano -w /boot/grub/grub.conf
title Gentoo Linux 2.6.34-r1
root (hd0,1)
kernel /boot/kernel-genkernel-x86-2.6.34-gentoo-r1 root=/dev/ram0 real_root=/dev/hda2
initrtd /boot/initramfs-genkernel-x86-2.6.34-gentoo-r1

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


以上でインストールは終了です
chrootを抜けてアンマウントしてから再起動しましょう
USBメモリやCD-ROMを使用した場合は取り外すのを忘れずに

# exit
# cd /
# umount /mnt/gentoo/proc /mnt/gentoo/dev /mnt/gentoo/boot /mnt/gentoo
# reboot

2 件のコメント:

  1. initrtd /boot/initramfs-genkernel-x86-2.6.34-gentoo-r1
    の所なのですがinitrd とどう違うのでしょうか?

    Gentooはやっていないので全く分かりません。

    返信削除
  2. 自分もあまり詳しくないのでなんとも言えませんが
    細かい違いはあれど役割は同じです

    返信削除