Page 1 of 3 123 LastLast
Results 1 to 15 of 62

Thread: BootUp from Network (PXE+TFTP)

Hybrid View

Previous Post Previous Post   Next Post Next Post
  1. #1
    Join Date
    May 2006
    Location
    Piter st.Piter
    Posts
    13

    Поднять на WL500gP DHCP сервер с PXE + TFTP с загрузкой образов!!! КАК???

    Товарисчи а кто нить пробовал загрузить бездисковую систему(тонкий клиент) в сети c Wl 500 delux ????

    На обычном компе с линуксом можно реализовать при помощи ISC DHCP, hpa-tftp, nfs

    Никто случайно не заморачивался ???

    Очень интересно возможно ли реализовать удаленную загрузку с wl 500 delux

    ps. Друзья только не спрашивайте зачем

  2. #2
    Quote Originally Posted by marmaluk
    На обычном компе с линуксом можно реализовать при помощи ISC DHCP, hpa-tftp, nfs


    Очень интересно возможно ли реализовать удаленную загрузку с wl 500 delux
    Глянь тему BootUp from Network

    А вообще поиши по всему форуму DHCP TFTP

  3. #3
    Join Date
    May 2006
    Location
    Piter st.Piter
    Posts
    13
    Hашел кое что по настройке удаленной загрузки под Slackware
    Журнал Хакер за март 2004г автор Антон Карпов (стр 104.)


    Для начала нам понадобится сервер удаленной загрузки.

    Это может быть bootp-сервер или dhcp-сервер, оба они выполняют необходимые функции. Т.к. протокол dhcp
    умеет все то же, что и bootp, только больше и лучше , то нет никакого резона использовать bootp-сервер.
    Поэтому качаем и ставим ISC DHCP сервер, последняя версия которого на момент написания статьи - 3.0.1rc13.
    Протокол dhcp позволяет намного больше, чем просто раздачу IP-адресов. Нам нужно будет не только "оформиться"
    у сервера, но и загрузить с сервера ядро. Сам dhcp не умеет предоставлять файлы, для этого используется tftp
    (trivial file transport protocol) – урезанный, по сравнению с ftp, протокол, не имеющий авторизации и работающий по udp.
    Также нам необходимо скачать и поставить поддерживающий команду tsize tftp-сервер, к примеру, hpa-tftp.
    И то и другое требует конфигурирования. Dhcp-сервер читает все настройки из файла /etc/dhcpd.conf:
    Code:
    /etc/dhcpd.conf
    allow booting;
    allow bootp;
    
    # Глобальные опции
    option domain-name "nwudc.lan";
    option broadcast-address 192.168.1.255;
    option subnet-mask 255.255.255.0;
    default-lease-time -1;
    use-host-decl-names on;
    ddns-update-style ad-hoc;
    filename "pxelinux.0";
    
    # Опции для подсети
    subnet 192.168.1.0 netmask 255.255.255.0
    range 192.168.1.10 192.168.1.30;
    option routers 192.168.1.1;
    
    Запуск демона происходит следующим образом:
    # /usr/sbin/dhcpd -cf /etc/dhcpd.conf
    tftpd конфигурационного файла не имеет и просто запускается в безопасном режиме
    /usr/sbin/in.tftpd -s /tftpboot, где /tftpboot - предварительно созданная директория,
    куда мы положим ядро и прочие необходимые файлы (см. ниже).

    Запущенный с аргументом -s, tftpd использует системный вызов chroot(2) в указанный каталог, поэтому
    остальным программам мы должны указывать пути к файлам на tftp относительно этого каталога.
    Параметр -l запускает tftpd в standalone режиме. Таким образом, нам уже не нужно использовать устаревший inetd
    для запуска tftp-сервера. Оба сервиса можно прописать в /etc/rc.d/rc.local для запуска при старте системы:
    Code:
    echo "Starting ISC dhcpd: /usr/sbin/dhcpd"
    /usr/sbin/dhcpd -cf /etc/dhcpd.conf > /dev/null 2>&1
    
    echo "Starting secure tftpd: /usr/sbin/in.tftpd"
    /usr/sbin/in.tftpd -l -s /tftpboot
    Собственно, а что нам надо грузить? В конфиге dhcpd.conf среди прочих видим строчку:
    Code:
    filename "pxelinux.0";
    Это значит, что мы будем использовать pxelinux - модификацию всем известного загрузчика syslinux от Питера Анвина (Peter Anvin), специально созданную для загрузки по сети. Берем на syslinux.zytor.com свежий архив syslinux, в нем находим искомый файл-загрузчик pxelinux.0, помещаем его в /tftpboot и в конфиге dhcpd указываем путь до файла относительно этого каталога (напомню, что tftpd запущен в безопасном режиме, и для него /tftpboot – это корневой каталог) - filename "pxelinux.0";. Именно поэтому нам нужен был tftpd-сервер с поддержкой команды tsize - pxelinux использует ее, чтобы скачать образ свежеиспеченного ядра:
    Code:
    # cd /usr/src/linux-2.4.24
    # make menuconfig
    # make dep clean bzImage
    
    Опционально:
    # make modules modules_install
    Общие рекомендации по сборке: для удаленной загрузки удобно собирать ядро без модулей, например, у меня все необходимое влезло в 1200 Кб, но это несущественно. Главное вкомпилировать в ядро (НЕ как модули) следующие вещи: поддержку TCP/IP, драйвер сетевой карты бездисковой
    машины, опции "nfs-клиент" и "nfs-server", опцию "allow nfs root", монтирование корневой nfs при загрузке, поддержку devfs и devfs mount at boot. Одним словом, прикинь, что нужно ядру, которое грузится на совершенно голой машине, и при этом должно видеть сеть и уметь монтировать nfs-разделы при загрузке.

    Итак, в /tftpboot у нас уже лежит файл pxelinux.0 из архива syslinux и наше ядрышко для бездисковых станций, пусть оно будет незатейливо называться bzImage. Давай мысленно прокрутим ситуацию и подумаем,
    чего еще нам не хватает. Когда мы выставим в BIOS клиентской машины опцию загрузки по сети, pxe-загрузчик пойдет искать доступные dhcp-серверы, наш dhcpd откликнется, выдаст клиенту файл pxelinux.0, этот файл загрузится, загрузит ядро bzImage, ядро пойдет грузиться, а потом... а потом оно очень хотело бы увидеть корневую файловую систему, монтируемую по сети. Кроме того, pxelinux должен иметь конфигурационный файл, где описано, какое ядро и с каким опциями ему грузить.

    Нетривиальный trivial ftp

    Последняя по порядку, но не по важности вещь в каталоге /tftpboot - папка /tftpboot/pxelinux.cfg/, где будет располагаться конфигурационный файл с именем “айпишник клиента”. Мы ведь хотим, чтобы разные бездисковые клиенты с разной конфигурацией железа могли грузить разные ядра, верно? И как дать каждому клиенту понять, где его ядро? Для каждого клиента создается файл /tftpboot/pxelinux.cfg/XXXX,
    где имя XXXX файла – это IP-адрес клиента в шестнадцатеричной форме. Т.е. для клиента с адресом 192.0.2.91 это будет конфиг /tftpboot/pxelinux/C000025B. Наконец, если ни один из конфигов не подойдет, то pxelinux читает /tftpboot/pxelinux/default.

    Возникает вопрос: откуда у клиента берется конкретный адрес? Как мы помним, у нас используется dhcp-сервер, и от выполнения своей прямой миссии - динамически выдавать IP-адреса - он не отказывается. Клиент и
    получает от этого сервера адрес, за это отвечают следующие строчки /etc/dhcpd.conf:
    Code:
    Дополнения к /etc/dhcpd.conf
    
    // выдавать клиентам такое имя домена
    option domain-name "xakep.lan";
    
    // пусть клиенты знают широковещательный адрес сети
    option broadcast-address 192.168.1.255;
    
    // пусть клиенты знают маску подсети
    option subnet-mask 255.255.255.0;
    
    // описание подсети, в которой мы живем
    subnet 192.168.1.0 netmask 255.255.255.0
    
    // диапазон назначаемых адресов
    range 192.168.1.10 192.168.1.30;
    
    // сообщим клиентам, какие роутеры надо добавить в таблицу маршрутизации
    option routers 192.168.1.1;
    
    // а также какие dns-сервера им нужно прописать себе в /etc/resolv.conf
    option name-servers 192.168.1.10;
    В итоге получаем клиента с полностью сконфигурированной сетью.

    Каждому свое ядро

    Очевидно, что адрес клиенту в данной конфигурации назначается случайным образом из имеющихся свободных.
    Но нам может понадобиться, чтобы клиент A получал ядро kernA, а клиент B - ядро kernB. Это значит,
    что у клиентов А и B каждый раз должны быть строго фиксированные адреса. К счастью, dhcpd и это умеет.
    В секцию subnet пишем:
    Code:
    host ethboot
    hardware ethernet 00:0C:6E:9D:6F:78;
    fixed-address 192.168.1.20;
    Исходя из того, что сетевая карта у клиента не меняется, ее MAC-адрес и будем использовать. Мы указываем, что клиенту с MAC-адресом 00:0C:6E:9D:6F:78 всегда нужно назначать IP-адрес 192.168.1.20. Затем переведем этот адрес в шестнадцатеричный вид и положим конфиг с таким именем в /tftpboot/pxelinux.cfg/. Вуаля! Оговорюсь, что у меня все 72 бездисковых клиента были одинаковые, и различать их каким-либо образом не было нужды (опции host вообще в конфиге не было, а в pxelinux.cfg лежал один лишь default).

    Итак, сам конфиг (в моем случае - /tftpboot/pxelinux.cfg/default):
    Code:
    label linux
    kernel bzImage
    append ip=auto
    append nfsroot=192.168.1.1:/home/nfsroot
    ipappend 1
    Здесь ничего сложного нет: синтаксис практически совпадает с синтаксисом lilo.conf, за исключением того, что пара "имя-значение" отделена пробелом, а не знаком равенства (=). Клиенту будет выдано по tftp ядро bzImage, IP-адрес клиенту уже присвоен dhcp-сервером, а корневая файловая система должна быть примонтирована по nfs с сервера 192.168.1.1. Эти параметры буду переданы ядру при загрузке.
    Last edited by Omega; 18-12-2011 at 14:04. Reason: fixed

  4. #4
    Join Date
    May 2006
    Location
    Piter st.Piter
    Posts
    13
    Так как насчет вышесказанного вопроса:

    Главная проблема на данный момент сконфигурировать dhcpd сервер или bootp.
    Самая главная проблема, банальна - не могу найти конфигурационных файлов не мог бы кто чего подсказать ??
    Друзья!!! Подскажите как почитать ман по dhcp и tftp !!! man dhcpd, dhcpd --help, - результатов не дает, может надо как то по другому???
    Last edited by Omega; 18-12-2011 at 13:47. Reason: fixed

  5. #5
    Join Date
    Mar 2005
    Location
    Russia, Sankt-Peterburg
    Posts
    177
    marmaluk на роутере используется dnsmasq

  6. #6
    Мой конфиг dhcpd (не на Asuse)
    Code:
    # cat /etc/dhcpd.conf
    ddns-update-style none;
    
    subnet 192.168.12.0 netmask 255.255.255.0 {
        range 192.168.12.201 192.168.12.220;
        default-lease-time 86400;
        max-lease-time 86400;
    
        option ip-forwarding off;
        option broadcast-address 192.168.12.255;
        option subnet-mask 255.255.255.0;
    
        if substring (option vendor-class-identifier, 0, 9) = "PXEClient"
        {
            filename "pxelinux.0";
            next-server 192.168.12.183;
        }
    
    }

  7. #7
    Join Date
    Sep 2006
    Location
    SVAO, Moscow, Russia
    Posts
    42

    Загружаем BartPE с роутера

    Сегодня у меня возникла острая потребность грузить по сетке компы с роутера. Может быть кому понадобится, так что расскажу как и что делать. Тем более ни одного внятного объяснения в этом форуме я так и не нашёл.
    На самом деле всё ну очень быстро и легко, минут 15 максимум (если не считать время закачек)
    *при работе с именами файлов соблюдайте правильный регистр

    1) Подготовка образа BartPE
    • Скачать PEbuilder

    • Скачать дистрибутив Windows Server 2003 R2 SP2 x86 En (где брать решайте сами, можно абсолютно легально и с microsoft.com триал скачать, всё равно активировать не надо)

    • Прочитать одну из многочисленных инструкций про BartPE (хотя можно и без них разобраться, там и так проще не придумаешь)

    • Собрать систему и записать её в файл BARTPE.ISO

    • Теперь надо разобраться с загрузочными файлами:
      из папки I386 взять файлы:
      NTDETECT.COM (переименовываем в ntdetect.com)
      STARTROM.N1_ (распаковать с помощью expand -> startrom.n12)
      SETUPLDR.EX_ (распаковать с помощью expand и переименовать его в NTLDR)
      создать файл winnt.sif с таким содержанием:
      Code:
      [SetupData]
      BootDevice = "ramdisk(0)"
      BootPath = "\i386\System32\"
      OsLoadOptions = "/noguiboot /fastdetect /minint /rdexportascd /rdpath=bartpe.iso"


    2) Настройка роутера
    • Установить tftp-hpa (вместе с ним установится ещё и xinetd)
      Code:
      ipkg install tftp-hpa
    • Создать папку на диске где будет храниться загрузочный образ (дефолтовая папка: /opt/tftpboot, хотя можно и любую другую использовать; у меня, например, /opt/files/boot), и скинуть 5 имеющихся файлов туда.

    • Прописать в файл /usr/local/etc/dnsmasq.conf такую строчку (если файла нет, то надо создать):
      Code:
      dhcp-boot=startrom.n12
      после чего сохранить его в флешпамяти роутера
      Code:
      flashfs save && flashfs commit && flashfs enable
    • При необходимости отредактировать файл /opt/etc/xinetd.conf под свои нужды (мне же было достаточно и дефолтовых настроек)

    • Отредактировать файл /opt/etc/xinetd.d/tftp
      Он должен выглядеть примерно так:
      Code:
      service tftp
      {
             flags            = REUSE
             socket_type      = dgram
             protocol         = udp
             instances        = 30
             wait             = yes
             user             = admin
             server           = /opt/sbin/in.tftpd
             server_args      = -s /opt/files/boot
             cps              = 100 2
             log_on_success   = HOST PID
             log_on_failure   = HOST
             disable          = no
      }
      параметр user, разумеется, должен соответствовать вашему администраторскому логину; в server_args должен быть указан путь к загрузчику;

    • Если не используете rc.unslung, то не забудьте прописать в автозапуск /opt/sbin/xinetd


    Теперь можно ребутнуть роутер и проверить работоспособность.

  8. #8

    Фильтрация DHCP пакетов на одном порте LAN.

    Странного хочу...
    Есть 2 рутера, в 2-ух квартирах на разных этажах, оба подключены к инету.
    Соединены друг с другом для локалки.

    Хочется соединить их так, чтобы мои DHCP пакеты не ходили в другую квартиру и наоборот.

    Думается это можно сделать так:
    выделить отдельный vlan для порта, к которому подключена вторая квартира. Наcтроить фильтр на DHCP в iptables.
    Есть ли способ проще?
    Если нет, то как по шагам сделать то, что я написал.
    Заранее спасибо.

  9. #9

    ASUS Wl500W и встроенный DHCP

    Добрый день. Нужна помощь. Имеется wl500w с прошивкой от Олега 1.9.2.7-10. Как на встроенном DHCP указать загрузку с tftp сервера в сети, для бездисковых терминалов?

  10. #10
    Я так понимаю если добавить в etc/dnsmasq.conf
    dhcp-boot=pxelinux.0,<hostname>,<iphost>
    должн все сработать
    Только не могу сохранить в этом файле изменеия после reboot изменения слетают. "flashfs save && flashfs commit && flashfs enable && reboot" делаю.Где ошибка подскажите

  11. #11
    Quote Originally Posted by tracert2009 View Post
    Я так понимаю если добавить в etc/dnsmasq.conf
    dhcp-boot=pxelinux.0,<hostname>,<iphost>
    должн все сработать
    Только не могу сохранить в этом файле изменеия после reboot изменения слетают. "flashfs save && flashfs commit && flashfs enable && reboot" делаю.Где ошибка подскажите
    прописывать нужно в /usr/local/etc/dnsmasq.conf, содержимое будет добавлено к автоматически генерируемому /etc/dnsmasq.conf
    только tftp функционал в dnsmasq в 1.9.2.7-d прошивке выключен для уменьшения размера.

  12. #12
    Если я правильно понял вы имеете в виду что Tftp сервер нельзя поднять на роуторе. У меня tftp стоит в локалке.
    Спс создал файл как вы сказали добавил изменения сохранился все ок. Осталось завтра проверить загрузку по lan.

    Проблема решена добавлением строки в dnsmasq.conf.
    Last edited by Omega; 18-12-2011 at 14:06. Reason: fixed

  13. #13

    не устанавливается dhcpd из репозитория

    Уважаемый ALL
    пытаюсь установить dhcpd
    даю команду
    Code:
    ipkg install dhcpd
    пишет что такого пакета не найдено

    хотя летом я этот пакет ставил

    Как установить пакет ?

  14. #14
    Join Date
    Feb 2007
    Location
    Moscow, Russia
    Posts
    3,805
    а чем dnsmasq не устраивает?

  15. #15

    Поднять на WL500gP DHCP сервер с PXE + TFTP с загрузкой образов!!! КАК???

    Здравствуйте, дорогие форумчане!

    Есть необходимость настройки на данном девайсе DHCP c PXE + TFTP.

    Ничего толкового так и не нашёл тут на форуме не нашёл, попадалась только любопытная статейка:
    http://www.wl500g.info/showthread.ph...ght=PXE&page=2

    и вот ещё в инете по поводу подобных команд есть инфа:
    http://www.bog.pp.ru/work/PXE.html
    http://www.debian.org/releases/lenny/i386/ch04s05.html

    В итоге успешно провёл установку "для дурака" а потом попытался сделать то что было в статье на форме:
    http://www.wl500g.info/showthread.ph...ght=PXE&page=2


    увы ничего не получилось.


    Помогите если кто знает как это настроить!

Page 1 of 3 123 LastLast

Tags for this Thread

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •