![]() |
|||||||||||||
|
|||||||||||||
PXE - Сетевая загрузка с микротика PXE - (Preboot eXecution Environment) - среда для загрузки компьютера с помощью сетевой карты без использования локальных носителей данных (жёсткого диска, USB-накопителя и т.п.) Приветствую, решил поделится некоторым опытом, который поможет в первую очередь приходящим системным администраторам. В моем понимании - хороший приходящий системный администратор, это тот человек, который приезжает в организацию раз в месяц за зарплатой :) Так уж получилось, что я тоже слежу за несколькими организациями и администрирую все то, что включено в коммутатор, естественно во всех этих организациях у меня стоят микротики. Организации разбросаны по разным концам города, при отсутствии пробок и важных дел доехать до любой из них занимает 20-30 минут, в час пик это время резко увеличивается и с учетом пробок на дорогах до 1,5-2х часов. Как я уже сказал - организаций несколько, и по закону подлости проблемы в них чаще всего возникают одновременно. Моим решением данной проблемы стало удаленное управление через RADMIN и крайне редко через TeamViewer. Все основные задачи я выполняю со своего компьютера или ноутбука в любое время суток, либо в обед, если сетевая карта пользователя не поддерживает WOL (WakeOnLan), либо просто прошу пользователя уходя домой не выключать свою машину. Так-то оно так :) Появляюсь в организациях действительно редко, за деньгами, для общения с директором и в случаях катастроф на машинах пользователей. Вся остальная работа спокойно делается из дома. И все вроде бы хорошо, только вот хочется ездить еще меньше :) В идеале раз в месяц. Основными причинами таких поездок являются катастрофы в виде повреждения таблицы разделов на жестком диске, ошибки файловой системы, убитой винды или подхваченного WinLocker. Это те случаи, когда починить, в общем, то несложно, просто ехать значительно дольше.
Как это работает?
Для организации загрузки системы в PXE используются протоколы IP, UDP, BOOTP и TFTP. PXE-код, обычно находящийся в ПЗУ сетевой карты, получает из сети по протоколу TFTP (получив адрес TFTP-сервера по BOOTP) исполняемый файл, после чего передаёт ему управление. Простыми словами: Живем мы в современном мире где большинство сетевых карт интегрированы в материнскую плату, активируем в настройках BIOS опцию LAN BOOT ROM (может называться иначе), и ставим в очередности загрузки сетевую карту как первое опрашиваемое загрузочное устройство. При загрузке будет выполнен опрос устройств, при опросе сетевой карты будет загружен PXE-rom, далее в сети будет найден DHCP сервер который выдаст ip адрес, адрес TFTP сервера и имя файла загрузчика. Далее файл загрузчика будет получен по TFTP и ему будет передано управление, загрузчик так же по протоколу TFTP вытянет необходимые ему файлы.
Что будем грузить? Для своего проекта я взял за основу два LiveCD. Первый AlkidLiveDVD, второй VINCOME. Мне нужно чтобы эти LiveCD при их загрузке автоматически загружали поддержку сети, устанавливали и запускали RADMIN 2.2 с необходимыми мне настройками. Сразу же возникла проблема - не всякий LIVECD можно запустить по сети без особых танцев с бубном, т.к. LiveCD не знает, что его загружают по TFTP. Зато можно с помощью загрузчика залить образ ISO в память, и смонтировать его в виртуальный CDROM, но тут стоит подумать о размере ISO т.к. оперативка машины не резиновая, да и TFTP не очень шустрый, на разных сетевых картах скорость будет разной. В итоге мы понимаем, что при маппинге в память нужно, чтобы влез сам ISO и осталось место в оперативке, для запуска LiveCD и программ с него. Так что лишние программы будем вырезать и добавлять все, что нам необходимо. Для распаковки ISO подойдет обычный WinRar или любая другая программа которая умеет работать с этими образами. Я для своих задач оставил минимум: файловый менеджер, акронисы (TrueImage и DiskDirector), утилиты для работы с реестром и жестким диском. Для Vincome было все просто, почистил Nu2Menu.xml и удалил лишние файлы, добавил RADMIN и сеть в автозагрузку. С Alkid было сложнее, помимо удаления файлов нужно отредактировать реестр сборки. Делается это так: извлекаем из под винды с образа A386/SYSTEM32/CONFIG/SOFTWARE в удобное для нас место, можно записать на флешку. Грузимся на любой машине с образа или диска Alkid, делаем это так, чтобы флешка была доступна, открываем regedit и загружаем куст SOFTWARE под любым именем, ищем раздел Sherpya\XPEinit, прочесываем подразделы, добавляем в автозагрузку то, что нужно и удаляем ненужные ярлыки из меню, после редактирования выгружаем куст. Подменяем файл SOFTWARE в сборке, файлом с флешки. Так как у Alkid загрузчик BCDW, а все лишнее мы удалили, стоит грохнуть и меню, для этого редактируем файл BCDW/BCDW.ini, где все удаляем и указываем: [MENUITEMS] После того как вы закончили глумится над файлами сборок их нужно собрать обратно в ISO. Для этого я использовал UltraISO, открыл изначальный образ LiveCD, удалил в образе все файлы, залил свои, сохранил образ. Теперь мы имеем: vincomepxe.iso - 313мб (Исходный 668мб) alkidpxe.iso - 476мб (Исходный 1,23гб) Наш загрузчик понимает архивы .gz это не экономит наш RAM но может ускорить скорость загрузки и сэкономит место на сервере (при использовании флеш очень актуально), только вот еще одна беда, при использовании TFTP архив придется грузить дважды, первый раз для чтения заголовков и к.с., второй раз для распаковки. Соответственно архив должен быть меньше оригинала более чем в два раза, я скачал gzip и пожал ISO, так же попробовал пожать с помощью PeaZip со степенью Ultra, файл получился меньше чем после использования gzip. Теперь имеем: vincomepxe.gz - 126мб (126*2=252мб, что меньше чем исходные 313мб) alkidpxe.gz - 224мб (224*2=448мб, что меньше чем исходные 476мб) При маппинге ISO в память, образ монтируется в качестве CDROM для которого у LiveCD в большинстве случаев нет драйверов и при загрузке и соответственно вся загрузка вывалится в BSOD 7B, чтобы такого не произошло нужно замаппить образ дискеты Winvblock или Firadisk в дисковод 3.5 А это еще один файл: winvblock.gz - 113кб.
Загрузчик В качестве загрузчика мы будем использовать универсальный загрузчик GRUB, в нем довольно таки много всяких фич, он очень прост и удобен в использовании. Файл: grldr - сам загрузчик Файл menu.lst -менюшка к нему, в нашем случае каталог /menu.lst/default Файл /boot/pxetheme.gz - gfx тема меню для загрузчика. Так же в каталоге /boot будут лежать файлы alkidpxe.gz, vincomepxe.gz и winvblock.gz. Итого шесть файлов: Содержимое файла /menu.lst/default timeout 5 title Загрузка с HDD
Виндовым Vista, 7, 8 блокнотом файлик не править, т.к. кодировка сохранения все испортит, или в XP или скачайте программу Tea. Пароли MD5 для GRUB можно сформировать командой md5crypt через командную строку grub.
Теперь, когда все файлы протестированы и на руках, мы можем начинать настройку микротика.
Mikrotik, DHCP+TFTP
Имеем сеть 192.168.3.0/24 Микротик в ней 192.168.3.1, он же шлюз в интернет.
Настраиваем DHCP server
Назначаем ip адрес: /ip address add address=192.168.3.1/24 disabled=no interface=LAN network=192.168.3.0
Заведем пул адресов для выдачи: /ip pool add name=pool1 ranges=192.168.3.2-192.168.3.254
Поднимаем сервер: /ip dhcp-server add address-pool=pool1 authoritative=after-2sec-delay
disabled=no interface=LAN lease-time=3d name=server1
Настраиваем выдачу, boot-file-name=grldr указывает имя загрузчика на TFTP сервере, next-server=192.168.3.1 указывает ip адрес TFTP сервера: /ip dhcp-server network add address=192.168.3.0/24 boot-file-name=grldr dns-server=192.168.3.1 gateway=192.168.3.1 netmask=24 next-server=192.168.3.1
Так же полезно заполнить /ip dhcp-server lease для того чтобы ip адреса пользователей были фиксированы и не менялись. После данной настройки наш DHCP будет выдавать всю необходимую информацию для загрузки.
TFTP Для наглядности я подключил к микротику флешку usb1 т.к. не у всех x86 с кучей места на системном диске. Зашел в System -> Stores через Winbox, на вкладке Disks отформатировал ее, после подключился по FTP перешел в каталог /usb1, создал там каталох pxe, получилось /usb1/pxe, и залил туда все наши файлы. Далее добавил информацию о сопоставлении имен запрашиваемых файлов к реальной файловой структуре, права записи: /ip tftp add allow=yes allow-rollover=yes disabled=no read-only=yes
real-filename=usb1/pxe/grldr req-filename=grldr Кстати сказать, обратите внимание на опцию allow-rollover=yes, через винбокс включить ее нельзя, только, через терминал, если опция отключена для файла - файлы больших размеров не пройдут через TFTP. По остальному, загрузка не с флешки значительно быстрее, у меня флешка определилась как USB 1.1 и тупила очень страшно, хотя с жесткого пролетает как на ракете.
Заключение
В принципе на этом все, данная конфа мне нужна только в случаях померания жесткого, таблицы разделов, либо ошибок в файловой системе. Веселый пункт меню: title Загрузка с HDD Дает возможность подгрузить второй GRUB с жесткого диска, а уже из под него грузить любой LiveCD с веселой скоростью, удаленным доступом и полным набором программ. Вот теперь можно ездить только за деньгами, при поломке (загрязнении железа), апгрейде и т.д. Но остался еще один не решенный вопрос, как быть если комп старый и (или) не умеет грузится сетевой карты, а на жестком улетел раздел? Выход был найден в качестве дежурной флешки, дискеты или диска с проекта etherboot.org
Menu (Кликните для увеличения)
Vincome LiveCD (Кликните для увеличения)
Alkid LiveCD (Кликните для увеличения)
При использовании материалов ссылка на автора и источник ОБЯЗАТЕЛЬНЫ! Автор: Григорьев Дмитрий (Inlarion) (C) 19.06.2013 Теги: Mikrotik, Микротик, TFTP, PXE, LANBOOT, LiveCD, Загрузка по сети, Сетевая загрузка, GRUB |
|||||||||||||
|
|||||||||||||