2017-01-05

Настройка Syslinux

В первой части данного материала, мы остановились на том, что установили загрузчик Syslinux на флешку. В этой, запишем тестовое содержимое и создадим на его основе файл конфигурации загрузчика.

Как и в первой части, все файловые операции будут проводится с помощью Far Manager. Мини инструкцию по его использованию можно найти тут.

Начнем с содержимого. Список будет следующим: Hiren's BootCDSuper Grub2 DiskRescatuxSystemRescueCdUltimate Boot CDDr.Web LiveDisk и Kaspersky Rescue Disk 10. Скачаем все перечисленные LiveCD и отложим их пока в сторонку.


Дополнительные модули загрузчика.


Практически все вышеперечисленные LiveCD используют в качестве загрузчика Isolinux. Это один из загрузчиков комплекта Syslinux используемый  для файловой системы компакт дисков iso9660. А это значит что нет необходимости создавать отдельные файлы конфигурации для каждого из LiveCD с Isolinux. Но есть одно но, дополнительные модули (файлы с расширением *.c32 в папке с загрузчиком) используемые в каждом конкретном экземпляре каждого из LiveCD. Из-за разности в версиях мы не можем использовать идущие в комплекте с загрузчиком диска модули. Их необходимо будет удалять. И следовательно, чтобы в последствии нам не собирать необходимые модули для каждого из используемых LiveCD, дополним загрузчики на флешке всеми имеющиеся. Это отнимет примерно 3 МБ свободного места на диске, но в последствии избавит нас от лишний траты времени.

Приступим. В одной из панелей в Far Manager откроем папку boot\syslinux нашей флешки, это папка с BIOS версией загрузчика, а во второй панели папку с распакованным дистрибутивом загрузчика, в моем случае это папка E:\syslinux.


Теперь выполним поиск в папке с дистрибутивом Syslinux по фразе *.c32;memdisk.



Полученные результаты отправляем на временную панель.


Из списка найденных файлов нам нужно скопировать лишь те, которые предназначены для BIOS версии загрузчика Syslinux. Выделим их. Для этого воспользуемся выделением по маске. Находясь на временной панели с найденными файлами, нажимаем на цифровой клавиатуре клавишу + и вводим в поле ввода *bios*.


После нажатия на клавишу ENTER на панели выделятся все файлы из поддиректории bios.


Копируем их в папку boot\syslinux нажатием клавиши F5.


Во время копирования, программа выдаст сообщение о том некоторые файлы уже существуют. Пропускаем их выбрав стрелками кнопку Skip.



Проделаем все тоже самое, но уже для EFI загрузчика. В левой панели перейдем в каталог EFI\boot. Вернемся во временную панель с результатами поиска, и выделим все файлы по маске *efi64*.



Скопируем все выделенное в папку EFI\boot.



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

Общий файл конфигурации.


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

Начнем. Создадим в директории каждого из загрузчиков, файл syslinux.cfg со следующим текстом:
DEFAULT main

LABEL main
    CONFIG /syslinux.cfg

В Far это делается так. На одной из панелей переходим в каталог boot\syslinux и нажимаем одновременно клавиши SHIFT+F4. В появившемся окошке вписываем syslinux.cfg и нажимаем ENTER.


Откроется встроенный текстовый редактор. Вставляем в него вышеуказанный текст и сохраняем файл нажатием клавиши F2.


Выходим из редактора нажатием клавиши ESC. Теперь просто скопируем созданный файл syslinux.cfg в папку EFI\boot, чтобы не создавать его заново.


Этими действиями мы указали обоим загрузчикам читать конфигурационный syslinux.cfg располагающийся в корне флешки. Так как мы его еще не создали, сделаем это.

Переходим в корень флешки и создаем файл syslinux.cfg с текстом:
UI menu.c32

MENU TITLE Syslinux USB Flash - http://www.BootDev.ru

LABEL reboot
    MENU LABEL Reboot
    COM32 reboot.c32


