файл компоновки для монтирования целевой файловой системы NFS;
файл qnxbasedma.build;
файл компоновки, который не использует diskboot;
файл профиля .profile;
файл .kshrc;
конфигурационные файлы для утилиты spooler;
аутентификация для протокола PPP с CHAP между двумя узлами с ОСРВ Neutrino;
#############################################################################
## QNX Neutrino 6.x on the fictitious ABC123 board
###############################################################################
## SUPPORTED DEVICES:##
## SERIAL: RS-232 ports UART0 and UART1
## PCI:4 PCI slots
## NETWORK: AMD 79C973
## FLASH:4MB Intel Strata Flash
## USB:UHCI USB Host Controller
##
## - For detailed instructions on the default example configuration for
## these devices see the "CONFIGURING ON-BOARD SUPPORTED HARDWARE"
## section below the build script section, or refer to the BSP docs.
## - Tip: Each sub-section which relates to a particular device is marked
## with its tag (ex. SERIAL). You can use the search features of
## your editor to quickly find and add or remove support for
## these devices.
##
###########################################################################
##
## NOTES:
##
###########################################################################
###########################################################################
## START OF BUILD SCRIPT
###########################################################################
[image=0x800a0000]
[virtual=armle,srec] .bootstrap = {
###########################################################################
## default frequency for 4kc is 80MHz; adjust -f parameter for different
## frequencies
###########################################################################
startup-abc123 -f 80000000 -v
PATH=:/proc/boot procnto-32 -v
}
[+script] .script = {
procmgr_symlink ../../proc/boot/libc.so.3 /usr/lib/ldqnx.so.2
display_msg Welcome to QNX Neutrino 6.x on the ABC123 board
#######################################################################
## SERIAL driver
#######################################################################
devc-ser8250 -e -c1843200 -b38400 0x180003f8,0x80020004 \
0x180002f8,0x80020003 &
waitfor /dev/ser1
reopen /dev/ser1
slogger &
pipe &
#######################################################################
## PCI server
#######################################################################
display_msg Starting PCI server...
pci-abc123 &
waitfor /dev/pci 4
#######################################################################
## FLASH driver
#######################################################################
# display_msg Starting flash driver...
#
# devf-abc123 &
#######################################################################
## NETWORK driver
## - substitute your IP address for 1.2.3.4
#######################################################################
display_msg Starting on-board ethernet with the v6 TCP/IP stack...
io-pkt-v6-hc -dpcnet
waitfor /dev/io-net/en0 4
ifconfig en0 1.2.3.4
#######################################################################
## REMOTE_DEBUG (gdb or Momentics)
## - refer to the help documentation for the gdb, qconn and the IDE
## for more information on remote debugging
## - the commands shown require that NETWORK be enabled too
#######################################################################
# devc-pty &
# waitfor /dev/ptyp0 4
# qconn port=8000
#######################################################################
## USB driver
#######################################################################
# display_msg Starting USB driver...
#
# io-usb -duhci &
# waitfor /dev/io-usb/io-usb 4
#######################################################################
## These env variables are inherited by all the programs which follow
#######################################################################
SYSNAME=nto
TERM=qansi
PATH=:/proc/boot:/bin:/sbin:/usr/bin:/usr/sbin
LD_LIBRARY_PATH=:/proc/boot:/lib:/usr/lib:/lib/dll
#######################################################################
## NFS_REMOTE_FILESYSTEM
## - This section is dependent on the NETWORK driver
## - Don’t forget to properly configure and run the nfsd daemon on the
## remote file server.
## - substitute the hostname or IP address of your NFS server for
## nfs_server. The server must be exporting
## "/usr/qnx630/target/qnx6/armle".
#######################################################################
display_msg Mounting NFS filesystem...
waitfor /dev/socket 4
fs-nfs3 nfs_server:/usr/qnx630/target/qnx6/armle /mnt
[+session] ksh &
}
[type=link] /bin/sh=/proc/boot/ksh
[type=link] /dev/console=/dev/ser1
[type=link] /tmp=/dev/shmem
###########################################################################
## uncomment for NFS_REMOTE_FILESYSTEM
###########################################################################
[type=link] /bin=/mnt/bin
[type=link] /sbin=/mnt/sbin
[type=link] /usr/bin=/mnt/usr/bin
[type=link] /usr/sbin=/mnt/usr/sbin
[type=link] /lib=/mnt/lib
[type=link] /usr/lib=/mnt/usr/lib
[type=link] /etc=/mnt/etc
libc.so.2
libc.so
libm.so
###########################################################################
## uncomment for NETWORK driver
###########################################################################
devn-pcnet.so
libsocket.so
###########################################################################
## uncomment for USB driver
###########################################################################
# devu-uhci.so
# libusbdi.so
[data=c]
devc-ser8250
###########################################################################
## uncomment for REMOTE_DEBUG (gdb or Momentics)
###########################################################################
# devc-pty
# qconn
###########################################################################
## uncomment for PCI server
###########################################################################
pci-abc123
pci
###########################################################################
## uncomment for FLASH driver
###########################################################################
# devf-abc123
# flashctl
###########################################################################
## uncomment for NETWORK driver
###########################################################################
io-pkt-v6-hc
ifconfig
nicinfo
netstat
ping
###########################################################################
## uncomment for USB driver
###########################################################################
# io-usb
# usb
###########################################################################
## uncomment for NFS_REMOTE_FILESYSTEM
###########################################################################
fs-nfs3
###########################################################################
## general commands
###########################################################################
ls
ksh
pipe
pidin
uname
slogger
sloginfo
slay
###########################################################################
## END OF BUILD SCRIPT
###########################################################################
# Файл компоновки для загрузки ОСРВ QNX Neutrino на РС
#
[virtual=x86,bios +compress] boot = {
# Резервируется 64k видеопамяти для работы с несколькими видеокартами
startup-bios -s64k
# В переменной PATH задается *безопасный* путь для исполняемых файлов
# (confstr(_CS_PATH...))
# В переменной LD_LIBRARY_PATH задается *безопасный* путь для библиотек
# (confstr(_CS_LIBPATH)), т. е. на этом пути происходит поиск библиотек
# для исполняемых файлов в setuid/setgid.
LD_LIBRARY_PATH=/proc/boot:/lib:/usr/lib:/lib/dll:/opt/lib \
procnto-instr
}
[+script] startup-script = {
# Для экономии памяти в загрузочном образе необходимо использовать
# библиотеку libc! Для ускорения (меньшего просмотра символической
# информации) вместо указателя на libc.so
# используйте указатель на libc.so.3
procmgr symlink ../../proc/boot/libc.so.3 /usr/lib/ldqnx.so.2
# По умолчанию для пользовательских программ ставится приоритет 10,
# для остальных приоритет назначает планировщик (pri=10o)
# Для "diskboot" нужно указать, что это загрузочный жесткий диск (-b1)
# Для "diskboot" нужно задать использование DMA для IDE-дисков (-D1)
# Сделайте для текстовых консолей переправление "-n4" на
# "devc-con" (-o)
# Добавление "-e" приведет также к монтированию файловой системы
# Linux ext2.
[pri=10o] PATH=/proc/boot diskboot -b1 -D1 -odevc-con,-n4
}
# Включение текущей библиотеки "libc.so".
# Она будет создана как реальный файл с внутренним именем "SONAME",
# а "libc.so" будет иметь с ним символьную связь.
# Символьная связь будет указывать на последнюю версию
# "libc.so.*", поэтому если нужна более ранняя версия библиотеки libc
# (например, libc.so.2), то добавьте ее перед этой строкой
libc.so
libc.so.2
libc.so
libhiddi.so
libusbdi.so
# Включите все файлы связи файловых систем по умолчанию
libcam.so
io-blk.so
cam-disk.so
fs-qnx4.so
fs-dos.so
fs-ext2.so
cam-cdrom.so
fs-cd.so
# USB драйверы ввода-вывода для консольного режима
devu-ehci.so
devu-ohci.so
devu-uhci.so
devh-usb.so
devh-ps2ser.so
# Эти программы нужно запускать только один раз из образа загрузки.
# "data=uip" будет расходовать меньше памяти, т. к. ОЗУ из образа
# загрузки будет использоваться напрямую без копирования данных
# (что, например, делает по умолчанию "data=cpy"). Когда программы
# уже были один раз запущены, они разрывают связь с /proc/boot.
[data=uip]
seedres
pci-bios
devb-eide
devb-amd
devb-aha2
devb-aha4
devb-aha7
devb-aha8
devb-adpu320
devb-ncr8
devb-umass
devb-ahci
devb-mvSata
umass-enum
umass-enum.cfg
io-usb
io-hid
diskboot
slogger
fesh
devc-con
devc-con-hid
#
# Файл компоновки для загрузки QNX Neutrino на ПК
#
[virtual=x86,bios +compress] boot = {
startup-bios -s64k
PATH=/proc/boot:/bin:/usr/bin LD_LIBRARY_PATH=/proc/boot:\
/lib:/usr/lib:/lib/dll procnto-smp
}
[+script] startup-script = {
display_msg " "
display_msg "Neutrino Inside! (QNX 6.3.0)"
display_msg " "
procmgr_symlink ../../proc/boot/libc.so.3 /usr/lib/ldqnx.so.2
display_msg "---> Starting PCI Services"
seedres
pci-bios
waitfor /dev/pci
display_msg "---> Starting Console Manager"
devc-con -n8
waitfor /dev/con1
reopen /dev/con1
display_msg "---> Starting EIDE Driver"
devb-eide blk cache=64M,auto=partition,vnode=2000,ncache=2000,\
noatime,commit=low dos exe=all
waitfor /dev/hd0
waitfor /dev/hd1
# Смонтируйте одну файловую систему QNX 4 как /, а другую как /home.
# Смонтируйте также раздел DOS и CD-дисковод.
mount /dev/hd0t79 /
mount /dev/hd1t78 /home
mount -tdos /dev/hd1t12 /fs/hd1-dos
mount -tcd /dev/cd0 /fs/cd0
display_msg "---> Starting /etc/system/sysinit"
ksh -c /etc/system/sysinit
}
libc.so
libcam.so
io-blk.so
cam-disk.so
fs-qnx4.so
fs-dos.so
fs-ext2.so
cam-cdrom.so
fs-cd.so
[data=c]
seedres
pci-bios
devb-eide
slogger
ksh
devc-con
mount
# Содержимое файла .profile по умолчанию
if test "$(tty)" != "not a tty"; then
echo 'edit the file .profile if you want to change your environment.'
echo 'To start the Photon windowing environment, type "ph".'
fi
EDITOR — путь к любимому текстовому редактору (по умолчанию используется vi).
ENV — имя профиля, который должен запустить интерпретатор ksh каждый раз, когда запускается оболочка.
export EDITOR=/usr/local/bin/jed
export ENV=$HOME/.kshrc
alias rm="rm -i"
alias ll="ls -l"
export PS1='$(pwd) $ '
используется псевдоним для включения интерактивного режима команды rm; в этом режиме по команде rm перед удалением файла запрашивается подтверждение операции; интерактивный режим поддерживается также командами cp и mv;
создается псевдоним ll, через который команда
ls запускается с ключом
-l; это приводит к выдаче
расширенного листинга, включающего размер файла,
установленные права доступа и т. д.;
изменяется вид первичной подсказки, чтобы включить в нее текущий рабочий каталог (если вы не являетесь пользователем с правами root, то подсказка по умолчанию имеет вид $); можно также изменить вторичную подсказку, установив значение для переменной окружения PS2.
export PS1="$(pwd) $ "
PNPCMD=POSTSCRIPT
#----------------------------------------------------------------------
#
# Указанные далее макросы разворачиваются для строки команд фильтра:
# $d — устройство (Device);
# $m — id модели/производителя PnP;
# $n — имя принтера;
# $s — имя каталога спулера (Spooldir);
# $$ — реальный символ $.
#
#----------------------------------------------------------------------
FileVersion = 2
# имя_принтера — это имя, которое вы задали в файле /etc/printcap.
Filter = ps:$d:lpr -Pимя_принтера
Filter = phs:ps:phs-to-ps
Supported Resolution = 300 * 300,
600 * 600,
1200 * 1200
Supported PaperSize = 8500 * 11000 : Letter,
8500 * 14000 : Legal
Supported Orientation = 0 : Portrait,
1 : Landscape
Supported Intensity = 0 : Min,
100 : Max
Supported InkType = 1 : "B&W",
3 : "Color (CMY)",
4 : "Color (CMYK)"
Resolution = 600 * 600
PaperSize = 8500 * 11000 : Letter
Orientation = 0 : Portrait
Intensity = 50
InkType = 4 : "Color (CMYK)"
NonPrintable = 500:Left, 500:Top, 500:Right, 500:Bottom
#----------------------------------------------------------------------
if PNPID=HEWLETT-PACKARDHP_850DDE
PNPSTR=MFG:HEWLETT-PACKARD;MDL:HP 8500;CLS:PRINTER;CMD:POSTSCRIPT;
Supported PaperSize = 8500 * 11000 : Letter,
8500 * 14000 : Legal,
7250 * 10500 : Exec,
11000 * 17000 : B,
8262 * 11692 : A4,
5846 * 8262 : A5,
7000 * 9875 : B5,
11692 * 16524 : A3
#----------------------------------------------------------------------
if PNPID=HEWLETT-PACKARDHP_25A854
PNPSTR=MFG:HEWLETT-PACKARD;MDL:HP 2500C;CLS:PRINTER;CMD:PCL,MLC,PML,POSTSCRIPT;
Supported PaperSize = 8500 * 11000 : Letter,
8500 * 14000 : Legal,
7250 * 10500 : Exec,
11000 * 17000 : B,
8262 * 11692 : A4,
5846 * 8262 : A5,
7000 * 9875 : B5,
11692 * 16524 : A3
#----------------------------------------------------------------------
PNPCMD=POSTSCRIPT
#----------------------------------------------------------------------
#
# Указанные далее макросы разворачиваются для строки команд фильтра:
# $d — устройство;
# $m — id модели/производителя PnP;
# $n — имя принтера;
# $s — имя каталога спулера (Spooldir);
# $$ — реальный символ $.
#
#----------------------------------------------------------------------
FileVersion = 2
# x.x.x.x is the IP address of the printer
# prt0 is the port used on the printer (in this case, port zero).
Filter = ps:$d:ncftpput -V -E x.x.x.x /prt0
Filter = phs:ps:phs-to-ps
Supported Resolution = 300 * 300,
600 * 600,
1200 * 1200
Supported PaperSize = 8500 * 11000 : Letter,
8500 * 14000 : Legal
Supported Orientation = 0 : Portrait,
1 : Landscape
Supported Intensity = 0 : Min,
100 : Max
Supported InkType = 1 : "B&W",
3 : "Color (CMY)",
4 : "Color (CMYK)"
Resolution = 600 * 600
PaperSize = 8500 * 11000 : Letter
Orientation = 0 : Portrait
Intensity = 50
InkType = 4 : "Color (CMYK)"
NonPrintable = 500:Left, 500:Top, 500:Right, 500:Bottom
#----------------------------------------------------------------------
if PNPID=HEWLETT-PACKARDHP_850DDE
PNPSTR=MFG:HEWLETT-PACKARD;MDL:HP 8500;CLS:PRINTER;CMD:POSTSCRIPT;
Supported PaperSize = 8500 * 11000 : Letter,
8500 * 14000 : Legal,
7250 * 10500 : Exec,
11000 * 17000 : B,
8262 * 11692 : A4,
5846 * 8262 : A5,
7000 * 9875 : B5,
11692 * 16524 : A3
#----------------------------------------------------------------------
if PNPID=HEWLETT-PACKARDHP_25A854
PNPSTR=MFG:HEWLETT-PACKARD;MDL:HP 2500C;CLS:PRINTER;CMD:PCL,MLC,PML,POSTSCRIPT;
Supported PaperSize = 8500 * 11000 : Letter,
8500 * 14000 : Legal,
7250 * 10500 : Exec,
11000 * 17000 : B,
8262 * 11692 : A4,
5846 * 8262 : A5,
7000 * 9875 : B5,
11692 * 16524 : A3
#----------------------------------------------------------------------
PNPCMD=POSTSCRIPT
#----------------------------------------------------------------------
#
# Указанные далее макросы разворачиваются для строки команд фильтра:
# $d — устройство (Device);
# $m — id модели/производителя PnP;
# $n — имя принтера;
# $s — имя каталога спулера (Spooldir);
# $$ — реальный символ $.
#
#----------------------------------------------------------------------
FileVersion = 2
# Для получения доступа к разделяемому принтеру SAMBA нужно, чтобы
# для smbspool была бы установлена переменная окружения DEVICE_URI.
#
# Формат для команды smb, используемый с smbspool,
# который определяется в DEVICE_URI
# Если не требуется имя пользователя и пароль:
# — DEVICE_URI = "smb://сервер/принтер"
# — DEVICE_URI = "smb://рабочая_группа/сервер/принтер"
# Если требуется имя пользователя и пароль:
# — DEVICE_URI = "smb://имя_пользователя:пароль@сервер/принтер"
# — DEVICE_URI =
# "smb://имя_пользователя:пароль@рабочая_группа/сервер/принтер"
#
# где имя_пользователя = имя пользователя в SAMBA
# пароль = пароль в SAMBA
# рабочая_группа = рабочая группа в SAMBA
# сервер = имя сервера в SAMBA
# принтер= имя разделяемого принтера в SAMBA
#
# Использование переменной окружения DEVICE_URI дает возможность
# сделать так, чтобы для smbspool происходил автоматический поиск
# значения, если оно не включено в командную строку.
#
Filter = ps:$d:smbspool 1 NULL none 1 1
Filter = phs:ps:phs-to-ps
Supported Resolution = 300 * 300,
600 * 600,
1200 * 1200
Supported PaperSize = 8500 * 11000 : Letter,
8500 * 14000 : Legal
Supported Orientation = 0 : Portrait,
1 : Landscape
Supported Intensity = 0 : Min,
100 : Max
Supported InkType = 1 : "B&W",
3 : "Color (CMY)",
4 : "Color (CMYK)"
Resolution = 600 * 600
PaperSize = 8500 * 11000 : Letter
Orientation = 0 : Portrait
Intensity = 50
InkType = 4 : "Color (CMYK)"
NonPrintable = 500:Left, 500:Top, 500:Right, 500:Bottom
#----------------------------------------------------------------------
if PNPID=HEWLETT-PACKARDHP_850DDE
PNPSTR=MFG:HEWLETT-PACKARD;MDL:HP 8500;CLS:PRINTER;CMD:POSTSCRIPT;
Supported PaperSize = 8500 * 11000 : Letter,
8500 * 14000 : Legal,
7250 * 10500 : Exec,
11000 * 17000 : B,
8262 * 11692 : A4,
5846 * 8262 : A5,
7000 * 9875 : B5,
11692 * 16524 : A3
#----------------------------------------------------------------------
if PNPID=HEWLETT-PACKARDHP_25A854
PNPSTR=MFG:HEWLETT-PACKARD;MDL:HP 2500C;CLS:PRINTER;CMD:PCL,MLC,PML,POSTSCRIPT;
Supported PaperSize = 8500 * 11000 : Letter,
8500 * 14000 : Legal,
7250 * 10500 : Exec,
11000 * 17000 : B,
8262 * 11692 : A4,
5846 * 8262 : A5,
7000 * 9875 : B5,
11692 * 16524 : A3
#----------------------------------------------------------------------
#!/bin/sh
SERIAL_PORT=$1
DEFAULT_SERIAL_PORT=/dev/ser1
PPPD="/usr/sbin/pppd"
DO_CHAT="chat -v ABORT BUSY ABORT CARRIER ABORT ERROR \
TIMEOUT 32000000 RING ATA TIMEOUT 60 CONNECT \d\d\d"
STTY="/bin/stty"
ECHO="/bin/echo"
LOCAL_IP=10.99.99.1
REMOTE_IP=10.99.99.2
if [ "$SERIAL_PORT" == "" ]; then
SERIAL PORT=$DEFAULT_SERIAL_PORT
fi
#кое-что нужно проинициализировать
$STTY +sane +raw < $SERIAL_PORT
while [ true ]; do
$ECHO "Waiting on modem $SERIAL_PORT..."
$ECHO "Starting PPP services..."
$PPPD connect "$DO_CHAT" debug nodetach auth +chap \
$LOCAL_IP:$REMOTE_IP $SERIAL_PORT
done;
# Разрешаются секретные адреса для клиент-серверной работы
##############################################################
* * "password" *
startup-bios -K8250.2f8.0.57600.1843200.16 -v
PATH=/proc/boot procnto -vvv
}
[+script] startup-script = {
seedres
pci-bios &
waitfor /dev/pci
# Запуск клавиатурной консоли 1
devc-con -n8 &
# Запуск драйвера последовательного порта A
waitfor /dev/con1
reopen /dev/con1
devc-ser8250 -e -b38400
waitfor /dev/ser1
pipe
touch /tmp/syslog
syslogd
devc-pty
io-net -ppppmgr -pttcpip
waitfor /dev/io-net/ip ppp
inetd &
display_msg "[Shell]"
[+session] PATH=/bin:/proc/boot /bin/sh &
}
# Установить указатель для /tmp на область разделяемой памяти...
[type=link] /tmp=/dev/shmem
# Для программ нужно, чтобы компоновщик реального времени
# (ldqnx.so) находился в фиксированном месте
[type=link] /usr/lib/ldqnx.so.2=/proc/boot/libc.so
[type=link] /bin/sh=/bin/ksh
# Мы используем разделяемую C-библиотеку (которая содержит также
# компоновщик реального времени)
libc.so
libsocket.so
# Перечисленные выше файлы могут разделяться несколькими процессами
[data=c]
devc-con
devc-ser8250
devc-pty
pci-bios
seedres
pipe
io-pkt-v4
/bin/echo=echo
/bin/stty=stty
tail
pci
chat
ifconfig
ping
syslogd
touch
./modem ans ppp.sh
# Конфигурирование сервисов (telnetd и т. д.)
inetd
/usr/sbin/telnetd=telnetd
/usr/sbin/tftpd=tftpd
/usr/sbin/pppd=pppd
/bin/login=login
/bin/ksh=ksh
/etc/ppp/chap-secrets = {
# Секретные адреса клиент-серверной конфигурации
#########################################
* * "password" *
}
/etc/syslog.conf = {
*.* /tmp/syslog
}
# Файлы конфигурирования Inetd
/etc/services= /etc/services
/etc/protocols= /etc/protocols
/etc/termcap= /etc/termcap
/etc/passwd= /etc/passwd
/etc/default/login= /etc/default/login
/etc/resolv.conf= /etc/resolv.conf
/etc/shadow = /etc/shadow
/etc/inetd.conf = {
telnet stream tcp nowait root /usr/sbin/telnetd in.telnetd
tftp dgram udp wait root /usr/sbin/tftpd in.tftpd
}
/etc/hosts = {
127.1 localhost.localdomain localhost
10.99.99.1 server server
10.99.99.2 client client
}
pppd connect "chat -v -f/tmp/dial_modem" auth +chap /dev/ser3
ABORT 'NO CARRIER'
ABORT 'ERROR'
ABORT 'BUSY'
'' ATDTxxxxxxx
CONNECT ''