информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Сетевые кракеры и правда о деле ЛевинаПортрет посетителя
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Бэкдор в xz/liblzma, предназначенный... 
 Три миллиона электронных замков... 
 Doom на газонокосилках 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / sysadmin
Имя Пароль
ФОРУМ
если вы видите этот текст, отключите в настройках форума использование JavaScript
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
FreeBSD - загрузка сценариев установки по NFS 12.06.08 09:07  
Автор: J'JF <Dmytro Volhushyn> Статус: Elderman
<"чистая" ссылка> <обсуждение закрыто>
Итак, имеем:
- куча рабочих станций на FreeBSD (допустим, RELENG_7_0, не суть важно) с несколько разными параметрами, как то: материнки, имена дисковых устройств, способы разбиения дисков, набор устанавливаемых пакетов и т.п.;
- серевер для установки по сети операционной системы на вышеописанные рабочие станции (полностью настроен и работает - dhcp, pxeboot по tftp, установка по nfs).

Что нужно:
- манипуляция инсталляционными сценариями (пункт "Load Config" в sysinstall) для выбора сценария, "заточенного" для конкретной рабочей станции. При этом требуется, чтобы сами сценарии размещались на том же NFS-сервере, с которого устанавливается ОС.

Суть проблемы заключается в том, что за загрузку сценариев в sysinstall отвечает функция dispatch_load_floppy, описанная в
/usr/src/usr.sbin/sysinstall/dispatch.c
Функция жестко привязана к флопику (принудительно вызывается mediaSetFloppy). В принципе, путь решения понятен - заменить MEDIA_TYPE_FLOPPY на MEDIA_TYPE_NFS. Я сделал это путем выкусывания из исходников функции mediaSetFloppy и подмене ее функцией mediaSetNFS (все равно флопов у меня нет нигде, толку с этого legacy-кода - ноль).
Все собирается без ошибок, залил модифицированный sysinstall в mfsroot (естественно, собирать нужно с LDFLAGS="-static", иначе затолкать в mfsroot его будет слишком геморройно), после чего вызываемый диалог стал действительно обращаться к NFS. Проблема возникла, как говорится, откуда не ждали - сценарий на сервере не обнаруживается, хотя он совершенно точно лежит там, куда указывает значение переменной cp в этих исходниках (кто поковыряется в коде - поймет, о чем я). Возможно, проблема в том, что с NFS нужно работать несколько иначе, чем с floppy, однако как это реализовать в виде кода мне не очень понятно - я с си вообще не дружу. Точнее, подправить что-то могу, а вот написать - нихт :(

В связи с этим вопрос - может быть кто-то уже сталкивался с подобным? Ковырялся в исходниках? Или может быть есть какая-то замена этому древнему sysinstall, имеющая нужный мне функционал? Или вообще что-то иное посоветуете?
Поборол. 14.06.08 22:06  
Автор: J'JF <Dmytro Volhushyn> Статус: Elderman
<"чистая" ссылка> <обсуждение закрыто>
В общем, там в функции dispatch_load_floppy при изменении mediaSetFloppy на mediaSetNFS вызывались дополнительные функции (указание адреса и монтирование фс), которые переинициализировали первоначально введенное имя файла. После того, как определение имени сценария переместил за монтирование nfs - все заработало :)

В итоге пошел чуть дальше. Подсистему загрузки сценариев с флоппи трогать не стал - просто добавил в sysinstall еще один пункт меню, который будет вызывать другую функцию (назвал ее dispatch_load_nfs, создана на основе dispatch_load_floppy с вышеописанными изменениями). Все красиво и, что самое приятное - работает :)
Почему бы не использовать автомонтировщик? 13.06.08 14:16  
Автор: :-) <:-)> Статус: Elderman
<"чистая" ссылка> <обсуждение закрыто>
Просто сказать sysinstall, чтобы брал файл из /net/nfs_server/full/path/to/file
Обо всем остальном позаботится автомонтировщик.
P.S. Может глупость сказал, т.к. с FreeBSD практически дела не имел.
Да сказал бы, если б знал, как :) 13.06.08 14:39  
Автор: J'JF <Dmytro Volhushyn> Статус: Elderman
<"чистая" ссылка> <обсуждение закрыто>
Там при загрузке конфигурационного файла перво-наперво принудительно вызывается функция, которая монтирует флоппик и проверяет, есть ли там такой файл. И уже на этапе монтирования выдает ошибку - ну еще бы, флопика-то нет... А до пути в тот момент еще даже не доходит дело.
Мысли вслух 13.06.08 13:06  
Автор: NKritsky <Nickolay A. Kritsky> Статус: Elderman
<"чистая" ссылка> <обсуждение закрыто>
1. Sysinstall точно ищет файл на NFS? Что об этом говорят логи сервера, tcpdump? Поройся там, может он корёжит имя?
2. NFS путь начинается со слэша? Кажется в функции dispatchCommand ищется символ ' / ' в команде, и от него ищется выкусывается имя файла. Но это я не уверен. ИМХО, пока есть tcpdump можно не лазать в эти сорцы.
По памяти 13.06.08 13:17  
Автор: J'JF <Dmytro Volhushyn> Статус: Elderman
<"чистая" ссылка> <обсуждение закрыто>
Сейчас не на работе, лезть за логами далеко... Расскажу по памяти, а завтра уже уточню, ибо как раз буду на работе.

> 1. Sysinstall точно ищет файл на NFS? Что об этом говорят
> логи сервера, tcpdump? Поройся там, может он корёжит имя?

Имя и полный путь не глядел, но tcpdump'ом садился - обращение идет.

> 2. NFS путь начинается со слэша?

Нет. NFS путь начинается с имени сервера и имеет вид
nfs.server:/full/path/to/file
Я не пробовал играться с вариантами написания, ведь при установке указания пути к дистрибутиву в виде
nfs.server:/full/path/to/
вполне достаточно...

> ИМХО,
> пока есть tcpdump можно не лазать в эти сорцы.

Ну, в сорцы придется лезть для модификации, а для диагностики, конечно, они не нужны :)
1




Rambler's Top100
Рейтинг@Mail.ru


  Copyright © 2001-2024 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach