Gentooいじりのブログ記事

インストール用CDの作成

| | コメント(0)

Gentoo Linuxのインストールの手始めは、ISOイメージのブータブルCDを作成することから。
Gentoo Linux Mirrors より、近いサイトを選んで、そこから、ISOイメージをダウンロードします。

University of Tokyo をにしよう。
/releases/x86/2005.1/installcd/に移動して、install-x86-minimal-2005.1.isoをダウンロード。

これから、CDを焼く。私は、Nero 6を使っていますが、isoイメージから、CDを作成できるものなら、なんでもいいでしょう。

ラベルをプリントして、インストール用CDは完成 :-)

ブートしてみる

| | コメント(0)

作成したインストールCDをセットして、ボロPCの電源ON!
CDからブートする旨のメッセージが出て、

boot:

ときた。
カーネルに渡すパラメータも特にないので、そのまま[Enter]

グラフィカルなきれいな画面です。。
ALT+F1を押すと、ブートログを見ることができます。

Processor 0 is Pentium III (Coppermine) 801MHz, 256 KB Cache ...
...
Not Loading APM Bios suport.
...
...
Network device eth0 deteted, DHCP broadcasting IP.
...
...
...

ネットワークもDHCPで繋がったようです。

作業は、始まったばかり、これからが、長い道のりだ。

パーティションの作成

| | コメント(0)

さて、パーティションを切ってディスクをフォーマットしなければならない。

その前に、キーボードが、合わないので、日本語キーボードのマップをロードしておく。実は、ブート画面で、聞いてきたのだが、ぼーっとしてたら、次に行ってしまった。

# loadkeys jp106

これでよし。

パーティションの分割は、いつも悩むのだが、今回は、次のように分割することにします。

/dev/hda1  /boot  64M
/dev/hda2  swap   512M
/dev/hda3  /var   3G
/dev/hda4  /      残りすべて

それぞれのパーティションをフォーマットします。

# mke2fs -j /dev/hda1
# mke2fs -j /dev/hda3
# mke2fs -j /dev/hda4

スワップパーティションも、

# mkswap /dev/hda2

ついでにスワップON

# swapon /dev/hda2

最後に、作成したパーティションをマウントしておきます。

# mount /dev/hda4 /mnt/gentoo
# cd /mnt/gentoo
# mount /dev/hda1 boot
# mount /dev/hda3 var

ハンドブックによると、何やら、stageというのを、1〜3の中から、選ぶ必要があるらしい。

stage1というのは、必要最低限で何もない状態、stage3は、ある程度のシステムがコンパイル済みということらしい。Gentooやるなら、stage1を選ぶのがいいのだろうけど、なんせボロマシンなので、コンパイルに時間がかかりそう。

手を抜いて、stage3を使うことに。

links2というキャラクタベースのブラウザを使ってダウンロードします。

# cd /mnt/gentoo
# links2 http://mirror.gentoo.gr.jp/

/release/x86/2005.1-r1/stages/pentium3/から、stage3-pentium3-2005.1-r1.tar.bz2をダウンロードする。ダウンロードするファイルに、カーソルを合わせ[Enter]でダウンロードできます。links2を終了するには[Q]を押します。

chrootするルートに展開します。

# tar xvjpf stage3-pentium3-2005.1-r1.tar.bz2

Portageのインストール

| | コメント(0)

今度は、Portageというのをインストールします。

これは、最新の状態の情報を持ったsnapshotというものらしい。最新状態のキャッシュのようなものか・・・。

stageのダウンロードの時と同様に。links2で、ミラーサイトにはいり、/snapshot/portage-20060117.tar.bz2をダウンロードします。

で、usrの下に展開。

# tar xvjf portage-20060117.tar.bz2 -C /mnt/gentoo/usr

次に、/mnt/gentoo/etc/make.confを編集しろとありますが、stage3を選んだので、コンパイルオプションは、そのまま、USEフラグもどこかにあるらしいデフォルトを使用することにします。

mirrorselectして、ダウンロードしてくるミラーを設定しておきます。

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

