Войти

Показать полную графическую версию : Строим загрузочную флешку с Live антивирусниками своими руками.


HuGe
04-02-2012, 08:47
Чтож, нам понадобится:
- утилита BOOTICE.EXE, сам пользую версию 0.8.1.0, скачать можно тут:
http://bootice.narod.ru/
- GRUB4DOS файлик grldr, взять можно тут:
http://download.gna.org/grub4dos/grub4dos-0.4.4.zip
это официальная стабильная версия.
Я использую версию grub4dos-0.4.5, тут лежит множество исполнений:
http://code.google.com/p/grub4dos-chenall/downloads/list
разницы в принципе никакой решать вам
- UltraISO или ваша любимая утилита для работы с образами
- Live образы антивирусников
- собственно флешка минимум на 1 Гиг, желательно чистая, т.к. придётся форматить в FAT32 для достижения наилучших результатов.
- паяльник (нам с вами - не понадобиттся) :)

Скачиваем Live продукты антивирусников:
Для DrWeb понадобится liveusb версия, ибо я пока не научил его работать с эмуляции образа.
http://phillip.drweb.com/pub/drweb/liveusb/win/drwebliveusb.exe

Для других систем подойдут и iso версии

ESET System Rescue:
http://esetsupport.ru/eset_sysrescue.iso

Kaspersky Rescuedisk:
Стабильная версия
http://rescuedisk.kaspersky-labs.com/rescuedisk/updatable/
Версия MP3 (Maintenance Pack 3) в разработке - её использую сам
http://devbuilds.kaspersky-labs.com/devbuilds/RescueDisk10%20MP3/kav_rescue_10.0.31.2.iso

Avira Antivir Rescue System:
http://www.avira.com/ru/support-download-avira-antivir-rescue-system

Препарируем флешку разворачиванием на неё drwebliveusb, соглашаемся с форматированием и всем остальным )))
Забрасываем в корень флешки файлик grldr из скачанного пакета GRUB4DOS.
Берём утилиту BOOTICE.EXE, прописываем в MBR флешки загрузчик GRUB4DOS (18 sectors).

Возвращаемся в главное окно утилиты - нам нужна вкладка Utitlities, переходим туда, открываем Start Menu Editor, вверху нам предлагают выбрать файл GRLDR либо MENU.LST нажимаем browse и указываем наш файл grldr, лежащий в корне препарируемой флешки. Видим текст... нас интересует 2-я строка
configfile
меняем её на
configfile /boot/grub/menu.lst || configfile /BOOT/GRUB/MENU.LST
И сохраняем изменения в той же кодировке которая отображена в окошке Current Encoding

Для чего это: по дефалту GRLDR ищет конфигурационный файл menu.lst в корне раздела, если не находит его там, то открывает свой внутренний menu.lst уже с помощью которого используя первый (дефолтный) пункт меню, ищет его в папках /boot/grub/ и /grub/, длительность таймаута до выбора дефолтного пункта - 1 секунда, меньше только 0, который означает бесконечность, а значит, что на протяжении 1-й секунды мы будем лицезреть голое 4-х строчное меню, а только после загрузится наше, спрятанное в /boot/grub/, кстати, регистр букв имеет значение, рекомендую пользоваться строчными. Вы скажете зачем оно мне, прятать куда-то menu.lst, пусть лежит себе в корне. Чтож ваше дело, но т.к. флеш-девайс планируется мультизагрузочным то постараемся по максимуму убрать всякие лишние файлы из корня, тем более что, папка /boot уже создана при разворачивании DrWeb, а создавая в ней подпапку grub достигается дополнительная изоляция файлов меню. Если всё это не нужно, то пропускаем всё от текста "...(18 sectors)." и до следующего дуба )))

Чтоже, потихоньку нужно строить файл menu.lst, начнём с уже присутствующего DrWeb.
Найдём на флешке файлик \boot\syslinux\syslinux.cfg
там будет много буковок...найдём примерно такие:
label Dr.Web LiveCD (Default)
kernel /boot/vmlinuz
append ID={uniqueID} root=/dev/ram0 init=/linuxrc init_opts=4 quiet initrd=/boot/initrd vga=791 splash=silent,theme:drweb CONSOLE=/dev/tty1
это и есть запуск DrWeb в дефолтном графическом режиме на буржуйском языке. Чуть ниже (следующим пунктом) идёт продвинутый режим в котором можно поменять язык, и выглядит примерно так:
label Dr.Web LiveCD (Advanced)
kernel /boot/vmlinuz
append ID={uniqueID} root=/dev/ram0 init=/linuxrc init_opts=3 quiet initrd=/boot/initrd CONSOLE=/dev/tty1

