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, или конечно же с образа. Сил сейчас уже нет, опишу в следующий раз.
- утилита 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, или конечно же с образа. Сил сейчас уже нет, опишу в следующий раз.