Данный конфигурационный файл выводит простое меню, с одним пунктом Reboot, выполняющим перезагрузку компьютера.

Проверим текущую конфигурацию в виртуальной машине VirtualBox. О том, как грузиться с флешки в VirtualBox описано тут.

BIOS Syslinux
EFI Syslinux


Теперь у нас полноценный загрузчик со всеми модулями и общим файлом конфигурации для обоих версий загрузчика. Вернемся к скачанным ранее образам LiveCD. Откроем папку с ними в правой панели, а корень флешки в левой.


Перед тем как начать установку каждого из них, напомню, что войти в файл образ, можно с помощью комбинации клавиш CTRL+PgDown. И еще, все образы будут распаковываться, так как EFI версия Syslinux не располагает memdisk'ом (а значит и возможностью грузить образы в оперативную память).

Hiren's BootCD


Заходим в файл образ Hiren's.BootCD.15.2.iso, и копируем из него в корень флешки только папку HBCD.


Добавим в файл конфигурации загрузчика следующие строки:
LABEL hbcd1
    MENU LABEL Hiren's Boot CD - Grub4Dos Menu
    COM32 chain.c32 ntldr=/HBCD/grldr

LABEL hbcd2
    MENU LABEL Hiren's Boot CD - Isolinux Menu
    CONFIG /HBCD/isolinux.cfg

Общий результат будет таким.


Данные строки добавляют два пункта меню, первое грузит Grub4Dos меню, а второе Isolinux меню. Помните, я говорил о несовместимости модулей различных версий. Так вот, в конфигурационном файле HBCD\isolinux.cfg используются свои. Нужно изменить данный файл таким образом, чтобы к модулям были прописаны не абсолютные пути с именем файла модуля, а только имена модулей.

К примеру фрагмент DEFAULT /HBCD/Boot/menu.c32 нужно заменить таким DEFAULT menu.c32. Поступаем так для всех следующих фрагментов:

/HBCD/Boot/menu.c32menu.32
/HBCD/Boot/chain.c32 > chain.32
/HBCD/Boot/memdisk > memdisk


Поиск по фразе в редакторе Far осуществляется клавишей F7, сочетанием клавиш SHIFT+F7 производится поиск следующего элемента по заданной фразе, а сочетанием  ALT+F7 предыдущего. Замена текста вызывается клавишами CTRL+F7.


SystemRescueCd


Заходим в файл образ systemrescuecd-x86-4.9.0.iso  и копируем в корень флешки следующие папки и фалы: bootdisk, isolinux, ntpasswd, sysrcd.dat.


Переименуем скопированную папку isolinux в sysrcd.


Перейдем в папку sysrcd и удалим из нее все файлы с расширением *.с32 и файл memdisk.


Добавим в наш файл конфигурации загрузчика флешки следующие строки:
LABEL srcd
    MENU LABEL SystemRescueCD 4.9.0 x86
    CONFIG /sysrcd/isolinux.cfg /sysrcd




Ultimate Boot CD


Заходим в образ ubcd536.iso и копируем из него папки pmagic и ubcd в корень флешки.


Переходим в скопированную папку ubcd. В файле образе переходим в каталог boot и копируем из нее папку syslinux в папку ubcd.


Переходим в папку ubcd\syslinux и удаляем в ней все файлы с расширением *.с32 и файл memdisk.


Теперь подправим файлы конфигурации в папке ubcd\menus\syslinux. В них необходимо изменить абсолютные пути, которые определяют местоположение модулей загрузчика. В текущих конфигурационных файлах это путь /boot/syslinux. Его нужно удалить для всех модулей *.c32 и memdisk. А для деректив CONFIG удалить второй параметр указывающий папку по умолчанию. К примеру:

COM32 linux.c32 /boot/syslinux/memdisk  > COM32 linux.c32 memdisk

COM32 /boot/syslinux/reboot.c32COM32 reboot.c32

CONFIG /pmagic/boot/syslinux/syslinux.cfg /boot/syslinux/CONFIG /pmagic/boot/syslinux/syslinux.cfg

