ハンドブック:HPPA/インストール/ベース
chroot する
任意自由選択: ミラーサーバーを選択する
ファイルの配布
ソースコードを短時間でダウンロードするために、速いミラーを選択することをお薦めします。Portageはmake.confの中のGENTOO_MIRRORS変数に指定されたミラー群を使用します。Gentooのミラー一覧から、インストール対象のマシンから物理的に最も近い一つ、もしくは複数のミラーを選択することができます(これらは高い頻度で最も高速になり得ます)。しかし、Gentooはmirrorselectという良いツールを提供しています。このツールは必要なミラーを選択するためによいユーザーインターフェースを提供できます。単純に選択可能なミラーが表示され、Spacebarを押せば、一つもしくは複数のミラーを選択できます。
root #
mirrorselect -i -o >> /mnt/gentoo/etc/portage/make.conf
Gentoo ebuild リポジトリ
ミラーを選択するために次に重要なステップは、/etc/portage/repos.conf/gentoo.confファイルでGentoo ebuildリポジトリを設定することです。このファイルはパッケージリポジトリを更新するときに必要になる同期情報を含んでいます(パッケージリポジトリは、Portageがソフトウェアパッケージをダウンロード、インストールする時に必要なすべての情報を含むebuildと関連ファイルを集めたものです)。
リポジトリの設定は単純な数ステップでできます。最初に(それが存在しなければ)repos.confディレクトリを作成します。
root #
mkdir --parents /mnt/gentoo/etc/portage/repos.conf
次に、Portageが提供するGentooリポジトリ設定ファイルを(新規作成した)repos.confディレクトリにコピーします。
root #
cp /mnt/gentoo/usr/share/portage/config/repos.conf /mnt/gentoo/etc/portage/repos.conf/gentoo.conf
エディタで覗き見するか、catコマンドを使いましょう。そのファイルは.iniフォーマットで、以下のような記述になっているはずです。
/mnt/gentoo/etc/portage/repos.conf/gentoo.conf
[DEFAULT] main-repo = gentoo [gentoo] location = /var/db/repos/gentoo sync-type = rsync sync-uri = rsync://rsync.gentoo.org/gentoo-portage auto-sync = yes sync-rsync-verify-jobs = 1 sync-rsync-verify-metamanifest = yes sync-rsync-verify-max-age = 24 sync-openpgp-key-path = /usr/share/openpgp-keys/gentoo-release.asc sync-openpgp-key-refresh-retry-count = 40 sync-openpgp-key-refresh-retry-overall-timeout = 1200 sync-openpgp-key-refresh-retry-delay-exp-base = 2 sync-openpgp-key-refresh-retry-delay-max = 60 sync-openpgp-key-refresh-retry-delay-mult = 4
上に記載されているデフォルトのsync-uri変数は、ローテーション可能なミラーの場所を決めています。これはGentooインフラストラクチャーの帯域にかかるストレスを軽減することに役立ち、また特定のミラーがオフラインになっている場合のバックアップとなります。よって、デフォルトのURIは、ローカルのプライベートPortageミラーを使わない限り、そのままにしておくことが推奨されます。
興味のある人は、PortageプロジェクトのSync articleにあるPlug-in sync APIが役に立つでしょう。
DNS 情報をコピーする
新しい環境に入る前に一つだけやるべきことが残っています。それは/etc/resolv.confに記載されているDNS情報をコピーすることです。これは新しい環境に入った後でネットワークを使うために必要です。/etc/resolv.confは、そのネットワークのネームサーバーの情報を含んでいます。
この情報をコピーするときは、cpコマンドに--dereference
オプションを付与することを推奨します。これは/etc/resolv.confがシンボリックリンクのときに、シンボリックリンクをコピーするのではなく、シンボリックリンクのリンク先の実ファイルをコピーします。そうしないと新しい環境でシンボリックリンクが存在しないファイルを指し示すでしょう(新しい環境では、元の環境でリンク先に指定していたファイルはほぼ利用できません)。
root #
cp --dereference /etc/resolv.conf /mnt/gentoo/etc/
必要なファイルシステムをマウントする
もう少しで、Linuxルートは新しい場所に変わります。新しい環境を適切に動作させるために、いくつかのファイルシステムを使えるようにしなければなりません。
使えるようにしなければならないファイルシステムは以下の通りです。
- /proc/ はLinuxカーネルから情報を引き出すための擬似ファイルシステムです(一見通常ファイルに見えますが、ファイルとしての実体はありません)。
- /sys/は/proc/同様、擬似ファイルシステムです。/proc/より構造化されており、一度は/proc/を置き換えることを目的としていました。
- /dev/は通常のファイルシステムです。一部はLinuxのデバイス管理機構(通常はudev)により管理されており、すべてのデバイスファイルを含んでいます。
/proc/は、/mnt/gentoo/proc/にマウントされるでしょう。他の2つはbindマウントされます。後者は、例えば/mnt/gentoo/sys/は事実/sys/となります(同じファイルシステムへの2番目のエントリです)。ここで/mnt/gentoo/proc/はファイルシステムの新しいエントリ(インスタンスとも言えるでしょう)となります。
root #
mount --types proc /proc /mnt/gentoo/proc
root #
mount --rbind /sys /mnt/gentoo/sys
root #
mount --make-rslave /mnt/gentoo/sys
root #
mount --rbind /dev /mnt/gentoo/dev
root #
mount --make-rslave /mnt/gentoo/dev
インストールの後半で出てくるsystemdを使う場合、
--make-rslave
が必要です。Gentoo以外のインストールメディアを使う場合、これだけでは十分ではない場合があります。いくつかのディストリビューションは/run/shm/へのシンボリックリンクとして/dev/shmを作りますが、これはchroot後に無効になってしまいます。これに対応するためには、/dev/shm/をtmpfsとして適切にマウントしておくことが必要です:
root #
test -L /dev/shm && rm /dev/shm && mkdir /dev/shm
root #
mount --types tmpfs --options nosuid,nodev,noexec shm /dev/shm
そして確実にモード1777に設定してください:
root #
chmod 1777 /dev/shm
新しい環境に入る
ようやく、すべてのパーティションが初期化され、ベース環境がインストールされました。chrootを実行して新しいインストール環境に入りましょう。これは、セッションのroot(アクセスできる最も上位レベル)を、現状のインストール環境(インストールCDもしくは他のインストールメディア)から、インストールシステム(つまり初期化されたパーティション)に変更することを意味しています。これが"change root"もしくは"chroot"の意味です。
chrootは次の3ステップで実行されます。
- chrootコマンドによって、最上位ディレクトリを(インストールメディアの)/から(パーティションをマウントしている)/mnt/gentoo/に変更する。
- /etc/profileのいくつかの設定をsourceコマンドでリロードする。
- chroot環境であることを忘れないようするために、シェルのプロンプトを変更する。
root #
chroot /mnt/gentoo /bin/bash
root #
source /etc/profile
root #
export PS1="(chroot) ${PS1}"
この時から、すべての操作は新しいGentoo Linux環境で実行されます。もちろん、まだゴールには程遠いです。その証拠にまだいくつもの章が残っていますよね!
これ以降の時点で Gentoo インストールを中断しても、インストール作業をこのステップから「再開」することができるようになっているはずです。ディスクをまたパーティショニングする必要はありません!ただ単にルートパーティションをマウントして、上のステップを DNS 情報をコピーするところから実行すれば、作業中の環境に再び入ります。ブートローダの問題を解決するのにもこれが役に立ちます。さらなる情報は chroot の記事にあります。
ブートパーティションをマウントする
新環境に入った今、ブートパーティションをマウントする必要があります。このことはカーネルをコンパイルするときとブートローダをインストールするときに重要な意味を持ちます。
root #
mount /dev/sda2 /boot
Portageを設定する
Web から ebuild リポジトリのスナップショットをインストールする
次に基本のebuildリポジトリのスナップショットをインストールします。このスナップショットには、インストール可能なパッケージの情報、システム管理者が選択するプロファイルの一覧、パッケージやプロファイルごとのお知らせなどをPortageに伝えるファイルが含まれます。
ここで紹介するemerge-webrsyncは、HTTP/FTPプロトコル以外でのダウンロードがファイアウォールで制限されるような環境や、ネットワーク帯域を節約したい場合にお薦めです。これらの制約がなければ、この手順は省いて次のセクションに進んでも構いません。
次のコマンドで、毎日更新される最新のスナップショットをGentooのミラーサイトから取得し、インストールします:
root #
emerge-webrsync
この作業中、 emerge-webrsync が「/var/db/repos/gentoo/がない」というメッセージを出すかもしれません。これは想定内で、心配することはありません。このディレクトリは自動的に作成されます。
この時点で、Portageはいくつかのアップデートが推奨されていることを通知するかもしれません。これは、stageファイルでインストールされたシステム関連のパッケージについて、より新しいバージョンが利用可能であることを示しています。今回新しいリポジトリスナップショットがインストールされたことで、Portageがそれを認識したのです。このメッセージは今のところは無視して、Gentooのインストールが完了してから対応しても問題ありません。
任意自由選択: Gentoo ebuildリポジトリを更新する
Gentoo ebuildリポジトリを最新版にアップデートできます。先のemerge-webrsyncコマンドはほぼ最新の(通常は24時間以内に作成される)スナップショットをインストールするため、このステップは本当に任意です。
最新(一時間以内)のパッケージ更新があるかもしれません。その更新を取り込むためにemerge --syncを実行しましょう。このコマンドはGentoo ebuildリポジトリ(先程emerge-webrsyncコマンドで取得したもの)をアップデートするためにrsyncプロトコルを使用します。
root #
emerge --sync
アップデートの時間を短縮するために、特定のフレームバッファもしくはシリアルコンソール等の遅いターミナルでは、--quiet
オプションを使うことをお薦めします。
root #
emerge --sync --quiet
ニュースを読む
Gentoo ebuildリポジトリの更新時、Portage が次のようなメッセージを伴う警告を出すことがあります。
* IMPORTANT: 2 news items need reading for repository 'gentoo'.
* Use eselect news to read news items.
ニュース項目は、rsyncしたツリーを通じて、ユーザーに重要なメッセージを通知するためのコミュニケーション手段です。これらニュース項目を管理するためにeselect newsを使用します。eselectはGentooのアプリケーションで、システムの変更や操作に対する共通の管理インターフェースを提供します。この場合、eselectはnews
モジュールを使うことを指示されます。
news
モジュールに対しては、主に3つの操作が使用されます。
list
を指定すると、現在有効なニュースアイテムの概要が表示されます。read
を指定すると、そのニュースアイテムを読むことができます。purge
を指定すると、一度購読したニュースを削除することができます。これにより、それらのニュースを二度と目にすることはないでしょう。
root #
eselect news list
root #
eselect news read
ニュースリーダーに関するほとんどの情報はマニュアルページを通じて得ることができます。
root #
man news.eselect
適切なプロファイルを選ぶ
プロファイルはあらゆるGentooシステムの基礎を構成します。プロファイルはUSE、CFLAGS等の重要な変数の初期値を決めるだけではありません。プロファイルは、パッケージのバージョンを決まった範囲に固定する役目を持っています。プロファイルはGentooのPortage開発者によって完全にメンテナンスされています。
eselectを使えば、現状のプロファイルがわかります。profile
モジュールを指定しましょう。
root #
eselect profile list
Available profile symlink targets: [1] default/linux/hppa/ * [2] default/linux/hppa//desktop [3] default/linux/hppa//desktop/gnome [4] default/linux/hppa//desktop/kde
コマンドの出力は一例で、常に更新されています。
上の例の通り、いくつかのアーキテクチャではデスクトップ向けのサブプロファイルが見られるでしょう。
プロファイルのアップグレードは軽々と行われるものではありません。初期プロファイルを選択する時、確実にstage3がはじめに使用していたものと同じバージョン(例えば17.0)を使用してください。新しいプロファイルのバージョンは、移行方法を含むニュース項目を通して発表されます。新しいプロファイルに移行する前に、確実にそのニュース項目を読み、説明に従ってください。
hppaアーキテクチャで利用可能なプロファイルを確認後、別のプロファイルを選択できます。
root #
eselect profile set 2
developer
サブプロファイルはGentoo Linux開発向けの固有のプロファイルであり、通常のユーザーが使用するものではありません。@worldの更新
この時点で、@world setをアップデートするとよいでしょう。それによりベースシステムが構築されます。
このステップは必須で、これによってシステムはアップデートや、stage3が構築された時やプロファイルの選択以降のUSEフラグの変更を適用できます。
root #
emerge --ask --verbose --update --deep --newuse @world
フルスケールのデスクトップ環境を選択した場合、このプロセスはインストール時間を格段に長くしてしまうかもしれません。時間に追われている人は次の経験則が成り立つでしょう。「名前が短く、特定のシステムを示さないプロファイルの@world setを選択する」、「もっとも一般的な@worldセットは、より少ないパッケージのアップデートですむ」。別の言い方をすると、
default/linux/amd64/13.0
を選択すると、パッケージのアップデートは少なくてすみます。default/linux/amd64/13.0/desktop/gnome/systemd
を選択すると多くのパッケージがインストールされます。なぜなら、initシステムがOpenRCからsystemdに変更され、GNOMEのデスクトップ環境がインストールされるためです。
USE変数を設定する
USEは、Gentooがユーザに提供する最もパワフルな変数の一つです。多くのプログラムに対して、決められた追加機能を含めたり、もしくは含めずにコンパイルすることが可能です。例えば、いくつかのプログラムはGTK+サポートもしくはQtサポートを有効にしてコンパイルできます。別のプログラムにはSSLサポートを含めたり、もしくは含めずにコンパイルすることが可能です。いくつかのプログラムはX11サポート(Xサーバー)の代わりに、フレームバッファサポート(svgalib)と共にコンパイルできます。
多くのディストリビューションでは、各種のサポートを最大限含むようにコンパイルします。これはプログラムサイズと起動時間を増大させます。多くの依存関係を発生させることは言うまでもありません。Gentooでは、ユーザーはパッケージをコンパイルする時のオプションを定義できます。ここでUSEが登場します。
USE変数を使って、ユーザーはコンパイルオプションにマップされるキーワードを指定します。例えば、ssl
キーワードはSSLをサポート可能なプログラムでSSLを有効にしてコンパイルします。-X
キーワードはXサーバーのサポートを含まない(最初のマイナス記号で指定)ようにコンパイルします。gnome gtk -kde -qt4 -qt5
は、GNOME(とGTK+)サポートを有効にして、KDE(とQt)サポートを無効にします。これにより、(もし、アーキテクチャがGNOMEをサポートしていれば)システムはGNOME向けに最大限調整されます。
デフォルトのUSEの設定は、システムによって使用されるGentooプロファイルのmake.defaultsファイルに記述されています。Gentooはプロファイルをサポートするために、(複雑な)継承システムをサポートします。これにより今の段階でUSEの詳細に立ち入る必要はありません。現在有効なUSE設定を知るためのもっとも簡単な方法は、emerge --infoを実行してUSEで始まる行を抜き出すことです。
root #
emerge --info | grep ^USE
USE="X acl alsa amd64 berkdb bindist bzip2 cli cracklib crypt cxx dri ..."
上記の例は出力のほとんどを省略しています。実際には、USE 変数のリストはずっとずっと長いものです。
使用可能なUSEフラグの完全な記述は、/var/db/repos/gentoo/profiles/use.descにあります。
root #
less /var/db/repos/gentoo/profiles/use.desc
lessコマンドでは、↑キーと↓キーを使ってスクロールすることができます。qを押すと終了します。
例として、DVD、ALSA、CD書き込みをサポートしたKDEベースのUSE設定を示します。
root #
nano -w /etc/portage/make.conf
/etc/portage/make.conf
DVD、ALSA、CD書き込みをサポートしたKDEベースのUSE設定USE="-gtk -gnome qt4 qt5 kde dvd alsa cdr"
/etc/portage/make.confでUSEが定義されたとき、それはデフォルトのリストに追加されます(-で始まるサポートは削除されます)。デフォルトのUSE設定を無視したい、もしくはUSE設定を自身で完全に制御したいときは、make.confのUSEを-*
で始めます。
/etc/portage/make.conf
デフォルトのUSEフラグを無視するUSE="-* X acl alsa"
例示したように
-*
を指定することは可能ではあるものの、推奨されません。ebuildによっては、競合やエラーが起きないようにデフォルトのUSEフラグが慎重に調整されていることがあるためです。任意自由選択: ACCEPT_LICENSE変数の設定
すべてのGentooのパッケージは、パッケージが該当するライセンスと結び付けられています。これによってユーザはソフトウェアをインストールするに先立って、特定のライセンスやライセンスのグループを指定することでソフトウェアを選択することができます。
ebuildのLICENSE変数はGentooの開発者やユーザにとってのガイドラインでしかありません。これは法的声明ではなく、これが現実を反映する保証はありません。したがってLICENSE変数を信用するのではなく、パッケージそのものを、あなたが使用するすべてのファイルを含めて徹底的にチェックしてください。
PortageはACCEPT_LICENSE変数を使って、以前に承諾したライセンスに関してユーザに問い合わせることなく、許可するパッケージを決定します。なお、例外はパッケージ毎に/etc/portage/package.licenseに記述することができます。
Gentooリポジトリによって定義され、Gentooライセンスプロジェクトによって管理されているライセンスグループは以下の通りです:
グループ名 | 説明 |
---|---|
@GPL-COMPATIBLE | フリーソフトウェア財団[a_license 1]によって承認されたGPL compatible license群 |
@FSF-APPROVED | FSF(訳注:フリーソフトウェア財団)によって承認されたフリーソフトウェアライセンス群(@GPL-COMPATIBLEを含みます) |
@OSI-APPROVED | Open Source Initiative [a_license 2]によって承認されたライセンス群 |
@MISC-FREE | おそらくフリーソフトウェアであるその他のライセンス群。言い換えると、フリーソフトウェアの定義[a_license 3]に従っているものの、FSFやOSIによって承認されていないライセンス |
@FREE-SOFTWARE | 自由に利用、共有、変更、および変更の共有ができるすべてのライセンスのメタセット。@FSF-APPROVED、@OSI-APPROVEDそして@MISC-FREEを組み合わせたもの |
@FSF-APPROVED-OTHER | FSFが承認した「無料のドキュメント」および「ソフトウェアとドキュメント以外の実用的な作品」(フォントを含む) |
@MISC-FREE-DOCS | free definition[a_license 4] に従っているが、@FSF-APPROVED-OTHERの一覧には載っていない無料のドキュメントおよび他の作品 |
@FREE-DOCUMENTS | @FSF-APPROVED-OTHERと@MISC-FREE-DOCSを組み合わせたもの |
@FREE | @FREE-SOFTWAREと@FREE-DOCUMENTSを組み合わせたもの |
@BINARY-REDISTRIBUTABLE | 少なくともソフトウェアのバイナリ形式での自由な再配布を認めているライセンス群。@FREEを含みます |
@EULA | あなたの権利を取り去ろうとするライセンス契約。これらは"all-rights-reserved"や明示的な承諾を必要とするものよりも拘束的です. |
Gentooのプロファイルには予め値が定義されています、例えば以下の通りです:
user $
portageq envvar ACCEPT_LICENSE
@FREE
これは/etc/portage/make.confを変更することで、システム全体で変えることができます。既定値は、フリーソフトウェア財団、Open Source Initiativeあるいはフリーソフトウェアの定義に従っていると明示的に承認されたライセンスのみを受け入れます:
/etc/portage/make.conf
ACCEPT_LICENSE変数を変更するACCEPT_LICENSE="-* @FREE"
もし必要ならば、パッケージ毎に値を上書きすることも可能です。例:
/etc/portage/package.license/kernel
ライセンス承諾の例app-arch/unrar unRAR sys-kernel/linux-firmware @BINARY-REDISTRIBUTABLE sys-firmware/intel-microcode intel-ucode
タイムゾーン
タイムゾーンを選択します。/usr/share/zoneinfo/から利用可能なタイムゾーンを探してください。そして、それを/etc/timezoneファイルに記述しましょう。
root #
ls /usr/share/zoneinfo
選択したタイムゾーンがEurope/Brusselsの場合は以下となります。
root #
echo "Europe/Brussels" > /etc/timezone
/usr/share/zoneinfo/Etc/GMT*のタイムゾーンは、その名前が期待されるゾーンを示していないため、避けましょう。たとえば、GMT-8は実際にはGMT+8となります。
次に、sys-libs/timezone-dataパッケージを再設定しましょう。これは/etc/timezoneを元に、/etc/localtimeをアップデートします。/etc/localtimeは、システムのCライブラリが、自身が属するタイムゾーンを知るために使われます。
root #
emerge --config sys-libs/timezone-data
ロケールの設定
Locale generation
ほとんどのユーザは、一つもしくは二つのロケールを必要とします。
ロケールはシステムで使用する言語を指定するだけではなく、単語のソート順や日付、時間等のルールにも使用されます。
システムがサポートすべきロケールは、/etc/locale.genに記述する必要があります。
root #
nano -w /etc/locale.gen
次のロケールの例では、英語(United States)とドイツ語(Germany)を(UTF-8のような)文字コードと共に指定しています。
/etc/locale.gen
USとDEロケールを適切な文字コードと共に有効にするen_US ISO-8859-1 en_US.UTF-8 UTF-8 de_DE ISO-8859-1 de_DE.UTF-8 UTF-8
UTF-8 のロケールを少なくとも一つは有効にすることを強く勧めます。おそらくいくつかのアプリケーションはUTF-8を必要とするためです。
次にlocale-genを実行します。これにより、/etc/locale.genファイルに記載されているすべてのロケールを生成します。
root #
locale-gen
現在使用可能なすべてのロケールを確認するためには、locale -aを実行してください。
Locale selection
この時点で、システム全体で有効になるロケールを設定できます。eselectをlocale
モジュールと共に使いましょう。
eselect locale listを実行すると、利用可能なターゲットが表示されます。
root #
eselect locale list
Available targets for the LANG variable: [1] C [2] POSIX [3] en_US [4] en_US.iso88591 [5] en_US.utf8 [6] de_DE [7] de_DE.iso88591 [8] de_DE.iso885915 [9] de_DE.utf8 [ ] (free form)
eselect locale set VALUE を実行することで、適切なロケールを設定することができます。
root #
eselect locale set 9
手動で設定する場合は、/etc/env.d/02localeを編集してください。
/etc/env.d/02locale
システムのロケールをマニュアル設定するLANG="de_DE.UTF-8" LC_COLLATE="C"
ロケールが設定されていることを再確認してください。そうしないと、後でカーネルをビルドしたり、他のソフトをインストールした時にワーニングやエラーが出ます。
ここで、環境をリロードします。
root #
env-update && source /etc/profile && export PS1="(chroot) ${PS1}"
私たちは、このユーザーガイドを補完するための完全なドキュメントであるローカライゼーションガイドを作成しました。他の興味深い記事は、UTF-8を有効にするための情報であるガイドUTF-8です。