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