Добавление постоянного статического маршрута к защищенному встроенному устройству QNX Unix

Я начну с того, что прошу простить мое невежество, если это простая задача. У меня достаточно знаний о * nix, чтобы настроить его и обойтись без него, но эта встроенная версия немного отличается (отсутствует более 90% стандартных команд), и я столкнулся с препятствием.

У меня есть устройство, на котором работает QNX 6.5.0 SP1. У меня есть доступ через его последовательный порт, а оттуда у меня есть доступ к оболочке с суперпользователем. Устройство имеет два физических сетевых интерфейса, en0 и en1. При запуске устройство использует файл net.mgr для установки своей сетевой информации. . Этот файл назначает IP-адреса каждому интерфейсу, но, похоже, поддерживает только один шлюз. Мы хотим добавить что-нибудь ко второму порту Ethernet, и нам нужна команда маршрута, поэтому я последовательно в поле и использовал стандартную команду маршрута, чтобы добавить маршрут. Это сработало, как и предполагалось, но изменение не было сохранено после перезагрузки.

Я пытаюсь выяснить, как заставить дополнительную команду маршрута сохраняться при перезагрузке, но большинство методов, которые я нашел, не работают. Крон и тому подобное нет. Что я пробовал:

  • Изменение файла net.cfg и добавление еще одного шлюза. Это не работает, так как он просто использует последний введенный шлюз и не позволяет использовать кратные
  • Изменение файла net.cfg и добавление команды маршрута. Знал, что это не сработает, но все равно попробовал.
  • Добавление файла /etc/rc.local с помощью команды route. Файл сохраняется, но кажется, что его игнорируют при запуске.
  • Добавление файла /etc/rc.d/rc.local с командой маршрута. (Согласно документации QNX на http://www.qnx.com/developers/docs/6.5.0/topic/com.qnx.doc.neutrino_user_guide/starting.html?resultof=%22%72%63% 2e% 6c% 6f% 63% 61% 6c% 22% 20 # rc.local ). Файл сохраняется между загрузками, но также игнорируется.
  • Попытка изменить /sys/bin/rc.local. Мои изменения игнорируются (не записываются в файл). Я также не могу отключить этот файл по FTP, он выглядит как 0-байтовый файл, в то время как «cat rc.local» показывает его содержимое, и я могу проверить, что он использует этот файл на основе этого содержимого. Пробовал 'cat> rc.local' и копировал старое содержимое, а затем добавлял мою команду маршрута, но файл не изменился. Команда chmod -x rc.local возвращает файл, который не существует, но он существует, и я на 99% уверен, что ' s что выполняется при загрузке.

Я думаю, что rc.local в папке / sys / bin доступен только для чтения? Я знаю, что одно из двух креплений - это / ffs0, а / sys / bin находится внутри него. Я попытался смонтировать его с помощью 'mount -uw / ffs0', внести свои изменения, затем перевернуть обратно, чтобы он был доступен только для чтения, но это, похоже, не работает. Итак, у меня закончились идеи.

0
задан 1 October 2018 в 16:36
1 ответ

Первое, что нужно понять о QNX 6.X, это то, что существует загружаемый образ, который запускается. Этот образ обычно содержит микроядро и базовые драйверы (диск и т. Д.). Однако он может быть полностью автономным (например, микроядро, драйверы, каждая команда, файлы конфигурации и т. Д.) Для случаев, когда есть только флэш-память. В этом случае будет невозможно что-либо изменить, даже если есть жесткий диск, содержащий файлы конфигурации (например, в /etc/rc.d) и другие каталоги.

Вы можете получить некоторое представление об этом, заглянув в / proc / boot. Все в / proc - это то, что находится в загрузочном образе, загруженном в оперативную память. Это буквально RAM-диск, так что вы видите то, что находится в загрузочном образе. Вам может повезти, если вы заглянете в сценарий запуска (это скомпилированный сценарий), если вы сможете отключить его по ftp и выполнить для него команду 'strings', чтобы увидеть, что такое драйверы и выполняются сценарии.

image (те, которые вы видели в ссылках), сценарий запуска передаст управление /etc/rc.d/rc.sysinit и /etc/rc.d/rc.local после запуска драйвера диска и некоторых других необходимых компонентов. Но встраиваемые системы, подобные вашей, не обязаны этого делать. Вот почему ваши изменения в этих файлах не вступают в силу.

Я никогда не слышал о /sys/bin/rc.local.Это не является частью обычной установки QNX 6, так что это то, что добавил разработчик устройства. Каталог sys на самом деле может быть просто программной ссылкой обратно в область RAM загрузочного образа (вот почему вы не можете там ничего изменить, так как это RAM). Вы можете определить это по 'ls -lrt' в корневой файловой системе (то есть там, где находится sys) и посмотреть, является ли это программной ссылкой обратно в / proc или в другое место.

Tim

1
ответ дан 4 December 2019 в 15:50

Теги

Похожие вопросы