Чтобы найти все файлы с текстом /boot/syslinux, выполним поиск файлов в папке ubcd\menus\syslinux по содержимому. Делается это сочетанием клавиш ALT+F7, маску поиска файлов указываем *.*, текст поиска /boot/syslinux.



Перекидываем найденные файлы на временную панель.


Изменяем каждый файл по описанной выше схеме, после чего сохраняем и удаляем его из временной панели клавишей F7, чтобы не запутаться.

Во время поиска вы наткнетесь на строку APPEND pciids=/boot/syslinux/pciids.gz, ее меняем на APPEND pciids=/ubcd/syslinux/pciids.gz. Это не модуль загрузчика, этот файл как раз расположен в папке /ubcd/syslinux.

Notepad++ позволяет сделать подобное более удобно. В нем, достаточно открыть все файлы, в которых необходимо сделать поиск по фразе, и нажать кнопку Найти все во всех Открытых Документах в окне поиска. Результаты в нижней части, при клике на них, автоматически переключат редактор к нужному файлу, к найденному совпадению.


Добавим в общий файл конфигурации загрузчика следующее:
LABEL ubcd
    MENU LABEL Ultimate Boot CD 5.3.6
    CONFIG /ubcd/syslinux/syslinux.cfg



Rescatux


Открываем файл образ rescatux-0.40b11.iso. При проблемах с отображением содержимого, открывайте его так. Ставим курсор на файл образ, нажимаем клавишу F11, в меню выбираем arclite > Open (format menu) > Iso. Копируем из образа папки isolinux и live в корень флешки.


Переименуем скопированную папку isolinux в rsctx, и удалим из нее файлы с расширением *.с32.


Добавим в файл конфигурации загрузчика следующее:
LABEL rsctx
    MENU LABEL Rescatux 0.40 beta 11
    CONFIG /rsctx/isolinux.cfg /rsctx



Dr.Web LiveDisk


Заходим в образ drweb-livedisk-900-cd.iso и копируем из него папки .disk и casper в корень флешки.


Добавляем в файл конфигурации загрузчика текст:
LABEL drweb
    MENU LABEL ^Dr.Web LiveDisk
    KERNEL /casper/vmlinuz
    APPEND boot=casper initrd=/casper/initrd.lz quiet splash --



Kaspersky Rescue Disk


С этим образом имеются некоторые трудности. Для того, чтобы он загрузился необходимо в параметрах загрузки ядра указать UUID раздела флешки. Его можно указать явно, или же попробовать вместо него поставить знак звездочки *, указывающий ядру на то, что нужно проверять все разделы всех устройств в поисках нужных файлов.

Узнать UUID можно с помощью Linux команды blkid. Загрузим для этого уже записанный на флешку SystemRescueCD, и выполним данную команду.


В моем случае UUID раздела флешки имеет значение 2033-981B. Запоминаем его. Теперь скопируем с образа диска kav_rescue_10.iso папку rescue и файл livecd в корень флешки.


Копируем из папки boot образа диска файлы rescue, rescue.igz и System.map-rescue в папку boot на флешке.


Прописываем в конфигурационный файл загрузчика флешки следующее:
LABEL krd
    MENU LABEL Kaspersky Rescue Disk
    LINUX /boot/rescue root=UUID=2033-981B rootfstype=auto vga=791 init=/init initrd=/boot/rescue.igz kav_lang=ru udev liveimg splash quiet doscsi add_efi_memmap
    INITRD /boot/rescue.igz

При этом UUID раздела флешки в параметре root=UUID=2033-981B меняем на свой или же прописываем звездочку root=UUID=*.



Super Grub2 Disk


Загрузить данный livecd  в EFI режиме не получится, хотя сам образ рассчитан на это. Все дело в самом загрузчике Syslinux EFI, в его ограничениях. Во первых нет возможности загружать другие *.efi файлы, а во вторых, отсутствует memdisk для EFI варианта загрузчика. Поэтому настроим загрузку только для BIOS режима.

