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

    Портативный ремонтный сервер представляет собой домашний маршрутизатор для загрузки компьютеров по сети с целью ремонта, восстановления, проверки и лечения. Перед загрузочной флешкой данный сервер обладает следующими преимуществами:
    • воткнул в сеть и не надо на каждом системнике искать неразболтанный 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, как, например, описано здесь. Но это уже тема для другой статьи.
    AdBlock has stolen the banner, but banners are not teeth — they will be back

    More
    Ads

    Comments 10

      +3
      Что-то у вас с USB постоянно проблемы, то дырки расшатаны, то сгорело всё)
        +3
        Проблемы у пользователей, а их очень много. Есть системники, где материнка не выдерживает питание нескольких USB-устройств. Есть чипсет с микровзрывом — все работает, кроме USB. Есть, в прямом смысле раздолбанные, разъемы USB. Был один системник, где были неправильно подключены контакты переднего разъема, он жег любое USB-устройство.
        0
        Была несколько лет назад мысль сделать сетевую загрузку HirenBootCD, но инструкций не нашел, самостоятельно не получилось.
          0
          Вообще-то в оригинале было сделано по мотивам HirenBootCD, только на основе WinPE, так как большинство утилит под Windows. Единственное принципиальное отличие от Hirens — утилиты находятся на сетевом ресурсе.
          0
          А зачем сетапить для этого отдельную железку, да еще с openwrt? Кажется ноутбук + virtualbox + не embedded linux будет вполне удобной альтернативой?
            0
            Во-первых, стоимость домашнего маршрутизатора плюс флешка значительно дешевле самого заволящегося ноутбука и даже нетбука. Во-вторых, в случае с вирусным заражением совсем не полезно использовать ноутбук. В-третьих, вряд ли ноутбук будет использоваться только для таких целей, следовательно есть достаточно большая вероятность, что в самый нужный что-то не заработает (ОС не загрузится, виртуалка зависнет, случайно стерт диск от виртуальной машины и т.д.). В случае с ремонтным девайсом вероятности его «погнуть» меньше, и даже меньше чем у ремонтной флешки.
            0
            посоветую TP-Link TL-MR3020

            зачем вы советуете роутер, у которого 300миллиампер на выходе юсб?
            советую на замену народный nexx wt3020, у него проблем с usb нет, т.к. запитано напрямую от usb-входа.
              0
              Вы первый от кого я услышал, про 300мА, но честно сказать не понял суть проблемы. У самого несколько таких устройств было, а жалоб на несовместимость USB не было, и в интернете не было жалоб (может я не нашел). Может это единичная проблема конкретного экземпляра? Я лично не имею ничего против nexx wt3020, более того, посмотрев характеристики, хотел бы купить, но вот купить его не так просто — он не так популярен как tl-mr3020. А советую, я TP-Link TL-MR3020 потому что он — самый дешевый из доступных маршрутизаторов, на которые можно установить openwrt.
                0
                14.5 долларов стоит у китайцев nexx 3020, мне кажется, это дешевле, чем tp-link.
                а проверяется usb очень просто — подключите жесткий диск 2.5 — если раскрутится и будет работать — значит минимум 500миллиампер ваш тп-линк выдал.
                  0
                  Согласен, но вот когда он будет в магазинах, тогда и посмотрим — сколько он будет стоить. Пока его, увы, кроме как у китайцев не купишь. Спасибо, за объяснение, жесткий диск через USB, лучше подключить непосредственно к системнику, например, в случае с клонированием всего диска или копированием пользовательских данных. Видите ли в чем дело, одно дело загрузить образ WIM в размере 200Мб по 100-мегабитной сети, а совсем другое клонировать весь диск. Поэтому не могли бы вы пояснить: зачем нужно подключать жесткий диск к роутеру?

            Only users with full accounts can post comments. Log in, please.