えんでぃの技術ブログ

えんでぃの技術ブログ

ネットワークエンジニアの視点で、IT系のお役立ち情報を提供する技術ブログです。

Fedora 32 Server のインストール手順|NUC10構築(3)

fedora-logo

前の記事

※同じシリーズにはNUC、Linuxタグをつけてあります。

endy-tech.hatenablog.jp

お伝えしたいこと

パソコン用途に着目した Fedora 32 Server のインストール手順を記載します。

この記事を書いた当時はFedora 32が最新版でしたが、現時点で試すなら最新版のFedoraをインストールすることをおすすめします。
最新版のFedoraの画面構成は若干異なりますが、インストール時に指定する各種パラメータの決め方は十分参考になると思います。

特に重要なポイント

Fedora32 のインストール手順はCentOSRHELと同様です。

今回紹介する手順も基本に忠実ではありますが、パソコン用途という意味では以下3つのポイントが特に重要だと考えています。
こちらだけでもぜひ見ていただければと思います。

  • LVMを使う
    • LVMを使うことでパーティション縮小や拡張が容易になります
    • 性能劣化も特にないので、理由がなければLVMを使うのがオススメです
    • 詳細は、後半の (参考) LVMについて を参照してください
  • ファイルシステムext4を使う
  • /boot, /, /home でファイルシステムを分けた
    • パーティションを分ける理由として、特に重要なのは以下と考えています
      • 障害ドメインを限定する (万が一 /home の空き容量が枯渇しても、 / の容量が空いていればrootユーザでログインしてメンテナンスできるはず)
      • システム領域とデータ領域で分けておくと、空き容量の確認や管理がしやすくなる (例えば、 df -h の出力が見やすい)
      • (重要度は落ちるが) fsck や dump の処理単位を分けることで効率が向上する
    • サーバ用途ではシステム領域の / と ログ出力などによって容量が溢れやすい /var でファイルシステムを分けることがあります
    • 同様の考え方で、PC用途では /home の容量溢れが懸念されるためファイルシステムを分けています

Fedora 32 Server インストール手順の詳細

ISO起動直後

  • Install Fedora 32 から先へ進みます

1

インストール中の言語設定

  • English (United States) を選択します
  • 後に Language Support という設定画面が出てきますが、ここで指定した言語がデフォルトとしてセットされて外せなくなる罠が潜んでいます
  • ここでの日本語選択はオススメしません...

2

メイン画面

こちらの画面から順不同で色々設定していきます。
順不同とは書いたものの、 キーボードレイアウトとネットワーク設定は先に対応することを推奨 します。

  • キーボードレイアウト:パスワード文字列で "@" を打ったつもりが、実は英字キー配列だったので別の文字列になっており、後からログインできないという悲劇が起こりうる
  • ネットワーク設定:NTPサーバなどネットワーク接続が関連する設定を後に行う場合、事前にネットワーク接続性があった方が都合が良い

以降の手順では各メニューに入った後の詳細な設定方法を紹介していきます。

3

キーボードレイアウト (Keyboard)

ここではコンソールログイン時のキーボードレイアウトを変更します。
英語キーボード (USキーボード) のままで良い方は、何も変更する必要はありません。

4

日本語キーボード (JISキーボード) に変更したい方は、以下のように操作してください。

  • English (US) を選択した状態で のアイコンを選択
  • Japanese を選択

最終的には下記画像のような状態になります。

5

ネットワーク設定 (Network & Hostname)

まずはホスト名を設定します。

  • 左下のホスト名を変更します
  • apply ボタンを選択して確定します。右下のホスト名が変わることを確認して下さい
  • 本来であればFQDNを記載するのでしょうが、家のパソコン用途では不要でしょうし、個人的には pcfedora-pc で良いと思っています
  • 後からでも hostnamectl set-hostname xxx コマンドで変更できます

次に各NIC (ネットワークインターフェース) を変更します。
ここでは有線の設定 (eno1など) を例にしています。
NUCユーザーの方は無線インターフェース (wlp0s20f3など) も出てくると思いますが、その場合は有線と無線でどちらかメインで使う方のみ以下のように設定してください。

  • 該当のインターフェース (Ethernet (eno1) など) を左上のメニューから選択し、右下の Configure ボタンを選択します

6

