Так, це дуже можливо. Тип системи, яку ви можете завантажувати, залежатиме від того, як працює ця система.
Зазвичай ви виявите, що дуже прості системи (як DOS або Win98) і дуже складні системи (наприклад, сучасні дистрибутиви Linux) легко завантажуються через мережу.
Спосіб досягнення цього на двох типах систем дуже різний.
Розглянемо обидва способи детальніше. Я припускаю , що у вас вже є PXE завантаження сервера установки ; якщо ви цього не зробите, продовжуйте це робити, це досить легко.
Я також припускаю dnsmasq
встановлення на сервері Linux із tftproot /var/lib/tftpboot
, але ви повинні мати можливість адаптувати інструкції до будь-якої іншої установки.
Для простих систем
Для простих систем ви просто завантажуєте зображення (ISO) в оперативну пам’ять, і обманюєте систему вважати, що це фактична одиниця. Це робиться за допомогою невеликої допомоги BIOS та програмного модуля під назвою memdisk .
Система, яку ви хочете завантажити через мережу, є:
# /var/lib/tftpboot/pxelinux.cfg/default
UI vesamenu.c32
PROMPT 0
TIMEOUT 0
MENU DEFAULT freedos
LABEL freedos
MENU LABEL FreeDOS
KERNEL /syslinux/memdisk
INITRD /freedos.iso iso
Це майже все. Перші кілька рядків - це панель меню; важливими бітами є останні чотири рядки: завантажити memdisk із заданою ISO.
Для складних систем
Сучасні системи з вигадливими елементами, такими як гарне управління пам’яттю та правильне апаратне виявлення, в основному ігнорують все, що говорить BIOS.
Це робить memdisk
підхід, використаний вище, майже марним, оскільки якщо ви завантажили ISO таким чином, як тільки ядро було прочитане з ISO та завантажено в пам'ять (це робиться завантажувачем в ISO; завантажувачі дійсно звертають увагу на BIOS) , дані ISO не було б.
Що ти робиш тоді? Ну, ви фактично не завантажуєте ISO з мережі, а натомість повідомте системі, що звідти він може отримати доступ до потрібних файлів.
Для систем Linux витягніть вміст ISO десь у tftproot та завантажте ядро та initrd безпосередньо, а потім залишаючи їх до них, щоб знайти кореневу файлову систему та встановити її.
Ось приклад використання дивовижного компакт-диска System Rescue . Я фактично витягнув весь ISO на корінь сервера TFTP, тому що він вписується прямо в мою структуру каталогів, тому ядра знаходяться /syslinux
.
# /var/lib/tftpboot/pxelinux.cfg/default
UI vesamenu.c32
PROMPT 0
TIMEOUT 0
MENU DEFAULT sysrescd64
LABEL sysrescd64
MENU LABEL 1) SysResCD 4.2.0 (x64)
KERNEL /syslinux/rescue64
APPEND setkmap=us nomodeset netboot=nbd://pxe:sysrcd.dat
INITRD /syslinux/initram.igz
Найважливіший біт тут - APPEND
лінія. Бачите netboot=
кінець? Ось так ОС знає, де знаходиться його коренева файлова система. Синтаксис є <protocol>://<server>:<path>
.
Я зручно встановив ім’я DNS pxe
для свого сервера. Якщо у вас цього немає, ви б використовували IP-адресу для сервера.
Також sysresccd є одним з найпростіших, оскільки він використовує зображення squashfs для своєї кореневої файлової системи, яку можна легко завантажувати та завантажувати в ОЗУ будь-яким методом. Тут я використовую nbd; ви також можете використовувати tftp, nfs та http .
Для інших дистрибутивів, таких як Ubuntu, я думаю, що ви можете використовувати лише nfs.
Для систем Windows це зробити трохи складніше . Контур такий:
- Постановіть Windows 7 на загальну папку на сервері
- Майте повне середовище Windows PE на сервері у вашому кореневому TFTP
- Запропонуйте клієнтській машині завантажити WinPE по мережі та натисніть, F12щоб отримати командний рядок
- Зіставте спільну папку з установкою Windows 7 на лист диска
- Почніть встановлення з картографічної папки
Я ніколи цього не пробував, і, здається, для деяких людей це не працює. Для версій NT, старших за Vista, я думаю, що це навіть неможливо. Для Windows NT (95, 98, ME тощо) ви можете використовувати підхід memdisk, але завантаження цих шкідливих для вашого здоров'я :-p