如何使用Xen设置grub2?


4

我正在引导新的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.04 LTS。

引导时闪烁的错误类似于“请插入正确的root = boot内核选项...”。

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


我遇到此症状的一个原因是在32位硬件上运行64位Xen。
兰道夫·理查森

事实证明,这与grub2配置有关。这是全64位硬件
Matt

这是否意味着您找到了解决方案?如果是这样,请确实将其发布为答案(以便其他人可以受益),我会投票赞成。=)
兰道夫·理查森

不,我仍然无法启动。
Matt H

当我在NetBSD上安装Xen时,确实可以选择不使用Xen来启动主机操作系统(NetBSD 5可以在没有GRUB或GRUB2的情况下直接启动到Xen中)。GRUB2是否没有提供其他任何引导选项?您使用Xen引导什么参数?
兰道夫·理查森

Answers:


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
}

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


2
+1,用于与技术细节共享此问题的解决方案,因为这可能对其他人有帮助。
兰道夫·理查森

0

为了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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.