General タブは特に変更しません。

  • RHEL7系では Connect automatically with priority のチェックがデフォルトで外れていたのでチェックを入れていましたが、今回ははじめからチェックされていました
  • この項目はNetwork Manager の autoconnect に相当します
  • チェックが入っていると、Network Manager 起動時に自動的にNICを起動してくれます
  • チェックが外れていると、毎回手動でNICを起動する必要が出てきます (nmcli connection up <connection-name>|<connection-UUID>)

7

IPv4 Settings タブは、DHCP利用の方は特に変更不要です。
静的にIPを設定したい方は、以下のように変更します。

8

IPv6 Settings タブは、特別な要件がない限りは設定不要です。
私個人の趣味ですが、 Method: Ignore を設定してしばしばIPv6を無効化しています。

一通りの設定が完了したら、右下の Save から変更を反映します。

9

私は普段有線を使うので、eno0について上記設定を入れています。
一方で無線は使わないので、無線のインターフェース (wlp0s20f3など) については General タブから Connect automatically with priority をオフにしています。
これにより、OS起動時に有線のインターフェースのみUPし、無線のインターフェースはDOWNのままとなります。
そして、必要なときには手動でUP/DOWN を切り替えることで対応できます。

タイムゾーンと時刻の設定 (TIME & DATE)

ここではタイムゾーンとNTPサーバを設定します。 私の環境では、デフォルトの設定から特に変更していません。

画像の通り、以下の設定になっています。

  • タイムゾーンAsia/Tokyo です
  • 右上のNetwork Time のスイッチがONになっているので、NTPサービスが起動しています

10

上記画像の右上の歯車のアイコンから時刻参照先のNTPサーバを指定できます。
デフォルトのFedora用のNTPサーバプールを参照しています。

10_2

パーティションファイルシステムの設定 (INSTALLATION DESTINATION)

画面下部にある Storage ConfigurationCustom にします。
左上の Done を選択することで次の画面に進みます。

11

左のドロップダウンリストから LVM を選択します。
Click here to create them automatically. をクリックし、ある程度の設定を自動生成させます。

12

まずは、 /boot/efi パーティションから設定します。
こちらのパーティションは、マザーボードファームウェアとしてBIOSではなくUEFIを利用している方のみ 設定が必要です。
少なくとも NUC10はUEFIベースです
パーティション構成を自動生成した場合、UEFIを使っていれば /boot/efi も自動生成されるので、それが一つの目安になると思います。
こちらの設定は特にいじりません。以下の構成です。

  • 容量:600 MiB
    • RedHat社のマニュアルによると、200MiBから600MiBの間にあれば良いとのことです
    • Arch Wiki からリンクされているこちらのサイトによると、520MiB を下回るサイズにすると環境次第で不具合の原因となるようです。そこまで気にする必要はない気もしますが、念のため大きめのサイズにしておきました
  • ファイルシステムEFI System Partition

13

次に、 /boot を設定します。

14

次に swap を設定します。 ただし、swap ファイルを後から作成する方は、ここのパーティションを削除しても大丈夫です。
swapパーティションとswap ファイルでは特に性能の違いはないようです。
 ※情報ソースは各種掲示板やYouTube解説動画です

  • サイズ:2 GiB
    • swap領域はファイルシステムのキャッシュや、ディスク書き出しによるメモリ領域確保などに利用される
    • 安定性確保のため、最低限 2GiB ぐらいは割り当てる
    • LVMに含めてあるため、後々のサイズ変更は容易
  • ファイルシステムswap

15

次にLVMの設定を変更します。
上画像の右側にある Volume Group 配下の Modify を選択し、以下のように変更します。

  • Size Policy: As large as possible
    • この設定により、ディスクの容量のある限りLVMの Volume Group (VG) に割り当てる
    • デフォルトの automatic の場合、ディスクサイズに余裕を持たせて小さめのVGを作ろうとするが、Dual Boot など特殊な事情でもない限りは使い切って良い
    • 設定の詳細な意味は RedHat社 のマニュアルを参照

16

次に / の設定を変更します。

  • 容量:50 GiB
    • ArchWiki掲示板で議論されていたが、パッケージを大量にインストールしても 15 GiB 〜 25 GiB 程度で足りる
    • ファイルシステムの性能や安全性の観点で一定割合の空き容量を保つことも見込んで50 GiBとした
    • LVMとext4 を利用しているので、万が一容量が足りなくなった場合も低リスクで拡張できる (詳細は後述)
  • ファイルシステムext4

