ハンドブック:SPARC/インストール/システム
ファイルシステムの情報
ファイルシステムラベルと UUID
MBR(BIOS)とGPTの両方が、ファイルシステムラベルとファイルシステムUUIDをサポートしています。これらの属性は、ブロックデバイスを探しマウントするために使用されるmountコマンドの代用として、/etc/fstab内で定義することができます。ファイルシステムラベルやファイルシステムUUIDはそれぞれLABELとUUID接頭辞で識別され、blkidコマンドで確認することができます:
root #
blkid
もし、パーティション内のファイルシステムが消滅すると、ファイルシステムのラベルとUUIDの値は後に変更されるか除去されます。
一意性のため、MBRスタイルのパーティションテーブルを使用している読者は、/etc/fstab内で、マウント可能なボリュームを定義するのにラベルよりもUUIDを用いることを推奨します。
LVM ボリューム上に置かれたファイルシステムの UUID と、LVM ボリュームの LVM スナップショットの UUID は同じなので、LVM ボリュームをマウントするために UUID を使用するのは避けるべきです。
パーティションラベルと UUID
GPT ディスクラベルへのサポートを持つシステムでは、/etc/fstab でパーティションを定義するための '堅牢' な追加の選択肢が提供されます。パーティション自体にどのファイルシステムが使用されているかにかかわらず、ブロックデバイスの個々のパーティションを識別するのにパーティションラベルやパーティションの UUID を使うことができます。パーティションラベルとパーティションの UUID は PARTLABEL、PARTUUID 接頭辞で識別され、これらは端末で blkid コマンドを実行することで簡単に確認できます。
Discoverable Partition Specification の UUID を使用する amd64 EFI システムでの出力は、次のようになるでしょう:
root #
blkid
/dev/sr0: BLOCK_SIZE="2048" UUID="2023-08-28-03-54-40-00" LABEL="ISOIMAGE" TYPE="iso9660" PTTYPE="PMBR" /dev/loop0: TYPE="squashfs" /dev/sda2: PARTUUID="0657fd6d-a4ab-43c4-84e5-0933c84b4f4f" /dev/sda3: PARTUUID="1cdf763a-5b4c-4dbf-99db-a056c504e8b2" /dev/sda1: PARTUUID="c12a7328-f81f-11d2-ba4b-00a0c93ec93b"
パーティションラベルも絶対にとは言えないのに対し、fstab で UUID を使ったパーティション指定を使えば、たとえ将来ファイルシステムが変更されたり、再度書き込まれたりしても、ブートローダーがボリューム検出に迷うことはありません。従来のブロックデバイスファイル (/dev/sd*N) を使った指定は、SATA ブロックデバイスの追加または削除が日常的に行われるシステムでは危険です。
ブロックデバイスのファイル名は様々な要素 (ディスクがどんな順番でいくつ接続されているかを含む) によって変化します。またファイル名の順番についても、初期起動プロセス中にカーネルがどのデバイスを最初に検知するかによって変化します。つまり、システム管理者がディスクの順序を頻繁にいじったりしない限りは、デフォルトのブロックデバイスファイルを使うのがシンプルで素直な方法です。
fstab について
Linuxでは、システムで使用するすべてのパーティションは/etc/fstabに記載されていなければなりません。このファイルは、これらパーティションのマウントポイント(これらはファイルシステムに存在しなければなりません)、どのようにマウントされるべきか、また特別なオプション(自動マウントかそうでないか、ユーザー権限でマウントできるかどうか等)を定義します。
fstab ファイルを作成する
init システムに systemd を使用しており、パーティション UUID が Preparing the disks で説明されている Discoverable Partition Specification に適合していて、かつ UEFI を使用しているシステムでは、systemd が仕様に従ってパーティションを自動的にマウントするので、fstab の作成を省略できます。
/etc/fstabファイルは表のように記述します。それぞれの行はホワイトスペース(一つまたは複数のスペース、タブ、もしくはその 2 種の組み合わせ)で区切られる 6 つのフィールドを持ちます。それぞれのフィールドの意味は以下の通りです。
- 最初のフィールドはマウントされるブロックスペシャルデバイスやリモートファイルシステムを示します。デバイスファイルへのパスや、ファイルシステムラベルやファイルシステムUUID,そしてパーティションラベルやパーティションUUIDを含む、いくつかの種類のデバイスIDがブロックスペシャルデバイスノードとして使用可能です。
- 2番目のフィールドはそのパーティションがマウントされるマウントポイントを示します。
- 3番目のフィールドはそのパーティションのファイルシステムの種類を示します。
- 4番目のフィールドは、そのパーティションをマウントするmountコマンドが使用するオプションを示します。すべてのファイルシステムは、固有のマウントオプションを持っています。システム管理者はマウントコマンドのmanページ(man mount)を参照することですべてのオプションを確認できます。複数のマウントオプションを記述する場合はカンマで区切ります。
- 5番目のフィールドはそのパーティションをdumpでダンプするかどうかを示しています。このフィールドは通常
0
(ゼロ)のままにしておいてかまいません。 - 6番目のフィールドは、直前のシャットダウンが正常に完了しなかったときに、fsckが各パーティションをどの順番でチェックするか示しています。ルートファイルシステムは
1
であるべきです。残りのファイルシステムは2
(ファイルシステムチェックが不要であれば0
)に設定しましょう。
Gentoo stage ファイルに含まれるデフォルトの /etc/fstab ファイルは有効な fstab ではなく、関連する値を入力するために使用できるテンプレートです。
root #
nano /etc/fstab
DOS/レガシー BIOS システム
実際のパーティション構成にあわせたルールや、CD-ROMドライブのためのルールを追加してください。他にパーティションやドライブがあれば、それも忘れずに追加しておきましょう。
以下は、より詳細な/etc/fstabの例です。
# 整形上の差異や、「ディスクの準備」ステップで作成する追加のパーティションについては、適宜修正してください
/boot defaults 0 2
/dev/sda2 none swap sw 0 0
/dev/sda1 / xfs defaults,noatime 0 1
/dev/cdrom /mnt/cdrom auto noauto,user 0 0
UEFI システム
以下は UEFI ファームウェアを介してブートするシステムでの /etc/fstab ファイルの例です:
# 整形上の差異や、「ディスクの準備」ステップで作成する追加のパーティションについては、適宜修正してください
0 2
/dev/sda2 none sw 0 0
/dev/sda1 / xfs defaults,noatime 0 1
/dev/cdrom /mnt/cdrom auto noauto,user 0 0
DPS UEFI PARTUUID
以下は、UEFI ファームウェア向けに GPT ディスクラベルと Discoverable Partition Specification (DPS) の UUID を使用してフォーマットされたディスクのための、/etc/fstab ファイルの例です:
# 整形上の差異や、「ディスクの準備」ステップで作成する追加のパーティションについては、適宜修正してください。
# この例は Discoverable Partition Specification (DSP) UUID が設定された GPT ディスクラベルを示しています:
PARTUUID= 0 2
PARTUUID= none sw 0 0
PARTUUID= / xfs defaults,noatime 0 1
3番目のフィールドでauto
を使う場合、mountコマンドはそのパーティションのファイルシステムが何かを推測します。これは様々なファイルシステムを使う可能性があるリムーバルメディアで推奨されます。4番目のuser
オプションで、ルート権限を持たないユーザーがCDをマウントできるようになります。
パフォーマンスを改善するために、多くのユーザーはマウントオプションとして noatime
オプションを付け加えたいと考えるでしょう。アクセス時間が記録されないので、結果としてより高速なシステムになります (一般的にこの記録はほとんど必要ありません)。ソリッドステートドライブ (SSD) を持つシステムでもこれはおすすめです。代わりに lazytime
もまた考慮に値するかもしれません。
パフォーマンスを低下させるため、/etc/fstab 内で
discard
マウントオプションを定義させるのは推奨されません。cron または timer (systemd) のようなジョブスケジューラを使用して、定期的にブロックの破棄をスケジュールするほうが、一般的により良い方法です。さらなる情報については、Periodic fstrim jobs を確認してください。再度/etc/fstabを確認して、保存、エディタを終了します。
ネットワーク接続のための情報
重要な注意点として、このセクションは読者がシステムをローカルエリアネットワークに手っ取り早く参加させることができるように、提供しています。
OpenRC を動かしているシステムについては、ネットワーク設定のためのより詳細なリファレンスが、ハンドブックの終わりのほうの高度なネットワーク設定のセクションでカバーされています。より詳細なネットワーク要件のあるシステムは一度そちらへ飛んで、それからここに戻ってきて残りのインストール作業を続ける必要があるかもしれません。
より詳細な systemd のネットワーク設定については、systemd の記事のネットワークの箇所を確認してください。
ホスト名
さて、PCには名前をつけなければいけません。至極簡単に思えますが多くのシステム管理者はホスト名として適切な名前を付けるのに苦労しています。事を早く進めるために、選んだ名前は後で変更できることを知っておいてください。判りやすいように、ここでは単にマシンをtuxと呼ぶことにします。
ホスト名を設定する (OpenRC または systemd)
root #
echo tux > /etc/hostname
systemd
現在実行中の systemd についてシステムのホスト名を設定するには、hostnamectl ユーティリティを使うことができます。しかしながらインストールプロセス中は、systemd-firstboot コマンドを代わりに使う必要があります (後でハンドブックの該当箇所を参照してください)。
ホスト名を "tux" に設定するためには、次のようにします:
root #
hostnamectl hostname tux
hostnamectl --help または man 1 hostnamectl を実行することで、ヘルプを確認してください。
ネットワーク
ネットワークインターフェースを構成するために利用できる選択肢は多く存在します。この節ではそのうち一部の方法だけをカバーします。必要な構成に最適と思われるものをひとつ選んでください。
dhcpcd での DHCP (どんな init システムでも)
多くの LAN ネットワークは DHCP サーバは運用しています。その場合は、dhcpcd プログラムを使用して IP アドレスを取得するのがおすすめです。
インストールするには:
root #
emerge --ask net-misc/dhcpcd
OpenRC システム上で、サービスを有効化して開始するには:
root #
rc-update add dhcpcd default
root #
rc-service dhcpcd start
systemd システム上で、サービスを有効化するには:
root #
systemctl enable dhcpcd
これらのステップが完了したら、次にシステムが起動したときに、dhcpcd が DHCP サーバから IP アドレスを取得するはずです。さらなる詳細については Dhcpcd の記事を確認してください。
netifrc (OpenRC)
ネットワークを設定する
Gentoo Linux をインストールしている間、ネットワークが使えるように設定されています。しかし、それは live 環境のためのネットワーク設定であり、インストールされた環境のためのものではありません。では、インストールされた Gentoo Linux のネットワークを設定しましょう。
bonding、ブリッジ、802.1Q VLAN、無線ネットワークに間するより詳細な情報は、追加のネットワーク設定セクションを参照してください。
すべてのネットワーク設定は/etc/conf.d/netにあります。直接的ではありますが、おそらく直感で理解できる構文ではありません。しかし恐れることはありません。すべては以下で説明されます。/usr/share/doc/netifrc-*/net.example.bz2に、多くの異なる設定に対して完全にコメントが付与された例が記載されています。
最初に net-misc/netifrc をインストールします。
root #
emerge --ask --noreplace net-misc/netifrc
DHCPはデフォルトで使用されます。DHCPを動かすために、DHCPクライアントをインストールしなければなりません。これは Installing Necessary System Toolsで説明されます。
もし、特別なDHCPのオプションを設定している、もしくはDHCPをまったく使いたくない等の理由で、ネットワーク接続をしなければならないときは、/etc/conf.d/netを編集します。
root #
nano /etc/conf.d/net
IPアドレスとルーティングを設定するのはconfig_eth0とroutes_eth0です。
ここではネットワークインターフェイスがeth0であると仮定していますが、これはシステムによって違います。もし、最近のインストールメディアから起動しているのであれば、インストール時と同じインターフェイス名が使われると思ってよいでしょう。より詳しい情報はネットワークインターフェースの命名セクションを参照してください。
config_eth0="192.168.0.2 netmask 255.255.255.0 brd 192.168.0.255"
routes_eth0="default via 192.168.0.1"
DHCPを使う場合は、config_eth0を設定してください。
config_eth0="dhcp"
さらなる設定オプションのリストについては、/usr/share/doc/netifrc-*/net.example.bz2を参照してください。もし特定のDHCPを設定しなければならないときは、DHCPクライアントのmanページも必ず読みましょう。
もし、システムが複数のネットワークインターフェースを持っている場合は、config_eth1、config_eth2、…に対して上記の手順を繰り返してください。
設定を保存し、エディタを終了しましょう。
起動時に自動でネットワーク接続する
ブート時にネットワークインターフェースを有効にする場合は、デフォルトランレベルにそれらを追加する必要があります。
root #
cd /etc/init.d
root #
ln -s net.lo net.eth0
root #
rc-update add net.eth0 default
もし、複数のネットワークインターフェースがある場合は、net.eth0と同じ方法で、適切なnet.*ファイルを作成しなければなりません。
もし、ブート後、ネットワークインターフェース名(現在、このドキュメントではeth0
と記述)が間違っていた場合、次の手順で修正してください。
- 正しいインターフェース名で/etc/conf.d/netファイルを更新します。(例えば
eth0
をenp3s0
またはenp5s0
と修正) - 新しいシンボリックリンクを作成。(例えば/etc/init.d/net.enp3s0)
- 古いシンボリックリンクを消去。(rm /etc/init.d/net.eth0)
- 新しいスクリプトをデフォルトランレベルに追加。
- rc-update del net.eth0 defaultで古いスクリプトを消去。
hosts ファイル
次の重要なステップは、この新しいシステムのネットワーク環境内の他のホストについて、システムに教えることかもしれません。ネットワークホスト名は /etc/hosts で定義することができます。ホスト名をここに追加することで、ネームサーバでは解決できないホストについて、ホスト名から IP アドレスを解決できるようになります。
root #
nano /etc/hosts
# 以下は本システムの定義です。必ず設定されなければなりません。
127.0.0.1 tux.homenetwork tux localhost
# ネットワーク上にあるその他のホストの定義です。任意設定です。
192.168.0.5 jenny.homenetwork jenny
192.168.0.6 benny.homenetwork benny
設定をセーブし、エディタを終了しましょう。
システム情報
root パスワード
passwdコマンドでルートのパスワードを設定します。
root #
passwd
後で、日常の作業のための一般ユーザーアカウントを作成します。
init と boot 設定
OpenRC
Gentoo で OpenRC を使用しているときは、OpenRC はシステムのサービス、スタートアップ、シャットダウンの設定に /etc/rc.conf を使います。/etc/rc.conf を開いて、ファイル中のすべてのコメントを楽しみましょう。設定をレビューして、必要な箇所を変更してください。
root #
nano /etc/rc.conf
次に、キーボードを設定するために/etc/conf.d/keymapsを開いて、正しいキーボードを選択、設定します。
root #
nano /etc/conf.d/keymaps
keymap変数に特に注意してください。もしキーマップを間違えた場合、キーボードを叩くたびに、奇妙な現象が起こるでしょう。
最後に、クロック設定をするために/etc/conf.d/hwclockを編集します。個々の好みに合わせて設定できます。
root #
nano /etc/conf.d/hwclock
もし、ハードウェアクロックがUTCになっていない場合、このファイルにclock="local"
を記述しなければなりません。そうでない場合、クロックスキューが発生するでしょう。
systemd
まず、システムが正しく起動できるようにするために、systemd-machine-id-setup と systemd-firstboot を順に実行することをおすすめします。これは、新しい systemd 環境への最初のブートのために、システムのさまざまなコンポーネントが正しく設定されるように準備します。次のオプションを渡すことで、ロケール、タイムゾーン、ホスト名、root パスワード、そして root シェル値を設定するための、ユーザへのプロンプトを含めます。加えて、システムにランダムなマシン ID を割り当てます:
root #
systemd-machine-id-setup
root #
systemd-firstboot --prompt
次に、インストールされているすべてのユニットファイルをプリセットのポリシー値にリセットするため、ユーザは systemctl を実行すべきです:
root #
systemctl preset-all --preset-mode=enable-only
完全にプリセットにするには次で行えますが、これまでのプロセスで既に設定したすべてのサービスもリセットするかもしれません:
root #
systemctl preset-all
live 環境からインストール先の最初のブートへのシームレスな移行を確実に行うために、これらの 2 ステップは有用でしょう。