Теперь о главном: "{uniqueID}" это уникальный ID сборки (ну Live модуля всмысле), он дублируется в файле \boot\config в строке:
export BOOT_ID={uniqueID}
т.е. соответственно они должны быть одинаковы в \boot\syslinux\syslinux.cfg и \boot\config (вдруг у вас не так, значит вы скачали 2 сборки и умудрились их скрестить при закачке и установке. шучу)

Теперь напишем всё это в наш menu.lst (место которому было определено выше, и хранить его нужно в кодировке UTF-8)
Получится должно где-то так:
title Dr.Web LiveCD (Default)
kernel /boot/vmlinuz append ID={uniqueID} root=/dev/ram0 init=/linuxrc init_opts=4 quiet vga=791 splash=silent,theme:drweb CONSOLE=/dev/tty1
initrd=/boot/initrd

title Dr.Web LiveCD (Advanced)
kernel /boot/vmlinuz append ID={uniqueID} root=/dev/ram0 init=/linuxrc init_opts=3 quiet CONSOLE=/dev/tty1
initrd=/boot/initrd
Хотим проверяем, не хотим едем дальше.

Дальше будем играться с образами дисков, причём оригинальные образы не выбрасываем, оттуда понадобятся ещё файлы.

Открываем eset_sysrescue.iso, там 2 папки: boot и sysrescue, выбрасываем папку sysrescue, оставляем только папку boot, сохраняем образ как-то поудобнее, ну например eset-boot.iso, ложить на флешку его можно куда угодно, в корень или в любую папку, запихнём его к примеру в папку iso. Теперь нужно положить и сам антивирусный модуль, из оригинального образа берём папку sysrescue и забрасываем её прямо в корень нашей флехи со всеми внутренностями... Порядок, запишем всё это дело в наш menu.lst:

title ESET Sysrescue
map /iso/eset-boot.iso (0xFF) || map --mem /iso/eset-boot.iso (0xFF)
map --hook
root (0xff)
chainloader (0xFF)

есть один нюанс:
map /iso/eset-boot.iso (0xFF) || map --mem /iso/eset-boot.iso (0xFF)
это, загрузит наш образ полностью в память, да он в принципе небольшой, около 7-ми метров, можно этого избежать и сэкономить эти 7 метров и время на загрузку, использовав команду:
map /iso/eset-boot.iso (0xFF)
без || map --mem /iso/eset-boot.iso (0xFF)
в таком случае образ не будет грузится в память а произойдёт прямой маппинг с диска (USB-девайса), однако этот метод работает только с нефрагментированными файлами (non contiguous), утилиты которые могут помочь в этом нелёгком деле называются WinContig, contig, и ещё есть хорошая тулза от Piriform называется Defraggler, он не раз меня выручал.
Как будете делать вы, это ваше дело. Тут всё зависит от размера образа, кол-ва оперативки на машине, возможностью достигнуть нефрагментированности файла.
Здесь, в примерах, я приведу всё с использованием маппинга в память, как указано с ESET Sysrescue.

Тестим или едем...
Следующий на очереди Kaspersky Rescuedisk, с ним поступаем точно также оставив в образе только папку boot, а всё остальное вывалив в корень флешки, сохраним наш загрузочный образ например kav-boot.iso и положим рядом с eset-boot.iso в папку iso. Отметим сие событие в нашем menu.lst такими строками:
title Kaspersky Rescue Disk
map /iso/kav-boot.iso (0xFF) || map --mem /iso/kav-boot.iso (0xFF)
map --hook
root (0xff)
chainloader (0xFF)
Ещё один моментик, для работы Kaspersky Rescuedisk, метка флешки должна быть KRD10, как это изменить читаем далее...

К завтрашнему утру обещаю рассказать как научить Касперского самостоятельно соглашаться со своим лицензионным соглашением, и как прикрутить в этот комплект Avira Antivir Rescue System.

Как и обещал, сегодня продолжим наши эксперименты с девайсом.
Закончим препарирование Kaspersky Rescuedisk:

Открываем образ с нашей флешки, \iso\kav-boot.iso. Находим в нём файлик boot\grub\grub.cfg, видим примерно следующее:
set default=0
set timeout=10

load_env
source ${kav_cfg_path}/bg.cfg
set lang=ru
source ${kav_cfg_path}/bg.cfg

