CentOS 7 を導入するために購入した Intel NUC DN2820FYKH に早速インストールを試みたが、起動プロセスに入った直後に [0.000000] tsc : Fast TSC calibration failed というエラーでフリーズしてしまった。
検索すれば解決策がすぐに見つかるだろうと当初は思っていてがなかなか見つからない。とは言え、CentOS公式フォーラムの CentOS 7.0 on Intel NUC にまったく同じ問題で困っている人たちが集まっていたので、いずれ解決するだろうと対応策が出てくるのを他人任せに待っていたが、だんだん書込みも止まってきてしまった。また、Twitterの私の日本語のつぶやきに対してスコットランドから問い合わせがあるくらい多くの人が困っているようなので、休日1日使って調査し、ついに解決策を見つけた。なお、この問題は Oracle Linux 7 でも発生するが、同様の解決策が適用できる。
@rewse I also have this problem, have you found a solution for it?
— Fraser Sharp (@owlbread) August 12, 2014
まず、tsc : Fast TSC calibration failed というエラーが表示されて止まるので、この問題はTSC (TimeStamp Counter) の問題と思いがちだが、Tabキーを押してquietをはずして起動プロセスを詳しく見ると、Loaded X.509 cert ‘CentOS Linux Driver update signing key のあとにフリーズしていることが分かる。このあとには Loaded X.509 cert ‘CentOS Linux kernel signing key が来るようなので、この問題はカーネルの問題と推測できる。
それでは私の環境での解決手順だ。数々の罠が仕掛けられているので心してほしい。
- 外付けDVDドライブからDVDで起動せず、USBメモリーから起動する。また、マウスとLANケーブルも接続せず、OSイメージの入ったUSBメモリーとキーボードとHDMIケーブルという最小構成にする。マウス、LANケーブルが挿さっていると起動しないことがある(再現条件不明)
- USBメモリーはLinuxから以下のコマンドで作成する。Fedora LiveUSB Creator などは使用しない。Fedora LiveUSB Creator を使用して作成したUSBメモリーではインストーラー (Anaconda) は起動するが、Installation Source から Auto-detected installation media をVerifyすると This media is not good to install from というエラーになり、パッケージが選択できない。また、ネットワーク接続もできず、リモート・インストールできないので、インストール・プロセス途中で進めなくなる(この問題は CentOS Forums: CentOS7, stuck in installation, critical errors でも報告されている)
1~]# dd if=CentOS-7.0-1406-x86_64-DVD.iso of=/dev/sdb bs=1M - BIOSを最新バージョンである0038に更新する
- BIOSで UEFI Boot のチェックを外す。それ以外の設定はデフォルトのままでOK
- 起動直後にF10を押してUSBメモリーから起動する
- Install CentOS 7 メニューをハイライトしたらTabを押して、末尾のquietを消す。quietが残っていると起動しない
- [0.000000] tsc : Fast TSC calibration failed は引きつづき表示されるが、ディスク・アクセス・ランプが点滅しているはずだ。10秒ほど待つとインストーラーが起動するだろう
- ここまで来たらLANケーブルは挿しても良い。マウスは挿しても認識されないので、キーボードのTabキーで項目を選択する必要がある。なお、私は Minimal Install しかまだ実施していないので、GNOMEをインストールするとどうなるかは分からない
- インストールが無事終わったら再起動
- CentOS Linux, with Linux 3.10.0-123.el7.x86_64 を選んでEキーを押して編集モードに入ったら、矢印キーでスクロールしていき(viじゃない)、最後のほうにある linux16 /vmlinuz-3.10.0-123.el7.x86_64 …… 行の末尾のquietを消去したら、Ctrl-Xで起動する。quietが残っていると起動しない
123456789101112131415setparams 'CentOS Linux, with Linux 3.10.0-123.el7.x86_64'load_videoset gfxpayload=keepinsmod gzioinsmod part_msdosinsmod xfsset root='hd0,msdos1'if [ x$feature_platform_search_hint = xy ]; thensearch --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1 --hint='hd0,msdos1' 7b5bff8d-06c0-4337-89c5-14288e6c1165elsesearch --no-floppy --fs-uuid --set=root 7b5bff8d-06c0-4337-89c5-14288e6c1165filinux16 /vmlinuz-3.10.0-123.el7.x86_64 root=UUID=a3eb8dec-8296-42d4-9e40-bc8a1e75a6d3 ro vconsole.keymap=jp106 rd.lvm.lv=centos_bravo/swap vconsole.font=latarcyrheb-sun16 rd.lvm.lv=centos_bravo/usr rd.lvm.lv=centos_bravo/root crashkernel=auto rhgbinitrd16 /initramfs-3.10.0-123.6.3.el7.x86_64.img - Loginプロンプトが表示される前にフリーズしてしまった場合は、そのまま電源ボタン長押しで停止して、再び起動してみよう。なぜか次の回は問題なくLoginプロンプトが表示されたりする(再現条件不明)
- /etc/default/grub からquietを消去する
1234567GRUB_TIMEOUT=5GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"GRUB_DEFAULT=savedGRUB_DISABLE_SUBMENU=trueGRUB_TERMINAL_OUTPUT="console"GRUB_CMDLINE_LINUX="rd.lvm.lv=centos_bravo/swap vconsole.keymap=jp rd.lvm.lv=centos_bravo/usr rd.lvm.lv=centos_bravo/root crashkernel=auto vconsole.font=latarcyrheb-sun16 rhgb"GRUB_DISABLE_RECOVERY="true" - 以下のコマンドで、quietの消去をGrub2構成ファイルに反映させる
1~]# grub2-mkconfig > /boot/grub2/grub.cfg
以上で起動プロセス中に止まることはなくなるはずだ。なお、これらの問題はkernel-3.10.0-123.el7.x86_64から最新のkernel-3.10.0-123.6.3.el7.x86_64に更新しても解消されない。