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 kernel ...»

Почему это так сложно и почему так много разных примеров grub2 xen? некоторые ставят /boot впереди некоторые просто /. Я попытался положить /boot впереди, но это не помогло. Также у некоторых есть --set = root uuid, а у всех остальных моих рабочих записей просто есть --set uuid. это как-то связано с другой версией grub2?

2 ответа2

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
}

Однако у меня тоже была проблема с ядром. Таким образом, я должен был восстановить это. Как только я это сделал, все пошло.

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:147 , 10_linux:194-201

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .