Введение
В этой статье рассматривается создание мультизагрузочного диска с дистрибутивами Linux и другими программными продуктами. В качестве общего загрузчика используется Bootable CD Wizard (BCDW). Предполагается, что читатель знаком с работой загрузчика BCDW. Если нет, необходимо изучить статью Создание мультизагрузочного CD на основе Bootable CD Wizard. Под папкой проекта в процессе сборки подразумевается папка XPCD (для удобства применения CDImage).
Все указанные в статье пути актуальны для перечисленных ниже версий программных продуктов. В других выпусках эти параметры могут измениться.
Состав диска
В состав диска включены следующие программные продукты и дистрибутивы Linux:
- offline NT and registry editor, версия от 08.08.08 (сброс пароля winXP/2003/Vista), страница загрузки
- Gnome Partition Editor 0.3.9 (редактор разделов), страница загрузки
- Parted Magic 3.2 (включает редактор разделов, инструмент восстановления файлов и разделов, ряд утилит ), страница загрузки
- Back Track 3 (полухакерский дистрибутив), страница загрузки
- Ophcrack xp 2.0.1 (подбор пароля администратора winXP, последняя версия работает и для Vista, раньше было или для той, или для другой ОС, хочу предупредить, что данный продукт совсем не понимает русские имена), страница загрузки
- GEEXBOX Open Media Center (проигрыватель музыки и фильмов без загрузки ОС), страница загрузки
- SLAX 6.0 (совсем небольшой live-дистрибутив), страница загрузки
- SAM Linux 2007 live (симпатичный live-дистрибутив, очень удобный, на мой взгляд), страница загрузки
- OPENSUSE 11.0 live (live-дистрибутив известной настольной системы), страница загрузки
- Paragon Partition Manager 2009, описание, хочется добавить, что в версию 2009 также включен менеджер образов разделов и дисков, который раньше шел отдельным продуктом
- Kaspersky Rescue CD (версия сборки конец 2008 года), описание, здесь live-диск на основе linux, существует решение на основе Bart PE, но это другая история
- DrWeb 4.44 (версия сборки конец 2008 года), страница загрузки, на этом ftp ищем папку livecd
Краткая теория
Материал для данного раздела почерпнут из этой замечательной статьи.
Формат запуска загрузчика какого-либо дистрибутива на базе Linux такой:
/isolinux/isolinux.bin /isolinux/vmlinuz*** initrd=/isolinux/initrd.gz*** init=**** moreoptions*****
- isolinux.bin - загрузчик
- vmlinuz - это ядро дистрибутива (kernel), файл может называться как-нибудь иначе, например bzImage
- initrd.gz - это RAM-диск, в него распаковывается предварительная файловая система, может называться иначе
- init= - параметр, также отвечающий за функции запуска, о нем ниже
- moreoptions - тут остальные опции запуска, размер RAM-диска, видео и т.п.
- isolinux – папка, содержащая загрузчик isolinux.bin, либо путь к файлам дистрибутива, может называться по-другому
Каким образом формируются строки запуска для наших дистрибутивов? Распаковав ISO-образ нашего дистрибутива, мы ищем файл isolinux.cfg, находящийся либо в корне ISO-образа, либо в папке isolinux, либо в папке boot, либо boot\isolinux. Также, вы можете увидеть файл syslinux.cfg, почти такого же содержания. Различие загрузчиков, как гласит руководство к пакету syslinux, следующее:
- SYSLINUX - MS-DOS/Windows FAT filesystem
- ISOLINUX - ISO9660 CD-ROM
То есть isolinux - для компакт-дисков, а syslinux для FAT, в том числе и для съемных USB носителей («флэшек»).
В файле isolinux.cfg описываются параметры запуска, цвета фона, расположение строк и подобные параметры. Нас же интересуют непосредственно параметры запуска дистрибутива. Находим примерно такие строки:
label GParted Live
MENU DEFAULT
MENU LABEL GParted Live (Default settings)
kernel /live/vmlinuz1
append initrd=/live/initrd1.img boot=live union=aufs noswap noprompt vga=791 ip=frommedia nolocales
TEXT HELP
ENDTEXT
Таким образом, приглядевшись, мы видим, что ядро (kernel) - это файл vmlinuz1, RAM-диск - это файл initrd1.img, а остальное - это опции запуска.
Для init= пишем то, что указано в разделе init= конкретного конфигурационного файла
Добавление собственных дистрибутивов
Вообще, файл isolinux.bin есть во всех рассмотренных дистрибутивах, но для удобства мы будем использовать один такой файл для всего нашего проекта.
- Создаем в папке проекта папку isolinux
- Загружаем пакет syslinux (у меня это была версия 3.72, страница загрузки находится здесь)
- Находим в архиве папку core и извлекаем оттуда файл isolinux.bin в папку isolinux. Таким образом, мы не плодим файлы isolinux.bin на диске и запускаем его последнюю и, хочется верить, самую стабильную и многофункциональную версию.
1. offline NT and registry editor
Создаем в папке проекта папку offline и копируем туда содержимое ISO-образа. Также добавляем в эту папку драйверы для дисков (с этого же сайта)
В bcdw.ini пишем
/isolinux/isolinux.bin /offline/vmlinuz initrd=/offline/initrd.cgz,/offline/scsi.cgz rw vga=1 init=/linuxrc ; Offline
2. Gnome Partition Editor 0.3.9
Создаем в папке проекта папку live и копируем туда содержимое папки live ISO-образа. Если вы создадите папку с другим именем, загрузка не произойдет - дистрибутив будет упрямо искать папку live. Возможно, эта проблема будет исправлена в следующих релизах.
в bcdw.ini пишем
/isolinux/isolinux.bin /live/vmlinuz1 initrd=/live/initrd1.img boot=live union=aufs noswap vga=791 init=/linuxrc;GParted 0.3.9 Graphic mode;
/isolinux/isolinux.bin /live/vmlinuz1 initrd=/live/initrd1.img boot=live union=aufs noswap vga=791 toram init=/linuxrc; GParted 0.3.9 copy to ram;
3. Parted Magic 3.2
Создаем в папке проекта папку PMAGIC и копируем туда из ISO-образа папку PMODULES со всем содержимым, а также файлы BZIMAGE и INITRD.
в bcdw.ini пишем
/isolinux/isolinux.bin /pmagic/bzImage noapic initrd=/pmagic/initrd keymap=us livecd vga=791 sleep=0 quiet tmpfs_size=180M ramdisk_size=25000 init=/linuxrc ;Pmagic 3.2 copy to ram ;
/isolinux/isolinux.bin /pmagic/bzImage noapic initrd=/pmagic/initrd keymap=us livecd vga=791 sleep=0 quiet tmpfs_size=180M ramdisk_size=25000 noeject noreplace-paravirt init=/linuxrc ;Pmagic 3.2 noeject disk ;
/pmagic/isolinux.bin /pmagic/bzImage noapic initrd=/pmagic/initrd keymap=us livecd vga=normal sleep=0 quiet tmpfs_size=180M ramdisk_size=25000 init=/linuxrc ; Pmagic 3.2 normal vga
4. Back Track 3
Создаем в папке проекта папку BT3 (обязательно заглавными буквами, поскольку дистрибутив не может найти путь, если используются строчные) и копируем туда содержимое папки BT3 ISO-образа, а также файлы vmlinuz и initrd.gz из папки boot ISO-образа.
в bcdw.ini пишем
/isolinux/isolinux.bin /BT3/vmlinuz initrd=/BT3/initrd.gz ramdisk_size=6666 root=/dev/ram0 rw autoexec=xconf,kdm vga=0x317 init=/linuxrc ;Back Track 3 Graphics mode (KDE)
/isolinux/isolinux.bin /BT3/vmlinuz initrd=/BT3/initrd.gz ramdisk_size=6666 root=/dev/ram0 rw autoexec=kdm vga=0x317 init=/linuxrc ;Back Track 3 Graphics mode (VESA KDE)
/isolinux/isolinux.bin /BT3/vmlinuz initrd=/BT3/initrd.gz ramdisk_size=6666 root=/dev/ram0 rw nohd vga=0x317 init=/linuxrc ;Back Track 3 no Hard Disk
/isolinux/isolinux.bin /BT3/vmlinuz initrd=/BT3/initrd.gz ramdisk_size=6666 root=/dev/ram0 rw copy2ram autoexec=xconf,kdm vga=0x317 init=/linuxrc ;Back Track 3 Graphics mode, Copy To RAM
5. Ophcrack xp 2.0.1
Создаем в папке проекта папку ophcrack и копируем в нее содержимое папки ophcrack ISO-образа, а также файлы vmlinuz и initrd.gz из папки boot ISO-образа.
в bcdw.ini пишем
/isolinux/isolinux.bin /ophcrack/vmlinuz initrd=/ophcrack/initrd.gz ramdisk_size=6666 root=/dev/ram0 rw autoexec=xconf,startx init=/linuxrc ;Ophcrack xp 2.0.1 Graphic mode
/isolinux/isolinux.bin /ophcrack/vmlinuz initrd=/ophcrack/initrd.gz ramdisk_size=6666 root=/dev/ram0 rw autoexec=startx init=/linuxrc ;Ophcrack xp 2.0.1 VESA mode
6. GEEXBOX Open Media
Внимание! Официальная версия, совсем недавно обновленная до версии 1.2, является англоязычной. Ее проблема в том, что она абсолютно не видит русские имена файлов и папок. Вы можете использовать эту версию, однако здесь будет рассмотрена русифицированная ATF’ом (Raptor) версия GEEXBOX 1.1, взятая с сайта http://greenflash.su.
Создаем в папке проекта папку GEEXBOX, копируем туда все содержимое папки GEEXBOX загруженного архива.
в bcdw.ini пишем
/isolinux/isolinux.bin /GEEXBOX/vmlinuz initrd=/GEEXBOX/initrd.gz root=/dev/ram0 noapic nolapic acpi=off rw boot=cdrom lang=ru splash=silent vga=789 keymap=qwerty remote=LG receiver=leadtek video=vesafb:ywrap,mtrr init=/linuxrc; GEEXBOX Open Media Center
7. SLAX 6.0
Создаем в папке проекта папку slax, копируем туда содержимое папки slax ISO-образа и файлы vmlinuz и initrd.gz из папки boot ISO-образа.
в bcdw.ini пишем
/isolinux/isolinux.bin /slax/vmlinuz initrd=/slax/initrd.gz ramdisk_size=6666 root=/dev/ram0 rw autoexec=xconf,telinit~4 init=/linuxrc; Slax Graphics mode (KDE);
/isolinux/isolinux.bin / slax /vmlinuz initrd=/ slax /initrd.gz ramdisk_size=6666 root=/dev/ram0 rw autoexec=telinit~4 init=/linuxrc; Slax Graphics VESA mode;
/isolinux/isolinux.bin / slax /vmlinuz initrd=/ slax /initrd.gz ramdisk_size=6666 root=/dev/ram0 rw copy2ram autoexec=xconf,telinit~4 init=/linuxrc; Slax Copy To RAM;
8. SAM Linux 2007
Создаем в папке проекта папку SAM, в нее копируем файлы vmlinuz и initrd.gz из папки isolinux ISO-образа, а в корень папки SAM копируем файл livecd.sqfs из корня ISO-образа.
в bcdw.ini пишем
/isolinux/isolinux.bin /SAM/vmlinuz livecd=livecd initrd=/SAM/initrd.gz root=/dev/rd/3 acpi=on vga=788 keyb=us splash=silent fstab=rw,noauto init=/linuxrc; SAM LINUX 2007 LiveCD;
/isolinux/isolinux.bin /SAM/vmlinuz livecd=livecd initrd=/SAM/initrd.gz root=/dev/rd/3 acpi=on vga=788 keyb=us splash=silent fstab=rw,noauto vesa init=/linuxrc; SAM LINUX 2007 VideoSafeMode;
/isolinux/isolinux.bin /SAM/vmlinuz livecd=livecd initrd=/SAM/initrd.gz root=/dev/rd/3 acpi=off vga=normal keyb=us noapic nolapic noscsi nopcmcia init=/linuxrc; SAM LINUX 2007 Safeboot;
/isolinux/isolinux.bin /SAM/vmlinuz livecd=livecd copy2ram initrd=/SAM/initrd.gz root=/dev/rd/3 acpi=on vga=788 keyb=us splash=silent fstab=rw,noauto splash=verbose init=/linuxrc; SAM LINUX 2007 copy to ram;
9. OPENSUSE 11.0 live
Создаем в папке проекта папку opensuse и копируем в нее файлы initrd и linux из папки boot\i386\loader ISO-образа, в корень папки opensuse копируем файлы openSUSE-11.0-read-only.i686-2.7.0 и config.isoclient из корня ISO-образа.
в bcdw.ini пишем
/isolinux/isolinux.bin /opensuse/linux initrd=/opensuse/initrd ramdisk_size=512000 ramdisk_blocksize=4096 splash=silent showopts init=/linuxrc; OpenSUSE-11.0 LiveCD;
/isolinux/isolinux.bin /opensuse/linux initrd=/opensuse/initrd ramdisk_size=512000 ramdisk_blocksize=4096 splash=silent showopts ide=nodma apm=off acpi=off noresume selinux=0 nosmp noapic maxcpus=0 edd=off init=/linuxrc; OpenSUSE-11.0 Failsafe;
10. Paragon Partition Manager 2009
К сожалению, этот продукт не загружается из ISO-образа с помощью BCDW, поэтому воспользуемся приведенным ниже принципом. Создаем в папке проекта папку paragon и копируем в нее содержимое ISO-образа.
в bcdw.ini пишем
/isolinux/isolinux.bin /paragon/vmlinuzp initrd=/paragon/initrd.gz splash=silent quiet root=/dev/ram0 ru_ver vga=0x314; Paragon Partition Manager 2009
11. Kaspersky Rescue CD
Создаем в папке проекта папку kav и копируем туда файлы rescue, rescue.igz и System.map-rescue из папки isolinux ISO-образа. В папку проекта копируем папку bases из корня ISO-образа (перед сборкой диска раздобудьте свежие базы и запишите в эту папку с заменой), а также в папку проекта копируем файлы image.squashfs и livecd из корня ISO-образа.
в bcdw.ini пишем
/kav/isolinux.bin /kav/rescue initrd=/kav/rescue.igz root=/dev/ram0 looptype=squashfs loop=/image.squashfs cdroot quiet trace init=/linuxrc ; Kaspersky rescue 2009
/kav/isolinux.bin /kav/rescue initrd=/kav/rescue.igz root=/dev/ram0 looptype=squashfs loop=/image.squashfs cdroot nox trace init=/linuxrc ; Kaspersky rescue 2009 safe
/kav/isolinux.bin /kav/rescue initrd=/kav/rescue.igz root=/dev/ram0 looptype=squashfs loop=/image.squashfs cdroot nox dolvm dodmraid init=/linuxrc ; Kaspersky rescue 2009 raid
12. DrWeb 4.44
Дистрибутив такой же вредный, как GParted, работает только из папки boot, поэтому если у вас уже есть папка boot (например, оттуда запускается WinPE), то копируем в нее файлы initrd, vmlinuz, DrWebLiveCD-4.44.0.0811190 и папку module вместе с содержимым из папки boot ISO-образа. Другими словами, создать отдельную папку не получается – загрузка не работает, автоматического обновления баз также не происходит (только, если организуете обновление баз после загрузки).
в bcdw.ini пишем
/Boot/isolinux.bin /Boot/vmlinuz initrd=/Boot/initrd init_opts=4 root=/dev/ram0 quiet dokeymap looptype=squashfs loop=/Boot/module/white.mo usbroot slowusb vga=791 splash=silent,theme:drweb CONSOLE=/dev/tty1 init=/linuxrc; Dr.Web 4.44 Graphic Mode;
/Boot/isolinux.bin /Boot/vmlinuz initrd=/Boot/initrd init_opts=3 root=/dev/ram0 quiet dokeymap looptype=squashfs loop=/Boot/module/white.mo usbroot slowusb init=/linuxrc ; Dr.Web 4.44 Text Mode
Пример файла bcdw.ini
Вы можете загрузить пример файла bcdw.ini по этой ссылке. Конечно, можно организовать в нем систему подменю.
Заключение
В заключение хочу отметить, что в зависимости от конфигурации компьютера, некоторые программы могут не работать в штатном режиме. Например, DrWeb в графическом режиме на слабой машине зависал и работал только в текстовом режиме. Также, описанный в статье метод не сработал для некоторых дистрибутивов и программных продуктов. Например, не удалось запустить, Mandriva 2009 rc1 и загрузочный диск антивируса Avira, а продукты фирмы EASEUS отказались работать по невыясненным причинам. Возможно, мне просто не хватило терпения, поэтому я желаю вам удачи в экспериментах!