キックスタートインストールを使用すると、Fedora、Red Hat Enterprise Linux、またはCentOSの無人または半無人のインストールを簡単にスクリプト化および複製できます。オペレーティングシステムのインストールに必要な手順は、Anacondaインストーラーに渡されるキックスタートファイル内に専用の構文で指定されています。このチュートリアルでは、既存の LUKS
を再利用する方法を説明します。 (Linux Unified Keys Setup)キックスタートインストールを実行するときのコンテナー:これは、キックスタートの手順だけでは達成できないものであり、いくつかの追加の手順が必要です。
このチュートリアルでは、次のことを学びます。
- Fedora、RHEL、またはCentOSのキックスタートインストールを実行するときに既存のLUKSコンテナーを使用する方法
- Anacondaインストーラーで使用するupdates.imgファイルを作成して使用する方法。

使用されるソフトウェア要件と規則
カテゴリ | 使用する要件、規則、またはソフトウェアバージョン |
---|---|
Fedora / Rhel / CentOS | |
このチュートリアルに従うために特定のソフトウェアは必要ありません。 | |
| |
# –指定されたLinuxコマンドは、rootユーザーとして直接、または sudo を使用して、root権限で実行する必要があります。 コマンド$ –特定のLinuxコマンドを通常の非特権ユーザーとして実行する必要があります |
はじめに
キックスタートを使用すると、Anacondaグラフィカルインストーラーでは実現できない方法で、オペレーティングシステムのインストールを簡単に複製およびカスタマイズできます。たとえば、システムにインストールするパッケージまたはパッケージグループを宣言し、代わりに除外するパッケージを宣言できます。
また、インストールの実行前または実行後にカスタムコマンドを実行して、専用の%pre
内で指定することもできます。 および%post
それぞれキックスタートファイルのセクション。この最後に述べた機能を利用して、既存の LUKS
を使用します インストールプロセス中のデバイス。
ネイティブキックスタート構文による暗号化
LUKSコンテナの作成は非常に簡単で、ネイティブのキックスタート手順を使用するだけで実行できます。次に例を示します:
part pv.01 --ondisk=sda --encrypted --luks-type=luks1 --cipher=aes-xts-plain64 --pbkdf-time=5000 --passphrase=secretpassphrase
上記の例では、 part
を使用します 命令では、暗号化された lvm
を作成します / dev / sda
の物理ボリューム ディスク。 LUKS
を指定します 使用するバージョン(この場合はluks1 –少なくとも最近のバージョンのFedora luks2がデフォルトになっています)、 cipher
、および PBKDF
に費やす時間(ミリ秒単位) (パスワードベースの鍵導出関数)パスフレーズ処理(-iter-time
を使用するのと同じです cryptsetup
のオプション 。
安全な習慣ではない場合でも、-passphrase
も使用しました 暗号化パスフレーズを提供するには:このオプションがないと、インストールプロセスが中断され、インタラクティブに提供するように求められます。
Kickstartを使用すると、従来のインストールと比較して、どのように柔軟性が向上するかがはっきりとわかります。では、なぜ追加の手順を実行する必要があるのでしょうか。標準のキックスタート構文だけでは達成できないタスクがまだいくつかあります。特に、 LUKS
を作成することはできません rawデバイス上のコンテナ(パーティションのみ)または LUKS
に使用するハッシュアルゴリズムを指定します キー設定。デフォルトではsha256
に設定されています。 (何も問題はありません)。
これらの理由から、手動で、または%pre
内のpartedなどのツールを使用して、インストールを実行する前にパーティション設定を作成することをお勧めします。 キックスタートファイル自体のセクション。また、既存の LUKS
がある場合もあります 破壊したくないセットアップ。これらすべての場合において、すぐにわかる追加の手順を実行する必要があります。
キックスタート%preセクション
%pre
キックスタートファイルのセクションは、ファイルが取得されたときに最初に解析されるセクションです。インストールを開始する前にカスタムコマンドを実行するために使用され、%end
で明示的に閉じる必要があります 指示。
%pre
で 、bashシェルインタープリターがデフォルトで使用されますが、その他は-interpreter
を介して指定できます。 オプション(Pythonを使用するには、%pre --interpreter / usr / bin / python
と記述します。 )。このセクションを使用して、既存の LUKS
を開くために必要なコマンドを実行できます。 容器。これが私たちが書くことができるものです:
%pre
iotty="$(tty)"
exec > "${iotty}" 2> "${iotty}"
while true; do
cryptsetup luksOpen /dev/sda1 cryptroot - && break
done
%end
上記のコードを見てみましょう。まず、 tty
の結果を保存します 標準入力に接続されている端末のファイル名をiotty
に出力するコマンド 変数。
exec> "$ {iotty}" 2> "$ {iotty}"
を使用 コマンド標準出力と標準エラーを同じ端末にリダイレクトしました:
このようにして、 crytpsetup luksOpen
のときにコンテナのパスワードを入力できるようになります。 コマンドが実行され、プロンプトが画面に表示されます。コマンドは、 LUKS
の場合にのみ中断される無限ループで起動されます コンテナが正常に開かれました。
完全に無人のインストールを実行する必要がある場合は、パスフレーズを直接cryptsetupに渡す必要があります(これもお勧めしません)。私たちは次のように書きます:
%pre echo -n "ourverysecretpassphrase" | cryptsetup luksOpen /dev/sda1 cryptroot - %end
上記の例では、パイプ |
を介してcryptsetupコマンドの標準入力にパスフレーズを渡しました。 : echo
を使用しました -n
を使用したコマンド パスフレーズの最後に改行文字が追加されないようにするオプション。
Fedora31anacondaインストーラーのパッチ適用
キックスタートを介してFedora31をインストールするときに、ロック解除されたLUKSコンテナーを使用しようとすると、次のメッセージが表示され、プロセスは中止されます。
既存のロック解除されたLUKSデバイスは、このデバイスに指定された暗号化キーがないとインストールに使用できません。
ストレージを再スキャンしてください。
これは、AnacondaインストーラーのFedora31バージョンで導入されたこのコミットが原因で発生します。コードは基本的に、既存のLUKSデバイスに登録済みのキーがあることを確認します。登録されていない場合は、インストールが中止されます。問題は、 blivet
、Anacondaがパーティションを管理するために使用するPythonライブラリは、コンテナが開かれている場合にのみキーを取得します。これはグラフィカルインストーラーから実行できますが、執筆時点では、既存の<コードのロックを解除するキックスタート命令はありません。> LUKS 容器。状況を説明するコミットに個人的にコメントしましたが、RedHatBugzillaでバグが発生しました。
updates.imgファイルの作成
現時点での唯一の回避策(私が知っている)は、Anacondaソースコードにパッチを適用し、上記のコミットで導入されたコントロールを実行する行にコメントを付けることです。良いニュースは、操作が非常に簡単なことです。
まず最初に、Anaconda gitリポジトリ、具体的には f31-release
のクローンを作成する必要があります。 ブランチ:
$ git clone https://github.com/rhinstaller/anaconda -b f31-release
リポジトリのクローンが作成されたら、 anaconda
を入力します ディレクトリを作成し、 pyanaconda / storage / checker.py
を変更します ファイル:コメント行 619
だけです。 :
def set_default_checks(self):
"""Set the default checks."""
self.checks = list()
self.add_check(verify_root)
self.add_check(verify_s390_constraints)
self.add_check(verify_partition_formatting)
self.add_check(verify_partition_sizes)
self.add_check(verify_partition_format_sizes)
self.add_check(verify_bootloader)
self.add_check(verify_gpt_biosboot)
self.add_check(verify_swap)
self.add_check(verify_swap_uuid)
self.add_check(verify_mountpoints_on_linuxfs)
self.add_check(verify_mountpoints_on_root)
#self.add_check(verify_unlocked_devices_have_key)
self.add_check(verify_luks_devices_have_key)
self.add_check(verify_luks2_memory_requirements)
self.add_check(verify_mounted_partitions)
変更を保存し、リポジトリのルートから makeupdates
を起動します scripts
にあるスクリプト ディレクトリ。スクリプトを実行するには、 python2
が必要です。 インストール済み:
$ ./scripts/makeupdates
スクリプトはupdates.img
を生成します 変更を含むファイル。その内容を確認するには、 lsinitrd
を使用できます コマンド:
$ lsinitrd updates.img Image: updates.img: 8.0K ======================================================================== Version: Arguments: dracut modules: ======================================================================== drwxr-xr-x 3 egdoc egdoc 0 Jan 30 09:29 . drwxr-xr-x 3 egdoc egdoc 0 Jan 30 09:29 run drwxr-xr-x 3 egdoc egdoc 0 Jan 30 09:29 run/install drwxr-xr-x 3 egdoc egdoc 0 Jan 30 09:29 run/install/updates drwxr-xr-x 3 egdoc egdoc 0 Jan 30 09:29 run/install/updates/pyanaconda drwxr-xr-x 2 egdoc egdoc 0 Jan 30 09:29 run/install/updates/pyanaconda/storage -rw-r--r-- 1 egdoc egdoc 25443 Jan 30 09:29 run/install/updates/pyanaconda/storage/checker.py ========================================================================
このファイルを使用して、Fedora31のインストーラーに「パッチを適用」します。
パッチの適用
生成したファイルに含まれている変更を適用するには、FTPやhttp、またはローカルブロックデバイスを介して簡単にアクセスできる場所にファイルを配置し、inst.updatesを使用する必要があります。コード> Fedoraインストーラーイメージからそれを参照するためのパラメーター。 grubメニューから、「InstallFedora」メニューエントリを強調表示します:

Fedora31インストーラーメニュー
メニュー行を選択したら、Tabキーを押します。エントリに関連付けられているカーネルコマンドラインが画面の下部に表示されます。

「InstallFedora」エントリで使用されるカーネルコマンドラインここで行う必要があるのは、
inst.updates
を追加することだけです。 命令とupdates.img
へのパスを提供します 作成したファイル。 Kickstartファイルとupdates.imgファイルの両方にIP192.168.0.37のローカルサーバー上のhttp経由でアクセスできるとすると、次のように記述します。vmlinuz initrd=initrd.img inst.stage2=hd:LABEL=Fedora-S-dvd-x86_31-31 quiet inst.updates=http://192.168.0.37/updates.img inst.ks=http://192.168.0.37/ks.cfg
この時点で、Enterキーを押して起動できます。上記の変更により、インストーラーは
ロック解除されたLUKS
について文句を言うことはなくなります。 デバイスを使用すれば、インストールは問題なく続行されます。
結論
この記事では、既存の LUKS
を再利用するためにキックスタートインストールを調整する方法を説明しました。 デバイス、%pre
でロックを解除します キックスタートファイルのセクション、およびそのようなタイプのインストールを試みたときに失敗するFedora31Anacondaインストーラーに小さな回避策を適用する方法。キックスタート構文に興味がある場合は、オンラインドキュメントをご覧ください。
コード>