Что такое двоичное имя ядра QNX

Я работаю над проектом, в котором базовое ядро ​​​​из QNX, и все исходные коды ядра поставляются в виде двоичных файлов, например, слой CAM для блочных драйверов присутствует как libcam.a, но не смог найти точный двоичный файл ядра, который должен быть там целиком исходное дерево проекта.

Может кто подскажет как это узнать??


person Amit Singh Tomar    schedule 17.02.2013    source источник
comment
all the Kernel sources are coming as binary - Что?   -  person jweyrich    schedule 17.02.2013
comment
Да, почти все исходные коды ядра поставляются в виде двоичных файлов, мы написали несколько оболочек для подключения к этим двоичным файлам, но не уверены, какой из них является двоичным файлом ядра.   -  person Amit Singh Tomar    schedule 17.02.2013
comment
Как вы думаете, почему вам нужно заботиться о ядре?   -  person Ignacio Vazquez-Abrams    schedule 17.02.2013
comment
Что ж, нам нужно узнать из кода загрузчика, как вызывается ядро, а также некоторые другие причины.   -  person Amit Singh Tomar    schedule 17.02.2013


Ответы (1)


Работающим ядром будет процесс с PID 1. Используйте ps -e, чтобы увидеть его.

В моем случае это procnto. Если вы используете инструментированное ядро ​​(для отладки), это procnto-instr.

 ps -e
       PID TTY          TIME CMD
         1 ?        12:25:42 procnto
      4098 ?        00:00:00 pci-bios
      4099 ?        03:40:47 io-usb
      4100 ?        00:00:00 io-hid
      4101 ?        00:00:00 devc-con-hid
      4102 ?        00:58:14 devb-eide
     20487 ?        00:00:00 /sbin/tinit
     20488 ?        00:00:00 slogger
     24585 ?        00:00:25 pipe
     28682 ?        00:10:22 mqueue

В зависимости от того, как вы создаете файл IFS, у вас может быть файл .build, который включает что-то вроде следующего:

#
# The build file for QNX Neutrino booting on a PC
#
[linker="ntox86-ld -T$QNX_TARGET/x86/lib/nto.link %(h!=0, -Ttext 0x%t%)%(d!=0, -Tdata 0x%d%) -o%o %i %[M -L%^i -uinit_%n -lmod_%n%]"]
[virtual=x86,bios +compress] boot = {
    startup-bios

    # PATH is the *safe* path for executables (confstr(_CS_PATH...))
    # LD_LIBRARY_PATH is the *safe* path for libraries (confstr(_CS_LIBPATH))
    #    i.e. This is the path searched for libs in setuid/setgid executables.
    PATH=/proc/boot:/bin:/usr/bin:/opt/bin LD_LIBRARY_PATH=/proc/boot:/lib:/usr/lib:/lib/dll:/opt/lib procnto

} ...

Последний procnto говорит загрузчику, какое ядро ​​использовать. См. mkifs для получения дополнительной информации.

person kmort    schedule 06.03.2013
comment
Спасибо @Kmort, в любом случае мы нашли наше ядро ​​​​nto с тем же именем procnto-smp-instr. - person Amit Singh Tomar; 08.03.2013
comment
Привет, kmort, есть ли способ связать двоичный файл ядра Linux из этого файла сборки, пытался сделать это, но его сообщение не найдено - person Amit Singh Tomar; 08.03.2013
comment
Я действительно сомневаюсь в этом. Загрузчик QNX, вероятно, подавился бы такой вещью. Вам бы пришлось разбираться со всей проблемой ELF... Наверное, лучше придумать что-нибудь другое. Почему бы просто не использовать загрузчик Linux? - person kmort; 08.03.2013
comment
Наше требование заключается в том, что мы можем изменить этот файл сборки только для поддержки загрузки ядра Linux вместо qnx. При сборке нашей IFS мы получаем ошибку Не удается найти необходимый компоновщик для ядра Linux, и в основном это было выдано инструментом mkxfs, хотя у нас есть заголовок elf в нашей корзине ядра Linux. Есть ли способ, которым вы действительно хотите предложить это сделать?? - person Amit Singh Tomar; 08.03.2013
comment
Это довольно сложно. Вам придется копаться в загрузчике. Или поговорите с представителями QNX на сайте www.QNX.com. Удачи. :-) - person kmort; 08.03.2013
comment
Спасибо Kmort за вашу помощь, нам нужно выяснить, как предоставить линкеру поддержку ссылок на linux bin, и теперь мы знаем, какой линкер у нас есть, нам действительно интересно сначала узнать значение [linker = ntox86-ld -T$QNX_TARGET/x86/lib/nto.link %(h!=0, -Ttext 0x%t%)%(d!=0, -Tdata 0x%d%) -o%o %i %[M - L%^i -uinit_%n -lmod_%n%]]?? где именно нам нужно определить эту строку в сборке, чтобы настройка по умолчанию не переопределялась. - person Amit Singh Tomar; 09.03.2013