. Этот вопрос возникает у меня, когда я пытаюсь заставить гостевую ОС Ubuntu отображать загрузочные сообщения в виртуальной машине QEMU (, например [ 2.34567890123]... и [ ОК ].... ). Здесь у меня есть виртуальная машина QEMU, и хост, и гость — Ubuntu 20.04. Чтобы отобразить загрузочные сообщения гостя в консоли хоста (, то есть в командной строке, которая запускает qemu), я устанавливаю некоторые строки файла гостя /etc/default/grub
следующим образом :
GRUB_TIMEOUT_STYLE=menu
GRUB_TIMEOUT=5
GRUB_TERMINAL_OUTPUT=console
GRUB_CMDLINE_LINUX_DEFAULT=nomodeset
. Затем я запускаю гостя, используя следующую команду:
qemu-system-x86_64 -hda ubuntu.qcow -m 2000 -nographic -serial none
GRUB выводит свой TUI либо в последовательном, либо в текстовом режиме VGA. -nographic
отключает выход VGA, а -serial none
отключает последовательную консоль, поэтому я не вижу никакого GRUB TUI. В консоли отображается только монитор QEMU. Согласно документации-nographic
(здесь ), «QEMU — это простое приложение командной строки» в этой ситуации. Как и обычная программа C/C++, монитор QEMU используетprintf
(или другую функцию, но, пожалуйста, позвольте мне использовать это имя как целесообразное)для отображения его версий, подсказок и других сообщений. Через 5 секунд загружается гостевая ОС Ubuntu. Однако я не вижу никаких загрузочных сообщений, напечатанных в консоли. Мои предыдущие эксперименты показывают, что Ubuntu не использует последовательную консоль, вместо этого он использует текстовый режим VGA для вывода. По этой причине я предполагаю, что если Ubuntu может использовать ту же функцию printf
для вывода своих загрузочных сообщений, QEMU должен иметь возможность отображать их в консоли (, мультиплексированную с монитором QEMU), точно так же, как выходные данные монитора QEMU лечатся. Основываясь на наблюдении, что консоль имеет только вывод монитора QEMU, мой вопрос::
Ubuntu не использует printf
для вывода при загрузке, явно или по умолчанию, возможно, из-за соображений производительности? Если это поведение по умолчанию,какой вариант загрузки я могу использовать, чтобы заставить Ubuntu использовать printf
для вывода загрузочного сообщения (или любой метод вывода, который использует монитор QEMU ), в отличие от текстового режима VGA? В качестве примечания: я погуглил, но не нашел онлайн-документации по параметрам загрузки Ubuntu, таким как nomodeset
, поэтому я не знаю, есть ли какой-либо параметр загрузки Ubuntu, который может указать это. Пожалуйста, поделитесь со мной ссылкой на него, если вы его знаете. Это большая работа, поэтому я не могу сказать наверняка, что упомянул все выше. Если я пропустил упоминание чего-то в вопросе, сообщите мне, и я отредактирую. Спасибо.