web-dev-qa-db-ja.com

PXEブートCentOS7.2ディスクレスが「スイッチルートの開始に失敗しました」で失敗する

クライアントがディスクレスCentOS7.2イメージを起動できるように、CentOS7.2サーバーをセットアップしています。私はCentOS6.6でこれを実行しましたが、何年にもわたって複数のサーバーとクライアントで正常に動作します。同じ構成パラメーターを使用します。
/var/lib/tftpboot/pxelinux.cfg/defaultに含まれるもの:

 default menu.c32 
 Prompt 0 
 timeout 100 
 TOTALTIMEOUT 300 
 ONTIMEOUT CentOS 
 MENU TITLE Linux 7.2PXEブートメニュー
 LABEL CentOS 
 MENU LABEL CentOS 7.2 x86_64 em1 
 KERNEL images/centos/x86_64/7.2/vmlinuz-3.10.0-327.el7.x86_64 
 APPEND initrd = images/centos/x86_64/7.2/diskless_initrd.img ip = dhcp nfs = 10.0.0.1:/diskless/centos/7.2/root rw quiet
スイッチルートを開始しています... 
ルートの切り替えに失敗しました:指定されたスイッチルートパス/ sysrootがOSツリーではないようです。 os-releaseファイルがありません。
 initrd-switch-root.service:メインプロセスが終了しました、code = exited、status = 1/FAILURE

これは私を緊急シェルに落とします、そして私が/ sysrootを見るならば、それは空のディレクトリです!

Diskless_initrd.imgを使用して保存しました

dracut -f diskless_initrd.imgʻuname -r`

指定した場所にコピーします。また、「dracut -d nfs-dnetwork」を試してみました。

これが私のCentOS6.6サーバーで機能する理由がわかりませんが、ここ7.2では機能しません。

1
John Hupcey

私は何ヶ月も後にこの問題に戻り、私が欠けていたもの、つまりアクティブなファイアウォールを見つけました。 PXE/TFTP BOOT関数は、ファイアウォールルールを実行しなくても、vmlinuzおよびinitrdイメージを正常に転送できるようですが、NFSでルートファイルシステムをクライアントに転送するときはできませんでした。

Red Hat 7.3では、最初に/ etc/sysconfig/iptablesファイルをCentOS6.6サーバー(クライアントが「ディスクレス」ファイルシステムを起動してマウントできる)からコピーしてから、次のように実行しました。

systemctl enable Firewalld

systemctl startfirewalld

これで、クライアントはリモートファイルシステムを正常にマウントし、Linuxログインプロンプトが表示されました。

ここで、このインスタンスで本当に必要なiptablesファイルの部分を特定します。

1
John Hupcey

あなたはまだこれに取り組んでいますか? RHEL/Centos7.xでも同じ問題が発生していました。 5.xまたは6.xでこの問題が発生したことはありません。レガシーモードとUEFIモードの両方を試しましたが、同じ結果になりました。

プロセスで問題を見つけました。実際には2つのこと。

  1. Rsyncしたファイルシステムの/ etc/sysconfig/network-scriptsをクリーンアップするのを怠りました。それでも、ソースファイルシステムからのスクリプトが含まれていました。

  2. ディスクレスクライアントには複数のNICがあります。次のように、ネットワークブート構成に特定のブートパラメータがありませんでした。

 APPEND initrd = images/centos/x86_64/7.2/diskless_initrd.img ip = bond1:dhcp root = nfs:10.0.0.1:/diskless/centos/7.2/root bond = bond1:eth4、eth5:mode = 1 biosdevname = 0 net.ifnames = 0rwquiet

ボンディングされたネットワークデバイスを使用していない場合でも、ディスクレスクライアントがファイルシステムを取得するNIC)のデバイス名を指定する必要がある場合があります。

APPEND initrd=images/centos/x86_64/7.2/diskless_initrd.img ip=eth3:dhcp root=nfs:10.0.0.1:/diskless/centos/7.2/root biosdevname=0 net.ifnames=0 rw quiet
1
Jared