echo -n "Press any key to enter the menu... "
if sleep --verbose --interruptible ${timeout} ; then
set timeout=0
set boot_from_hard="true"
set lang_menu=""
else
set timeout=-1
set default=1
set lang_menu="true"
set boot_from_hard=""
fi

if [ -n "${boot_from_hard}" ] ; then
source ${kav_cfg_path}/en.cfg
source ${kav_cfg_path}/boot_from_hard.cfg
fi

if [ -n "${lang_menu}" ] ; then
source ${kav_cfg_path}/lang_menu.cfg
fi
Это родное загрузочное меню с передачей параметров из других конфиг файлов, во замудрил....
Сохраним этот файлик где нибудь, чтобы внести в него изменения и положить обратно в образ на то же место.

Так, следующим будет файл boot\grub\cfg\kav_menu.cfg, напомню - это всё мы ищем в образе \iso\kav-boot.iso, текст файла примерно следующий:
set default=0
set timeout=-1

load_env
source ${kav_cfg_path}/bg.cfg

menuentry "${kav}" {
linux /boot/rescue root=live:CDLABEL=KRD10 rootfstype=auto vga=791 init=/init initrd=rescue.igz kav_lang=${kav_lang} udev liveimg splash quiet doscsi nomodeset
initrd /boot/rescue.igz
}

menuentry "${kav_rescue_text}" {
linux /boot/rescue root=live:CDLABEL=KRD10 rootfstype=auto vga=791 init=/init initrd=rescue.igz kav_lang=${kav_lang} udev liveimg quiet nox kavshell noresume doscsi nomodeset
initrd /boot/rescue.igz
}

menuentry "${hardware_info}" {
linux /boot/rescue root=live:CDLABEL=KRD10 rootfstype=auto vga=791 init=/init initrd=rescue.igz kav_lang=${kav_lang} udev liveimg quiet softlevel=boot nox hwinfo noresume doscsi nomodeset
initrd /boot/rescue.igz
}

source ${kav_cfg_path}/boot_from_hard.cfg
Открываем файл на редактирование (сохранять необязательно, внесём всё на лету)

Вкратце о метке флешки:
в параметрах загрузки ядра Каспера присутствует следующее: CDLABEL=KRD10, а это значит, что Каспер будет искать среди всех монтируемых разделов, раздел с меткой KRD10 на котором расположены все модули Rescuedisk, но вот если мы не хотим присваивать флешке такую метку, то самое время поменять её сейчас, например флешка будет носить гордое имя ANTIVIRLIVE, значит меняем все параметры соответственно на CDLABEL=ANTIVIRLIVE.

Далее, параметр set timeout=-1 подразумевает ожидание выбора пункта загрузки пользователем(бесконечное), если мы точно знаем что почти всегда будем использовать графический режим set default=0 (1-й пункт из меню), то можно попросить нас подождать к примеру секунды 3, а потом самостоятельно выбрать пункт 1 (set default=0), тогда параметр таймаута изменим на такой: set timeout=3
Теперь копируем весь изменённный текст из открытого нами файла boot\grub\cfg\kav_menu.cfg, и заменяем им весь текст в предварительно сохранённой копии boot\grub\grub.cfg. В итоге наша копия boot\grub\grub.cfg примет следующий вид (изменения выделены жирным курсивом):
set default=0
set timeout=3

load_env
source ${kav_cfg_path}/bg.cfg

menuentry "${kav}" {
linux /boot/rescue root=live:CDLABEL=ANTIVIRLIVE rootfstype=auto vga=791 init=/init initrd=rescue.igz kav_lang=${kav_lang} udev liveimg splash quiet doscsi nomodeset
initrd /boot/rescue.igz
}

menuentry "${kav_rescue_text}" {
linux /boot/rescue root=live:CDLABEL=ANTIVIRLIVE rootfstype=auto vga=791 init=/init initrd=rescue.igz kav_lang=${kav_lang} udev liveimg quiet nox kavshell noresume doscsi nomodeset
initrd /boot/rescue.igz
}

menuentry "${hardware_info}" {
linux /boot/rescue root=live:CDLABEL=ANTIVIRLIVE rootfstype=auto vga=791 init=/init initrd=rescue.igz kav_lang=${kav_lang} udev liveimg quiet softlevel=boot nox hwinfo noresume doscsi nomodeset
initrd /boot/rescue.igz
}

source ${kav_cfg_path}/boot_from_hard.cfg.
Копия boot\grub\grub.cfg остаётся открытой, работаем с ней регулярно.