make.confに次のパラメータが追加されました。

...
GENTOO_MIRRORS="ftp://ftp.ecc.u-tokyo.ac.jp/GENTOO"

次は、いよいよchrootして、カーネルの構築か・・・。

さて、いよいよchrootするわけですが、その前にDNS情報のコピーと、procファイルシステムをマウントしておきます。

cp -L /etc/resolv.conf /mnt/gentoo/etc/resolv.conf
mount -t proc none /mnt/gentoo/proc

chrootの準備は整った(ハズ)。

# chroot /mnt/gentoo /bin/bash

環境を引き継ぐ。

# env-update
# source /etc/profile

次は、Portageの更新とやら・・・

# emerge --sync

必要なロケールだけ使用するように設定します。

echo "sys-libs/glibc userlocales" >> /etc/portage/package.use

/etc/locales.buildを編集して、以下のように設定します。

en_US/ISO-8859-1
en_US.UTF-8/UTF-8
de_DE/ISO-8859-1
de_DE@euro/ISO-8859-15
ja_JP.EUC-JP/EUC-JP
ja_JP.UTF-8/UTF-8
ja_JP/EUC-JP

カーネルの構築

| | コメント(0)

やっと、カーネルの構築です。

その前に(準備が長いな・・・)タイムゾーンの設定か。

# ln -sf /usr/share/zoneinfo/Japan /etc/localtime

カーネルソースを持ってきます。

# emerge gentoo-sources

カーネルソースのバージョンの確認。

# ls -l /usr/src/linux

inux-2.6.14-gentoo-r5 となっています。

# make menuconfig

で、カーネルのオプションを指定していくわけですが、よくわからないものは、デフォルトのままにして、以下のものだけを変更しました。

  • Processor family --> Pentium III
  • Device Driver
    -->Network device
    --> Ethernet (10 or 100Mbit)
    --> Inter® PRO/100M+ support

カーネルコンパイルだ、ふぅ

# make && modules_install

/etc/modules.autoload.d/kernel-2.6を編集して、NICインターフェースのe100を追加しておきます。

システムの設定

| | コメント(0)

必要なシステム設定をします。

まずは、/etc/fstabを編集。

/dev/hda1 /boot ext2 noauto,noatime 1 2
/dev/hda4 /   ext3 noatime        0 1
/dev/hda3 /var  ext3 noatime        0 1
/dev/hda2 none swap sw             0 0

次は、ネットワークまわりを設定していきます。

/etc/conf.d/hostnameを編集。

HOSTNAME="xxxx"

/etc/conf.d/domainnameの編集。

DNSDOMAIN="example.com"

domainnameを自動実行スクリプトとして登録します。

# rc-update add domainname default 

/etc/conf.d/netを編集して、ネットワークの設定します。

config_eth0=( "192.168.11.101 netmask 255.255.255.0" )
routes_eth0=( "default gw 192.168.11.1" )

ブート時にネットワークを有効にさせます。

rc-update add net.eth0 default 

/etc/hostsは、とりあえずこのPCだけ、記述しておきます。

127.0.0.1      localhost
192.168.11.101 xxxx.example.com xxxx

ここらで、忘れずにrootパスワードを変更してきます(実は、これを忘れて、ログインできなかったのだ )

# passwd
New UNIX password:
Retype new UNIX password:
passwd: password updated successfully
デフォルトでは、使いにくいので、KEYMAPを設定しておく。/etc/conf.d/keymapsを編集して、
...
KEYMAP="jp106"
...

としておきます。
最後に、UTCは使用していないので、clockをlocalに設定します。

...
CLOCK="local"
...

システムツールの導入

| | コメント(0)

ブート前に、必要なシステムツールをインストールしておきます。

まずは、ログツール。sysklogd、sysklogd-ng、metalogの中から、metalogを使うことにします。

# emerge metalog

cronは、dcron、fclon、vixie-cronから、vixie-cronを選びました。

# emerge vixie-cron

slocateも、ここでインストールします。

# emerge slocate

次は、ブートローダをインストールします。

