Добавление постоянного статического маршрута к защищенному встроенному устройству QNX Unix
Я начну с того, что простите мое невежество, если это простая задача. У меня достаточно знаний о *nix, чтобы его настроить и обойти, но эта встроенная версия немного отличается (отсутствует более 90% стандартных команд), и я столкнулся с препятствиями.
У меня есть устройство под управлением QNX 6.5.0 SP1. У меня есть доступ через его последовательный порт и оттуда у меня есть доступ к оболочке с суперпользователем. Устройство имеет два физических сетевых интерфейса, en0 и en1. При запуске устройство использует файл net.mgr для установки своей сетевой информации. Этот файл назначает IP-адреса каждому интерфейсу, но, кажется, поддерживает только один шлюз. Мы собираемся добавить что-то ко второму порту Ethernet и нуждаемся в команде route, поэтому я подключил его к коробке и использовал стандартную команду route для добавления маршрута. Это работало как задумано, но изменение не было сохранено после перезагрузки.
Я пытаюсь выяснить, как заставить дополнительную команду маршрута сохраняться при перезагрузке, но большинство методов, которые я нашел, не работают. Там нет cron или тому подобное. Вещи, которые я пробовал:
- Изменение файла net.cfg и добавление другого шлюза. Это не работает, так как используется только последний введенный шлюз и не допускает кратные
- Измените файл net.cfg и добавьте команду route. Знал, что это не сработает, но все равно попробовал.
- Добавление файла /etc/rc.local с помощью команды route. Файл сохраняется, но, кажется, игнорируется при запуске.
- Добавление файла /etc/rc.d/rc.local с помощью команды route. (Согласно документации QNX по адресу http://www.qnx.com/developers/docs/6.5.0/topic/com.qnx.doc.neutrino_user_guide/starting.html?resultof=%22rc%2Elocal%22%20). Файл сохраняется между загрузками, но также игнорируется.
- Попытка изменить /sys/bin/rc.local. Мои изменения игнорируются (не записываются в файл). Я также не могу отключить этот файл по FTP, он выглядит как 0-байтовый файл, в то время как "cat rc.local" показывает его содержимое, и я могу убедиться, что он использует этот файл на основе этого содержимого. Попробовал 'cat >rc.local' и скопировал старое содержимое, затем добавил мою команду маршрута, но файл не изменился. Chmod -x rc.local возвращает файл не существует, но он существует, и я на 99% уверен, что это выполняется при загрузке.
Я думаю, что rc.local в папке / sys / bin только для чтения? Я знаю, что одним из двух монтирований является /ffs0, и / sys / bin находится внутри этого. Я попытался смонтировать его с помощью 'mount -uw /ffs0', внести изменения, а затем перевернуть его обратно только для чтения, но, похоже, это не работает. Так что у меня закончились идеи.
1 ответ
Первое, что нужно понять в QNX 6.X, это наличие загрузочного образа, который запускается. Этот образ обычно содержит микроядро и основные драйверы (диск и т. Д.). Однако он может быть полностью автономным (например, микроядро, драйверы, каждая команда, файлы конфигурации и т. Д.) Для случаев, когда имеется только флэш-память. В этом случае будет невозможно что-либо изменить, даже если есть жесткий диск, содержащий файлы конфигурации (как в /etc/rc.d) и другие каталоги.
Вы можете получить некоторую подсказку об этом, посмотрев в /proc/boot. Все в / proc - это то, что находится в загрузочном образе, накачанном в RAM. Это буквально ОЗУ, так что вы видите там, что находится в образе загрузки. Вам может повезти, если вы заглянете в скрипт запуска (это скомпилированный скрипт), если вы можете отключить его ftp и выполнить команду 'strings', чтобы увидеть, что запускаются драйверы и скрипты.
В обычном загрузочном образе QNX (те, что вы видели в ссылках), скрипт запуска передаст управление в /etc/rc.d/rc.sysinit и /etc/rc.d/rc.local, как только запустит драйвер диска и несколько других предметов первой необходимости. Но встраиваемые системы, подобные вашей, не должны этого делать. Вот почему ваши изменения в этих файлах не вступают в силу.
Я никогда не слышал о /sys/bin/rc.local. Это не является частью обычной установки QNX 6, так что это то, что кто-то сделал, добавил устройство. Каталог sys на самом деле может быть просто программной ссылкой обратно в область RAM загрузочного образа (вот почему вы ничего не можете изменить там, так как это RAM). Вы можете определить, так ли это, с помощью 'ls -lrt' в корневой файловой системе (т. Е. Там, где находится sys) и посмотреть, является ли это программной ссылкой обратно в / proc или в другое место.
Тим