17

最後に /home を追加します。
画面左下の + ボタンを選択し、下記画像のように容量やファイルシステムを指定します。

  • 容量:空き容量全て。ただし小数点以下切り捨て
    • 筆者環境では1TB のSSDを利用しているが、 /home の容量は879 GiB になった
    • ここは意見が分かれそうだが、小数点以下の端数は切り捨てた値を指定した。ディスクのアラインメント関連のトラブルを踏みたくなかったため
  • ファイルシステムext4

18

作成後、ファイルシステムをデフォルトの XFS から ext4 に変更します。
すると、以下の画像のようになります。

左下の Available Size が少ない値になっていれば、LVMのVGによって物理ディスクの容量が予約された状態になっています。
もし左下の容量がギガバイト単位で余っている場合は、右側の Volume Group 配下の Modify から、 Sizing PolicyAs large as possible となっていることを確認してください。

また画面右側の Volume Group が画像では 424 MB free となっていますが、こちらもギガバイト単位で表示されている場合にはVGの容量が余っています。
/home に割り当てている容量を見直してみてください。

設定内容に問題ないことが確認できたら、左上の Done を選択して変更を確定してください。

19

Accept Changes を選択し、変更を確定します。

19_2

一般ユーザーの作成 (CREATE USER)

一般ユーザー作成の意義

特にPC用途の場合、普段はroot以外のユーザを使うことをお勧めします。

一般ユーザーをsudoer に加えておけばrootと同様の操作が可能なので、通常作業時は特に困りません (sudoを打つのは面倒ですが、すぐに慣れます)。
また、GUIで何気なく操作しているとき、権限の必要な操作 (つまりリスクのある操作) をするときはシステムがパスワードを求めてくれます。

セキュリティだけでなく事故防止の観点でも、一般ユーザーの利用は100%お勧めできます。

設定手順

まず、ユーザー名とパスワードを入力します。
参考ですが、Kaspersky社のPassword Checker でパスワード強度をチェックできます。

続いて、Make this user administrator にチェックを入れます。
これにより、作成したユーザーが wheel グループに登録され、sudo 権限を持ちます。

画面下部の Advanced を選択し、詳細なオプションを指定します。

20

こちらの画面での設定は必須ではありません。

私の場合は、ユーザーグループに wheel に加えて shared も追加しています。
後からでも sudo usermod -aG shared <username> で変更可能です。

shared は複数ユーザー間のファイル共有に利用する予定です (例えばisoファイルなど)。
Linuxインストール後、以下のように実装します。

  • 共有先のユーザーを shared グループに所属させる
    • sudo usermod -aG shared <username>
  • 共有ディレクトリを作成し、権限を設定する
    • sudo mkdir /home/shared/
    • sudo chown root:shared /home/shared/
    • sudo chmod 770 /home/shared/
  • 以降、他ユーザと共有したいファイルを /home/shared に保管する

21

root ユーザーの設定 (ROOT PASSWORD)

ここではroot ユーザーのパスワードを設定します。

「sudo できるならrootユーザは不要じゃないか」と思ってrootユーザーを無効化したこともあったのですが、
usermod コマンドを間違えて実行して管理者不在になったことがありまして...。
結局 Rescue Mode から復旧する ハメになりました。

こんなことがあったので、今のところはrootユーザーを有効化しています。
レスキューモードからの復旧は慣れていればすぐできますので、上記を踏まえてrootユーザーを無効化するのもアリだとは思います。

結局はPCに物理アクセスできた段階でrootログインは容易にできてしまうので、効果は限定的ですし、利便性を優先してrootを有効化しても良いと思いますが...。

22

インストール完了

以上で初期設定は完了です。

右下のBegin Installation から Fedora インストールを開始します。

23

しばらく待ったら再起動を促されるので、画面に従って再起動します。
電源が落ちたタイミングでLinuxインストール用USBをPC本体から抜いたほうが良いかもしれません。
次はUSBではなく、SSDから起動してほしいからです。

24

これでFedora のインストール作業は完了です。

(参考) LVMについて

LVMの利点