GRUBのインストールと設定

| | コメント(0)

ブートローダは、GRUBを使う。長い間、LILOに慣れてきたのですが、最近は、GRUBが趨勢のようです。

例によって、エマージして、インストール。

# emerge grub

/boot/grub/grub.confを編集して、

timeout 5
default 0
title  Gentoo Linux 2.6.14-r5
root   (hd0,0)
kernel /kernel-2.6.14-gentoo-r5 root=/dev/hda4

としました。

grubを起動して、MBRに書き込みます。

# grub --no-floppy
grub> root (hd0,0)
grub> setup (hd0)
grub> quit

これで、ようやく再起動できる状態になりました。

chrootから抜けて、ディスクをアンマウトしてリブートです。

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

ほい!っと。

ブート失敗?!

| | コメント(0)

もしも、うまく起動しなかったら、どうしましょ?

私の場合は、起動はうまくいったのですが、先にも述べたとおり、rootパスワードの設定を忘れて、ログインできないことになってしまいました 。

えっ?!インストールのやり直し?

いえ、インストールCDを使って、復旧できます 。
インストールCDから、ブートして、ログインプロンプトが出るまで待ちます。

次に、ディスクをマウントして、chrootでGentoo環境に入ります。私の場合は、

# mount /dev/hda4 /mnt/gentoo
# cd /mnt/gentoo
# mkdir var boot
# mount /dev/hda1 boot
# mount /dev/hda3 var

procファイルシステムもマウントして、

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

chrootして、Gentoo環境に入ります。

# chroot /mnt/gentoo /bin/bash
# env-update && source /etc/profile 

ここで、必要な作業を実行します。

後は、chrootから抜けて、再度リブートします。

# exit
# umount /mnt/gentoo/boot /mnt/gentoo/var /mnt/gentoo/proc /mnt/gentoo
# reboot

この方法は、カーネルの作成失敗、GRUBの設定ミスなどにも、応用がききますね。

ひさびさのGentooいじりの投稿です。

Gentoo玄箱は、立ち上がったものの、パッケージ導入の時間のかかること。 少しでも、このボトルネックを解消しようと、ボロPCにクロスコンパイル環境を構築して、distccを使った分散コンパイルを使用するという計画です。

なかなかうまくいかなかったのですが、なんとか動きだしたので、ご報告させていただきます。

ツールチェーンの構築は、何度か経験はあるのですが、「なんか面倒だった」という記憶だけ残っていて、すっかり忘れていました。 いろいろ調べていると、crossdevというツールがあるらしい。

今回はこれを試してみることにしました。

# emerge crossdev

このツールは、コマンド一発で、ツールチェーンを構築してくれる優れものです。 まず、最初にやらなければならないのが、ターゲットマシン(すなわち玄箱)のツールチェーン環境のバージョンを調べることから。現在の玄箱にインストールされているバージョンは、次のとおりです。

  • gcc 3.4.4-r1
  • binutils 2.16.1
  • kernel(header) 2.4.26-r1

glibc 2.3.5-r3 次に、crossdevを使って

# crossdev -t powerpc --g 3.4.4-r --b 2.16.1 --k 2.4.26-r1 --l 2.3.5-r3

で後は、待つだけ。 のハズなのですが、configure中にエラーが出てしまうのです。ソースを見たり、検索でこんな事例はないか調べたり、まったく検討違いのことばかりの3日間。 結局、ボロPCのビルドチェーンが玄箱のバージョンに対応できなかったのです 分かってしまえば、こんなもの、とほほ・・・

# emerge -uD system

を実行して、再度crossdevして、無事クロス環境の構築は完了。 crossdev、偉い! 次は、クロスでの、分散コンパイル環境の構築。

・・・(To be continued)

パワー不足の玄箱でGentooを運用して行くには、少しでもコンパイルの速度を上げないとGentooが生きて来ないだろう、ということで・・・

ボロPCに、コンパイルをお手伝いさせようと、前回は、PowerPCのコンパイル環境をPentiumeIII上に構築したわけです。

