Pull to refresh

Как сделать портативный ремонтный сервер

Open source *
Портативный ремонтный сервер представляет собой домашний маршрутизатор для загрузки компьютеров по сети с целью ремонта, восстановления, проверки и лечения. Перед загрузочной флешкой данный сервер обладает следующими преимуществами:
  • воткнул в сеть и не надо на каждом системнике искать неразболтанный USB-разъем;
  • не рискуешь сжечь флешку на закороченных контактах;
  • единственный способ загрузиться на компьютерах, где сожжен USB-контроллер (загрузка с CD-ROM в расчет не берется), а также на компьютерах, где BIOS не позволяет грузиться с USB-устройств;
  • желательный способ для перепрошивки микропрограмм.

Из недостатков можно отметить более низкую скорость передачи и некоторую сложность по изменению (дополнению) пунктов загрузки, которая сказывается в особенностях сетевой загрузки. В качестве бонуса можно дооснастить ремонтный сервер собственным выходом в интернет через USB-модем, это потребуется для изоляции зараженного вирусами компьютера от других компьютеров в локальной сети. Таким образом, нам потребуется маршрутизатор:
  1. с возможностью перепрошивки OpenWrt;
  2. с USB-разъемом;
  3. компактными размерами.

Последний пункт позволяет легко перенести ремонтный сервер туда, где нам удобнее с ним работать, а не там, где есть сеть и т.д. Как мы уже говорили, в качестве бонуса потребуется USB-концентратор, USB-флешка и USB-модем с работающей симкой. Выбор модема, как ни странно, задача сложная, так нет стопроцентной уверенности в соответствии с пунктом № 1, поэтому не рекламы ради, посоветую TP-Link TL-MR3020 (только не берите очень похожие модели TP-Link TL-WR700N и TP-Link TL-WR702N) или более дорогую модель TP-Link TL-MR3040 со встроенным аккумулятором. Перед покупкой обратите внимание на версию устройства, поддерживаемые версии можно узнать здесь.

Не буду подменять официальную документацию OpenWrt, поэтому перейдите на страницу, купленного вами устройства, и прочитайте порядок установки OpenWrt, как правило достаточно загрузить прошивку вашей модели, и через веб-интерфейс обновить (установить) скачанный файл. Возможно, после перепрошивки и последующей перезагрузки маршрутизатора, будет отсутствовать веб-интерфейс, паниковать не стоит, скачиваем Putty и работаем через консоль. Одно очень важное замечание — перед дальнейшей работой настройте доступ в интернет. Сначала мы перенесем систему на флешку (extroot), а потом будем устанавливать все, необходимые нам для работы, пакеты.

Процесс переноса хорошо описан в документации и на хабре есть статья на эту тему. От себя могу порекомендовать следующее:
  • использовать вариант /overlay;
  • использовать файловую систему ext2 (opkg install kmod-fs-ext4);
  • иметь в виду, что в статье подразумевается использование уже размеченной флешки.

Если у вас нет возможности заранее разметить флешку на разделы (подкачка не более 128Мб, остальное под корневой раздел), то вам потребуется установить следующие пакеты: fdisk, e2fsprogs и swap-utils, в статье описано как это сделать. А мы пойдем дальше — теперь можно устанавливать все пакеты, которые вы пожелаете. Если вам нужен веб-интерфейс, то вам сюда, а мы займемся настройкой Samba-сервера, чтобы было удобно заливать файлы на сервер, используя стандартную службу доступа к файлам и принтерам Microsoft. Сначала откроем нужные порты в межсетевом экране, если правило по умолчанию для доступа через сеть установлено в состояние «Отбрасывать». Для этого в файле /etc/config/firewall должен быть следующий участок:
config 'rule'
        option 'src' 'lan'
        option 'proto' 'udp'
        option 'dest_port' '137-138'
        option 'target' 'ACCEPT'

config 'rule'
        option 'src' 'lan'
        option 'proto' 'tcp'
        option 'dest_port' '139'
        option 'target' 'ACCEPT'

config 'rule'
        option 'src' 'lan'
        option 'proto' 'tcp'
        option 'dest_port' '445'
        option 'target' 'ACCEPT'

Более подробную информацию по настройке межсетевого экрана смотрите здесь. Далее посмотрим какая доступная версия samba имеется в репозитории:
opkg list | grep samba
Установим пакет, имя которого только что получили. Более детальная информация по работе с пакетами — здесь. Если хотите управлять Samba-сервером через веб-интерфейс, установите соответствующий модуль:
opkg install luci-app-samba
Следует дать некоторые пояснения. Во-первых, вместо доступа на уровне пользователей лучше перейти на уровень ресурсов, что приблизительно соответствует простому общему доступу к файлам в Windows XP. Во-вторых, файл конфигурации создается каждый раз во время загрузки маршрутизатора, поэтому лучше отредактировать шаблон /etc/samba/smb.conf.template. В нашем случае надо заменить значение user параметра security на значение share. Рассмотрим пример, в котором существует каталог /mnt/pxeboot (да, согласен, папка /mnt используется для монтирования устройств, разделов и т.д., но в openwrt — это наилучший каталог для сетевого ресурса), если такого каталога нет, то создайте его командой:
mkdir -p /mnt/pxeboot
С целью соблюдения мер безопасности, гостевой доступ происходит от имени пользователя nobody, поэтому нам надо владельцем папки pxeboot сделать пользователя nobody:
chown nobody /mnt/pxeboot
Вот теперь прописываем секцию sambashare в файле etc/config/samba:
...
config 'sambashare'
	option 'read_only' 'no'
	option 'name' 'share'
	option 'path' '/mnt/pxeboot'
	option 'guest_ok' 'yes'

