ESXi上にある仮想マシン(CentOS 7)をVMware ConverterでV2Vしたら、エラーで起動しない問題に遭遇したのでメモ。
【環境】
VMware vCenter Converter Standalone 6.3.0
CentOS 7.9
V2Vした仮想マシンを起動したところ、次のようなエラーでOSが起動しない。
error can't find command ':'
「MORE」と表示されているので、moreコマンドの状態?と思い、
コンソールで「q」を押すとエラー表示をスキップしてGRUBの画面に移行してOSが起動することが分かった。
が、OSを再起動すると同じエラーが発生する。
これでは毎回コンソールでエラーをスキップする必要があって困る。
メッセージにある「コロン(:)」が起動時のファイルに記述されており、エラーが出ていると予想。
OS起動時のことなので、GRUBの設定ファイルを確認。
・/etc/default/grub
・/boot/grub2/grub.cfg
1つ目のファイルは特に変わった様子はなかったが、2つ目にそれらしい箇所があった。
# cat /boot/grub2/grub.cfg ・・・略 ### BEGIN /etc/grub.d/10_linux ### : # (removed by Converter) menuentry 'CentOS Linux (3.10.0-1160.81.1.el7.x86_64) 7 (Core)' --class centos --class gnu-linux --class gnu --class os --unrestricted menuentry_id_option 'gnulinux-3.10.0-327.el7.x86_64-advanced-1d47488d-d712-46a0-9923-cc069790491d' { : # (removed by Converter) load_video : # (removed by Converter) set gfxpayload=keep : # (removed by Converter) insmod gzio ・・・略
先頭に「: # (removed by Converter) 」と記載された行が原因と思われる。
GRUB2は、
1./etc/default/grub で設定を変更する
2.grub2-mkconfig コマンドで grub.cfg を生成
という手順で行う。
/etc/default/grub の方はV2V前の状態と変わっていないので、特に設定は変更せずgrub.cfg を再生成するだけ。
※以下のコマンドを実行前に、念のため /boot/grub2/grub.cfg のバックアップを取っておく。
# grub2-mkconfig -o /boot/grub2/grub.cfg
※UEFIマシンの場合は、/boot/efi/EFI/redhat/grub.cfg
生成された /boot/grub2/grub.cfg を確認すると、問題の行が消えている。
OSを再起動して、正常に起動することを確認。
「: # (removed by Converter) 」が入ってしまう理由は、Converterの仕様なのかバグなのか不明。
<参考>
第26章 GRUB 2 での作業 Red Hat Enterprise Linux 7 | Red Hat Customer Portal
【 grub2-mkconfig/grub-mkconfig 】コマンド――GRUB 2の起動メニューを生成する:Linux基本コマンドTips(278) - @IT
RedHatにも、それらしい情報があるが有償サブスクリプションが無いと閲覧できない領域にある。(内容は未確認)
System will not boot after p2v conversion : error can't find command ':' - Red Hat Customer Portal