今回は、分散コンパイルさせるために、distccの導入です。
既に、玄箱には、distccは導入してあるので、ボロPCにも入れます。ついでに、ccacheも入れてしまいます。

ボロPCで:

# emerge distcc ccache

色々と試行錯誤がありましたが、最終的に次のようになりました。

玄箱側の設定:

/etc/make.confの内容:(太字が関連箇所)
CFLAGS="-O2 -mcpu=603e -fno-strict-aliasing -pipe -fsigned-char"
CHOST="powerpc-unknown-linux-gnu"
CXXFLAGS="${CFLAGS}"
PORTDIR=/var/portage
DISTDIR=/var/portage/distfiles
PKGDIR=/var/portage/packages
RPMDIR=/var/portage/rpm
PORTDIR_OVERLAY="/var/overlays/kurobox"
RSYNC_EXCLUDEFROM=/etc/portage/rsync_excludes
GENTOO_MIRRORS="http://mirror.gentoo.gr.jp/"
SYNC="rsync://192.168.11.101/gentoo-portage"
PORTAGE_TMPDIR=/var/tmp
MAKEOPTS="-j6"
FEATURES="ccache distcc"
DISTCC_DIR="${PORTAGE_TMPDIR}/.distcc"
CCACHE_SIZE="2G"
CCACHE_DIR="/var/tmp/ccache"

ホストの指定:
bc. # distcc-config --set-hosts 192.168.11.101

/usr/lib/distcc/powerpc-unknown-linux-gnu-wrapperを次の内容で新規に作成する。

#!/bin/bash
exec /usr/lib/distcc/bin/powerpc-unknown-linux-gnu-g${0:$[-2]} "$@"

これは、powerpc-unknown-linux-gnu-gccのようにフルネームではなく、gccと短い名前で呼ばれたときに、フルネームで呼ばれたかのように見せかけるラッパーです。
コンパイラが起動されたときにdistccを実行するように、シンボリックリンクをはります。

# cd /usr/lib/distcc/bin  
# chmod a+x powerpc-unknown-linux-gnu-wrapper  
# ln -s powerpc-unknown-linux-gnu-wrapper c++  
# ln -s powerpc-unknown-linux-gnu-wrapper cc  
# ln -s powerpc-unknown-linux-gnu-wrapper g++  
# ln -s powerpc-unknown-linux-gnu-wrapper gcc  
# ln -s /usr/bin/distcc powerpc-unknown-linux-gnu-c++  
# ln -s /usr/bin/distcc powerpc-unknown-linux-gnu-g++  
# ln -s /usr/bin/distcc powerpc-unknown-linux-gnu-gcc

デフォルトランレベルにdistccとccacheを登録しておきます。

# rc-update add distcc default  
# rc-update add ccache default

ボロPC側の設定:
/etc/make.confの内容:

CFLAGS="-Os -march=pentium4 -pipe"
CHOST="i686-pc-linux-gnu"
CXXFLAGS="${CFLAGS}"
GENTOO_MIRRORS="http://mirror.gentoo.gr.jp"
SYNC="rsync://rsync.jp.gentoo.org/gentoo-portage" 
PORTDIR_OVERLAY="/usr/local/portage"
PORTAGE_TMPDIR=/var/tmp  MAKEOPTS="-j2"
FEATURES="ccache"  CCACHE_SIZE="2G" 
CCACHE_DIR="/var/tmp/ccache"

こちらは、お手伝いをするだけなので、設定はこれだけです。
玄箱と同じくデフォルトランレベルに登録しておきます。

# rc-update add distcc default
# rc-update add ccache default

以上で、設定は終わりです。

それぞれのマシンでdistccとccacheを起動した後、玄箱側で何かをemergeしてボロPC側で、powerpc-〜、cc1・・・などのプロセスが実行されれば、導入は成功です。

2006年2月: 月別アーカイブ

2009年4月

      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30    

タグクラウド

このアーカイブについて

このページには、過去に書かれたブログ記事のうちGentooいじりカテゴリに属しているものが含まれています。

次のカテゴリはMODxいじりです。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。