Так как мы практически уверены в том что работать будем на руском языке, и согласны с лицензионным соглашением на все 100%, осталось внести ещё немного поправок.
Обратим внимание на параметр ядра kav_lang=${kav_lang}, это язык локализации переданный где-то там через параметры, но нам всё равно нужен русский, смело пишем следующее: kav_lang=ru.

Дальше, открываем файл boot\grub\cfg\ru.cfg, это русские параметры для наших переменных из меню:
set reboot="Перезагрузка компьютера"
set halt="Выключение компьютера"
set boot_from_hard="Загрузка с жесткого диска"
set kav="Kaspersky Rescue Disk. Графический режим"
set kav_rescue_text="Kaspersky Rescue Disk. Текстовый режим"
set hardware_info="Информация об оборудовании"
Отсюда нам нужно 3 из них:
${kav}
${kav_rescue_text}
${hardware_info}
Смело заменяем наши переменные в копии boot\grub\grub.cfg на готовые значения, получаем следующее:
set default=0
set timeout=3

load_env
source ${kav_cfg_path}/bg.cfg

menuentry "Kaspersky Rescue Disk. Графический режим" {
linux /boot/rescue root=live:CDLABEL=ANTIVIRLIVE rootfstype=auto vga=791 init=/init initrd=rescue.igz kav_lang=ru udev liveimg splash quiet doscsi nomodeset
initrd /boot/rescue.igz
}

menuentry "Kaspersky Rescue Disk. Текстовый режим" {
linux /boot/rescue root=live:CDLABEL=ANTIVIRLIVE rootfstype=auto vga=791 init=/init initrd=rescue.igz kav_lang=ru udev liveimg quiet nox kavshell noresume doscsi nomodeset
initrd /boot/rescue.igz
}

menuentry "Информация об оборудовании" {
linux /boot/rescue root=live:CDLABEL=ANTIVIRLIVE rootfstype=auto vga=791 init=/init initrd=rescue.igz kav_lang=ru udev liveimg quiet softlevel=boot nox hwinfo noresume doscsi nomodeset
initrd /boot/rescue.igz
}

source ${kav_cfg_path}/boot_from_hard.cfg

Также по аналогии работаем с файлом boot\grub\cfg\boot_from_hard.cfg, заменяем переменные на значения, в итоге вместо строки
source ${kav_cfg_path}/boot_from_hard.cfg вносим нижеуказанные строки в нашу копию boot\grub\grub.cfg:

menuentry "Загрузка с жесткого диска" {
set root='(hd0)'
chainloader +1
}

menuentry "Перезагрузка компьютера" {
reboot
}

menuentry "Выключение компьютера" {
halt
}

Конечный файл boot\grub\grub.cfg должен выглядеть примерно следующим образом:
set default=0
set timeout=3

load_env
source ${kav_cfg_path}/bg.cfg

menuentry "Kaspersky Rescue Disk. Графический режим" {
linux /boot/rescue root=live:CDLABEL=ANTIVIRLIVE rootfstype=auto vga=791 init=/init initrd=rescue.igz kav_lang=ru udev liveimg splash quiet doscsi nomodeset
initrd /boot/rescue.igz
}

menuentry "Kaspersky Rescue Disk. Текстовый режим" {
linux /boot/rescue root=live:CDLABEL=ANTIVIRLIVE rootfstype=auto vga=791 init=/init initrd=rescue.igz kav_lang=ru udev liveimg quiet nox kavshell noresume doscsi nomodeset
initrd /boot/rescue.igz
}

menuentry "Информация об оборудовании" {
linux /boot/rescue root=live:CDLABEL=ANTIVIRLIVE rootfstype=auto vga=791 init=/init initrd=rescue.igz kav_lang=ru udev liveimg quiet softlevel=boot nox hwinfo noresume doscsi nomodeset
initrd /boot/rescue.igz
}

menuentry "Загрузка с жесткого диска" {
set root='(hd0)'
chainloader +1
}

menuentry "Перезагрузка компьютера" {
reboot
}

menuentry "Выключение компьютера" {
halt
}
Сохраняем его в кодировке UTF-8, пользователи редактора Akelpad снимают галочку с пункта BOM в диалоговом окне сохранения и ложим обратно в образ на место по адресу boot\grub\grub.cfg, подтверждаем замену, сохраняем образ.

