Недавно в моём районе открылась новая комиссионка, и конечно же, я наведался туда в первый же день. Особо заинтересовавшего улова было немного, но среди прочего попался красивый, хоть и побитый жизнью, ноутбук — ThinkPad X40.

За каких-то 500 йен (260 рублей) такое чудо забрать было просто обязательно. Ну, подумаешь, софттач уже разложился — к счастью, он миновал стадию превращения назад в нефть, и сразу перешёл в состояние наждачки.

Но как обычно, беда вылезла, откуда не ждали.

После подкидывания блока питания оказалось, что винчестер девственно чист. Однако попытки загрузиться с флешки, внешнего диска, или даже внешнего флопика, результата не приносили — неумолимо вылезала надпись «Operating System Not Found», да и названия устройств в биосе не появлялись.

Беглый гуглёж показал — ранние серии X40 были очень часто подвержены внезапной смерти мультиконтроллера (ICH6). Буквально подышишь не в ту сторону, втыкая флешку — и вот у тебя уже нету ни USB, ни чего-нибудь ещё.

Добрые люди дали посмотреть на схему, и опасения подтвердились: ICH6 отвечает за связь с аудиокодеком, блютусом и USB. Как впоследствии выяснится, ни звук, ни блютус, ни USB тоже не работают.

Удивило, конечно, что SD-ридер тут висит на шине PCI, и поэтому работает. Впрочем, это я уже забегаю вперёд, ведь загрузиться с него нельзя.

SD-ридер на PCI-шине, рядом с сетевыми адаптерами
SD-ридер на PCI-шине, рядом с сетевыми адаптерами

В случае обычного ноутбука, можно было бы просто кинуть винчестер в USB-переходник и залить образ с другого компьютера, но и тут подстава — винчестер в нём 1.8 дюйма, и на шину IDE с напряжением до 3.3 вольта, поди найди такой адаптер. Вкладываться в покупку переходника, SSD и ещё адаптера с USB на mSata тоже не хотелось, ибо уже жаба задушит :-)

Однако, в нём всё ещё есть опция загрузки по сети через PXE, может, это и спасло бы?

❯ Сначала было слово, и слово это — DHCP

Первым делом я попробовал самое очевидное решение — iVentoy. Вебморда и все дела, конечно — стильно, модно, молодёжно, но ноутбук при этом успешно загружал PXE-бинарник и вешался. Видимо, с i386 проект уже не совместим. Придётся делать всё вручную.

Для того, чтобы загрузиться через PXE, DHCP-сервер должен отдать грузящемуся клиенту в ответе как минимум два параметра:

  • № 66адрес/имя TFTP-сервера, с которого грузимся, в моём случае 192.168.1.228

  • № 67имя файла на TFTP-сервере, которое будем загружать

В OpenWRT их можно указать в параметрах интерфейса локальной сети на вкладке DHCP Server:

Опция 150 для PXE не нужна, у меня она прописана для работы в локалке цисковских телефонов
Опция 150 для PXE не нужна, у меня она прописана для работы в локалке цисковских телефонов

В качестве сервера был поднят TFTPD64, а загрузчиком для пробы был закинут iPXE в сборке от проекта netboot.xyz (файл netboot.kpxe).

Пробуем грузиться и... почему-то ноутбук всё равно усердно пытается найти TFTP-сервер на роутере.

Тут я перепробовал кучу разных настроек, но, видимо, моя версия OpenWRT забагована и никакие попытки прописать DHCP Next-Server другими способами не прокатили.

К счастью, сам файл iPXE весьма небольшой, поэтому я просто установил на роутер atftpd и положил его в /srv/tftp/netboot.kpxe.

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

❯ Попробуем туда за-PE-реться

Дальше были многочисленные попытки загрузить хоть какой-то ISO-образ через memdisk. В общем случае это делается следующей последовательностью команд в iPXE Shell:

kernel memdisk
initrd http://192.168.1.228:3939/bartPE.iso
boot

Однако, все имеющиеся у меня установочники падали даже не доходя до загрузки, собственно, ОС из образа, и я толком не разобрался, что делал не так. Для загрузки конкретно же Windows PE, впрочем, нашёлся другой способ:

  1. Берём образ Windows Server 2003 SP1 (важно: именно SP1) и вытаскиваем оттуда командой expand из папки I386 файлы

    1. STARTROM.COM

    2. SETUPLDR.EXE — переименовываем в NTLDR (именно из EXE, не из BIN!)

    3. NTDETECT.COM

  2. Кладём это всё в корень нашего TFTP-сервера, а рядом кладём образ самого Windows PE, собранный из того же Server 2003 SP1.

  3. Создаём файл с именем WINNT.SIF, в который пишем

    [SetupData]
    BootDevice = "ramdisk(0)"
    BootPath = "\i386\System32\"
    OsLoadOptions = "/noguiboot /fastdetect /minint /rdexportascd /rdpath=WINPE16.ISO"

    где WINPE16.ISO — название образа Windows PE.

