Page 1 of 5 123 ... LastLast
Results 1 to 15 of 62

Thread: BootUp from Network (PXE+TFTP)

  1. #1

    Post BootUp from Network (PXE+TFTP)

    Нигде не нашел информации по этой штуке, может, поможете?
    В BIOS'е каждого современного компа есть такая штука.
    Как я понимаю, это фича, чтобы загружать ОС из сети? так?
    Какие программы выполняют роль сервера, с которого идет загрузка? Есть ли такие для wl500gx?
    Sorry for my bad English.
    Покупайте Отечественных Слонов!!!

  2. #2
    Join Date
    Dec 2003
    Location
    Russian Federation
    Posts
    8,353
    tftp сервер и правильные опции в DHCP сервере.

  3. #3
    M, --dhcp-boot=[net:<network-id>,]<filename>,[<servername>[,<server address>]]
    Set BOOTP options to be returned by the DHCP server. These are needed for machines which network boot, and tell the machine where to collect its initial configuration. If the optional network-id(s) are given, they must match for this configuration to be sent. Note that network-ids are prefixed by "net:" to distinguish them.
    Вопрос: что за файл filename? Образ дискетки, например, подойдет?
    Можно ли как нибудь определить, идет ли запрос на загрузку из сети или нет?
    Last edited by FilimoniC; 01-11-2005 at 12:35.
    Sorry for my bad English.
    Покупайте Отечественных Слонов!!!

  4. #4
    Join Date
    Dec 2003
    Location
    Russian Federation
    Posts
    8,353
    Это имя, которое будет передано tftp серверу, в ответ на которое он должен вернуть некий образ.
    Что должно быть в этом образе зависит от того, что ожидает клиент. Это может быть и образ дискетки, может ещё чего-то там. Часто использует PXE. Здесь читайте.

  5. #5
    Никак не пойму, как заставить dnsmasq.conf сохраниться...
    содержимое /tmp/local/.files:

    /etc/dnsmasq.conf
    /tmp/etc/dnsmasq.conf

    Изменяю оба, но после flashfs save-commit-enable-reboot они не сохраняются. =(
    Last edited by FilimoniC; 04-11-2005 at 11:57.
    Sorry for my bad English.
    Покупайте Отечественных Слонов!!!

  6. #6
    Join Date
    Dec 2003
    Location
    Russian Federation
    Posts
    8,353
    Изменять dnsmasq.conf в /tmp и /etc бессмысленно. Этот файл генерируется автоматически при загрузке устройства. Есть возможность "дописать" в него. Для этого создайте файл /usr/local/etc/dnsmasq.conf

  7. #7
    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. Друзья только не спрашивайте зачем

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


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

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

  9. #9
    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

  10. #10
    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

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

  12. #12
    Мой конфиг 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;
        }
    
    }

  13. #13

    CFE boot from network as default

    Ситуация такая: есть нормально работающий WL-500gP, а также опыт программирования встраиваемых Линуксов (правда, ARM)... Хочется поразвекаться с прошивкой, по возможности не теряя гарантию... Отсюда вопрос: можно ли заставить CFE грузиться по умолчанию по bootp(dhcp)/tftp? неохота каждый раз флэш перетирать...

    PS Если дело-таки дойдёт до JTAG'а... Что народ использует? На ARM'е я использую JTAGkey + openocd, но openocd, по моему, сильно ARM-cпецифичный...

  14. #14
    Quote Originally Posted by Nerevarine View Post
    ...Если дело-таки дойдёт до JTAG'а... Что народ использует? На ARM'е я использую JTAGkey + openocd, но openocd, по моему, сильно ARM-cпецифичный...
    Я уже интересовался JTAG`ом. Нет его здесь Не выведен. Так что ежели что - перепаивать флешку.
    WL-500gP with firmware 1.9.2.7-9

  15. #15

    Загрузка с внешнего устройства

    Интересно, какие преимущества мы получаем при загрузке с внешнего устройства?

Page 1 of 5 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
  •