VirtualBoxの仮想マシンへのGentoo Linuxのインストール
さきほど立ち上げたsshdに接続しホストからインストール作業を行いましょう。
ファイルシステムとstage3, portageの展開について
by @naota344, @kozo2, @peccul
この小冊子はGentooハンドブックには書かれていない使い方やつまづきどころをまとめ、必ずGentooを使って(そして楽しんで)頂けるようになることを目的として書きました。
大きくわけて
が書かれています。
ここではWindows7にインストールしたVirtualBoxの仮想マシンにGentoo Linux(x86)をインストールする方法をまとめています。
まずネットワークにつながっていないとGentooはインストールができません。
Quick Install GuideではホストマシンからゲストのGentooにsshでつなぎインストール作業を行っています。こちらの方がVirtualBoxのウインドウ内で作業するより便利なのでこの通りやってみましょう。先ほどVMのネットワーク設定ではブリッジアダプタを選択しました。(これはホストのIPと同じセグメントにもう一個IPを設定できるカードがゲストに増えたというようなイメージをして頂けるといいと思います。)ここではゲストのGentooに固定IPを割り当てます。
net-setup eth0
とコマンドを入力しましょう。するとブリッダプタ設定を行ったネットワークインタフェースの情報が表示され「設定を行うインタフェースはこれでいいですか?」といった旨の質問がされますのでYesを選択してください。
次にネットワークが無線か有線接続か聞かれます。ブリッジアダプタ設定なのでMy network is wiredを選択してください。
その次の割り当てるIPの設定については決め打ちで設定します。
ホストマシンのIPが192.168.0.3とでもなっていれば192.168.0.4などとしてください。
broadcast addressは192.168.0.255とします。
Network maskは255.255.255.0とします。
GatewayとDNS serverアドレスは192.168.0.1とします。
DNS search suffixについては空白でよいでしょう。空白のままenterを押してください。。
これでnet-setupは終了です。
ping google.com
とコマンド入力すればネットワーク接続を確認できます。pingが帰ってくれば成功です。次に
/etc/init.d/sshd start
とコマンド入力しsshdを立ち上げ
passwd
とコマンド入力し適当なパスワードを設定しましょう。
ホスト側の端末で
ssh root@192.168.0.4
とし、先ほどのパスワードを入力すればsshでゲストのGentooに入れます。
ファイルシステムについてはGentooハンドブックのディスク設定のページ(http://www.gentoo.org/doc/en/handbook/handbook-x86.xml?part=1&chap=4)の通りにして頂ければ結構です。
ディスクの設定が終われば次には
mount /dev/sda3 /mnt/gentoo
mkdir /mnt/gentoo/boot
mount /dev/sda1 /mnt/gentoo/boot
といったことを行うのですが
これは /(root)用のパーティション(/dev/sda3)をGentooインストール用の場所/mnt/gentooにマウントし、次に/boot用のパーティション(/dev/sda1)をGentooのboot用の場所/mnt/gentoo/bootにマウントする、といった意味があります。
Gentoo Linuxではまずこの/mnt/gentoo下にstage3と呼ばれる最低限のLinux環境とportageというパッケージ情報のツリーを展開します。この最低限のLinux環境はまだ自力で(ここで使ったようなCDなしで)起動することはできません。そこで自力で起動できるように、その最低限の環境を使って、/mnt/gentoo/bootにLinuxカーネルを自分で配置し、ブートローダGRUBがそのカーネルを使って起動するように設定を行ないます。以上がGentooのインストールのおおまかな流れになります。
Gentoo handbookのchapter5(http://www.gentoo.org/doc/en/handbook/handbook-x86.xml?part=1&chap=5)では、この最低限の環境の展開までを行なっています。
proc,devのマウントとchrootとの展開について
前章のようにstage3を展開しただけではまだprocと呼ばれるシステム情報やdevと呼ばれるデバイス情報がGentooインストール用の場所/mnt/gentoo下にないためこれらも自分でマウントします。
mount -t proc proc /mnt/gentoo/proc
mount --rbind /dev /mnt/gentoo/dev
これができればlive cd環境でのDNSの設定コピー後にchrootと呼ばれるコマンドを用い、/mnt/gentooをこれからインストールするGentoo Linuxの/とします。
cp -L /etc/resolv.conf /mnt/gentoo/etc/
chroot /mnt/gentoo /bin/bash
env-update && source /etc/profile
make.confは下記の設定をお勧めします
CFLAGS="-O2 -march=native -pipe -fomit-frame-pointer"
CXXFLAGS="${CFLAGS}"
CHOST="i686-pc-linux-gnu"
MAKEOPTS="-j3"
仮想マシンの設定でCPU数を1にしている場合 MAKEOPTS=”-j2”にしてください
Gentoo Linuxではカーネルのソースもネットワーク経由で自分で取得、コンパイルします。
Gentoo handbookのchapter7(http://www.gentoo.org/doc/en/handbook/handbook-x86.xml?part=1&chap=7)で行っている
emerge gentoo-sources
コマンドではGentooの最新の安定版のカーネルソースコードを/usr/src/linuxに展開しています。
カーネルのインストールはgenkernelは使わずにマニュアルでやったほうがいいです。
カーネル設定は多岐にわたりますが細かいことは追々やるというスタンスがよいので最初にすべての設定を知ろうとする必要はありません。
ここではQuick Install GuideやHandbookで行われていない
make localyesconfig
というコマンドについても説明します。
make localyesconfigというコマンドをmake menuconfigの前に行うと、現在使っているカーネルの機能(lspciコマンドで検出される現在のデバイス情報[ネットワークカード、USBなども])を検出してそれに応じたカーネルオプションを.configというファイルに書き出してくれます。そのためGentooのドキュメントには書かれていないのですがmake menuconfig前にこのmake localyesconfigを行うことをおすすめします。
make localyesconfig後にmake menuconfigでさらにカーネルのコンパイル設定を行います。
CPUとファイルシステムの設定はmake localyesconfigではよきにはからってくれていないのでこれはmake menuconfig後各自で行います。
ほとんどの場合CPUはCore2かと思います。あとファイルシステムはext3にしたのでハンドブックの7.c. デフォルト: マニュアルコンフィギュレーションに書かれているように Ext3 journaling file system support に x をつけるようにしてください。(ファイルシステムはデフォルトでExt3にxが付いているはずですが)
またもし最近
init-early.sh used greatest stack depth: 5792 bytes left
といった端末出力で起動が止まったという方は下記のようにdevtmpfsをカーネルに含めればよいです。
Device drivers > Generic driver options>
< * > Maintain a devtmpfs filesystem to mount at /dev
< * > Automount devtmpfs at /dev , after the karnel mounted the root
最近のstage3では/devを
もしカーネルの設定に失敗し後で起動できなくなった場合は、live cdで起動後これまで同様にchrootまでの作業を行ってからカーネルをコンパイルし直します。カーネルのソースコードは/usr/src/linuxに残っているのでemerge gentoo-sourcesをし直す必要はありません。
を編集する必要はありません。
以上です。仮想マシンであればGentooでも気軽に試すことができると思います。ぜひPortageの世界へ踏み込んでみてください!!
Mac OSX でGentoo Prefix使うってことは,インストールさえすんでしまえばほぼGentoo/FreeBSDとほとんど同じことができるようになります
基本は本家のガイドラインに従って,インストールすると使えるようになります.
コマンドの部分を抽出するのも面倒なのでgistに置いたので,そのままシェルスクリプトとして動かすと小一時間ほど待てばGentooの環境が完成します.
% curl -o installgentoo https://gist.github.com/raw/664495/e8c262cba87a40983785e792c0cb340dff7e660a/installgentoo
% chmod a+x ./installgentoo
% ./installgentoo
これで~/Gentoo以下にGentooの環境がインストールされ,もともとのMacの環境とは独立した環境が出来上がります.
もし万が一Gentooの環境が不必要になれば,~/Gentooを削除すればきれいさっぱり消すことができます.
% cat ~/bin/intogentoo
export EPREFIX="$HOME/Gentoo"
export PATH="$EPREFIX/usr/bin:$EPREFIX/bin:$EPREFIX/tmp/usr/bin:$EPREFIX/tmp/bin:$PATH"
こんな感じのスクリプトを用意して,Gentoo環境にパスを通すことでGentooでインストールしたコマンドを使えるようになります.
% source ~/bin/intogentoo
実際にGentoo環境に入るためにこのスクリプトをsourceで読み込めばその直後からGentooのコマンドが呼べるようになります.上のファイルの内容を.zshrcとか.bashrcにかいておけば常にGentooの環境が使えるようになりますね
Mac用にマスクを外すぞ.例えばEmacsの最新版が欲しくなったとして,
% emerge -uDNvaj emacs-vcs
These are the packages that would be merged, in order:
Calculating dependencies... done!
!!! All ebuilds that could satisfy "app-editors/emacs-vcs" have been masked.
!!! One of the following masked packages is required to complete your request:
- app-editors/emacs-vcs-24.0.9999 (masked by: package.mask)
/Users/peccu/Gentoo/usr/portage/profiles/package.mask:
# Ulrich Mueller <ulm@gentoo.org> (10 Mar 2010)
# Emacs live ebuilds. Use at your own risk.
...略
こんな感じでemergeしたら(masked by: missing keyword)って怒られたら,マスクを外しましょう.
まずautounmaskというツールが必要なので,emergeしましょう
% emerge app-portage/autounmask
つぎにマスクを外したいパッケージ名を引数にautounmaskコマンドを実行します.
% autounmask app-editors/emacs-vcs
% autounmask app-editors/emacs-vcs-24.0.9999
バージョン番号まで必要なんですが,バージョン番号がなくても候補が出てくるので,
これでマスクが外れるので,emergeできるようになったと思います
laymanって,非標準のportage treeをあたかも標準portageのように使える仕組みみたいなもの
まず,laymanを% emerge -uaDNv laymanでインストール
${EPREFIX}/etc/layman/layman.cfg の overlays のところに
http://github.com/naota/gentoo-prefix-overlay/raw/master/repository.xml をこんな感じでに追加する
overlays : http://www.gentoo.org/proj/en/overlays/repositories.xml
http://github.com/naota/gentoo-prefix-overlay/raw/master/repository.xml
そして % layman -a naota-prefix すれば使えるはず
source /Users/peccu/Gentoo/var/lib/layman/make.conf
laymanのインストールまわりは
http://d.hatena.ne.jp/peccu/20100809/gentooghc
を参照
無線LAN・有線LAN混在環境でのネットワークへの接続というと NetworkManager が有名ですが、 Gentoo ではネットワーク設定ファイルが特殊なためうまく動作しないことがあります。(0.8.1 から Gentoo の設定を統合するパッチが当てられるらしいが、まだテスト中) 代わりに wicd をいれてみましょう。
emerge wicd
でインストールができます
/etc/init.d/wicd start
で、 wicd を開始し
することで毎回OS起動時に wicd が起動されるようになります。
wicd-cli (GUI) や wicd-curses (CUI) を使って wicd の設定をすることができます。
ここまでで wicd がネットワーク管理してくれるようになったので、 net.eth0 といった旧来のサービスはいりません。
rc-update del net.eth0
として、 eth0 (やその他)のデバイスの接続スクリプトがOS起動時に動かないようにしておきましょう。
Xなどのソフトをインストールする前に、まずカーネルの設定を見直しましょう。
X ではデフォルトでは evdev というイべントハンドルドライバを入力に使います。
Device Drivers --->
Input device support --->
<*> Event interface
最近のグラフィックドライバは KMS という仕組みを使っています。これをカーネル側で有効にしておきましょう。
Device Drivers --->
Graphics support --->
Support for frame buffer devices --->
(VGA, Intel, nVidia, ATI 全てのドライバを無効にしておきます)
(コンソールでのフレームバッファをONにしておきます。KMS で使われます)
Console display driver support --->
<*> Framebuffer Console Support
ここからは使用しているビデオカードごとの設定となります
Intel のカードを使っていれば
Device Drivers --->
Graphics support --->
/dev/agpgart (AGP Support) --->
<*> Intel 440LX/BX/GX, I8xx and E7x05 chipset support
Direct Rendering Manager (XFree86 4.1.0 and higher DRI support) --->
<*> Intel 830M, 845G, 852GM, 855GM, 865G (i915 driver)
i915 driver
[*] Enable modesetting on intel by default
nVidia のカードであれば
(DRM を有効に)
Device Drivers --->
Graphics support --->
<*> Direct Rendering Manager --->
(Nouveau はいまのところ実験的ドライバになります)
Device Drivers --->
Staging drivers --->
[ ] Exclude Staging drivers from being built
<*> Nouveau (nVidia) cards
Nouveau は nVidia 用のGPLドライバですが、うまく動かないこともあります。その場合 emerge nvidia-drivers で nVidia から提供されているドライバをいれてみてください。この時は、以下のカーネル設定が必要になります。
Processor type and features --->
[*] MTRR (Memory Type Range Register) support
Kernel Hacking --->
[ ] Lock debugging: detect incorrect freeing of live locks
[ ] Lock debugging: prove locking correctness
[ ] Lock usage staticstics
RadeonHD 2000より新しいATIのカードを使っていればまず emerge radeon-ucode してください。
(radeon-ucode firmware を使うようにする)
Device Drivers --->
Generic Driver Options --->
[*] Include in-kernel firmware blobs in kernel binary
# RadeonHD 2000, 3000, 4000 シリーズ:
(radeon/R600_rlc.bin radeon/R700_rlc.bin) External firmware blobs
# RadeonHD 5000 (Evergreen) 以降のカード:
(radeon/CEDAR_me.bin radeon/CEDAR_pfp.bin radeon/CEDAR_rlc.bin
radeon/CYPRESS_me.bin radeon/CYPRESS_pfp.bin
radeon/CYPRESS_rlc.bin
radeon/JUNIPER_me.bin radeon/JUNIPER_pfp.bin radeon/JUNIPER_rlc.bin
radeon/REDWOOD_me.bin radeon/REDWOOD_pfp.bin
radeon/REDWOOD_rlc.bin) External firmware blobs
(/lib/firmware/) Firmware blobs root directory
(Radeon の KMS を有効にする)
Device Drivers --->
Graphics support --->
<*> Direct Rendering Manager --->
<*> ATI Radeon
[*] Enable modesetting on radeon by default
上記のものより昔のカードであれば、 nVidia の項目に書いたのと同様に DRM を有効にし、 Radeon の KMS を有効にするだけです。
INPUT_DEVICES, VIDEO_CARDS の変数を設定することで、インストールする入力ドライバ・ビデオカードドライバが選択されます。
デフォルトのINPUT_DEVICES="evdev keyboard mouse" でまず困ることはないでしょう。 ノートPCなどで synaptics のタッチパッドが使えるなら synaptics もいれておきましょう。MacBookなどでは mtrack です。
VIDEO_CARDS は Intel なら intel, nVidia なら nouveau, Radeon なら radeon をいれておきます。フリーのドライバがうまく動かなければ、 nVidia なら nvidia, Radeon なら fglrx とすることで各社提供のドライバが使われます。
ここまでできたら emerge xorg-server することで X がインストールされます。
まずそもそも最近のXではうまくいけば設定が全く必要ないことすらあります。
startx
で動かないかどうか見てみましょう。
自分で xorg.conf を書くこともできますが、自動生成におまかせするのが圧倒的に楽ですし、だいたいの場合うまく動きます。
Xorg -configure
で、設定が生成されます。自動設定で書かれた設定ファイルが動くかどうか確かめましょう。
X -retro -config /root/xorg.conf.new
です。うまく動いているようであれば、このファイルを /etc/X11/xorg.conf にコピーすることで、どのユーザからも X が使えるようになるはずです。おつかれさまでした。