LINUX.ORG.RU

Загрузка debin на x86 без видеокарты ( консоль через ttyS0)

 , ,


0

1

Добрый вечер

Имеем: загрузочную USB-FLASH с ядром от debian, initrd от него же, ядро грузиться с параметром: console=ttyS0,115200

Пробую запустить на 2х системах:
1) обычный PC со встроенной видеокартой - загрузка происходит нармально, после завершения запускается и успешно работает консоль (процесс sh /init)
2) x86 система без видеокарты, при загрузке в tyyS0 выводятся cистемные сообщения, по окончанию загрузки консоль не запускается, при этом система жива ( реагирует на подключение USB устройств ), системеый вывод содержит такие строки:

[ 0.000000] Kernel command line: ro debug loglevel=7 debug_lock_verbos=1 debug_objects console=ttyS0,115200 BOOT_IMAGE=vmlinuz
..
[ 0.000000] Console: colour dummy device 80x25
[ 0.000000] console [ttyS0] enabled
...
[ 0.712764] Unpacking initramfs...
...
[ 1.781151] Serial: 8250/16550 driver, 4 ports, IRQ sharing enabled
[ 1.787549] serial8250: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A
т.е. ttyS0 вроде как обещан, но не работает как нужно

Пытался делать следующее:

-в /init скрипте вставлять printf первой строкой, на первой системе printf работает, на второй ничего не выводит, т.е. процесс загрузки первой системы отличается от второй уже на момент захода в /init

-внутри /init пересоздать ttyS0
rm /dev/ttyS0
mknod -m 660 /dev/ttyS0 c 4 64
chown root:tty /dev/ttyS0

результата нет

Подскажите куда копать?
И в чем принципиальное отличие механизма вывода системных сообщений (тех которые выводит dmesg) и вывода в последовательный порт через ttyS0, как может первое работать а второе нет?


А чего ты хочешь? Если «консоль не запускается» означает «нет приглашения к логину», то поправь /etc/inittab.

tailgunner ★★★★★ ()
Ответ на: комментарий от tailgunner

Если «консоль не запускается» означает «нет приглашения к логину»

означает нет приглашения консоли ( (initfsram)... )

то поправь /etc/inittab

intrd его не содержит

А чего ты хочешь?
хочу подсказку где искать, почему у меня на одной системе в COM порт идет и системный вывод, и printf из /init и приглашение консоли в итоге, а на другой системе только системный вывод. Т.е. COM порт системе доступен, но выводить туда консоль она не жалает.
printf ставил первой строкой в /init, если я правильно понимаю то это еще до загрузки модулей и прочих скриптов из initrd.


как из /init скрипта сделать вывод системного сообщения (тех что показывает dmesg )?

pdk ()
Ответ на: комментарий от pdk

поправь /etc/inittab

intrd его не содержит

Погрепай его на предмет запуска getty.

хочу подсказку где искать, почему у меня на одной системе в COM порт идет и системный вывод, и printf из /init и приглашение консоли в итоге, а на другой системе только системный вывод.

Приглашение идет на то устройство, на котором запущен getty (mingetty, agetty).

как из /init скрипта сделать вывод системного сообщения (тех что показывает dmesg )?

Если ты хочешь запустить dmesg и увидеть его печать, то сначала нужно обеспечить стандартный вывод, что возвращает нас к запуску getty.

tailgunner ★★★★★ ()
Ответ на: комментарий от tailgunner

Погрепай его на предмет запуска getty.

следов getty там нет

Добавил в /init
строчку
ls /proc/tty/driver > /dev/kmsg
-системные сообщения говорят что /proc/tty/driver/serial имеется (драйвер tty)
попытка посмотреть содержимое
cp /proc/tty/driver/serial /dev/kmsg
к успеху не приводит - в выводе системы пусто

куда копать дальше пока не понимаю(

pdk ()
Ответ на: комментарий от Slackware_user

в опциах загрузки ядра основной консолью ttyS0 надо прописать.

это не поможет, программу login запускает getty

dimon555 ★★★★★ ()
Ответ на: комментарий от dimon555

ну то что консоль на ttyS0 надо прописать это само собой.

просто сталкивался что иногда не стартует без консоли ядра на ttyS0

Slackware_user ★★★★★ ()
Ответ на: комментарий от pdk

Почему ″cp″, а не ″cat /proc/tty/driver/serial ″?

-в /init скрипте вставлять printf первой строкой, на первой системе printf работает

Какой скрипт? Какой printf? Вы пробовали делать ″echo Bla-Bla >> /dev/ttyS0″?

mky ★★★★★ ()
Ответ на: комментарий от mky

да, пробовал, результата нет
/init - скрипт из initrd который запускается сразу после загрузки ядра, подгружает модули, монтирует файловую систему (если она есть - у меня нет)
системная консоль на COM1 работает (на COM1 она попала из-за параметра ядра console=ttyS0 ), а весь вывод явно завязанный на ttyS0 нет ( echo, printf, cp )

pdk ()
Ответ на: комментарий от pdk

Если у вас во второй системе работает вывод через ″/dev/kmsg″, то отлаживайте через него.

cat /proc/tty/driver/serial >> /dev/kmsg

Посмотрите, есть ли файл ″/dev/console″, посмотрите, что пишется в stderr при попытке вывода (printf) в /dev/ttyS0.

mky ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.