|
Дата: 28 Авг, 16:35
Добрый день.
Вот довелось столкнуться с необходимостью построить свою ifs под конкретную систему. В частности промышленный ПК.
Что мне надо конкретно - собственно загружаемый образ qnx, сеть, фотон и свое приложение.
Прочитал стать по созданию билд-файлов, в том числе и на этом сайте. Максимум что у меня получилось - создать загружаемый образ с настройкой сети и монтированием корневой системы. причем в качестве hard disk стоит КомпактФлеш, который распознается как Вторичный Мастер ИДЕ.
прилагаю свой билд файл
[virtual=x86,bios +compress] boot = {
startup-bios -s64k
PATH=/proc/boot procnto
}
[+script] startup-script = {
PATH=/proc/boot:/usr/bin:/bin
LD_LIBRARY_PATH=/proc/boot:/usr/lib:/lib
# Programs require the runtime linker (ldqnx.so) to be at a fixed location
procmgr_symlink ../../proc/boot/libc.so.2 /usr/lib/ldqnx.so.2
# sh=/bin/ksh
#IP="192.168.1.101"
#GATEWAY="192.168.1.50"
# Start up some consoles
# devc-con -n4 &
# reopen /dev/con1
#
# display_msg Welcome to QNX Neutrino on an PC compatible BIOS system
# Start the pci server
seedres
pci-bios &
waitfor /dev/pci
io-usb -duhci -dohci -dehci &
# Start ethernet driver
io-net -dspeedo -ptcpip
waitfor /dev/socket
ifconfig en0 192.168.1.101 netmask 255.255.255.0
route add default 192.168.1.50
display_msg "Detecting EIDE..."
devb-eide cam blk automount=hd0:/:qnx4 &
# display_msg "Starting sysinit ..."
# /bin/sh -c /etc/system/sysinit
#Start consoles
devc-con -n2 &
# Some common servers
pipe &
mqueue &
devc-ser8250 -e &
devc-pty &
# These env variables inherited by all the programs which follow
SYSNAME=nto
TERM=qansi
# Start some extra shells on other consoles
reopen /dev/con2
[+session] sh &
# reopen /dev/con3
# [+session] sh &
# Start a high priority shell just in case....
# reopen /dev/con4
# [pri=25 +session] sh &
# Start the main shell
reopen /dev/con1
[+session] sh
# [+session] login -p
}
# Cheat and make the /temp point to the shared memory area...
[type=link] /tmp=/dev/shmem
# Redirect console messages for syslog
# [type=link] /dev/console=/dev/con1
#[type=link] /bin/sh=/bin/ksh
# We use the "c" shared lib (which also contains the runtime linker)
libc.so
libcam.so
io-blk.so
cam-disk.so
fs-qnx4.so
fs-dos.so
libhiddi.so
libusbdi.so
devu-ehci.so
devu-uhci.so
devu-ohci.so
devh-usb.so
devh-ps2ser.so
# Just incase someone needs floating point...
# fpemu.so.2
/lib/dll/devn-speedo.so
/lib/dll/npm-tcpip.so
libsocket.so
/etc/termcap = /etc/termcap
/etc/hosts = /etc/hosts
[type=link] /usr/lib/libc.so.1 = /proc/boot/libc.so.1
[type=link] /usr/lib/libc.so.2 = /proc/boot/libc.so.2
[type=link] /usr/lib/libsocket.so.1 = /proc/boot/libsocket.so.1
# The files above this line can be shared by mutiple processes
[data=c]
# Executables must currently be below this line
# Include a console driver
devc-con
# Include pci server
pci-bios
seedres
ifconfig
io-net
route
date
ping
devb-eide
devb-umass
umass-enum
umass-enum.cfg
io-usb
io-hid
devc-con-hid
mount
ksh
# Other executables
pdebug
pipe
mqueue
devc-ser8250
devc-pty
ls
cat
pidin
uname
ln
clear
#slogger
#sloginfo
unlink_list={
/proc/boot/devb-*
}
Но есть маленькое НО.
Согласно статье "Фотон во страиваемых системах" я сделал все один к одному. Пытаюсь запустить стартовый скрипт фотона, и в консоли получаю ответ
./ph-start : /bin/sh no such file
где ph-start - стартовый скрипт фотона, который лежит в папке /phembed.
/bin - содержит файлы ksh,fesh и сделал символическую ссылку на sh -> /bin/ksh
где я ошибся? помогите пожалуйста, кто с этим сталкивался.
Заранее спасибо, а пока буду дальше читать маны...
|
|
Дата: 29 Авг, 07:02
Как раз в build файле вы почему-то закоментировали ссылку sh->ksh. Зачем? После запуска devb-eide сделайте waitfor для чего-нибудь на диске, чтобы убедиться что все подмонтировалось. И еще - зачем вы все пихаете в загрузочный образ? Многое из того, что вы делаете можно сделать из скрипта по типу как в sysinit, многие исполнимые файлы не нужные в процессе загрузки можно просто скопировать в файловую систему, которую вы монтируете, а не в образ тулить.
|
|
Дата: 29 Авг, 09:59
Поддержу предыдущего оратора. У меня в .boot только devc-con, devb-eide и запуск sysinit с жесткого диска.
|
|
Дата: 29 Авг, 12:17
я с билд файлами только столкнулся, поэтому и выглядит он не очень практично. если не трудно, могли бы вы выложить образец своего билд файла?
|
|
Дата: 29 Авг, 14:59
вобщем у меня так и не получается сделать что бы sh корректно работал, пишет что его нет..
если явно указать ksh то работает, но опять же скрипты из консоли не запускаются...
я уже сделал минимальный бил файл такого вида
[virtual=x86,bios +compress] boot = {
startup-bios -s64k
PATH=/proc/boot procnto
}
[+script] startup-script = {
PATH=/proc/boot:/usr/bin:/bin:/usr/sbin:/sbin
LD_LIBRARY_PATH=/proc/boot:/usr/lib:/l ib
# These env variables inherited by all the programs which follow
# SYSNAME=nto
# TERM=qansi
# Programs require the runtime linker (ldqnx.so) to be at a fixed location
procmgr_symlink ../../proc/boot/libc.so.2 /usr/lib/ldqnx.so.2
# Start the pci server
seedres
pci-bios &
waitfor /dev/pci
devb-eide cam blk automount=hd0:/:qnx4
waitfor /.diskroot
#Start consoles
devc-con -n1 &
# Start some extra shells on other consoles
# reopen /dev/con2
# [+session] ksh &
# Start the main shell
reopen /dev/con1
[+session] ksh
[+session] login -p
}
# We use the "c" shared lib (which also contains the runtime linker)
libc.so
libcam.so
io-blk.so
cam-disk.so
fs-qnx4.so
fs-dos.so
# The files above this line can be shared by mutiple processes
[data=c]
# Executables must currently be below this line
# Include a console driver
devc-con
# Include pci server
pci-bios
seedres
devb-eide
mount
ksh
login
ls
# Other executables
unlink_list={
/proc/boot/devb-*
}
но я не могу понять, где я ошибаюсь...
|
|
Дата: 8 Сен, 09:47 · Поправил: olej
|