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





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
Да сказал бы, если б знал, как :) 13.06.08 14:39  Число просмотров: 1243
Автор: J'JF <Dmytro Volhushyn> Статус: Elderman
<"чистая" ссылка> <обсуждение закрыто>
Там при загрузке конфигурационного файла перво-наперво принудительно вызывается функция, которая монтирует флоппик и проверяет, есть ли там такой файл. И уже на этапе монтирования выдает ошибку - ну еще бы, флопика-то нет... А до пути в тот момент еще даже не доходит дело.
<sysadmin>
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