Pull to refresh

Обновляем база на DrWeb LiveCD 5.0.3

Как известно, широкополосный интернет распространен по нашей необъятной Родине не так густо, как всевозможные вирусы и трояны, но, видимо, эта проблема мало волнует создателей DrWeb LiveCD, которые активно не желают прикрутить сохранение скачанных обновлений. Хотя бы при установке на flash-накопитель. А ведь так хочется иметь в наличие постоянно свежий образ без гигантских затрат на трафик. Признаться, меня интересовала эта проблема и ранее, но как-то дальше теории дело не доходило. Но пришлось.

Подтолкнул случай: из удаленного подразделения организации сделали заявку на антивирусную проверку ПК, не подключенного к корпоративной сети. Естественно, на нем не оказалось и корпоративного антивируса (стояла avira с обновлениями полуторагодичной давности). Как всегда, заявка являлась срочной и первоочередной. Чтож, я поставил скачивать неприлично распухшую в размере свежую версию DrWeb LiveCD, но как же неприятно было узнать что скорость колеблется от 2 до 3 кб/с. Причем, со стороны сервера, как показала проверка, а самый свежий диск, что у меня был, датировался началом августа. Такими темпами, на выкачивание 135-мегабайтного образа у меня бы ушел весь день. Я задумался — а есть ли альтернативный способ получить диск со свежими обновлениями? Ведь, по сути, в них, кроме обновлений, от версии к версии ничего более не изменяется.

Внешне задача выглядела довольно простой:
— распаковать ISO образ;
— распаковать squashfs модуль с базами;
— добавить свежие базы;
— упаковать squashfs модуль с базами;
— заменить в оригинальном ISO модуль;
— …
— profit

В интернете готовых решений я не нашел, поэтому и решил рассказать как это сделал сам. Первым вопросом у меня встали обновления. К счастью, модуль обновления updater, написанный на perl нашелся на самом livecd. Его я оставил нетронутым, не считая того, что изменил пути к основным используемым скриптом папкам, заперев ареал работы скрипта внутри своей папки. Таким же образом было заменено содержимое файла drweb32.ini. Скрипт updater вполне успешно справился с задачей, обновив базы в указанной папке. Воодушевленный успехом. быстро накидал файлик Generate_DrWEB_LiveCD:

#!/bin/bash
# Удаляем последний сгенерированный образ.
rm ./ISO/LASTEST/*
# Очищаем предыдущий лог
rm ./log/updater.log
# Cоздаем временную папку для монтирования образа
mkdir ./tmp/loop
# Монтируем
mount ./ISO/minDrWebLiveCD-5.0.3.iso ./tmp/loop -o loop
cd ./tmp/loop
# Копируем содержимое диска
find | cpio -pdm ../
cd ../..
# Отмонтируем образ и удалим ненужную папку
umount ./tmp/loop
rm -Rf ./tmp/loop

# Распаковываем содержимое модулей
cd ./tmp/boot/module
unsquashfs _white.dwm
# Здесь берем список зеркал и лицензионный ключ
cp -u ./squashfs-root/var/drweb/bases/update.drl ../../../bases/
cp -u ./squashfs-root/opt/drweb/drweb32.key ../../../lib/
# Удаляем лишнее
rm -Rf ./squashfs-root
# Распаковываем антивирусные базы
unsquashfs drweb_bases.dwm
rm drweb_bases.dwm
cd ../../..
cp ./tmp/boot/module/squashfs-root/var/drweb/bases/*.vdb ./bases/
# Запускаем скрипт обновления баз. Скрипт взят с оригинального диска, изменены лишь пути к папкам и файлам.
./updater

# Распихиваем обновления на свои места
cp -u ./bases/* ./tmp/boot/module/squashfs-root/var/drweb/bases/
cp -u ./updates/* ./tmp/boot/module/squashfs-root/var/drweb/updates/
cp -u ./log/updater.log ./tmp/boot/module/squashfs-root/var/drweb/log/
cp -u ./updates/timestamp ./tmp/boot/module/squashfs-root/var/drweb/updates/
# сжимаем модуль
mksquashfs ./tmp/boot/module/squashfs-root/ ./tmp/boot/module/drweb_bases.dwm
# Удаляем лишнее
rm -Rf ./tmp/boot/module/squashfs-root
cd tmp
# Записываем образ
mkisofs -o ./../ISO/LASTEST/minDrWebLiveCD-5.0.3.$(date +%F).iso -b boot/isolinux/isolinux.bin -c boot/boot.cat -no-emul-boot
-boot-load-size 4 -boot-info-table -R -J -v -T -V "LastestDrWeb" .
cd ../
# Удаляем лишнее
rm -Rf ./tmp/boot
rm ./lib/drweb32.key


Порядок дествий:

1. Взять ранее скачаный образ (желательно версии 5.0.3) и поместить его в папку ./ISO/, предварительно переименовав его в «minDrWebLiveCD-5.0.3.iso»

2. Выполнить «sudo Generate_DrWEB_LiveCD», подождать выполнения пакета команд.

3. Образ диска с обновленными базами будет собран в папке ./ISO/LASTEST/

Требования:
— squashfs-tools
— cdrkit

Ну и разумным будет выполнять это каждый день, посредством cron.

Вот что у меня вышло: adsl.kodinsk.net/forum/uploads/Generate_DrWEB_LiveCD.tar.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.