Gentoo Linuxのインストールメモ。
かつては一度あきらめたJavaですが(Perlと比べると分かりにくすぎる。オブジェクト指向に慣れてなかったのもあるけど。)、Perlでプログラミングしていて限界を感じるので(標準のモジュールではGUIプログラミングが出来ないのと、コンソールアプリにしろCursesを使うのにモジュールをインストールしなくちゃいけなくって、このインストールに挫折した、、、root権限がないとこういったののインストールは限りなくめんどくさい)、もう一度がんばってみようかな、と思うわけです。
で、プログラミングするならunix環境(というかvi)が欲しいわけですが、仮にGUIプログラムを作ったとしても、その実行の様子を例えばssh越しのコンソールでは見ることが出来ないわけです。
以前はとりあえずネットワーク越しにプログラミングはして、それをFTPを使ってデスクトップに持ってきて、で、実行してたりしたのですが、それではめんどくさいしネットワークを使っている意味が薄れる。
だからといって、Windows環境でプログラミングするのもなぁ、というのがあるわけです。(まぁ、vimはありますが、CUI環境(=MS-DOS)がダルすぎる・・・)
ということで、LinuxをPCにインストールしようかな、と思い、なんとなくよさげな
Gentoo Linuxをインストールしてみることにしました。
インストールCDはすでに焼いておいたので、とりあえず起動。
dokeymapというオプションはヘルプには出てなかったけれど、雑誌に載っていたので、次のようにしました。
boot: gentoo dokeymap
たしかにkeymapを選ぶ画面は出たけれど、反映されてないOTL
にしても、起動画面がけっこうオサレですw
passwdでrootのパスワードを変更しておいて、ifconfigを実行。
eth0にちゃんとIPアドレスが割り当てられてました。
pingもちゃんと通っているみたいです。
さて、問題のディスクの準備。
今回、めんどうだったのでWindowsのバックアップ取ってません(爆
まぁ、消えたら消えたでインストールし直せばいいし、データ類は別のHDDに入ってるし。
fdiskを使って、以下のように設定。(/dev/hda1は変更なし)
Device Boot Size System
/dev/hda1 * 約30GB W95 FAT32
/dev/hda2 512MB Linux swap
/dev/hda3 * 約8GB Linux
そのあと、ファイルシステムの適用とマウント。
# mkswap /dev/hda2
# swapon /dev/hda2
# mkreiserfs /dev/hda3
# mount /dev/hda3 /mnt/gentoo
ってな感じで。(#はプロンプト)
ファイルシステムは雑誌お勧めのReiserFSってのにしてみました。
一応時間の設定。
# date
Thu Mar 16 14:16:06 UTC 2006
…UTC?
調べたら、UTCは協定世界時とやらで、グリニッジ標準時とほぼ同じとのこと。(ちなみに日本標準時はJSTらしい。)
時計を見れば14:16くらいだから、どうやら間違っているっぽい…
ということで、
# date 031605292006
(date MMDDhhmmYYYYで設定できるらしい)
と、UTCにしてみた。
で、stage tarballのインストール。
stage1からやっていくのも面白そうだけれど、時間がかかりそうなので今回はパス。
ということで、stage3のtarballをダウンロード。
まず/mnt/gentooにいってから、links2というウェブブラウザ(でも、スマートな感じがしない・・・)で、ミラーサイトにアクセス。
このとき、x86,i586,i686と3つ用意されていて、違いが分からない(^^;
調べたら、それぞれCPUの種類(というのかな?)を指してるんですね。(←もとがMacユーザなのでハードウェア関係は滅法弱い)
Pentium4はi686に分類される(もちろん、x86でもあるのだけれど)ようなので、i686用のをダウンロードしてきました。
にしても、i810(これはチップセットですよね?)とか、なんでこんな味も素っ気もない名前をつけるのかなぁ。
分かりにくいったらありゃしない。
# tar xvjpf stage3(略).tar.bz2
で展開。
ちなみにjはbz2の解凍、pはパーミッションの保存だそうで。
次はPortageのインストールとやら。
これ、雑誌には書いてなかったなぁ・・・(まぁ、2003年の記事だし、しょうがないのかな)
さっきと同じようにlinks2を使ってスナップショットのtarballをダウンロードしてきて、
# tar xvjf portage(略).tar.bz2 -C usr/
ってな感じで展開。-Cは説明が書いてなかったけれど、調べたら展開するディレクトリの指定とのこと。
ここでコンパイルオプションの設定。
ということで、etc/make.conf.exampleを見てたら、marchの設定ところに、…,i686(Pentium Pro),…,pentium4となっていて、頭にハテナマーク。
調べたら、Pentium4はi686と微妙に違うっぽい・・・? i686はP6マイクロアーキテクチャとかいうやつっぽい。で、Pentium3まではたしかにこのP6何とやららしいんだけど、Pentium4はNetBurstとかいうアーキテクチャらしくて、これとP6何とやらとの関係がよく分からない・・・
まぁ、しょうがないので、etc/make.confを以下のように設定。
CHOST="i686-pc-linux-gnu"
CFLAGS="-O3 -march=pentium4 -pipe"
CXXFLAGS="${CFLAGS}"
MAKEOPTS="-j2"
※CFLAGSのところの-O3のOは大文字のO。
まぁ、bin/lsとして動くみたいだし、大丈夫でしょう。多分。
で、ミラーサイトの設定。
# mirrorselect -i -o >>etc/make.conf
と、
# mirrorselect -i -o -r >>etc/make.conf
といわれるがままに設定。
(最初、スペースを押してXをつけて選択するのを忘れてた(^^;
DNS情報のコピー。
# cp -L /etc/resolve.conf /mnt/gentoo/etc/
オプションの-Lはシンボリックリンクをコピーしないようにするため、とのことだけど、どこにもシンボリックリンクなどない気が・・・?
このあと、
# mount -t proc none /mnt/gentoo/proc
# mount -o bind /dev /mnt/gentoo/dev
と必要なマウントをして、
# chroot /mnt/gentoo /bin/bash
# env-update
# source /etc/profile
# export PS1="(chroot) $PS1"
として、やっと新しい環境へ。
(最後の行はプロンプトの変更だから、別にいらない気も・・・)
バイトに行く時間(午後5時)なので、中断。
とりあえず
# emerge --sync
とPortageツリーの更新だけしておいた。
帰ってきた(午後11時半)ので再開。
次はprofileの選択とやら。
特に変更はいらなそう。
ただ、lsコマンドで何個か見慣れないオプションがあったので、そのメモ。
Fはおなじみで、/、@、*とファイルの種類を表してくれるもの。
Gは、グループの表示をしないというもの。
gは、lとほとんど同じだけれど、所有者を表示しないというもの(多分)。
dはディレクトリの「中身」を表示するのではなく、ディレクトリをファイルとみなして表示するもの。(例えば、ls etc/とすると、普通はたくさんのファイルが表示されるけれど、ls -d etc/とすると、etc/とだけ表示される。)
あと、lnコマンドにも見慣れないオプションがあったので、やはりメモ。
fは、指定したリンクと同名のリンクがすでにあれば、それに置き換える、というもの(あってる?)。
nは、ディレクトリへの(シンボリック)リンクを、ディレクトリとしてではなくファイルとして扱うというもの(デフォルトではディレクトリとして扱われる)。
で、USE変数の設定。
実はこれが一番よく分からない・・・
この指定をすることでどれくらい環境を統一できるものなんだろう?
それと、そんなに共通するようなフラグがあるもんなのかなぁ、と。
とりあえず気をつけなきゃいけないことは、グローバルな変更を加えたいなら、/etc/make.profile/以下のデフォルトのファイルをいじるんじゃなくて、/etc/make.confにその設定を書くこと、ということ。
今回は特にいじらず。
ロケール指定は、デフォルトの/etc/locales.buildで大丈夫そうだったので、マニュアル通り
# mkdir -p /etc/portage
# echo "sys-libs/glibc userlocales" >>/etc/portage/package.use
としておきました。
さて、いよいよカーネルのインストール。
けど、そのまえにタイムゾーンの設定。
といっても、
# cp /usr/share/zoneinfo/Japan /etc/localtime
とするだけ。(ちなみにこのJapanってファイル、バイナリファイルなのにびっくり)
ためしに
# date
とすると、Fri Mar 17 00:56:06 JST 2006
って感じで、ちゃんとあっています。
今回使ったカーネルソースは、gentoo-sourcesというもの。
# USE="-doc symlink" emerge gentoo-sources
と、完全にマニュアル通りw
USEフラグで渡した-docは他の依存関係をインストールしないため、symlinkは/usr/src/linuxのシンボリックリンクを自動で修正するためらしい。
カーネルをインストールする前にマニュアルに従ってpciutilsをインストール。
lspciをすることでPCIバスとそれにつながっているデバイスすべての情報が表示されるとのこと。
おまけで書いておくと、lsmodとするとモジュールの状態が表示される。(これは、/proc/modulesの情報を整形してるだけらしい)
さて、
# cd /usr/src/linux
# make menuconfig
としてカーネルの設定。
・・・やっぱりよく分からない(^^;
とりあえず必須になっているものと必要そうなのにチャックを付けて設定完了。(現在午前4時、、、)
# make && make modules_install
# cp arch/i386/boot/bzImage /boot/gen_kernel.2.6.15r1
ってな感じでコンパイル&インストール終了。
(コンフィギュアファイルが.configって名前で保存されるって知らなくて名前を変えちゃってたから、最初失敗(^^;
このあとシステムの設定をしていくみたいなので、いつまでもnanoを使うのはいやだったからさっそくvimをインストール。
まず
# emerge -s vi |less
で検索して、
# emerge app-editors/vim
でインストール。
まだインストールの調整の仕方とかは分からないけれど、お手軽w
さっそくインストールしたvimを使って/etc/fstabを編集。
/dev/hda3 / reiserfs noatime 0 1
/dev/hda2 none swap sw 0 0
/dev/cdroms/cdrom0 /mnt/cdrom auto noauto,user 0 0
none /proc proc defaults 0 0
none /dev/shm tmpfs nodev,nosuid,noexec 0 0
ってな感じに修正。(cdromのオプションについてるuserはroot以外にもマウントできるようにするものらしい)
Windowsやデータの入っているディスクのマウントの設定はとりあえず後回し。
・・・日が昇ってきた。眠い。
疲れてきたのでネット巡回しながらやってたら6時過ぎてるし。
ホスト名とドメイン名の設定。
ホスト名は/etc/conf.d/hostname、ドメイン名は/etc/conf.d/domainnameで設定。
けど、ドメイン名は設定しなかった。
このconf.dをちょっとみてたらkeymapsというファイルがあって、さっそく修正。
KEYMAP="jp106"
とした。
この修正を反映させるにはどうしたらいいのかが分からなかったんだけれど、/etc/init.d/keymaps(シェルスクリプト)を使って、
# /etc/init.d/keymaps start
としたら、(何個かエラーは出たけれど)修正が反映された感じ。
これでvimがより快適に使えるw
ネットワークの設定の続きにいって、/etc/conf.d/netに
config_eth0=( "dhcp" )
と書いておいた。
で、ブート時に自動で起動するように、
# rc-update add net.eth0 default
としておいた。
ついでに、
# rc-update add keymaps defalut
も。
(domainnameは設定してないので付け加えなかった。)
あとはテキトーに/etc/hostsをいじって、ネットワークの設定終わり。
ちょっとサークルへ顔を出すので中断(午前10時)。
で、帰ってきてちょっと寝て、再開(午後11時)。
rootのパスワードを設定して、/etc/rc.confはエディタをvimに変えて、/etc/conf.d/keymapsはすでに設定してあったので無視。
/etc/conf.d/clockはCLOCK="local"と変更。
これでシステムの諸変更は終了。
ちなみにnet.eth0をrc-updateをしてたかどうか忘れてたので、ちょっと調べたところ、
# rc-update show [runlevel]
とすることで、runlevelでどのプログラムが立ち上がるかを見ることが出来るようだ。(もちろんnet.eth0は入ってた。Blogに書いてあるし(爆)
で、システムログツールのインストール。
雑誌ではsysklogdをインストールしていたので、(調べるのも面倒だし)自分もsysklogdをインストール。
# emerge app-admin/sysklogd
# rc-update add sysklogd default
マニュアルによればsysklogdにはログをローテーションする機能がないのであとでlogrotateを入れたほうがいいとのこと。
次はcronデーモン。
と思ったのだけれども、よくよく考えるとサーバじゃないんだし定期的に走らせるプログラムもないから、パスで。
比較するのが面倒だったからでは多分ありませんw
locateは欲しいから、インストール。
# emerge sys-apps/slocate
って、データベースの更新をcronでやんなきゃOTL
ということで、改めてcronデーモンのインストール。
めんどいので、雑誌に書いてあったdcronで。
# emerge sys-process/dcron
# rc-update add dcron default
# crontab /etc/crontab
あと、ファイルシステムツールをインストール。
ReiserFSを選んだので、
# emerge sys-fs/reiserfsprogs
とインストール。
DHCPクライアントのインストール。
# emerge net-misc/dhcpcd
デーモンなんだろうけれど、rc-updateはしなくてもいいのかな・・・?(というか、dhcpcdというスクリプトはない・・・?)
残るはブートローダのインストールのみ、と思ったら、起動画面で画像を表示するにはフレームバッファのサポートを有効にしていなきゃいけないっぽいんで、カーネルの再構築。。。
よく分からなかったので、とりあえず以下のような感じのを追加。
Device Drivers->Graphics support以下で、
<*> Support for frame buffer devices
<M> VESA VGA graphics support
<M> Intel 830M/845G/852GM/855GM/865G support
(上のは、ちゃんと起動したらどちらかに絞る)
[*] Support for the framebuffer splash
あと、
Device Drivers->Graphics support->Console display driver support以下の
[*] Video mode selection support
<*> Framebuffer Console support
(多分、いらないのもあるんだろうなぁ・・・)
とりあえずコンパイルしたのを
# cp arch/i386/boot/bzImage /boot/gen_kernel.2.6.15r1.fb
と/boot以下に別名でコピー。
やっとGRUBのインストール。
# emerge sys-boot/grub
で、/boot/grub/grub.confの編集。
以下のような感じで。
==> /boot/grub/grub.conf <== (←この書き方、いいですねw)
timeout 30
default 0
splashimage=(hd0,2)/boot/grub/splash.xpm.gz
#Gentoo Linux
title=Gentoo Linux 2.6.15-r1
root (hd0,2)
kernel /boot/gen_kernel.2.6.15r1.fb root=/dev/hda3 vga=0x31B video=vesafb:mtrr,ywrap
#Gentoo Linux(No Frame Buffer)
title=Gentoo Linux 2.6.15-r1(no_fb)
root (hd0,2)
kernel /boot/gen_kernel.2.6.15r1 root=/dev/hda3
#Windows
title=WindowsXP
rootnoverify (hd0,0)
makeactive
chainloader +1
まぁ、ほとんどマニュアル通りでw
(にしても、グラフィックカード(チップ?)がオンボードで、メモリが共用の場合には、ビデオRAMってどのサイズを指定すればいいんだろう?)
GRUBのインストール。
マニュアル通りに
# grep -v rootfs /proc/mounts > /etc/mtab
としてから、
# grub-install /dev/hda
ちゃんとインストールできたみたい。
で、再起動したんだけれどGRUBが・・・?
ちょっと調査。
原因判明。grub.confの位置が間違ってた、、、
/etc/grub.confではなく、/boot/grub/grub.confですね。
(上のも修正しました。)
修正して再起動。
ちゃんと起動しましたw
けど、kernelに与えるオプションが間違っているっぽくて、ブートスプラッシュが表示されない・・・
というか、モジュールで設定したのが悪そうな気もするので、取り込む形でカーネルの再構築。
・・・してもダメだった。んー、どうしたものか。(そもそも表示されないのかなぁ・・・?)
とりあえず、Windowsは無事起動&データの破損も(多分)なし。
もう遅い(という表現は変だけれど、とりあえず午前4時半)ので、あとは課題ということで。
追記。
なんだかんだで起きてて現在午前6時半。
なんかbootsplashはもうサポートが終わりで、今後はfbsplashというのに置き換わっていくらしい。
とりあえずlivecdみたいな起動の仕方ではないけれど、うまくいったみたい。
詳細は後で新しいエントリに書きます。