如何使用 Xen 设置 grub2?

hoo*_*enz 4 linux xen linux-kernel ubuntu-10.04 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
}
Run Code Online (Sandbox Code Playgroud)

我在 /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
}
Run Code Online (Sandbox Code Playgroud)

但由于某种原因它不起作用。有任何想法吗?

编辑:我也试过 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
Run Code Online (Sandbox Code Playgroud)

gettext 已安装。
我在 ubuntu 10.04 LTS 上。

启动时出现的错误类似于“请插入正确的 root=boot 内核选项...”

为什么这这么难,为什么 grub2 xen 有这么多不同的例子?有些把 /boot 放在前面,有些只是 /。我尝试将 /boot 放在前面,但这没有帮助。还有一些有--set=root uuid,而我所有的其他工作条目只有--set uuid。这与不同的 grub2 版本有关吗?

hoo*_*enz 7

回答我自己的问题。这个 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
}
Run Code Online (Sandbox Code Playgroud)

但是,我也遇到了内核问题。所以我不得不重建它。一旦我这样做了,一切就结束了。

  • +1 分享解决此问题的技术细节,因为这可能对其他人有帮助。 (2认同)