Перенаправить консоль Qemu в файл или хост-терминал?

Задний план:

Моя система представляет собой ядро ​​на основе x86 и корневую файловую систему на основе ramfs. Я сделал ramfs на основе архива cpio (который будет использовать boot=/dev/ram0 в качестве RAM-устройства), и у меня возникли некоторые проблемы с файлом init. Все намерение состоит в том, чтобы оптимизировать ramfs до минимума, чтобы поместиться в действительно маленькую систему. Я пытаюсь отладить проблему в файле init. Я запускаю QEMU в Ubuntu 12.10 (Quantal Quetzal), используя команду:

qemu-system-x86_64 -kernel linux-3.9.2/arch/x86/boot/bzImage -serial stdio \
    -append "root=/dev/ram0 console=tty1"

И, как и ожидалось, система переходит в OOPS.

Вопрос:

Я хотел бы увидеть журналы, чтобы выяснить причину сбоя, но я не могу перемещаться в консоли QEMU с помощью клавиши Shift и Page Up/Page Down . Поэтому я попытался перенаправить вывод на хост-терминал, используя проклятия с помощью команды:

qemu-system-x86_64 -kernel linux-3.9.2/arch/x86/boot/bzImage -serial stdio \
    -append "root=/dev/ram0 console=tty1" -curses

Но здесь я снова не могу сориентироваться и найти проблему.

P.S. Если моя система загружается нормально (используя правильную rootfs), я могу перемещаться и видеть сообщения.

Как перенаправить сообщения на терминал или в файл?


person Prajosh Premdas    schedule 07.08.2013    source источник


Ответы (1)


Добавьте следующую команду: console=ttyAMA0 console=ttyS0

qemu-system-x86_64 -kernel linux-3.9.2/arch/x86/boot/bzImage -serial stdio \
    -append "root=/dev/ram0 console=ttyAMA0 console=ttyS0"

Теперь все журналы dmesg будут перенаправлены на вашу консоль.

Еще одна вещь: я наблюдал команду выше, где ваш начальный RAM-диск? то есть - -initrd (initrdimage)

Для загрузки системы нужны два образа, 1) zImage или bZimage (в случае x86) 2) rootfs - корневая файловая система

В вашем случае отсутствует компонент rootfs.

person vinay hunachyal    schedule 07.08.2013
comment
Большое спасибо, все работает отлично, я пропустил опцию -initrd fs/mydisk, которая была моей rootfs - person Prajosh Premdas; 07.08.2013
comment
Если вы добавите эту команду, журнал вывода появится как на qemu, так и на вашем терминале .console=ttyAMA0,115200 console=tty mem=256M highres=off console=ttyS0 - person vinay hunachyal; 07.08.2013
comment
Я вижу проблему, что printk с KERN_DEBUG не отображается ни на одном из терминалов. Мне пришлось изменить их на KERN_INFO. Мой уровень журнала отладки равен 7. Я изменил его при настройке ядра. Может кто-нибудь, пожалуйста, скажите мне, буферизуются ли эти отпечатки на какой-либо другой терминал? - person Prajosh Premdas; 07.08.2013
comment
Как создать файл initrd для загрузки. - person Pratik Singhal; 02.11.2014
comment
@ ps06756 используйте busybox для создания initrd, который содержит минимальную корневую файловую систему, посмотрите @ this скомпилировать busybox"> stackoverflow.com/questions/22409516/how-to-compile-busybox/ - person vinay hunachyal; 03.11.2014
comment
Как выйти из машины в qemu? - person netigger; 04.12.2014
comment
@everlof <Ctrl-a x> выйдет из эмулятора - person vinay hunachyal; 05.12.2014
comment
Как мы можем напечатать hello world для NIOS2. Я использую qemu-system-nios2 -nographic -kernel hello.out - person Zeeshan Hayat; 20.11.2018