Дано: некий офис с компьютерами типа PC, сервер с Linux.
Задача: Сделать сервис установки системы по сети без использования платных Windows Server и др.
Решение:
Решение базируется на статье "PXE Win Install: установка Windows 7 по сети" Автор: Игорь Осколков от 22.03.2012.
Привожу рабочее решение, с исправленными ошибками в упомянутой статье и для Linux серверов с сервисами DHCP, TFTP и Samba.
План работ
1. Настройка служб DHCP, TFTP и Samba на Linux сервере.
2. В первую очередь необходимо создать образ WINPE, интегрирования в него сетевых драйверов и настройку скрипта сетевой загрузки.
3. Создание и настройка загрузчика BCD.
4. Размещение файлов на сервере и проверка сетевой загрузки.
Что понадобиться:
1. Компьютер с установленной Windows 7.
2. Windows Automated Installation Kit (WAIK).
3. Linux сервер, можно два :)
Приступим.
1. DHCP
У меня DHCP установлен на маршрутизаторе 192.168.1.1, с Debian GNU/Linux.Все что необходимо нам от DHCP сервера - это указать адрес сервера загрузки и имя файла для загрузки по сети.
Я поместил эти параметры в блок описания подсети:
subnet 192.168.1.0 netmask 255.255.255.0
{
option netbios-name-servers 192.168.1.1;
...
option routers 192.168.1.1;
next-server 192.168.1.200;
filename "pxelinux.0";
...
}
2. TFTP сервер
Находится вместе с Samba сервером на отдельном комьютере, с адресом 192.168.1.200. Здесь установлен дистрибутив Gentoo.Как установить tftpd в gentoo - читать здесь.
Настройки TFTP:
Файл /etc/conf.d/in.tftpd
INTFTPD_PATH="/opt/pxe/"
INTFTPD_OPTS="-R 4096:32767 -s ${INTFTPD_PATH} -m /etc/tftpd.rules -v"
Первый параметр - корень папки TFTP сервера.
Второй - параметры запуска.
Файл /etc/tftpd.rules
rg \\ /
Для автозамены слешей в стиле windows на linux-like.
В папку /opt/pxe/ копируем файлы из пакета syslinux:
cp /usr/share/syslinux/pxelinux.0 /opt/pxe/
cp /usr/share/syslinux/pxechain.com /opt/pxe/
cp /usr/share/syslinux/memdisk /opt/pxe/
Создаем папку pxelinux.cfg
mkdir -p /opt/pxe/pxelinux.cfg
Копируем туда файлы из пакета syslinux:
cp /usr/share/syslinux/menu.c32 /opt/pxe/pxelinux.cfg/
cp /usr/share/syslinux/poweroff.com /opt/pxe/pxelinux.cfg/
cp /usr/share/syslinux/reboot.c32 /opt/pxe/pxelinux.cfg/
Создаем файл default
nano /opt/pxe/pxelinux.cfg/default
такого содержания:
DEFAULT pxelinux.cfg/menu.c32
TIMEOUT 600
MENU TITLE PXE BOOT MENU
ALLOWOPTIONS 0
PROMPT 0
LABEL 001
MENU LABEL Local ^Boot
MENU DEFAULT
LOCALBOOT 0
TIMEOUT 80
TOTALTIMEOUT 9000
LABEL 002
MENU LABEL ^Install Windows 7 x64
KERNEL pxechain.com
APPEND ../Boot/pxeboot.com
LABEL 003
MENU LABEL ^Memtest86+
KERNEL images/memtest
LABEL Reboot
MANU LABEL ^Reboot
KERNEL pxelinux.cfg/reboot.c32
3. Samba
Приведу секцию, которая отвечает за созданную шару с дистрибутивом windows7:[Win7Install$]
comment = Windows7x64 install folder
path = /opt/sambashare/win7x64
read only = No
create mask = 0666
directory mask = 0777
guest only = Yes
guest ok = Yes
Проверить можно с любой windows в командной строке:
net use z: \\192.168.1.200\Win7Install$
Если ресурс под паролем, то
net use z: \\192.168.1.200\Win7Install$ password /user:username
В эту папку копируем содержимое папки sources из дистрибутива Windows 7.
4. WinPE
Частично действия похожи на те, что делались в статье "Собираем свой дистрибутив Windows 7 с программами".Установим WAIK, который мы скачали по ссылке выше.
Запускаем "Командная строка средств развертывания" (если у вас английская версия - Deployment Tools Command Prompt). Запускаем от имени Администратора.
В консоли выполняем команду:
copype.cmd amd64 C:\WinPE
Эта команда копирует в каталог C:\WinPE файлы, необходимые для создания образа с предустановочным окружением 64-разрядной Windows 7. Для 32-битной версии надо указать параметр x86 вместо amd64.
copype.cmd x86 C:\WinPE
Далее буду приводить две команды, с обеими архитектурами, для удобства copy-paste.
Сразу же создайте папку C:\TFTP\, в которой будут файлы для TFTP-сервера, а в ней сделайте директорию Boot. В последней будут храниться загрузочные файлы.
Копируем файлы из стандартного winpe образа в папку C:\TFTP\Boot
imagex /mountrw winpe.wim 1 mount
Эта комнада монтирует winpe.wim в папку C:\WinPE\ mount (осле первой команды мы автоматически попадаем в папку C:\WinPE)
copy mount\Windows\Boot\PXE\*.* C:\TFTP\Boot
Я еще скопировал папку ru-RU и папку fonts. Если их в образе не окажется - их можно взять с любого установочного диска Windows7.
Копируем еще один нужный файл
copy "C:\Program Files\Windows AIK\Tools\PETools\amd64\boot\boot.sdi" C:\TFTP\Boot
copy "C:\Program Files\Windows AIK\Tools\PETools\x86\boot\boot.sdi" C:\TFTP\Boot
Интегрируем драйвера. Для этого, скачиваем пакет дрйверов для сетевых карт, отсюда. Распаковываем, я для удобства перенес папку L из распакованного дерева в корень диска С.
dism /image:c:\winpe\mount /add-driver /driver:c:\L /recurse /forceunsigned
Где:
/image:c:\winpe\mount примонтированый образ
/add-driver - добавить драйвера.
/driver:c:\L - папка с драйверами.
/recurse - позволяет брать драйвера еще и из подпапок.
/forceunsigned - если есть неподписанные драйверы.
После этого, пока образ еще примонтирован, необходимо подправить файл startnet.cmd. Но для этого уже необходимо знать IP адрес Samba сервера и путь к ресурсу, который будет отдавать дистрибудтив Windows 7.
Выполняем команду:
notepad C:\WinPE\mount\windows\system32\startnet.cmd
Приводим содержимое к такому виду:
wpeinit
net use z: \\192.168.1.200\Win7Install$
z:\setup.exe
Если ресурс под паролем, то строка имеет другой вид:
net use z: \\192.168.1.200\Win7Install$ password /user:username
Закрываем блокнот, с сохранением изменений, проверяем, чтобы в проводнике не было открыто содержимое папки mount и выполняем команду для отмонтирования:
imagex /unmount c:\winpe\mount /commit
И копируем файл образа в C:\TFTP\Boot\
copy c:\winpe\winpe.wim C:\TFTP\Boot\boot.wim
5. Загрузчик BCD
Здесь в оригинальной статье скрылись несколько ошибок, из-за которых не загружался загрузчик и в Linux вылезли мелкие ошибки, такие как соответствие регистра.Ниже представлен вариант, который работает, следите за регистром в пути к файлам, так как в Windows все будет работать и так, а в Linux приведет к ошибке.
Создаем загрузчик:
bcdedit -createstore c:\BCD
bcdedit -store c:\BCD -create {ramdiskoptions} /d "Ramdisk options"
bcdedit -store c:\BCD -set {ramdiskoptions} ramdisksdidevice boot
bcdedit -store c:\BCD -set {ramdiskoptions} ramdisksdipath \Boot\boot.sdi
bcdedit -store c:\BCD -create /d "PE Boot Image" /application osloader
После этого в консоли появиться сообщение содержащее GUID в виде
{ef40ab64-7ce9-11e2-8487-a0b3ccc2b14c} (пример). Копируем его в следующие команды:
bcdedit -store c:\BCD -set GUID systemroot \Windows
bcdedit -store c:\BCD -set GUID detecthal Yes
bcdedit -store c:\BCD -set GUID winpe Yes
bcdedit -store c:\BCD -set GUID osdevice ramdisk=[boot]\Boot\boot.wim,{ramdiskoptions}
bcdedit -store c:\BCD -set GUID device ramdisk=[boot]\Boot\boot.wim,{ramdiskoptions}
bcdedit -store c:\BCD -create {bootmgr} /d "Windows BootManager"
bcdedit -store c:\BCD -set {bootmgr} timeout 30
bcdedit -store c:\BCD -displayorder {ef40ab64-7ce9-11e2-8487-a0b3ccc2b14c}
Копируем (или переносим, чтобы не мешал) созданный BCD в папку C:\TFTP\Boot\
copy c:\BCD C:\TFTP\Boot\
move c:\BCD C:\TFTP\Boot\
Файл pxeboot.com заменяем файлом pxeboot.n12, меняя ему расширение.
Получилась такая картина в этой папке:
Папки:
fonts
ru-RU
Файлы:
BCD
abortpxe.com
boot.wim
hdlscom1.n12
hdlscom2.n12
wdsnbp.com
WdsConfig.inf
boot.sdi
bootmgr.exe
hdlscom1.com
hdlscom2.com
pxeboot.com
wdsmgfw.efi
Полученную папку C:\TFTP копируем на Linux сервер, любым удобным для вас способом. Копируем в папку /opt/pxe/ . Так же файл bootmgr.exe копируем из папки Boot в корень папки /opt/pxe/
Получается так:
ls -la /opt/pxe/
total 574
drwxrwxrwx 5 root root 248 Feb 22 18:59 .
drwxr-xr-x 17 root root 808 Feb 18 15:16 ..
drwxrwxrwx 4 root root 520 Feb 25 18:10 Boot
drwxrwxrwx 2 root root 72 Feb 18 14:53 images
drwxrwxrwx 2 root root 160 Feb 22 18:07 pxelinux.cfg
-rwxrwxrwx 1 root root 523328 Jul 14 2009 bootmgr.exe
-rwxrwxrwx 1 root root 26140 Feb 18 14:45 memdisk
-rwxrwxrwx 1 root root 998 Feb 22 18:20 pxechain.com
-rwxrwxrwx 1 root root 26579 Feb 18 14:45 pxelinux.0
ls -la /opt/pxe/Boot/ --group-directories-first
total 282836
drwxrwxrwx 4 root root 520 Feb 25 18:10 .
drwxrwxrwx 5 root root 248 Feb 22 18:59 ..
drwxrwxrwx 2 root root 208 Jan 27 2011 fonts
drwxrwxrwx 2 root root 112 Feb 22 17:36 ru-RU
-rwxrwxrwx 1 root root 12288 Feb 22 16:27 BCD
-rwxrwxrwx 1 root root 1347 Jun 11 2009 WdsConfig.inf
-rwxrwxrwx 1 root root 79 Jun 11 2009 abortpxe.com
-rwxrwxrwx 1 root root 3170304 Jun 10 2009 boot.sdi
-rwxrwxrwx 1 root root 138584642 Feb 22 17:58 boot.wim
-rwxrwxrwx 1 root root 523328 Jul 14 2009 bootmgr.exe
-rwxrwxrwx 1 root root 26076 Jun 11 2009 hdlscom1.com
-rwxrwxrwx 1 root root 26060 Jun 11 2009 hdlscom1.n12
-rwxrwxrwx 1 root root 26076 Jun 11 2009 hdlscom2.com
-rwxrwxrwx 1 root root 26060 Jun 11 2009 hdlscom2.n12
-rwxrwxrwx 1 root root 25772 Jun 11 2009 pxeboot.com
-rwxrwxrwx 1 root root 527360 Jul 14 2009 wdsmgfw.efi
-rwxrwxrwx 1 root root 31124 Feb 22 18:15 wdsnbp.com
6. Проверка работы
Проверяем работу сервиса. С любого другого компьютера, загружаемся в BIOS, разрешаем возможность загрузки по сети. Загруженное меню:
Выбираем пункт Install, загружается образ winpe:
Лог загрузки:
Feb 25 14:24:49 dev1 in.tftpd[31185]: RRQ from 192.168.1.152 filename pxelinux.cfg/01-00-1c-42-cb-f8-83
Feb 25 14:24:49 dev1 in.tftpd[31186]: RRQ from 192.168.1.152 filename pxelinux.cfg/C0A80198
Feb 25 14:24:49 dev1 in.tftpd[31187]: RRQ from 192.168.1.152 filename pxelinux.cfg/C0A8019
Feb 25 14:24:49 dev1 in.tftpd[31188]: RRQ from 192.168.1.152 filename pxelinux.cfg/C0A801
Feb 25 14:24:49 dev1 in.tftpd[31189]: RRQ from 192.168.1.152 filename pxelinux.cfg/C0A80
Feb 25 14:24:49 dev1 in.tftpd[31190]: RRQ from 192.168.1.152 filename pxelinux.cfg/C0A8
Feb 25 14:24:49 dev1 in.tftpd[31191]: RRQ from 192.168.1.152 filename pxelinux.cfg/C0A
Feb 25 14:24:49 dev1 in.tftpd[31192]: RRQ from 192.168.1.152 filename pxelinux.cfg/C0
Feb 25 14:24:49 dev1 in.tftpd[31193]: RRQ from 192.168.1.152 filename pxelinux.cfg/C
Feb 25 14:24:49 dev1 in.tftpd[31194]: RRQ from 192.168.1.152 filename pxelinux.cfg/default
Feb 25 14:24:49 dev1 in.tftpd[31195]: RRQ from 192.168.1.152 filename pxelinux.cfg/menu.c32
Feb 25 14:24:49 dev1 in.tftpd[31196]: RRQ from 192.168.1.152 filename pxelinux.cfg/default
Feb 25 14:25:11 dev1 in.tftpd[31203]: RRQ from 192.168.1.152 filename pxechain.com
Feb 25 14:25:11 dev1 in.tftpd[31204]: RRQ from 192.168.1.152 filename pxelinux.cfg/../Boot/pxeboot.com
Feb 25 14:25:11 dev1 in.tftpd[31205]: RRQ from 192.168.1.152 filename bootmgr.exe
Feb 25 14:25:12 dev1 in.tftpd[31207]: RRQ from 192.168.1.152 filename \Boot\Fonts\wgl4_boot.ttf remapped to /Boot/Fonts/wgl4_boot.ttf
Feb 25 14:25:12 dev1 in.tftpd[31208]: RRQ from 192.168.1.152 filename \boot.ini remapped to /boot.ini
Feb 25 14:25:27 dev1 in.tftpd[31218]: RRQ from 192.168.1.152 filename \Boot\BCD remapped to /Boot/BCD
Feb 25 14:25:27 dev1 in.tftpd[31218]: tftp: client does not accept options
Feb 25 14:25:27 dev1 in.tftpd[31219]: RRQ from 192.168.1.152 filename \Boot\BCD remapped to /Boot/BCD
Feb 25 14:25:27 dev1 in.tftpd[31220]: RRQ from 192.168.1.152 filename \Boot\Fonts\wgl4_boot.ttf remapped to /Boot/Fonts/wgl4_boot.ttf
Feb 25 14:25:27 dev1 in.tftpd[31221]: RRQ from 192.168.1.152 filename \hiberfil.sys remapped to /hiberfil.sys
Feb 25 14:25:27 dev1 in.tftpd[31222]: RRQ from 192.168.1.152 filename \Boot\boot.wim remapped to /Boot/boot.wim
Feb 25 14:25:27 dev1 in.tftpd[31222]: tftp: client does not accept options
Feb 25 14:25:27 dev1 in.tftpd[31223]: RRQ from 192.168.1.152 filename \boot\boot.sdi remapped to /Boot/boot.sdi
Feb 25 14:25:27 dev1 in.tftpd[31223]: tftp: client does not accept options
Feb 25 14:25:27 dev1 in.tftpd[31224]: RRQ from 192.168.1.152 filename \boot\boot.sdi remapped to /Boot/boot.sdi
Feb 25 14:25:30 dev1 in.tftpd[31226]: RRQ from 192.168.1.152 filename \Boot\boot.wim remapped to /Boot/boot.wim
На этом все. Про создание своего дистрибутива Windows, с установленными программами, автоматизацией установки и прочее читать здесь - "Собираем свой дистрибутив Windows 7 с программами".
Спасибо за ман.
ОтветитьУдалитьНо и тут опечатки
1)"Копируем еще один нужный файл
copy "C:\Programm Files\Windows AIK\Tools\PETools\...."
2)"Получилась такая картина в этой папке:
Папки:
fonts
BCD
ru-RU"
BCD - это НЕ папка. Это файл. Что и подтверждается выводом ls -la далее по тексту.
Ну и всё равно не работает. Последние записи в логе:
: RRQ from 192.168.1.3 filename pxechain.com
: RRQ from 192.168.1.3 filename pxelinux.cfg/../Boot/pxeboot.com
: RRQ from 192.168.1.3 filename bootmgr.exe
Т.е. по каким-то причинам загрузчик ищет этот файл не в Boot\ , а уровнем выше, рядом с папкой Boot и файлом pxechain.com
1) Выше написано "Далее буду приводить !ДВЕ! команды, с обеими архитектурами, для удобства copy-paste." Или укажите на опечатку
Удалить2) поправлю
3) Ничего не могу сказать, ман делал параллельно настройке. в принципе смотрите внимательно на пути и на то какие файлы грузит, может ошибки в настройках BCD - такое бывает, я его делал несколько раз. В начале собиралось с ошибками потом все получилось как здесь описано. Может GUID не подставили?
Спасибо за быстрый ответ.
Удалить1) В "Programm" две буквы m. Должна быть одна
Уже после отправки коммента ещё раз пересмотрел Ваш лог загрузки. И добавился ещё один вопрос.
Откуда взялись в логе файлы \boot.ini и \hiberfil.sys ? Они отсуствовали в выводе ls -la /opt/pxe/Boot/
Исправил.
УдалитьЯ видимо их добавил. так как загрузчик их пытался подгрузить. Откуда их взял? Из дистрибутива.
Нашел рабочее решение проблемы. Павел, если вы решите добавить его в свою статью - возражать не буду. :)
УдалитьСуть проблемы: Windows не хочет грузиться при попытке её установить через pxe-меню. Без меню - работает. Т.е. невозможно было сделать меню с выбором установки из нескольких ОС (несколько Windows+Linux+tools). Только прямая загрузка без всякого выбора.
Проблема оказалась в виндовом загрузчике pxeboot.n12, который в этой статье был переименован в pxeboot.com.
Этот злой загрузчик, оказывается, будет работать только из корня tftp-сервера. И конструкцией
kernel pxechain.com
append ../Boot/pxeboot.com
его не обманешь. Кстати, хочу обратить внимание, что в версиях syslinux 4.0.0-4.0.3 этот самый pxechain.com битый (http://www.syslinux.org/wiki/index.php/Common_Problems#pxechain.com.2FPXELINUX-4.00.2B).
Оказалось, что из меню default можно вызвать другой tftp-сервер. Но на каждый инстальник винды плодить по tftp-серверу - это же глупо.
Мне удалось обмануть виндовый загрузчик, вызвав тот же самый tftp-сервер.
Сначала скопировал в корень tftp-сервера файлы pxeboot.n12 и bootmgr.exe
cp /tftpboot/Boot/pxeboot.n12 /tftpboot/
cp /tftpboot/Boot/bootmgr.exe /tftpboot/
Потом поправил файл меню pxelinux.cfg/default :
LABEL 002
MENU LABEL ^Install Windows 7 x64
PXE 192.168.1.3::pxeboot.n12
И всё взлетело.
Прочитал, сделал, работает
ОтветитьУдалитьВот только никак в толк не возьму, зачем захламлять корень TFTP. Я пытался заставить работать из-под папки, но не знаю к какому виду надо привести команды создания загрузчика
кстати о птичках (типа автоматизация процесса)
createbcd.cmd (это для русской версии)
bcdedit -createstore %1\BCD
bcdedit -store %1\BCD -create {ramdiskoptions} /d "Ramdisk options"
bcdedit -store %1\BCD -set {ramdiskoptions} ramdisksdidevice boot
bcdedit -store %1\BCD -set {ramdiskoptions} ramdisksdipath \boot\boot.sdi
for /F "tokens=2" %%i in ('bcdedit -store %1\BCD -create /d "MyWinPE Boot Image" /application osloader') do set guid=%%i
bcdedit -store %1\BCD -set %guid% systemroot \Windows
bcdedit -store %1\BCD -set %guid% detecthal Yes
bcdedit -store %1\BCD -set %guid% winpe Yes
bcdedit -store %1\BCD -set %guid% osdevice ramdisk=[boot]\Boot\winpe.wim,{ramdiskoptions}
bcdedit -store %1\BCD -set %guid% device ramdisk=[boot]\Boot\winpe.wim,{ramdiskoptions}
bcdedit -store %1\BCD -create {bootmgr} /d "Windows VISTA BootManager"
bcdedit -store %1\BCD -set {bootmgr} timeout 30
bcdedit -store %1\BCD -set {bootmgr} displayorder %guid%
Насчет корня TFTP - там не все файлы удастся спрятать в папки, загрузчик ищет в корне. потому так и сделано.
УдалитьАвтоматизацию, при случае, проверю. Спасибо!
со слов
ОтветитьУдалить5. Загрузчик BCD
перестал понимать. где создавать? если в том же окне - не катит. если найти все же файл bsdedit и продолжить - в целом файл BCD получается) вроде кидаю его... но все равно не грузится ничего(
кстати, зачем самба то нажна была?
После слов
Удалить>Создаем загрузчик:
даны команды, для окна консоли, которая уже открыта.
> но все равно не грузится ничего(
значит что-то не так делаете.
> кстати, зачем самба то нажна была?
Для того чтобы загрузчик мог считывать файлы дистрибутива по сети. Сам он загружается по TFTP но остальные файлы так считывать не может.
и интеграция дров ругается. оишбка 0x80010105
ОтветитьУдалитьСмотрите вот эту статью - http://silver979.blogspot.ru/2012/06/windows-7.html
УдалитьТам все разжевано :)
вот до сюда у меня лог получается(
ОтветитьУдалитьfilename pxelinux.cfg/../Boot/pxeboot.com
Советую воспроизвести структуру файлов в точности как в статье.
УдалитьА потом разбираться, откуда что берет загрузчик и как правильно прописать ссылки в него.
вот у меня на этом моменте останавливается
ОтветитьУдалитьRRQ from 192.168.1.13 filename \Boot\winpe.wim remapped to /Boot/winpe.wim
Jul 18 10:12:58 detroit in.tftpd[5121]: tftp: client does not accept options
Jul 18 10:12:58 detroit in.tftpd[5122]: RRQ from 192.168.1.13 filename \boot\boot.sdi remapped to /boot/boot.sdi
Jul 18 10:12:58 detroit in.tftpd[5122]: sending NAK (1, File not found) to 192.168.1.13
а на загружаемой машине
status: 0xc000000f
загрузчик BCD пересоздавал несколько раз(
Покажите содержимое каталога куда смотрит TFTP сервер. В данной статье это "/opt/pxe/"
УдалитьНапример так:
ls -la /opt/pxe/
total 574
drwxrwxrwx 5 root root 248 Feb 22 18:59 .
drwxr-xr-x 17 root root 808 Feb 18 15:16 ..
drwxrwxrwx 4 root root 520 Feb 25 18:10 Boot
drwxrwxrwx 2 root root 72 Feb 18 14:53 images
drwxrwxrwx 2 root root 160 Feb 22 18:07 pxelinux.cfg
-rwxrwxrwx 1 root root 523328 Jul 14 2009 bootmgr.exe
-rwxrwxrwx 1 root root 26140 Feb 18 14:45 memdisk
-rwxrwxrwx 1 root root 998 Feb 22 18:20 pxechain.com
-rwxrwxrwx 1 root root 26579 Feb 18 14:45 pxelinux.0
все получилось. в некоторых моментах хоетл сумничать (к примеру файл boot.sdi взял не там, ставил загрузку не с файла, который у Вас указан)...
ОтветитьУдалитьв целом, получилось 3 скрипта.
раз.
imagex /mountrw winpe.wim 1 mount
copy mount\Windows\Boot\PXE\*.* d:\tftp\Boot
rem copy /y d:\winpe\ISO\boot\boot.sdi d:\tftp\Boot
copy "c:\Program Files\Windows AIK\Tools\PETools\x86\boot\boot.sdi" d:\tftp\Boot
dism /image:d:\winpe\mount /add-driver /driver:d:\Inst\drv\L /recurse
echo net use z: \\192.168.1.1\w7$ >> d:\winpe\mount\windows\system32\startnet.cmd
echo z:\setup.exe >> d:\winpe\mount\windows\system32\startnet.cmd
imagex /unmount d:\winpe\mount /commit
copy d:\winpe\winpe.wim d:\tftp\Boot\winpe.wim
два.
set i=d:\tftp\Boot
bcdedit -createstore %i%\BCD
bcdedit -store %i%\BCD -create {ramdiskoptions} /d "Ramdisk options"
bcdedit -store %i%\BCD -set {ramdiskoptions} ramdisksdidevice Boot
bcdedit -store %i%\BCD -set {ramdiskoptions} ramdisksdipath \Boot\boot.sdi
bcdedit -store %i%\BCD -create /d "MyWinPE" /application osloader > guid.txt
notepad guid.txt
и три. т.к. guid выдается строкой с русскими буквами...
set guid={043131e8-0e55-11e4-8280-bb5c29b3e422}
set i=d:\tftp\Boot
bcdedit -store %i%\BCD -set %guid% systemroot \Windows
bcdedit -store %i%\BCD -set %guid% detecthal Yes
bcdedit -store %i%\BCD -set %guid% winpe Yes
bcdedit -store %i%\BCD -set %guid% osdevice ramdisk=[boot]\Boot\winpe.wim,{ramdiskoptions}
bcdedit -store %i%\BCD -set %guid% device ramdisk=[boot]\Boot\winpe.wim,{ramdiskoptions}
bcdedit -store %i%\BCD -create {bootmgr} /d "Windows 7 Boot Manager"
bcdedit -store %i%\BCD -set {bootmgr} timeout 30
bcdedit -store %i%\BCD -set {bootmgr} displayorder %guid%
Я так понял вы на Windows делаете?
УдалитьПросто под Linux названия в пути разным регистром - разный путь.
>RRQ from 192.168.1.13 filename \Boot\winpe.wim remapped to /Boot/winpe.wim
>Jul 18 10:12:58 detroit in.tftpd[5122]: RRQ from 192.168.1.13 filename \boot\boot.sdi remapped to /boot/boot.sdi
Сравниет пути к файлам. Это из Вашего предыдущего комента.
А так, получилось - и хорошо :) можете обкатать и свою шпаргалку написать, если условия реализации отличаются.
У меня получилась такая беда и в чем причина не ясно...
ОтветитьУдалитьСтарт загрузки по сети и получение меню:
Jun 28 16:42:57 localhost in.tftpd[3647]: RRQ from 192.168.10.152 filename pxelinux.0
Jun 28 16:42:57 localhost in.tftpd[3648]: RRQ from 192.168.10.152 filename pxelinux.cfg/dad61656-5cad-4aa4-9587-144507470021
Jun 28 16:42:57 localhost in.tftpd[3649]: RRQ from 192.168.10.152 filename pxelinux.cfg/01-08-00-27-eb-d0-42
Jun 28 16:42:57 localhost in.tftpd[3650]: RRQ from 192.168.10.152 filename pxelinux.cfg/C0A80A98
Jun 28 16:42:57 localhost in.tftpd[3651]: RRQ from 192.168.10.152 filename pxelinux.cfg/C0A80A9
Jun 28 16:42:57 localhost in.tftpd[3652]: RRQ from 192.168.10.152 filename pxelinux.cfg/C0A80A
Jun 28 16:42:57 localhost in.tftpd[3653]: RRQ from 192.168.10.152 filename pxelinux.cfg/C0A80
Jun 28 16:42:57 localhost in.tftpd[3654]: RRQ from 192.168.10.152 filename pxelinux.cfg/C0A8
Jun 28 16:42:57 localhost in.tftpd[3655]: RRQ from 192.168.10.152 filename pxelinux.cfg/C0A
Jun 28 16:42:57 localhost in.tftpd[3656]: RRQ from 192.168.10.152 filename pxelinux.cfg/C0
Jun 28 16:42:57 localhost in.tftpd[3657]: RRQ from 192.168.10.152 filename pxelinux.cfg/C
Jun 28 16:42:57 localhost in.tftpd[3658]: RRQ from 192.168.10.152 filename pxelinux.cfg/default
Jun 28 16:42:57 localhost in.tftpd[3659]: RRQ from 192.168.10.152 filename pxelinux.cfg/menu.c32
Jun 28 16:42:57 localhost in.tftpd[3660]: RRQ from 192.168.10.152 filename pxelinux.cfg/default
Выбор пункта инсталяции Windows
Jun 28 16:43:04 localhost in.tftpd[3661]: RRQ from 192.168.10.152 filename pxechain.com
Jun 28 16:43:04 localhost in.tftpd[3662]: RRQ from 192.168.10.152 filename pxelinux.cfg/../Boot/pxeboot.n12
Jun 28 16:43:04 localhost in.tftpd[3663]: RRQ from 192.168.10.152 filename bootmgr.exe
Jun 28 16:43:04 localhost in.tftpd[3664]: RRQ from 192.168.10.152 filename \Boot\Fonts\wgl4_boot.ttf
Jun 28 16:43:04 localhost in.tftpd[3665]: RRQ from 192.168.10.152 filename \boot.ini
Происходит затык, вылазит ошибка инсталятора (Filename: \Boot\BCD Status: 0xc000000f) и вместе с этим в лог:
Jun 28 16:43:20 localhost in.tftpd[3666]: RRQ from 192.168.10.152 filename \Boot\BCD
Jun 28 16:43:20 localhost in.tftpd[3667]: RRQ from 192.168.10.152 filename \Boot\Fonts\wgl4_boot.ttf
Что это? Как это побороть? Почему вообще затык на несуществующем файле?
Как правильно написать следующие команды ?
ОтветитьУдалитьbcdedit -store c:\BCD -set {ef40ab64-7ce9-11e2-8487-a0b3ccc2b14c} systemroot \Windows
или
bcdedit -store c:\BCD -set ef40ab64-7ce9-11e2-8487-a0b3ccc2b14c systemroot \Windows
и ещё, у меня нет файла wdsmgfw.efi
Если еще актуально - то со скобками.
УдалитьСпасибо за мануал.
ОтветитьУдалитьУ меня после запуска wpeinit наглухо зависает WinPE, есть ли какое-либо решение?
ОтветитьУдалить