Фух, и что мы тут натворили...
Мы научили Каспера дружить с именем нашей флешки (или наоборот :) ), также он теперь не помнит что нам нужно показывать лицензионное соглашение (он заведомо знает что мы с ним согласны), ну и автоматизировали запуск графического режима RescueDisk сразу на русском языке.

Насчёт Авиры: образ подготавливается по аналогии ESET и Каспера, только папка boot там вывернута в корень, все остальные папки выкладываются в корень нашей флешки. Запуск можно производить сразу из menu.lst, или конечно же с образа. Сил сейчас уже нет, опишу в следующий раз.

iskander-k
04-02-2012, 20:21
блаблабла »
Вместо этого напишите удобно читаемое и понятное всем пояснение, слова и т.д.

Приведите тему в порядок !
иначе будет закрыта.

sakhalines
09-04-2012, 23:52
также он теперь не помнит что нам нужно показывать лицензионное соглашение (он заведомо знает что мы с ним согласны)

Перечитал трижды и не нашел описание действий для достижения этого результата.
Лиц. соглашение всё также показывается при полной загрузке.
В остальном полный порядок.

HuGe Вы видимо просто упустили разъяснение этого момента, если да, то потрудитесь выполнить это пожалуйста, т.к. это довольно важный момент.

Статья помогла в некоторых вопросах, за что и благодарен.

И еще вопрос:
Почему форматировать нужно именно в FAT32? У меня, например, USB HDD отформатированный в NTFS и всё, за исключением DR. Web (просто еще не скачал его LiveUSB, а образ LiveCD так и не заставил работать, хотя и перечитал немало по этому вопросу), работает нормально.

И еще LiveCD Eset'a в графическом режиме зависает при старте иксов, при этом, если загрузится сначала в текстовый режим, а далее вручную прописать старт иксов (команда "startx"), то старт проходит без неудрядиц.
Об этом пишут, что возможно такое происходит на некоторых видеокартах (у меня ноутбук с видекартой ATI).
Если кто-нибудь знает как заставить работать графический режим сразу после выбора его из меню, то поделитесь своими знаниями пожалуйста.

HuGe
10-04-2012, 06:32
sakhalines, по касперу: по сути нужен последний спойлер:
Конечный файл boot\grub\grub.cfg должен выглядеть примерно следующим образом:
читать дальше »
На самом деле под каждым спойлером описано действие и к чему оно приводит.
Но я почему-то подозреваю, что в последнем релизе Kaspersky Rescue Disk MP3 это может не помочь, сам использовал на тот момент версию 10.0.30.21, и пока не добрался до новой версии, хотя баги с обновлением баз уже проявляются... дойдут руки пересмотрю...

Насчёт FAT32 - могут быть траблы с работой Dr.Web на NTFS.

Насчёт ESET - множество отзывов, даже говорят что при запуске требует ввести какой-то ключ, лично у меня не стартанул на одной древней машинке.

Пасиб за отзыв.

mskam
02-08-2013, 18:18
Дальше будем играться с образами дисков, причём оригинальные образы не выбрасываем, оттуда понадобятся ещё файлы.

Открываем eset_sysrescue.iso, там 2 папки: boot и sysrescue, выбрасываем папку sysrescue, оставляем только папку boot, сохраняем образ как-то поудобнее, ну например eset-boot.iso, ложить на флешку его можно куда угодно, в корень или в любую папку, запихнём его к примеру в папку iso. Теперь нужно положить и сам антивирусный модуль, из оригинального образа берём папку sysrescue и забрасываем её прямо в корень нашей флехи со всеми внутренностями... Порядок, запишем всё это дело в наш menu.lst:

Код:

title ESET Sysrescue
map /iso/eset-boot.iso (0xFF) || map --mem /iso/eset-boot.iso (0xFF)
map --hook
root (0xff)
chainloader (0xFF)



так не работает


я сделал так:


На флешке папка eset, внутри образ eset.iso и файл для сохранения настроек save.dat (файл этот можно взять в образе, в папке sysrescue архив slaxsave.zip, внутри архива еще 4 архива save256.zip, save512.zip и т.д. в каждом архиве файл save.dat разных размеров. Я выбрал файл на 512мб, для обновлений достаточно)

menu.lst:


title Eset Sysrescue
map /eset/eset.iso (0xff) || map --mem /eset/eset.iso (0xff)
map --hook
root (0xff)
kernel /boot/vmlinuz from=/eset/eset.iso ramdisk_size=6666 root=/dev/ram0 rw autoexec=telinit~4 changes=/eset/save.dat
initrd /boot/initrd.gz




© OSzone.net 2001-2012