Syslinux

From Gentoo Wiki
Jump to: navigation, search
This page is a translated version of the page Syslinux and the translation is 100% complete.

Other languages:
English • ‎español • ‎русский • ‎中文(中国大陆)‎ • ‎日本語 • ‎한국어

Syslinux — это пакет, который содержит семейство загрузчиков. Пакет включает SYSLINUX (загрузчик для файловых систем FAT), EXTLINUX (загрузчик файловых систем ext2/3/4, btrfs и xfs), PXELINUX (сетевой загрузчик PXE) и ISOLINUX (ISO-9660) для загрузки CD/DVD.

Поддержка EFI была добавлена в версиях 6.00 и выше.[1]

Установка

Установка пакета Syslinux предоставит программное обеспечение для системы, но не установит или активирует любой загрузчик, которые содержатся в пакете.

USE-флаги

USE flags for sys-boot/syslinux SYSLINUX, PXELINUX, ISOLINUX, EXTLINUX and MEMDISK bootloaders

Emerge

root #emerge --ask sys-boot/syslinux

Настройка на системах с BIOS

Заметка
Эти инструкции предназначены для систем BIOS. Если используется (U)EFI, читайте установка на системах с EFI.

В оставшейся части раздела будем считать, что загрузочный раздел находится на /dev/sda1 (часто исполузуемое место). Если это не так, обязательно внесите правки по мере необходимости.

Чтобы использовать EXTLINUX , убедитесь, что установлен подходящий загрузочный сектор. Затем установите загрузчик на раздел. EXTLINUX может не работать, если эти шаги пропущены. Такая настройка загрузочного сектора не требуется в случае установки SYSLINUX, PXELINUX и ISOLINUX.

Загрузочный сектор

MBR (msdos)

Заметка
Эти инструкции предназначены для разметки разделов MBR (msdos). Для GPT, перейдите к разделу настройка GPT.

Сначала, установите загрузочный сектор, предусмотренный Syslinux. Примите необходимые предосторожности при использовании этой команды; если пропущен count=1, она перезапишет весь диск, вместо только первых 440 байт:

root #dd bs=440 conv=notrunc count=1 if=/usr/share/syslinux/mbr.bin of=/dev/sda

Отметьте загрузочный раздел как активный. В столбце "Boot" появится * :

root #fdisk /dev/sda
Command (m for help): a
Partition number (1-3): 1
Command (m for help): p
 ...
   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048      133119       65536   83  Linux
/dev/sda2          133120     4327423     2097152   82  Linux swap / Solaris
/dev/sda3         4327424  1953525167   974598872   83  Linux
  
Command (m for help): w

GPT

Заметка
Эти инструкции предназначены для разметки GPT. Для MBR (msdos), прочтите настройка MBR (msdos).

Сначала установите загрузочный сектор, предусмотренный Syslinux. Примите необходимые предосторожности при использовании этой команды; если пропущен count=1, она перезапишет весь диск, вместо только первых 440 байт:

root #dd bs=440 conv=notrunc count=1 if=/usr/share/syslinux/gptmbr.bin of=/dev/sda

Затем запустите утилиту gdisk из sys-apps/gptfdisk и включите атрибут legacy BIOS bootable (унаследованный загрузчик BIOS) на том разделе, где хранится /boot/extlinux.

root #gdisk /dev/sda
Command (? for help): x
 
Expert command (? for help): a
Partition number (1-3): 1
Known attributes are:
0: system partition
1: hide from EFI
2: legacy BIOS bootable
60: read-only
62: hidden
63: do not automount
 
Attribute value is 0000000000000000. Set fields are:
  No fields set
 
Toggle which attribute field (0-63, 64 or <Enter> to exit): 2
Have enabled the 'legacy BIOS bootable' attribute.
Attribute value is 0000000000000004. Set fields are:
2 (legacy BIOS bootable)
 
Toggle which attribute field (0-63, 64 or <Enter> to exit): 
 
Expert command (? for help): w

Установка загрузчика

EXTLINUX

Используйте команду extlinux для установки необходимых файлов в /boot/extlinux

root #mkdir /boot/extlinux
root #extlinux --install /boot/extlinux
root #ln -snf . /boot/boot
Заметка
Символьная ссылка "boot-> ." не является сама по себе необходимой, но в целях связности, она приведена, так чтобы примеры конфигурации были одни и те же для пользователей с /boot на одном разделе и тех, кто пользуется отдельными разделами.