Копируем образ диска в корень флешки.



И прописываем в конфигурационный файл загрузчика следующее:
LABEL sg2d
    MENU LABEL Super Grub2 Disk - BIOS boot only
    LINUX memdisk
    INITRD /super_grub2_disk_hybrid_2.02s5.iso
    APPEND iso



Итог


Получилось неплохо 😅. BIOS версия загрузчика Syslinux очень хорошо справляется со всеми задачами. EFI версия хуже, об этом уже было упомянуто выше, не буду повторяться.

Из общих минусов обоих вариантов загрузчика, отмечу то, что он не может работать с несколькими разделами. То есть мы не сможем загрузить с другого раздела ничего. Он может работать только с тем разделом, на котором он сам расположен (прощайте загрузочные флешки с двумя разделами). Так же у данного загрузчика скудная командная строка, которая практически не предоставляет никакого дополнительного функционала. Grub4Dos и GRUB2 вне конкуренции в этом плане.

Из плюсов, он очень простой и функциональный. Позволяет создавать красивые графические меню. Не зря же он пользуется спросом у создателей различных livecd.

Результаты загрузки содержимого. В BIOS версии загрузчика, грузится все. А вот в EFI варианте, не грузятся все что использует memdisk (в виду особенностей в разрядности среды исполнения, BIOS - 16 бит, UEFI BIOS - 64\32 бит), Kaspersky Rescue Disk (ядро не запускалось вообще, система уходила в ребут), Super Grub2 Disk (причина описана ранее).

Приведу итоговой файл конфигурации загрузчика и скриншоты получившихся результатов.
UI menu.c32

MENU TITLE Syslinux USB Flash - http://www.BootDev.ru

LABEL hbcd1
    MENU LABEL Hiren's Boot CD - Grub4Dos Menu
    COM32 chain.c32 ntldr=/HBCD/grldr

LABEL hbcd2
    MENU LABEL Hiren's Boot CD - Isolinux Menu
    CONFIG /HBCD/isolinux.cfg

LABEL srcd
    MENU LABEL SystemRescueCD 4.9.0 x86
    CONFIG /sysrcd/isolinux.cfg /sysrcd

LABEL ubcd
    MENU LABEL Ultimate Boot CD 5.3.6
    CONFIG /ubcd/syslinux/syslinux.cfg

LABEL rsctx
    MENU LABEL Rescatux 0.40 beta 11
    CONFIG /rsctx/isolinux.cfg /rsctx

LABEL drweb
    MENU LABEL ^Dr.Web LiveDisk
    KERNEL /casper/vmlinuz
    APPEND boot=casper initrd=/casper/initrd.lz quiet splash --

LABEL krd
    MENU LABEL Kaspersky Rescue Disk
    LINUX /boot/rescue root=UUID=* rootfstype=auto vga=791 init=/init initrd=/boot/rescue.igz kav_lang=ru udev liveimg splash quiet doscsi add_efi_memmap
    INITRD /boot/rescue.igz

LABEL sg2d
    MENU LABEL Super Grub2 Disk - BIOS boot only
    LINUX memdisk
    INITRD /super_grub2_disk_hybrid_2.02s5.iso
    APPEND iso
  
LABEL reboot                                 
    MENU LABEL Reboot
    COM32 reboot.c32


Итоговое BIOS Syslinux меню
Загруженное меню Hiren's Boot CD
Загруженное меню SystemRescueCD
Загруженный SystemRescueCD, с выводом содержимого флешки😊
Загруженное меню Ultimate Boot CD
Загруженное меню Rescatux
Загруженный Rescatux
Загруженный Dr.Web LiveDisk
Загруженный Kaspersky Rescue Disk
Загруженный Super Grub2 Disk
Syslinux уступает по функциональности загрузчикам Grub4Dos и GRUB2. Использовать его или нет, решайте сами. А у меня на сегодня всё😉.

Комментариев нет :

Отправить комментарий