web-dev-qa-db-ja.com

Xenでgrub2を設定するにはどうすればよいですか?

新しいXenカーネルを起動していますが、起動プロセスのある時点でマシンが警告なしに再起動するまで、すべて正常に動作します。残念ながら、それが発生する直前にエラーが点滅することはありません。

動作中のカーネルでマシンを起動し、前回の起動のログなどを確認する方法はありますか?

編集:私が気づかなかったのは、実際には画面にエラーがあるということです。再起動する前に非常に速く点滅します。このエラーは、grubの構成に問題があるため、ルートファイルシステムをマウントできないことに関連しています。

Grub.cfgの通常のエントリは次のようになります。

menuentry 'Ubuntu, with Linux 2.6.32-33-server' --class ubuntu --class gnu-linux --class gnu --class os {
        recordfail
        insmod ext2
        set root='(hd0,1)'
        search --no-floppy --fs-uuid --set 75475e50-82e2-4f74-b860-6cf92c91b42e
        linux   /vmlinuz-2.6.32-33-server root=/dev/mapper/xenserver-root ro   crashkernel=384M-2G:64M,2G-:128M 
        initrd  /initrd.img-2.6.32-33-server
}

/etc/grub.d/40_defaultに以下を追加しました

menuentry 'Xen 4 with Linux 2.6.32.45-xen' --class ubuntu --class gnu-linux --class gnu --class os --class xen {
        recordfail
        insmod ext2
        set root='(hd0,1)'
        search --no-floppy --fs-uuid --set=root 75475e50-82e2-4f74-b860-6cf92c91b42e
        echo 'Loading Xen 4 ...'
        multiboot /xen.gz placeholder
        echo 'Loading Linux 2.6.32.45-xen ...'
        module  /vmlinuz-2.6.32.45-xen placeholder root=/dev/mapper/xenserver-root ro iommu=1
        echo 'Loading initial ramdisk ...'
        module  /initrd.img-2.6.32.45-xen
}

しかし、それは何らかの理由で機能していません。何か案は?

編集:私は20_linux_xenスクリプトも試しました。残念ながら、それは機能していません。これらのエラーを参照してください。

Found linux image: /boot/vmlinuz-2.6.32.45-xen
Found initrd image: /boot/initrd.img-2.6.32.45-xen
Found linux image: /boot/vmlinuz-2.6.32-33-server
Found initrd image: /boot/initrd.img-2.6.32-33-server
/etc/grub.d/20_linux_xen: 57: uses_abstraction: not found
Found linux image: /boot/vmlinuz-2.6.32.45-xen
Found initrd image: /boot/initrd.img-2.6.32.45-xen
/etc/grub.d/20_linux_xen: 156: gettext_printf: not found

gettextがインストールされます。
ubuntu 10.04LTSを使用しています。

起動時にフラッシュされるエラーは次のようなものです"正しいroot = bootカーネルオプションを挿入してください..."

なぜこれがそれほど難しいのか、そしてなぜgrub2 xenの非常に多くの異なる例があるのですか?/bootを前に置くものもあれば/だけのものもあります。/bootを前に置いてみましたが、うまくいきませんでした。また、一部には--set = root uuidがありますが、他のすべての作業エントリには--setuuidがあります。これは別のgrub2バージョンと関係がありますか?

4
Matt H

私自身の質問に答えるために。このgrub2エントリは機能しました。

menuentry 'Xen 4 with Linux 2.6.32.45-xen' --class ubuntu --class gnu-linux --class gnu --class os --class xen {
        recordfail
        insmod ext2
        set root='(hd0,1)'
        search --no-floppy --fs-uuid --set 75475e50-82e2-4f74-b860-6cf92c91b42e
        multiboot /xen.gz placeholder
        module  /vmlinuz-2.6.32.45-xen placeholder root=/dev/mapper/xenserver-root ro 
        module  /initrd.img-2.6.32.45-xen
}

しかし、カーネルにも問題がありました。だから私はそれを再構築しなければなりませんでした。私がそれをしたら、それはすべて行きました。

7
Matt H

grub2-mkconfigがLinuxカーネルを検出するには、それらにvmlinuz-*またはkernel-*という名前を付ける必要があります。一部のスクリプトでは、vmlinux-*も表示されます。例(...-最後のxenは私のメモです):

/boot/kernel-3.6.2-xen

20_linux_xenスクリプトにXenカーネルを含めるには、/bootに、カーネルファイルに対応する正確な名前config-*のカーネル構成ファイルが含まれている必要があります。例えば:

/boot/config-3.6.2-xen

このファイルを作成するには、zcat /proc/config.gz > /boot/config-[your_version]を実行するだけで、grub2-mkconfigを再度実行する必要があります。現時点では、(おそらく)xenカーネルへのシンボリックリンクがいくつかあるため、スクリプトはXenカーネルの重複レコードを生成する可能性があります。したがって、それらを削除し、元のファイル(xen-4.2.0.gz)のみを残します。 (これが安全であることを願っています。これらのシンボリックリンクの削除が間違っている場合は、以下にコメントを残してください。)

同じ状況がinitrd/initramfsファイルの場合ですが、多くのバリエーションがあります。

カーネルパラメータの追加について説明しました ここ

ソース: カーネルの命名20_linux_xen:14710_linux:194-201

0
dmnc