Пакет Syslinux содержит различные модули для включения дополнительных функций. Начиная с Syslinux версии 5, некоторые модули зависят от других, поэтому хорошей идеей будет скопировать большинство основных модулей независимо от варианта использования. Смотрите проверка динамических ссылок, чтобы удостовериться, что сохранены все зависимости.

root #cd /usr/share/syslinux
root #cp menu.c32 memdisk libcom32.c32 libutil.c32 /boot/extlinux

ISOLINUX

Чтобы установить ISOLINUX, начните с основного каталога, в котором располагаются все файлы, которые необходимо переместить на CD или DVD. В основном каталоге, создайте подкаталог isolinux и скопируйте файл isolinux.bin из пакета Syslinux в папку isolinux:

root #mkdir isolinux
root #cp /usr/share/syslinux/isolinux.bin isolinux/

Создайте файл isolinux.cfg в соответствии с инструкциями приведенными ниже.

Затем создайте два дополнительных каталога kernel и images в основном каталоге:

root #mkdir kernel images

Скопируйте двоичный файл memdisk в каталог kernel:

root #cp /usr/share/syslinux/memdisk kernel/
Заметка
Для использования команды mkisofs нужно установить пакет app-cdr/cdrtools. Производится это запуском:
root #emerge --ask app-cdr/cdrtools

Когда конфигурация завершена, следующая команда mkisofs может быть использована для создания конечного образа ISO (не забудьте замените ${BASEDIR} на тот же основной каталог, который использовался в предыдущих командах):

root #mkisofs -o output.iso -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table ${BASEDIR}

Файл boot.cat будет создан автоматически.

PXELINUX

С PXELINUX возможна загрузка по сети с использованием образов, которые распределяются через TFTP-сервер. В этой статье предполагается, что TFTP-сервер установлен, и его TFTP корневым каталогом является /var/lib/tftpboot. С этими настройками, скопируйте загрузчик PXELINUX в загрузочный каталог TFTP и создайте каталог с конфигурацией.

root #cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/pxelinux.0
root #mkdir /var/lib/tftpboot/pxelinux.cfg
Заметка
При копировании новейшего lpxelinux.0 вместо pxelinux.0, можно загрузить ядро и ramdisk через HTTP и сделать использование DNS имён в конфигурационном файле.

Каталог с конфигурацией может быть использован для хранения различных настроек для клиентов, загружающихся по сети. Когда клиент пытается загрузиться, MAC- или IP-адрес используются для определения подходящего файла конфигурации клиента. Сначала он пытается найти MAC-адрес, сопровождаемый шестнадцатеричным представлением клиентского IP. Затем с конца шестнадцатеричного представления убирается символ, до тех пор пока больше не остается символов, или пока не найден файл конфигурации. Если не подходит ни одна из попыток, используется файл конфигурации по умолчанию - default.

Шестнадцатеричное представление IP может быть найдено с помощью gethostip команды:

user $gethostip -x 192.168.0.50
C0A80032

Пример подходящей последовательности в файле конфигурации выглядит так:

Код
01-88-99-aa-bb-cc-dd
C0A80032
C0A8003
C0A800
C0A80
C0A8
C0A
C0
C
default
Заметка
Для облегчения поддержки, создайте файлы конфигурации с именем хоста и символьной ссылкой на представление IP. Для переключения по умолчанию, просто удалите или переименуйте символьную ссылку.

SYSLINUX

Используйте команду syslinux для установки загрузчика SYSLINUX на файловую систему (FAT):

root #syslinux --install /dev/sda1

Установка на системах с EFI

Заметка
EFI поддерживается начиная с Syslinux 6.00.

Системный раздел EFI

Создайте раздел с типом EF (MBR) или EF00 (GPT) и файловую систему FAT32 на этом разделе. Также можно использовать существующий системный раздел EFI, если такой есть. Желательно смонтировать этот раздел в /boot/efi/.

Заметка
Далее подразумевается что система загружена в режиме EFI, и что системный раздел EFI находится на /dev/sda1.

Установка загрузчика

На системном разделе EFI создайте каталог для файлов Syslinux. Этот каталог также будет содержать конфигурационные файлы, который будут созданы позже.

root #mkdir -p /boot/efi/EFI/syslinux

Скопируйте файлы syslinux.efi и ldlinux.e64 вместе с другими необходимыми файлами .c32 из /usr/share/syslinux/efi64/ в новый каталог syslinux. Например:

root #cd /usr/share/syslinux/efi64
root #cp syslinux.efi ldlinux.e64 menu.c32 libcom32.c32 libutil.c32 /boot/efi/EFI/syslinux

