Как стать автором
Обновить

Комментарии 11

Его же можно по идее прикрутить к роутеру на OpenWRT? В дополнение к флешке с Grub4Dos думаю хороший инструмент получится.
Прикручивать к роутеру не пробовал. Типичное его применение — иметь набор стандартизованных вариантов инсталляции с возможностью быстро разрабатывать новые и вносить изменения в старые. Например в учебном центре, где каждую неделю на компьютерах все сноситься и заново ставится для другого курса он очень хорош. А курсы могут быть на очень разных OS и версиях этих OS, поэтому в нем крайне не хватает штатной поддержки Windows.
Честно сказать не понял, где здесь Сапожник, и зачем он здесь нужен. Загрузка по сети — PXELinux. Инструменты подготовки Wim-образа? Или послеустановочные командные файлы?
Это полностью, от начала и до конца автоматическая инсталляция OS по сети с возможностью быстро и гибко реализовывать свои сценарии такой инсталляции. Т.е. стандартная задача, которая возлагается на Install Server.
Работа проделана титаническая, хотелось бы тоже что-то такое сделать у себя, но пугают несколько хакерские способы выправления бинарников.
Бинарники можно и не трогать, тем более что это не совсем легально с юридической точки зрения. В публикации я давал ссылку на другой вариант (если бы я начинал это делать сейчас, то скорее всего пошел бы по этому пути).

Оставляем бинарники Microsoft вместе с их авторскими правами в покое, а вносим правки в ris-linux. Пакет написан на python, поэтому править его легко. Еще он сто лет не обновлялся и можно не опасаться того, что он будет обновляться на новую версию и снова придется думать, куда бы воткнуть свой код в случае его радикальных изменений.

У себя я тоже этот пакет меняю и пометил эти изменения как «Чтобы RIS не мешал инсталляции Win 7». А автор той статьи поступил умнее и у него RIS получив запрос на получение имени файла загрузочной информации Boot\BCD, обрабатывает его и возвращает нужный для данного варианта инсталляции.

У меня этот запрос игнорируется в binlsrv.py:
    #p = p + chr(252) + chr(len('boot\\bcd')) + 'boot\\bcd'

а здесь обрабатывается:
    mymac=[ord(x) for x in info['mac']]
    mymacstr = ':'.join(['%02x' % x for x in mymac])
    commandline='/work/bin/getbcdlocation.sh ' + addr[0] + ' ' + mymacstr
    f = popen(commandline)
    templateinfo = f.readline().rstrip().split(' ')
    f.close
    bootfile = 'pxelinux.cfg\\pxeboot.com'
    bcdpath='pxelinux.cfg\\templates\\' + templateinfo[0] + '\\' + templateinfo[1] + '\\bcd'
   
    hostname = myhostname + (NULL * (64 - len(myhostname)))
    p = p + hostname                   # hostname
    
    bf = bootfile + (NULL * (128 - len(bootfile)))
    p = p + bf                         # Boot File

    p = p + MAGIC_COOKIE

    p = p + '\x35\x01\x05'             # DHCP ACK
    p = p + chr(54) + chr(4) + ip2byte(hostip) # Server ID
    p = p + chr(97) + chr(len(info['guid'])) + info['guid']
    p = p + chr(60) + chr(9) + 'PXEClient'
    p = p + chr(252) + chr(len(bcdpath)) + bcdpath
    p = p + chr(0xff)
    decode_bootp('[S]', p)
    #open('out', 'wb').write(p)
    if s != -1: s.sendto(p, addr)

Скрипт getbcdlocation.sh:
#!/bin/sh

IPADDR=$1
MACADDR=$2

LOGFILE=/work/log/tftpd.log

tail -1000 $LOGFILE | \
  grep "RRQ from $IPADDR " | \
  grep wdsnbp.0 | \
  tail -1 | \
  awk '{print $2 }' FS=\/

ищет по логам tftp сервера из какой папки произошла tftp загрузка wdsnbp.com и в результате RIS возвращает путь к BCD, который должен лежать к той же папке. А в BCD уже путь к нужному wim и т.д.

Логи tftp сервера, сейчас наверно нужно расковыривать при помощи journalctl. А вот с точки зрения Cobbler с его шаблонами по сути ничего не меняется.

Немного нужно еще поменять триггер Cobbler, что бы он вместо того, чтобы хакерски менять бинарники, создавал для каждого профиля отдельную папку и помещал туда оригинальные, неизменные загрузочные файлы Windows.

Может быть и дойдут руки до таких изменений.
Не смотрели wimboot? Оно патчит все файлы на лету. Можно загружать родные и не очень wim файлы.
Прям сходу грузиться через PXE по TFTP из WIM-образов можно будет?
Именно. Давно использую. Гляньте github.com/kireevco/wimaging — помогает перепаковывать wim файлы и использовать Foreman для развертывания винды. Мои патчи в свежих версиях Foreman должны работать напрямую с wimboot.
Здравствуй, делаю диплом по данной теме и хотел бы посоветоваться
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Изменить настройки темы

Истории