Pull to refresh

Загрузка ESET NOD32 по сети

На дворе уже 21 век, а производители антивирусного программного обеспечения все ещё предлагают лечить ПК при помощи LiveCD или LiveUSB. В этой статье будет рассказано, как же сделать LiveCD ESET NOD32 загружаемым по сети. Статья будет полезна тем, кому часто приходится лечить зараженные ПК.

Требования к клиентской и серверной частям

Операционная система Ubuntu (я использовал 11.10 Desktop x86).
Настроен PXE сервер. О том, как быстро это сделать, можно прочитать тут.
На клиентской машине 512Mb RAM и сетевой адаптер с поддержкой загрузки по сети

Приступаем к работе

Для начала нам потребуется дистрибутив LiveCD ESET NOD32, который можно скачать по этой ссылке.
Нам понадобятся файлы vmlinuz и initrd.gz, находящиеся в папке boot, и папка sysrescue целиком. Далее нам потребуется машина, работающая под управлением ОС Ubuntu. Все действия выполняются из-под учетной записи администратора.

Создаем рабочую директорию, копируем туда initrd.gz, распаковываем архив:
mkdir –m 777 nod
cd ./nod
gzip –d initrd.gz


Далее нужно расширить файловую систему, чтобы туда поместилась папка sysrescue:
dd if=/dev/zero bs=1M count=300 >> initrd
e2fsck -fp initrd
resize2fs initrd


Монтируем:
mkdir  iso
mount –o loop initrd iso
chmod 777 –R iso


Копируем в корень iso папку sysrescue, после чего патчим файл linuxrc:
patch –p0 –i linuxrc.patch


Листинг linuxrc.patch

--- ./iso/linuxrc.bak	2009-08-04 16:24:06.000000000 -0700
+++ ./iso/linuxrc	2013-05-23 05:27:20.000000000 -0700
@@ -51,6 +51,19 @@
 # First, try from= boot argument, if given
 DATAFROM=$(cmdline_value from)
 
+# Check if livecd data is included in initrd
+ if [ "$SGN" = "livecd.sgn" ]; then
+ if [ "$DATAFROM"="" ]; then
+ if [ "$(find_modules /$LIVECDNAME)" != "" ]; then
+ DATA=/$LIVECDNAME
+ else
+ echolog "livecd data not found in initrd at /$LIVECDNAME"
+ fi
+ else
+ echolog "livecd set to initrd but from= is empty!"
+ fi
+ fi
+
 # If ip= parameter is present, assume we're booted over PXE
 # In that case, we have to initialize network very soon (now)
 # ip=<client-ip>:<boot-server-ip>:<gw-ip>:<netmask>
@@ -60,7 +73,7 @@
    DATAFROM="http://"$(echo $IP | cut -d : -f 2)
 fi
 
-if [ "$DATAFROM" ]; then
+ if [ "$DATAFROM" -a "$SGN" != "livecd.sgn" ]; then
    if [ "$(echo $DATAFROM | cut -b 1-7 | tr "[:upper:]" "[:lower:]")" = "http://" ]; then
       init_dhcp $(modprobe_network_modules)
       mount_httpfs $DATAFROM $MOUNTDIR/httpfs


Размонтируем файловую систему, запоминаем размер (пригодится в дальнейшем для указания ramdisk_size) и запаковываем initrd с максимальной компрессией:
umount iso
ls –lk initrd
gzip -9 initrd


На выходе получаем архив initrd.gz, который нужно поместить на PXE сервер куда-нибудь в недра tftproot, туда же помещаем файл vmlinuz. Дальше нужно поправить меню pxelinux, а именно файл pxelinux.cfg/default. Добавим строку:
include /<относительный путь до>/esetnod32.cfg


Создадим собственно esetnod32.cfg следующего содержания:
LABEL ESET NOD32
  MENU LABEL LIVE ESET NOD32
  kernel <относительный путь до>/vmlinuz
  append initrd=/<относительный путь до>/initrd.gz ramdisk_size=350000 sgnfile=livecd.sgn changes=/slax/ root=/dev/ram0 rw autoexec=startx;telinit~4


P.S.

Файлы можно скачать тут.
Можете воспользоваться скриптом repair.sh, который проделает большинство операций за вас ( положите исходные файлы initrd.gz, linuxrc.patch, repair.sh и папку sysrescue в одну директорию и запустите скрипт.)
Если вы очень ленивы, то готовый initrd.gz можно скачать по этой ссылке.
Tags:
Hubs:
You can’t comment this publication because its author is not yet a full member of the community. You will be able to contact the author only after he or she has been invited by someone in the community. Until then, author’s username will be hidden by an alias.