Если система не была загружена в режиме EFI, то файлы Syslinux необходимо скопировать в каталог /boot/efi/EFI/Boot, а файл syslinux.efi необходимо переименовать в bootx64.efi. Если это так, то пропустите следующий раздел, касающийся утилиты efibootmgr.

Указание Syslinux на EFI

Убедитесь, что CONFIG_EFI_VARS включена в ядре. Если она была включена как модуль, убедитесь, что модуль загружен в память. Это можно сделать, воспользовавшись утилитой modprobe. После того как модули были загружены, создайте новую загрузочную запись используя efibootmgr:

root #modprobe efivars
root #efibootmgr -c -l '\EFI\syslinux\syslinux.efi' -L SYSLINUX -p 1

efibootmgr автоматически отрегулирует порядок загрузки EFI и поместит недавно созданную запись в верхнюю часть списка. Измените порядок загрузки параметром -o, если такое поведение не желательно.

Заметка
Чтобы команда efibootmgr работала, сперва нужно установить пакет sys-boot/efibootmgr. Если это необходимо, используйте следующую команду:
root #emerge --ask sys-boot/efibootmgr

Конфигурация

Конфигурационный файл для Syslinux называется syslinux.cfg. Для совместимости с существующими установками, следующие устаревшие имена файлов конфигурации все еще поддерживаются:

  • EXTLINUX: extlinux.conf
  • ISOLINUX: isolinux.cfg

Формат конфигурации также одинаков. Конфигурационный файл должен быть представлен в каталоге, с установленным Syslinux.

Простая конфигурация

Это отобразит простую строку "boot:", подобную той, которая используется в Gentoo Minimal LiveCD:

Файл syslinux.cfg
DEFAULT gentoo
  
LABEL gentoo
      LINUX /boot/kernel-3.6.11-gentoo

Конфигурация меню

Следующая конфигурация предоставляет пример простого текстового меню. Это достигается с помощью модуля vesamenu. В некоторых случаях, когда vesa не совместима, модуль простого меню будет работать. Скопируйте модуль меню VESA в файловую систему boot или системный раздел EFI. Системы BIOS должны использовать следующий пример:

root #cp /usr/share/syslinux/vesamenu.c32 /boot/extlinux/

Для EFI систем следует использовать:

root #cp /usr/share/syslinux/efi64/vesamenu.c32 /boot/efi/EFI/syslinux/
Файл /boot/extlinux/extlinux.conf
TIMEOUT 30
ONTIMEOUT gentoo
  
UI vesamenu.c32
MENU TITLE Boot
  
LABEL gentoo
      MENU LABEL Gentoo Linux
      LINUX /boot/kernel-3.6.11-gentoo
  
LABEL gentoo-old
      MENU LABEL Gentoo Linux (previous kernel)
      LINUX /boot/kernel-3.5.7-gentoo
Заметка
Избегайте использования параметр KERNEL для выбора образов Linux ядра, вместо этого используйте параметр LINUX. Если используется KERNEL и имя образа оканчивается на .0, то extlinux неправильно это истолкует и попытается использовать PXE для загрузки по сети, завершившись экраном полным графических артефактов и ничем другим. Для большей информации смотрите раздел "KERNEL file" на вики SYSLINUX.
Заметка
В конфигурационном файле, абсолютные пути будут считаться относительно файловой системы root, не-относительные пути будут считаться относительно каталога установки Syslinux.

Передача параметров ядра

Если только параметры ядра не закодированы жестко в образ ядра и не встроен initramfs, их нужно передать ядру через загрузчик. Чтобы это сделать, используйте параметр APPEND и/или INITRD, как показано здесь:

Файл syslinux.cfgДобавление параметров ядра
DEFAULT gentoo
  
LABEL gentoo
      LINUX /boot/kernel-3.6.11-gentoo
      INITRD /boot/initramfs-3.6.11-gentoo
      APPEND root=/dev/sda1

Проверка динамических ссылок

Начиная с syslinux-5.00, модули .c32 используют динамическую линковку. Чтобы проверить, что эти зависимости были установлены, войдите в каталог Syslinux и воспользуйтесь командой ldd:

root #LD_LIBRARY_PATH=. ldd *.c32

Если любые .c32 модули отсутствуют, убедитесь, что скопировали их в каталог.

Смотрите также

Ссылки

  1. Команда разработчиков Syslinux. Журнал изменений Syslinux 6, syslinux.org. Выпущен 20 июня 2013. Обновлено 27 марта 2016.