LVMは物理ディスクを仮想化することで様々な構成を可能としますが、パソコン用途での一番の利点は ファイルシステムの容量拡張が容易になること だと思います。

ディスクのパーティションは、ディスクの不連続なセクターにまたがって作成することはできません。
従って、 もしも/, /home の順にパーティションを連続するセクターに作ったとして、後から/を拡張したくなったら...とても大変なのです。

以下のスライドのように技術的には対応可能なのですが、結構複雑な手順です。
LVMを使って回避できるのであれば、絶対回避すべきです。

not_using_LVM

LVMを利用していれば、セクター位置を気にすることなく容量を拡張可能です。
/homeをアンマウントした後、lvreduce, lvextend コマンドをそれぞれ1回ずつ実行するだけで簡単に完了します (後日検証します)。

こういった柔軟さから、パソコン用途の場合はLVMを使うのが良いと考えています。

using_LVM

LVMは遅くない

LVMは物理ディスクとファイルシステムの間に抽象化レイヤーを増やす...ように想像できますが、実際はそうでもないようです。
Linux Kernelからデバイス (物理ディスク) のセクタ上にデータを送受信する際、元々デバイスドライバを介してデータを送受信しています。
以下の記事によると、LVMを介した場合も、LVMを介さない場合と同じぐらい直接的に物理ディスクにアクセスしているとの情報がありました。

Does LVM impact performance?

別の記事にも、LVMはただのDevice Mapperである。ある抽象化されたデバイスXへのアクセスを別のデバイスYに

非公式情報ではありますが、その他複数の情報ソースを当たってみても「LVMは遅くない」という主張が見られることから、恐らく事実なのだと思います。

もちろん、LVMを使っていることで性能劣化が起こるケースはいくつかあるようです。
以下にいくつかの例を挙げます。

  • 単一ディスクの複数パーティションに対してそれぞれPVを作成し、単一VGでまとめる構成
    • 上記構成は、多くの場合性能劣化に繋がるとの情報あり
    • 複数ディスクにPVを作成して単一VGでまとめる構成は、ディスク容量拡張やRAID0のような観点でのI/O性能向上を狙える一般的なアプローチ
  • LVMのスナップショット機能を使う
  • Linux Kernelの不具合によってLVM固有の問題に該当する
    • 2.6.20など古いバージョンのLinux Kernelを使用すると、LVM有効化時に性能が50%程度になるとの報告があった
    • 新しいバージョンのKernelを使うことを推奨する (最新版のFedoraなら気にする必要なし)
  • ディスクのアラインメントの構成を間違える

例えばパーティションとPhysical VolumeとVolume Groupが1:1:1になるように構成し、Volume GroupをLogical Volume で論理分割するような使い方をする分には、LVM起因で性能劣化をすることはほぼありえない想定です。

LVMの参考資料

LVMの概要を知りたい方は、下記リンクがオススメです。

(参考) ext4 ファイルシステムを選択した理由

デフォルトのXFSはファイルシステムの縮小に対応していないが、ext4ファイルシステムの縮小に対応しているからです。

今回の構成では基本的にはありえないことですが、「/ の容量が50GiBでは足りず拡張したい場合」や「急に気が変わって/varのパーティションを分けたくなった場合」なども LVM + ext4 の構成であれば柔軟に対応できます。

他にも以下の観点で調べましたが、PC用途としては全く問題なしでした。
産業用途の場合は、最大ボリュームサイズのみ要注意かもしれません。

(参考) Linuxインストール画面のスクリーンショットの撮り方

今回はKVM上に立てた仮想マシンのコンソール画面をスクリーンショットすることで記事用の画像を撮りました。
別の方法として、 (Linux インストーラである) Anacondaの機能でもスクリーンショットを撮れるようです。

まとめ

長文になってしまいましたが、Fedora のインストール手順を紹介しました。
Linux のインストールは考えることが地味に多く (特にパーティション周り)、時間を奪われる工程だと思っています。
そういった方の時間節約に少しでも貢献できていたら嬉しいです。

NUC10構築シリーズの記事としてはこちらで一旦区切らせていただきます。
次からはLinux PC構築をFedora + Cinnamon で取り組んでみます。
詳細は以下のリンク集からチェックお願いします!

Linux PC構築関連リンク集

endy-tech.hatenablog.jp