録画サーバ構築 Skylake+CentOS 再検証編

初めて購入したSkylake機にCentOSがインストールができず、それ以降インストールできないものと思い込んでいたが、CentOS6は普通にインストールできたよというありがたいコメントを頂いた。確認したのはCentOS7インストーラの起動失敗だけだったので、問題の特定も含めていろいろ検証し直す事に。以前、インストールに失敗した筐体はshuttleのSh170R8で、既に2台目も購入してある。1台目も2台目も同じサービスが提供できるように作ってあるが、一応マスターは1号機なので、新規に購入した方の2号機で検証を進める。

まずは問題の再現からやり直すために、CentOS7のkickstartを久々に動かす。Grubで3番目のmenuentryを選ぶとkickstartが始まるように作ってあるので、grub.cfgを修正してリブート。起動してくると、Install用のラベルが選択されて、CentOS7のインストーラが動き出す。確かこの辺で止まっちゃうんだよなあとか眺めているものの、何事もなかったかのようにanacondaが起動してインストールが始まった。あれあれ?どういうことだ?インストールが終わってリブートすると当たり前のようにCentOS7が起動してきた。普通にインストールできてしまった。。。

[商品価格に関しましては、リンクが作成された時点と現時点で情報が変更されている場合がございます。]

Shuttle SH170R8 ベアボーン
価格:33998円(税込、送料無料) (2016/10/27時点)

成功した筐体が2号機であることを気付き、以前失敗した1号機でも同様に試してみる。こちらはやはりインストーラーの起動でフリーズしてしまう。1号機の方のみ何かしら問題があるようだ。とはいえ、同じハードウェア構成で成功するマシンがあるということはシューティングのモチベーションを大きく引き上げる。1号機と2号機の違いを特定して修正してやれば、きっと1号機にもCentOSがインストールできるはず。今回も同じ筐体が2台あることのありがたみを改めて感じる。

インストーラーのフリーズは毎回微妙に異なる場所だが、何度も繰り返していると大体『nouveau』が表示される辺りで停止する事がわかる。

e1000e 0000:00:1f.6: Interrupt Throttling Rate(ints/sec) set to dynamic conservative mode
nouveau [   VBIOS][0000:01:00.0] using image from PROM
nouveau [   VBIOS][0000:01:00.0] BIT signature found
nouveau [   VBIOS][0000:01:00.0] version 82 07 32 00 1h

nouveauは3Dグラフィック用のドライバなので、グラフィック関連の問題が原因かもしれない。とりあえず画面出力をオンボードからPCIeのGeForceに切り替えてみる。BIOSで設定を変えて、HDMIケーブルを挿し直して電源を入れると・・・インストーラーがフリーズする事なく進んで行く!そのまま2号機同様にkickstartへ進みそうな気配。そんな期待を裏切るかのように途中でエラーが出始めてしまう。

dracut-initqueue timeout - starting timeout scripts
dracut-initqueue timeout - starting timeout scripts
dracut-initqueue timeout - starting timeout scripts
    :
Warning: /dev/root does not exist

おお、/dev/root does not existって何か見覚えあるな。anacondaがIPアドレスをもらえないとかのネットワーク問題だったような。我が家のDHCPサーバは任意のmacアドレスに固定のIPアドレスを振る作りになっている。dhcpd.confの生成もchefで自動化されているため、図らずも通常起動用とkickstart用のIPアドレスが別々に用意され、1つのmacアドレスに対して2つのIPアドレスが重複してしまっていたのだ。しかし、今回はそういうミスは見つからない。

DHCPサーバは1号機と2号機でマスター・スレーブ構成となっており、2号機を作るときはmasterの1号機のDHCPサーバを使用し、問題なくインストール出来た。問題特定のためにも一応2号機をmasterに作り変えてみる。chefでmasterタグを付けてknifeするだけ。もう1度kickstartを実行すると、普通にanacondaが起動してCentOS7をインストールしてくれた。あとで気付いたのだが、dhcp slaveの設定ミスでmasterと正しく連携できていなかったのが原因だった。

さて、インストールは無事完了して再起動が進む。起動してくれると何故かコンソールが固まってしまう。他のPCからのssh接続には反応するのでネットワークは問題なさそう。インストール後のOS起動時にnouveauドライバが読み込まれてしまったので、コンソールがおかしくなってしまったのだろうか。試しにnouveauドライバを外して、どうなるか試してみる。/etc/default/grubのGRUB_CMDLINE_LINUXにnouveau.modeset=0を追加して、grub2-mkconfigを実行して再起動。今度はコンソールも普通に動作した。意外とあっさり特定できたのだが、nouveauドライバが読み込まれるとCentOS7の挙動がおかしくなるようだ。

新製品 Shuttle SH170R8 新デザイン!アルミ製シャーシ採用 キューブ型ベアボーン
価格 : 35,620円(税込、送料無料)
by Yahoo! ショッピング

インストーラのkernelパラメータでもnouveauドライバを外し、kickstartファイルのkernelパラメータからもnouveauドライバを外してしまえば、kickstartインストールでの自動構築が実現できそう。早速、以下のように設定を変えてkickstartインストールをやり直す。

vi /boot/grub2/grub.cfg
    :
menuentry "Install" --class gnu-linux --class gnu --class os {
        insmod ext2
        set root='hd0,msdos2'
        linux /boot/vmlinuz nouveau.modeset=0 inst.stage2=http://repo/7/os/ ks=hd:sda2:/boot/ks.cfg
        initrd /boot/initrd.img
}

vi /boot/ks.cfg
    :
bootloader --append=" nouveau.modeset=0 intel_iommu=on crashkernel=auto" --location=mbr --boot-drive=sda

以上の変更で、何の問題もなくkickstartインストールが実行できた。CentOS7がインストール出来なかったのは、Skylakeの問題ではなく、nouveauドライバが悪さをしていたためとわかった。今更だけど、1号機にはGeForceを刺していて、2号機には何も刺していない。GeForceのためにnouveauドライバが入ったにもかかわらず、オンボードのグラフィック機能を使おうとするとおかしくなるようだ。ともあれ、Skylake機をCentOS7標準kernelで動かせるようになったので、QSV検証が容易に。次回はSkylakeのQSV機能を試してみたい。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)