Как стать автором
Обновить

Обновляем база на 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
Теги:
Хабы:
Данная статья не подлежит комментированию, поскольку её автор ещё не является полноправным участником сообщества. Вы сможете связаться с автором только после того, как он получит приглашение от кого-либо из участников сообщества. До этого момента его username будет скрыт псевдонимом.