Включаем и запускаем службу командами:
/etc/init.d/samba enable
/etc/init.d/samba start

Более подробно настройка Samba описана в документации. Теперь мы можем заливать файлы и каталоги с другого компьютера, поэтому в сетевом ресурсе создадим папку tftpd, а в ней подкаталог: pxelinux.cfg (настройки меню), img (образы дисков), boot и source (для загрузки WinPE, смотри предыдущую статью). Зальем в каталог tftpd необходимые файлы для pxelinux, перечень и описание которых приведено в предыдущей статье.

И вот мы добрались до настройки загрузочного меню, но прежде чем заниматься настройкой, нужно определиться с составом этого загрузочного меню, а вот тут мнений будет столько, сколько человек будет участвовать в споре. Да и спор будет беспредметным, так как одному человеку нужно один набор инструментов, другому — другой. Возьмем абстрактный пример, в котором будет:
  • локальная загрузка;
  • загрузка WinPE;
  • подменю утилит для жесткого диска;
  • Memtest86.

Фактически получается два файла: default и hdd.cfg, причем у последнего мы приведем только два пункта и пункт возврата в главное меню. И одно практическое замечание: не впихивайте в образ WinPE все подряд, достаточно одного файлового менеджера, все остальные инструменты можно получить по сети. Если размер флешки позволяет, то в каталоге /mnt/pxeboot создаем подпапки:
  • tools (windows-утилиты);
  • install (дистрибутивы);
  • wim (образы wim для развертывания различных версий Windows).

Файл default будет выглядеть так:
UI vesamenu.c32
MENU TITLE Portable PXE-boot server

LABEL bootlocal
   MENU LABEL ^Boot local disk
   MENU DEFAULT
   LOCALBOOT 0
 TIMEOUT 80
 TOTALTIMEOUT 9000
 
LABEL winpe
   MENU LABEL ^WinPE
   KERNEL pxeboot.0

LABEL hddtools
  MENU LABEL hdd-tools
  KERNEL vesamenu.c32
  APPEND pxelinux.cfg/hdd.cfg

LABEL memtest
  MENU LABEL Memtest86 6.0
  KERNEL memdisk
  APPEND iso initrd=img/memtest.iso

Еще раз напоминаю, что это только пример, соответственно, файл hdd.cfg:
UI vesamenu.c32
MENU TITLE Hard drive disk tools

LABEL vcr350
  MENU LABEL Victoria 3.5
  KERNEL memdisk
  APPEND img initrd=img/fdd3.52.img

LABEL Seagate7200.12
  MENU LABEL Firmware Seagate Barracuda 7200.12
  KERNEL memdisk
  APPEND iso initrd=img/barracuda12.iso

LABEL return
  MENU LABEL Return Main Menu
  KERNEL vesamenu.c32
  APPEND pxelinux.cfg/default

Убедитесь, что все файлы скачаны и находятся на своих местах. Теперь можно настраивать dnsmasq — удобный dns-dhcp-tftpd-сервер, конфигурационный файл, которого /etc/config/dhcp:
config dnsmasq
         ... 
        option enable_tftp '1'
        option tftp_root '/mnt/pxeboot/tftpd'
        ... 

config boot linux
        option filename 'pxelinux.0'
...

То есть выставляется только три параметра. Теперь можем проверять все настройки. Замечательно, если у вас все заработает с первого раза. А что делать, если что-то не работает? Конечно же смотреть системный журнал. Большинство Windows-пользователей не догадываются, что в Linux регистр имеет значение, поэтому boot и Boot являются разными папками. Например, для загрузки WinPE потребуются как раз две папки: boot и Boot. В Boot расположится каталог Fonts и файл BCD (именно так, как здесь указано), а в каталоге boot будет файлик boot.sdi. Обращайте внимание и на регистр расширения, например, если в конфигурационном файле указан файл fdd3.52.img, а вы закачаете файл fdd3.52.IMG, то скорее всего вы получите ошибку.

Особый случай представляют собой антивирусы, так как для них требуется загрузить еще и огромнейшую антивирусную базу. Обычно тут пользуются двумя путями: либо подгружают и подмонтируют базы через web-сервер, либо впихивают их в файл initrd, как, например, описано здесь. Но это уже тема для другой статьи.
Tags: pxepxelinuxopenwrt
Hubs: Open source
Total votes 18: ↑17 and ↓1 +16
Comments 10
Comments Comments 10

Popular right now