Если вам влом этим всем заниматься — можете забрать готовую папку с архиворга :-)

После этого, если конфигурация DHCP у вас работает, можно просто указать STARTROM.COM в опции №67, и система должна загрузиться. Если же у вас всё так же сломано, как и у меня, то грузимся в IPXE Shell и выполняем команды:

dhcp net0
set net0/next-server 192.168.1.228
chain tftp://192.168.1.228/STARTROM.COM

После чего, в теории, наш компьютер будет медленно и печально вытягивать ISO-файл по UDP.

Клиент качает
Клиент качает
Сервер отдаёт
Сервер отдаёт
Загрузи лося!
Загрузи лося!

Это может быть полезно, например, чтобы вытащить какие-то важные файлы с машины эпохи XP, которая не грузится, но ещё как-то шевелится. Однако, для установки, как оказалось, есть способ ещё проще, быстрее и надёжнее.

❯ Serva — всему голова

Оказывается, есть современный, более надёжный инструмент «всё в одном» специально для Windows: Serva.

Он позволяет развернуть установку Windows XP по сети с куда меньшим геморроем.

Сначала скачиваем дистрибутив, распаковываем и запускаем. Окно по дефолту будет пустым и загадочным — нужно нажать на иконку в строке заголовка, а затем Settings:

На вкладке TFTP включаем сервер и создаём для него новую папку (без всего хлама из прошлых шагов)

На вкладке DHCP можно сделать по-разному:

  • Если соединяем комп с сервером витухой напрямую, то включаем DHCP Server

  • Если, как у меня, всё идёт в общую локалку, то включаем proxyDHCP

Также не забываем включить и BINL — через него будут, собственно, загружаться системные файлы.

Нажимаем OK и затем закрываем Serva полностью.

Далее тысячу раз проверяем файрвол, что у нас не торчит голой задницей порт SMB в интернет, а затем идём в PowerShell и выполняем:

Enable-WindowsOptionalFeature -Online -FeatureName SMB1Protocol -All -NoRestart
Либо мышкой

Control Panel -> Turn Windows features on or off -> SMB 1.0/CIFS File Sharing Support: включить SMB 1.0/CIFS Server

Важно: протокол SMBv1 дырявый, и лучше это дело после установки откатить сразу назад, либо проворачивать это всё на виртуалке.

Затем идём в Панель управления → Network and Sharing Center → Advanced Sharing Settings и выключаем Password protected Sharing

После чего перезагружаем компьютер.

Возвращаемся к папке, которую создали для TFTP-сервера в Serva, и открываем её свойства. На вкладке Sharing жмём на Advanced Sharing и делаем её доступной с названием, дословно, WIA_RIS_SHARE.

После чего на той же вкладке жмём на просто Share... и даём доступ на чтение для Guest и Everyone:

Важно: сделать то же самое через Advanced Sharing — не прокатит.

Затем в папке создаём подпапку WIA_RIS, в которой — любую другую, но без пробелов и спецсимволов. Я, например, создал папку WXPJpn. В неё перетаскиваем содержимое всего нашего установочного диска с Windows XP.

Загрузиться в теории это сможет уже сейчас, но установиться не сможет — сети-то нету. Поэтому создаём подпапку $OEM$\$1\Drivers\NIC и вбрасываем туда драйвера от сетевой карты нашего Thinkpad'а.

Запускаем Serva ещё раз. Должны побежать логи, но все без ошибок:

Теперь, опять же, если вы используете DHCP-сервер внутри Serva, или в вашей сети опции 66/67 работают корректно — можно прописать в опцию 66 адрес сервера, на котором Serva запущена, а в 67 — строку \BM\PXESERVA\BIOS\pxeserva.0, и грузиться.

В моём же поломанном случае нужно было зайти снова в папку TFTP-сервера и скопировать всё из BM\PXESERVA\BIOS\*.* в её корень. В итоге получилась такая структура:

И как в прошлый раз — загружаюсь в iPXE, раздаваемый роутером, а затем выполняю команды:

dhcp net0
set net0/next-server 192.168.1.228
chain tftp://192.168.1.228/PXESERVA.0

Наблюдаю на экране меню с заветным пунктом, значит всё настроено успешно!

Если все драйвера на месте, то дальше будет всё то же, что и при обычной загрузке с установочного компакт-диска. Ну а как дальше переустановить шиндошс — думаю, уж не на хабре рассказывать! Зато, может быть, я ещё расскажу о каких-нибудь таких находках и экспериментах в своём лунном телеграме :-)


Новости, обзоры продуктов и конкурсы от команды Timeweb.Cloud - в нашем Telegram-канале 

Перед оплатой в разделе «Бонусы и промокоды» в панели управления активируйте промокод и получите кэшбэк на баланс.

Комментарии (34)


  1. key08rus
    12.11.2025 08:44

    Забавное совпадение. Занимался вчера почти тем же самым, но на IBM T22 и под Linux


    1. vladkorotnev Автор
      12.11.2025 08:44

      По ощущениям, линух куда проще такое извращение переживает, и гайд бы сократился раза в два


      1. key08rus
        12.11.2025 08:44

        Как выяснилось, не совсем. На старых (точнее, древних) клиентах есть некоторые ошибки в реализации PXE. Лишние символы в запрашиваемом имени файла.


        1. vladkorotnev Автор
          12.11.2025 08:44

          Хотя бы так. Тут тоже, может быть, дело не в роутере, а в клиенте, который всегда на default gateway ищет сервер.

          И ЕМНИП попадались клиенты, которые вообще вместо TFTP требуют что-то там на нетвари, но тут уже не помню %)


          1. key08rus
            12.11.2025 08:44

            В роутере. Точнее, в DHCP-сервере. Собственно, как раз в опции next-server


  1. nickston
    12.11.2025 08:44

    У меня на древнем ноуте была примерно такая же ситуация. Были юсб порты но ноут с них не умел грузиться. Так же сделал загрузку по сети, но одним из пунктов сделал загрузку не с хдд а с флешки, и все. Ноут нормально запустил установку с флешки.


    1. vladkorotnev Автор
      12.11.2025 08:44

      А через что это делается? Я пытался подсунуть plop boot в надежде запуститься с карты памяти, но увы.


      1. nickston
        12.11.2025 08:44

        TFTPD там и dhcp и tftp. галка совместимость pxe и папку корня. В корень pxelinux.0 и тд. там свое меню и все


        1. vladkorotnev Автор
          12.11.2025 08:44

          Вот кстати говоря эта самая галка у меня и ломала загрузку винды по второму описанному способу из статьи — загрузчик просто не мог найти ntldr, не знаю почему именно.


    1. CEBEP51
      12.11.2025 08:44

      Я перепрошивал USB флешку в CD привод. Для этого нужна древняя разборная флешка. Надо разобрать флешку, посмотреть номер чипа. По номеру скачать соответствующую утилиту и перепрошить флешку. Теперь в BIOS появляется оптический привод и можно ставить систему.


      1. nickston
        12.11.2025 08:44

        Это вариант, но не для древних, это уже сильно поновее так могут


        1. vladkorotnev Автор
          12.11.2025 08:44

          Да фиг его знает, у этого тинкпада вполне себе есть пункт USB-DVD в биосе, просто как обычно был нюанс.

          Ранее этим годом устанавливал винду на аппарат для фоновой музыки, у которого форматом аудиодиска был подписанный сертификатом загрузочник с линуксом. Поэтому на загрузочник винды 98 он ругался и выплёвывал. Но вот закрыть USB-FDD они забыли, поэтому дос 7, fdisk, mscdex, а дальше уже по накатанной. Биос датирован был 2001 годом при этом.


  1. domix32
    12.11.2025 08:44

    Интересно можно ли таким макаром накатить какую-нибудь ReactOS


    1. vladkorotnev Автор
      12.11.2025 08:44

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


      1. domix32
        12.11.2025 08:44

        Я имел ввиду в принципе через сеть, не обязательно конкретно этим же механизмом.


    1. TemArtem
      12.11.2025 08:44

      Через Serva скорее всего нет, она заточена под механизмы сетевой установки именно Windows (RIS/WDS), а вот через iPXE и memdisk - вполне возможно. Если ISO-образ ReactOS умеет загружаться как "live CD", то memdisk должен его подхватить



  1. TemArtem
    12.11.2025 08:44

    Вся эта возня с PXE - это прекрасно, но не проще ли было просто вытащить винчестер?) Да, он редкий, 1.8" IDE, но адаптеры на алике стоят недорого, заказал бы за 300 рублей переходник IDE 1.8" -> USB, спокойно залил бы образ на любом другом компе и вставил обратно, получилось бы в сто раз быстрее и надежнее. Но конечно не так интересно)


    1. vladkorotnev Автор
      12.11.2025 08:44

      И нафига потом этот одноразовый переходник в хозяйстве нужен будет? %)


      1. kma21
        12.11.2025 08:44

        За тем же, зачем этот древний ноутбук + потраченное на него время.


        1. vladkorotnev Автор
          12.11.2025 08:44

          Ну, аппарат на ивентах в общей зоне стоять будет, а время — на то, чтобы разобраться наконец, как pxe работает, и иметь наготове сервак для раскатки виндов без болванок.

          Тратить же деньги и ждать месяц переходник, который нужен будет один раз в жизни, ибо никто больше такие извратные диски не ставил — ну такое себе... Если вкладываться, то тогда уж в msata, он хотя бы ещё сколько-то лет актуален будет.

          Жаба давит, проще говоря!


        1. old_gamer
          12.11.2025 08:44

          Этот древний ноутбук, полагаю, нужен как раз для того, чтобы поиграться с древний нетбут и подобные штуки. Переходники не интересно :)


  1. VT100
    12.11.2025 08:44

    Лет 15 назад игрался с ПК не поддерживающим загрузку по USB. Основными вехами пути стали:

    • GRUB на дискете;

    • его модули xHCI ("драйвер" хост-контроллера, USB (собственно обмен данными) и USBMS (реализация Mass Storage class).


  1. ED-209
    12.11.2025 08:44

    Тоже проходил через подобное лет 15 назад. Был защищенный ноутбук Panasonic CF-29. CD/DVD-ROM в комплекте не досталось, а USB ни разу не загрузочные.

    Выручила тогда эта статья (2007г):

    Установка Windows XP по сети. RIS, но не Microsoft.


  1. IvUyr
    12.11.2025 08:44

    Судя по интернету, в ноуте таки есть PCMCIA. Можно было бы взять PCMCIA-карту контроллер USB, и попробовать загрузится через неё. В отличии от упомянутого выше моста (zif?)IDE-USB, PCMCIA-карта подойдёт для любого ноута со слотом PCMCIA, где нет USB, они отгорели либо же он только один (мой IBM Thinkpad 380z передаёт привет).


    1. vladkorotnev Автор
      12.11.2025 08:44

      Самое весёлое, что у меня был PCMCIA-CF ATA адаптер в загашниках, валялся лет пять. Но на этот новый год при зачистке шкафов подумал, что уже хз сколько лет PCMCIA в хозяйстве не было, и отдал его товарищу, который старым железом регулярнее меня занимается. А тут оно вон как вышло %)


      1. IvUyr
        12.11.2025 08:44

        Закон ящика с кабелями :-)


  1. ncix
    12.11.2025 08:44

    ❯ Serva — всему голова

    Оказывается, есть современный, более надёжный инструмент «всё в одном» специально для Windows: Serva.

    Он позволяет развернуть установку Windows XP по сети с куда меньшим геморроем.

    По объему статьи, выглядит так что с Serva подпрыгиваний нужно гораздо больше, чем первый описанный вариант ))


  1. Anywake
    12.11.2025 08:44

    А зачем вы копипастите некростатьи технического плана на развлекательный сайт Пикабу? Эта реклама денег стоит, какой в именной этой статье смысл там?

    ЗЫ посмотрел цены, деньги у вас есть... да.


  1. bodyawm
    12.11.2025 08:44

    У меня есть уставший-уставший Thinkpad на P II, который я пару лет назад купил за копейки. Как же обидно, что он вроде работает, но не проходит POST и жалуется на неверный пароль. Я сдампил EEPROM'ку, там вроде всё сходится, занулил - тоже самое. Такое чувство будто обрыв где-то от мульта/моста до EEPROM :(


  1. boojum
    12.11.2025 08:44

    Вот умели же делать клавиатуры! Не то что нынешние огрызки


  1. mihmig
    12.11.2025 08:44

    А можно ли через PXE не установить систему, а запустить (на современном компе) с гигабитной сетевой картой.
    Например простенький Linux чтобы использовать компьютер в качестве простого рабочего места (нет диска - нет проблем)...


    1. VT100
      12.11.2025 08:44

      Конечно можно. И тут были статьи. Что-то вроде "бездисковая рабочая станция".


    1. vladkorotnev Автор
      12.11.2025 08:44

      Всякие тонкие клиенты зачастую именно так и работают. Загрузчик по PXE, оттуда ядро и рамдиск, корневая ФС — например, NFS, и поехали