arch-wiki-md-repo
Version:
All arch-wiki articles in markdown format, updated every two days.
860 lines (556 loc) • 63.8 kB
Markdown
Ссылки по теме
* [Процесс загрузки Arch](/index.php/Arch_Boot_Process_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9) "Arch Boot Process (Русский)")
* [Загрузчики](/index.php/Boot_loaders "Boot loaders")
**Состояние перевода:** На этой странице представлен перевод статьи [Syslinux](/index.php/Syslinux "Syslinux"). Дата последней синхронизации: 2014-10-16\. Вы можете [помочь](/index.php/ArchWiki_Translation_Team_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9) "ArchWiki Translation Team (Русский)") синхронизировать перевод, если в английской версии произошли [изменения](https://wiki.archlinux.org/index.php?title=Syslinux&diff=0&oldid=340289).
[Syslinux](https://en.wikipedia.org/wiki/SYSLINUX и [Btrfs](/index.php/Btrfs "Btrfs").
**Примечание:** Syslinux не может получить доступ к файлам с разделов, которыми он не "владеет". Вы можете использовать альтернативный загрузчик, в котором нет такого ограничения, например, [GRUB](/index.php/GRUB_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9) "GRUB (Русский)")
## Contents
* [1 Системы с BIOS](#.D0.A1.D0.B8.D1.81.D1.82.D0.B5.D0.BC.D1.8B_.D1.81_BIOS)
* [1.1 Обзор процесса загрузки](#.D0.9E.D0.B1.D0.B7.D0.BE.D1.80_.D0.BF.D1.80.D0.BE.D1.86.D0.B5.D1.81.D1.81.D0.B0_.D0.B7.D0.B0.D0.B3.D1.80.D1.83.D0.B7.D0.BA.D0.B8)
* [1.2 Установка](#.D0.A3.D1.81.D1.82.D0.B0.D0.BD.D0.BE.D0.B2.D0.BA.D0.B0)
* [1.2.1 Автоматическая установка](#.D0.90.D0.B2.D1.82.D0.BE.D0.BC.D0.B0.D1.82.D0.B8.D1.87.D0.B5.D1.81.D0.BA.D0.B0.D1.8F_.D1.83.D1.81.D1.82.D0.B0.D0.BD.D0.BE.D0.B2.D0.BA.D0.B0)
* [1.2.2 Ручная установка](#.D0.A0.D1.83.D1.87.D0.BD.D0.B0.D1.8F_.D1.83.D1.81.D1.82.D0.B0.D0.BD.D0.BE.D0.B2.D0.BA.D0.B0)
* [1.2.2.1 Таблица разделов MBR](#.D0.A2.D0.B0.D0.B1.D0.BB.D0.B8.D1.86.D0.B0_.D1.80.D0.B0.D0.B7.D0.B4.D0.B5.D0.BB.D0.BE.D0.B2_MBR)
* [1.2.2.2 Таблица разделов GUID (GPT)](#.D0.A2.D0.B0.D0.B1.D0.BB.D0.B8.D1.86.D0.B0_.D1.80.D0.B0.D0.B7.D0.B4.D0.B5.D0.BB.D0.BE.D0.B2_GUID_.28GPT.29)
* [2 Системы с UEFI](#.D0.A1.D0.B8.D1.81.D1.82.D0.B5.D0.BC.D1.8B_.D1.81_UEFI)
* [2.1 Недостатки UEFI Syslinux](#.D0.9D.D0.B5.D0.B4.D0.BE.D1.81.D1.82.D0.B0.D1.82.D0.BA.D0.B8_UEFI_Syslinux)
* [2.2 Установка](#.D0.A3.D1.81.D1.82.D0.B0.D0.BD.D0.BE.D0.B2.D0.BA.D0.B0_2)
* [3 Настройка](#.D0.9D.D0.B0.D1.81.D1.82.D1.80.D0.BE.D0.B9.D0.BA.D0.B0)
* [3.1 Примеры](#.D0.9F.D1.80.D0.B8.D0.BC.D0.B5.D1.80.D1.8B)
* [3.1.1 Приглашение командной строки](#.D0.9F.D1.80.D0.B8.D0.B3.D0.BB.D0.B0.D1.88.D0.B5.D0.BD.D0.B8.D0.B5_.D0.BA.D0.BE.D0.BC.D0.B0.D0.BD.D0.B4.D0.BD.D0.BE.D0.B9_.D1.81.D1.82.D1.80.D0.BE.D0.BA.D0.B8)
* [3.1.2 Текстовое меню загрузки](#.D0.A2.D0.B5.D0.BA.D1.81.D1.82.D0.BE.D0.B2.D0.BE.D0.B5_.D0.BC.D0.B5.D0.BD.D1.8E_.D0.B7.D0.B0.D0.B3.D1.80.D1.83.D0.B7.D0.BA.D0.B8)
* [3.1.3 Графическое меню загрузки](#.D0.93.D1.80.D0.B0.D1.84.D0.B8.D1.87.D0.B5.D1.81.D0.BA.D0.BE.D0.B5_.D0.BC.D0.B5.D0.BD.D1.8E_.D0.B7.D0.B0.D0.B3.D1.80.D1.83.D0.B7.D0.BA.D0.B8)
* [3.2 Параметры ядра](#.D0.9F.D0.B0.D1.80.D0.B0.D0.BC.D0.B5.D1.82.D1.80.D1.8B_.D1.8F.D0.B4.D1.80.D0.B0)
* [3.3 Автозагрузка](#.D0.90.D0.B2.D1.82.D0.BE.D0.B7.D0.B0.D0.B3.D1.80.D1.83.D0.B7.D0.BA.D0.B0)
* [3.4 Безопасность](#.D0.91.D0.B5.D0.B7.D0.BE.D0.BF.D0.B0.D1.81.D0.BD.D0.BE.D1.81.D1.82.D1.8C)
* [3.5 Передача управления другому загрузчику (chainloading)](#.D0.9F.D0.B5.D1.80.D0.B5.D0.B4.D0.B0.D1.87.D0.B0_.D1.83.D0.BF.D1.80.D0.B0.D0.B2.D0.BB.D0.B5.D0.BD.D0.B8.D1.8F_.D0.B4.D1.80.D1.83.D0.B3.D0.BE.D0.BC.D1.83_.D0.B7.D0.B0.D0.B3.D1.80.D1.83.D0.B7.D1.87.D0.B8.D0.BA.D1.83_.28chainloading.29)
* [3.6 Chainloading для других систем Linux](#Chainloading_.D0.B4.D0.BB.D1.8F_.D0.B4.D1.80.D1.83.D0.B3.D0.B8.D1.85_.D1.81.D0.B8.D1.81.D1.82.D0.B5.D0.BC_Linux)
* [3.7 Использование memtest](#.D0.98.D1.81.D0.BF.D0.BE.D0.BB.D1.8C.D0.B7.D0.BE.D0.B2.D0.B0.D0.BD.D0.B8.D0.B5_memtest)
* [3.8 HDT](#HDT)
* [3.9 Перезагрузка и выключение](#.D0.9F.D0.B5.D1.80.D0.B5.D0.B7.D0.B0.D0.B3.D1.80.D1.83.D0.B7.D0.BA.D0.B0_.D0.B8_.D0.B2.D1.8B.D0.BA.D0.BB.D1.8E.D1.87.D0.B5.D0.BD.D0.B8.D0.B5)
* [3.10 Очистка экрана](#.D0.9E.D1.87.D0.B8.D1.81.D1.82.D0.BA.D0.B0_.D1.8D.D0.BA.D1.80.D0.B0.D0.BD.D0.B0)
* [3.11 Раскладка клавиатуры](#.D0.A0.D0.B0.D1.81.D0.BA.D0.BB.D0.B0.D0.B4.D0.BA.D0.B0_.D0.BA.D0.BB.D0.B0.D0.B2.D0.B8.D0.B0.D1.82.D1.83.D1.80.D1.8B)
* [3.12 Скрытие меню](#.D0.A1.D0.BA.D1.80.D1.8B.D1.82.D0.B8.D0.B5_.D0.BC.D0.B5.D0.BD.D1.8E)
* [3.13 PXELINUX](#PXELINUX)
* [3.14 Загрузка файлов образа ISO9660 при помощи memdisk](#.D0.97.D0.B0.D0.B3.D1.80.D1.83.D0.B7.D0.BA.D0.B0_.D1.84.D0.B0.D0.B9.D0.BB.D0.BE.D0.B2_.D0.BE.D0.B1.D1.80.D0.B0.D0.B7.D0.B0_ISO9660_.D0.BF.D1.80.D0.B8_.D0.BF.D0.BE.D0.BC.D0.BE.D1.89.D0.B8_memdisk)
* [4 Решение проблем](#.D0.A0.D0.B5.D1.88.D0.B5.D0.BD.D0.B8.D0.B5_.D0.BF.D1.80.D0.BE.D0.B1.D0.BB.D0.B5.D0.BC)
* [4.1 Использование приглашения Syslinux](#.D0.98.D1.81.D0.BF.D0.BE.D0.BB.D1.8C.D0.B7.D0.BE.D0.B2.D0.B0.D0.BD.D0.B8.D0.B5_.D0.BF.D1.80.D0.B8.D0.B3.D0.BB.D0.B0.D1.88.D0.B5.D0.BD.D0.B8.D1.8F_Syslinux)
* [4.2 Fsck не работает на корневом разделе](#Fsck_.D0.BD.D0.B5_.D1.80.D0.B0.D0.B1.D0.BE.D1.82.D0.B0.D0.B5.D1.82_.D0.BD.D0.B0_.D0.BA.D0.BE.D1.80.D0.BD.D0.B5.D0.B2.D0.BE.D0.BC_.D1.80.D0.B0.D0.B7.D0.B4.D0.B5.D0.BB.D0.B5)
* [4.3 No Default or UI found on some computers](#No_Default_or_UI_found_on_some_computers)
* [4.4 Missing operating system](#Missing_operating_system)
* [4.5 Windows загружается, игнорируя Syslinux](#Windows_.D0.B7.D0.B0.D0.B3.D1.80.D1.83.D0.B6.D0.B0.D0.B5.D1.82.D1.81.D1.8F.2C_.D0.B8.D0.B3.D0.BD.D0.BE.D1.80.D0.B8.D1.80.D1.83.D1.8F_Syslinux)
* [4.6 После выбора пункта меню ничего не происходит](#.D0.9F.D0.BE.D1.81.D0.BB.D0.B5_.D0.B2.D1.8B.D0.B1.D0.BE.D1.80.D0.B0_.D0.BF.D1.83.D0.BD.D0.BA.D1.82.D0.B0_.D0.BC.D0.B5.D0.BD.D1.8E_.D0.BD.D0.B8.D1.87.D0.B5.D0.B3.D0.BE_.D0.BD.D0.B5_.D0.BF.D1.80.D0.BE.D0.B8.D1.81.D1.85.D0.BE.D0.B4.D0.B8.D1.82)
* [4.7 Невозможно удалить ldlinux.sys](#.D0.9D.D0.B5.D0.B2.D0.BE.D0.B7.D0.BC.D0.BE.D0.B6.D0.BD.D0.BE_.D1.83.D0.B4.D0.B0.D0.BB.D0.B8.D1.82.D1.8C_ldlinux.sys)
* [4.8 Белый блок в верхнем левом углу при использовании vesamenu](#.D0.91.D0.B5.D0.BB.D1.8B.D0.B9_.D0.B1.D0.BB.D0.BE.D0.BA_.D0.B2_.D0.B2.D0.B5.D1.80.D1.85.D0.BD.D0.B5.D0.BC_.D0.BB.D0.B5.D0.B2.D0.BE.D0.BC_.D1.83.D0.B3.D0.BB.D1.83_.D0.BF.D1.80.D0.B8_.D0.B8.D1.81.D0.BF.D0.BE.D0.BB.D1.8C.D0.B7.D0.BE.D0.B2.D0.B0.D0.BD.D0.B8.D0.B8_vesamenu)
* [4.9 Chainloading Windows не работает, когда она установлена на другом диске](#Chainloading_Windows_.D0.BD.D0.B5_.D1.80.D0.B0.D0.B1.D0.BE.D1.82.D0.B0.D0.B5.D1.82.2C_.D0.BA.D0.BE.D0.B3.D0.B4.D0.B0_.D0.BE.D0.BD.D0.B0_.D1.83.D1.81.D1.82.D0.B0.D0.BD.D0.BE.D0.B2.D0.BB.D0.B5.D0.BD.D0.B0_.D0.BD.D0.B0_.D0.B4.D1.80.D1.83.D0.B3.D0.BE.D0.BC_.D0.B4.D0.B8.D1.81.D0.BA.D0.B5)
* [4.10 Чтение логов загрузчика](#.D0.A7.D1.82.D0.B5.D0.BD.D0.B8.D0.B5_.D0.BB.D0.BE.D0.B3.D0.BE.D0.B2_.D0.B7.D0.B0.D0.B3.D1.80.D1.83.D0.B7.D1.87.D0.B8.D0.BA.D0.B0)
* [5 Смотрите также](#.D0.A1.D0.BC.D0.BE.D1.82.D1.80.D0.B8.D1.82.D0.B5_.D1.82.D0.B0.D0.BA.D0.B6.D0.B5)
## Системы с BIOS
### Обзор процесса загрузки
1. **Этап 1 : Часть 1** - **Загрузка MBR** - При запуске BIOS загружает 440 байт загрузочного кода [MBR](/index.php/Master_Boot_Record_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9) "Master Boot Record (Русский)"), расположенного в начале диска (`/usr/lib/syslinux/bios/mbr.bin` или `/usr/lib/syslinux/bios/gptmbr.bin`)
2. **Этап 1 : Часть 2** - **Поиск активного раздела**. **На первом этапе загрузки MBR** ищет раздел, помеченный, как активный (с установленным boot-флагом). Предположим, это раздел `/boot`
3. **Этап 2 : Часть 1** - **Выполнение загрузочной записи тома** - **Первый этап загрузочной записи MBR** начинает выполнение Загрузочной Записи Тома (VBR) с раздела `/boot`. При использовании syslinux загрузочный код VBR находится в стартовом секторе `/boot/syslinux/ldlinux.sys`, который был создан командой `extlinux --install`. Обратите внимание, что `ldlinux.sys` — не то же самое, что `ldlinux.c32`
4. **Этап 2 : Часть 2** - **Выполнение `/boot/syslinux/ldlinux.sys`** - VBR загрузит остальную часть `/boot/syslinux/ldlinux.sys`. Расположение сектора `/boot/syslinux/ldlinux.sys` не должно измениться, иначе syslinux не выполнит загрузку
**Примечание:** В случае использования [Btrfs](/index.php/Btrfs "Btrfs") указанный выше способ не сработает, поскольку файлы переместятся в результате изменения расположения сектора `ldlinux.sys`. Поэтому в BTRFS весь код `ldlinux.sys` укладывается в пространство после VBR, а не устанавливается в `/boot/syslinux/ldlinux.sys`, в отличие от тех случаев, когда используются другие файловые системы
5. **Этап 3** - **Загрузка `/boot/syslinux/ldlinux.c32`** - `/boot/syslinux/ldlinux.sys` загрузит `/boot/syslinux/ldlinux.c32` (основной модуль), который содержит остаток **основной** части syslinux, не умещающейся в `ldlinux.sys` (из-за ограничений на размер файла). `ldlinux.c32` должен присутствовать в каждой установке syslinux/extlinux и соответствовать версии `ldlinux.sys`, установленной на раздел. В противном случае, syslinux не выполнит загрузку. Смотрите [http://bugzilla.syslinux.org/show_bug.cgi?id=7](http://bugzilla.syslinux.org/show_bug.cgi?id=7) для получения дополнительной информации
6. **Этап 4** - **Поиск и загрузка файла конфигурации** - После того, как Syslinux загрузится полностью, он ищет файл `/boot/syslinux/syslinux.cfg` (или `/boot/syslinux/extlinux.conf` в некоторых случаях) и загружает его, если он найден. Если нет, появится приглашение командной строки `boot:`. Этот шаг и остаток **неосновной** части syslinux (модули `/boot/syslinux/*.c32`, за исключением `lib*.c32` и `ldlinux.c32`) требуют наличия модулей `/boot/syslinux/lib*.c32` (библиотек) ([http://www.syslinux.org/wiki/index.php/Common_Problems#ELF](http://www.syslinux.org/wiki/index.php/Common_Problems#ELF)). Модули библиотек `lib*.c32` и неосновные модули `*.c32` должны соответствовать версии `ldlinux.sys`, установленной на раздел
### Установка
Установите пакет [syslinux](https://www.archlinux.org/packages/?name=syslinux) из [официальных репозиториев](/index.php/Official_repositories_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9) "Official repositories (Русский)").
**Примечание:**
* Начиная с версии Syslinux 4, Extlinux и Syslinux являются одним и тем же
* Пакет [gptfdisk](https://www.archlinux.org/packages/?name=gptfdisk) необходим для поддержки [GPT](https://en.wikipedia.org/wiki/GUID_Partition_Table "wikipedia:GUID Partition Table") с использованием автоматического скрипта
* Если ваш загрузочный раздел отформатирован в FAT, вам также потребуется пакет [mtools](https://www.archlinux.org/packages/?name=mtools)
#### Автоматическая установка
**Примечание:**
* Скрипт `syslinux-install_update` является специфичным для Archlinux, и по этой причине не предоставляется/поддерживается разработчиками Syslinux. Пожалуйста, направляйте все багрепорты, связанные с этим скриптом, в Arch Bug Tracker, а не в upstream
* Если вы обновляете Syslinux с версии 5.xx (или старше) до версии 6.xx, пожалуйста, переустановите (а не обновите) Syslinux BIOS вручную (без использования установочного скрипта) один раз, следуя указаниям из раздела [#Ручная установка](#.D0.A0.D1.83.D1.87.D0.BD.D0.B0.D1.8F_.D1.83.D1.81.D1.82.D0.B0.D0.BD.D0.BE.D0.B2.D0.BA.D0.B0). Установочный скрипт не способен корректно обновить Syslinux до версии 6.xx
Скрипт `syslinux-install_update` установит Syslinux, скопирует модули `*.c32` в `/boot/syslinux`, установит boot-флаг и загрузочный код в MBR. Он может работать с дисками [MBR](/index.php/Master_Boot_Record_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9) "Master Boot Record (Русский)") и [GPT](/index.php/GUID_Partition_Table "GUID Partition Table") с программным RAID:
1. Если вы используете отдельный раздел /boot, удостоверьтесь, что он примонтирован. Используйте для этого команду `lsblk`; если вы не видите точку монтирования `/boot`, примонтируйте раздел до того, как вы приступите к следующему шагу
2. Запустите `syslinux-install_update` с опциями `-i` (установить файлы), `-a` (пометить раздел, как *активный*, при помощи *boot-флага*) и `-m` (установить загрузочный код *MBR*): `# syslinux-install_update -i -a -m` Если эта команда выдает ошибку *Установка Syslinux BIOS не удалась* (Syslinux BIOS install failed), вероятно, проблема в том, что исполняемый файл `extlinux` не может найти раздел, содержащий `/boot`:
```
# extlinux --install /boot/syslinux
extlinux: cannot find device for path /boot/syslinux
extlinux: cannot open device (null)
```
Это может случиться, например, при обновлении с [LILO](/index.php/LILO "LILO"), который при загрузке текущего пользовательского (custom) ядра изменил параметр ядра в командной строке с, допустим, `root=/dev/sda1` на его числовой эквивалент `root=801`, о чем свидетельствуют `/proc/cmdline` и вывод команды `mount`. Исправьте ситуацию либо используя ручную установку, как описано ниже, с указанием `--device=/dev/sda1` для `extlinux`, либо просто перезагрузившись на обычное ядро Arch Linux, поскольку оно использует initramfs, благодаря чему проблема исчезнет.
3. Создайте или отредактируйте файл `/boot/syslinux/syslinux.cfg`, следуя указаниям из раздела [#Настройка](#.D0.9D.D0.B0.D1.81.D1.82.D1.80.D0.BE.D0.B9.D0.BA.D0.B0).
**Примечание:**
* Если вы перезагрузите вашу систему сейчас, вы по-прежнему получите приглашение командной строки Syslinux. Для автоматической загрузки вашей системы или появления меню загрузки необходимо создать конфигурационный файл
* Если вы находитесь в другом корневом каталоге (например, при загрузке с установочного носителя), установите Syslinux следующей командой:
```
# syslinux-install_update.sh -i -a -m -c /mnt/
```
#### Ручная установка
**Примечание:**
* Если вы не уверены в том, какой тип таблицы разделов используете (MBR или GPT), вы можете это проверить следующей командой:
```
# blkid -s PTTYPE -o value /dev/sda
gpt
```
* Если вы пытаетесь восстановить ранее установленную систему при помощи live CD, выполните [chroot](/index.php/Change_root_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9) "Change root (Русский)") перед тем, как использовать эти команды. Если вы этого не сделаете, вы должны добавлять путь (не пути `/dev/`) до точки монтирования в каждой команде
Загрузочный раздел, на который вы планируете установить Syslinux, должен содержать файловую систему FAT, ext2, ext3, ext4 или Btrfs. Вы должны устанавливать его по пути точки монтирования, а не на устройство `/dev/sdXY`. Вы не должны устанавливать его в корневой каталог файловой системы, например, устройства `/dev/sda1`, примонтированного в `/boot`. Вы можете установить Syslinux в каталог `syslinux`:
```
# mkdir /boot/syslinux
# cp -r /usr/lib/syslinux/bios/*.c32 /boot/syslinux/ ## скопируйте ВСЕ файлы *.c32 из /usr/lib/syslinux/bios/, А НЕ СОЗДАВАЙТЕ СИМВОЛЬНЫЕ ССЫЛКИ
# extlinux --install /boot/syslinux
```
После этого установите загрузочный код Syslinux (`mbr.bin` или `gptmbr.bin`) в 440-байтную область загрузочного кода MBR (не путать с MBR как таблицей разделов msdos) диска, как описано в следующем разделе.
##### Таблица разделов MBR
Загляните в основную статью: [Master Boot Record (Русский)](/index.php/Master_Boot_Record_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9) "Master Boot Record (Русский)").
Теперь вам необходимо пометить ваш загрузочный раздел как активный в вашей таблице разделов. Вот несколько приложений, способных это сделать: `fdisk`, `cfdisk`, `sfdisk`, `parted/gparted` ("boot-флаг"). Должно получиться примерно следующее:
`# fdisk -l /dev/sda`
```
[...]
Device Boot Start End Blocks Id System
/dev/sda1 * 2048 104447 51200 83 Linux
/dev/sda2 104448 625142447 312519000 83 Linux
```
Установите MBR:
```
# dd bs=440 count=1 conv=notrunc if=/usr/lib/syslinux/bios/mbr.bin of=/dev/sda
```
Альтернативная MBR, которую предоставляет Syslinux: `altmbr.bin`. Эта MBR *не* сканирует диск на наличие загрузочного раздела; вместо этого, последнему байту MBR присваивается значение, отображающее то, с какого раздела необходимо выполнять загрузку. Вот пример того, как `altmbr.bin` может быть скопирован:
```
# printf '\x5' | cat /usr/lib/syslinux/bios/altmbr.bin - | \
dd bs=440 count=1 iflag=fullblock conv=notrunc of=/dev/sda
```
В этом случае один байт со значением 5 добавляется к содержимому `altmbr.bin` и итоговые 440 байт пишутся в MBR устройства `sda`. Syslinux был установлен на первый логический раздел (`/dev/sda5`) диска.
##### Таблица разделов GUID (GPT)
Загляните в основную статью: [GUID Partition Table](/index.php/GUID_Partition_Table "GUID Partition Table").
Второй бит атрибутов (атрибут "legacy_boot") должен быть установлен для раздела `/boot`:.
```
# sgdisk /dev/sda --attributes=1:set:2
```
Это переключит атрибут *legacy BIOS bootable* на разделе 1\. Для проверки:
`# sgdisk /dev/sda --attributes=1:show`
```
1:2:1 (legacy BIOS bootable)
```
Установите MBR:
```
# dd bs=440 conv=notrunc count=1 if=/usr/lib/syslinux/bios/gptmbr.bin of=/dev/sda
```
Если это не сработает, вы также можете попробовать:
```
# syslinux-install_update -i -m
```
## Системы с UEFI
**Примечание:**
* В приведенных ниже командах `$esp` — это точка монтирования ESP (Системного Раздела EFI)
* `efi64` обозначает x86_64 UEFI системы, для IA32 (32-bit) замены EFI `efi64` с `efi32` в приведенных ниже командах
* Для syslinux файлы ядра и initramfs должны быть в ESP, поскольку syslinux (на данный момент) не имеет возможности получать доступ к файлам вне раздела, которым он "владеет" (например, вне ESP в данном случае). По этой причине рекомендуется монтировать ESP в `/boot`
* Автоматический установочный скрипт `/usr/bin/syslinux-install_update` не поддерживает установку на системы с UEFI
* Синтаксис конфигурации в `syslinux.cfg` для UEFI такой же, как и для BIOS
### Недостатки UEFI Syslinux
* UEFI Syslinux `syslinux.efi` не может быть подписан `sbsign` (из sbsigntool) для UEFI Secure Boot. Багрепорт: [http://bugzilla.syslinux.org/show_bug.cgi?id=8](http://bugzilla.syslinux.org/show_bug.cgi?id=8)
* Использование TAB при редактировании параметров ядра в меню UEFI Syslinux ведет к "нечитаемому тексту" (строки текста накладываются друг на друга). Багрепорт: [http://bugzilla.syslinux.org/show_bug.cgi?id=9](http://bugzilla.syslinux.org/show_bug.cgi?id=9)
* UEFI Syslinux не поддерживает chainloading других приложений EFI, таких как `UEFI Shell` или `Windows Boot Manager`. Багрепорт: [http://bugzilla.syslinux.org/show_bug.cgi?id=17](http://bugzilla.syslinux.org/show_bug.cgi?id=17)
* UEFI Syslinux может не загружаться в некоторых виртуальных машинах вроде QEMU/OVMF или VirtualBox, в продуктах/версиях VMware, а также в некоторых эмуляторах окружения UEFI, таких как DUET. Участник проекта Syslinux не подтвердил наличие этой проблемы при использовании VMware Workstation 10.0.2 и Syslinux-6.02\. Отчеты об ошибках: [http://bugzilla.syslinux.org/show_bug.cgi?id=21](http://bugzilla.syslinux.org/show_bug.cgi?id=21) и [http://bugzilla.syslinux.org/show_bug.cgi?id=23](http://bugzilla.syslinux.org/show_bug.cgi?id=23)
* Memdisk недоступен для UEFI. Багрепорт: [http://bugzilla.syslinux.org/show_bug.cgi?id=30](http://bugzilla.syslinux.org/show_bug.cgi?id=30)
### Установка
* Установите пакеты [syslinux](https://www.archlinux.org/packages/?name=syslinux) и [efibootmgr](https://www.archlinux.org/packages/?name=efibootmgr) из [официальных репозиториев](/index.php/Official_repositories_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9) "Official repositories (Русский)"). Затем настройте syslinux в Системном Разделе EFI (ESP), как показано ниже
* Скопируйте файлы syslinux в ESP (замените `$esp` на точку монтирования ESP, обычно это `/boot`):
```
# mkdir -p $esp/EFI/syslinux
# cp -r /usr/lib/syslinux/efi64/* $esp/EFI/syslinux
```
* Настройте загрузочную запись для Syslinux, используя [efibootmgr](/index.php/Unified_Extensible_Firmware_Interface_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)#efibootmgr "Unified Extensible Firmware Interface (Русский)"):
```
# efibootmgr -c -d /dev/sdX -p 1 -l /EFI/syslinux/syslinux.efi -L "Syslinux"
```
* Создайте или отредактируйте файл `$esp/EFI/syslinux/syslinux.cfg`, следуя указаниям из раздела [#Настройка](#.D0.9D.D0.B0.D1.81.D1.82.D1.80.D0.BE.D0.B9.D0.BA.D0.B0)
**Примечание:** Файл конфигурации для UEFI — `$esp/EFI/syslinux/syslinux.cfg`, а не `/boot/syslinux/syslinux.cfg`. Файлы в каталоге `/boot/syslinux/` являются специфичными для BIOS и не имеют никакого отношения к UEFI syslinux
## Настройка
Конфигурационный файл Syslinux, `syslinux.cfg`, должен быть создан в том же каталоге, в котором установлен Syslinux. В нашем случае это `/boot/syslinux/` для систем с BIOS и `$esp/EFI/syslinux/` для систем с UEFI.
Загрузчик будет искать как `syslinux.cfg` (предпочтительно), так и `extlinux.conf`
**Tip:**
* Взамен `LINUX`, ключевое слово `KERNEL` также может быть использовано. `KERNEL` пытается определить тип файла, в то время как `LINUX` всегда ожидает ядро Linux
* Одна единица в параметре `TIMEOUT` читается как **0.1** секунды
### Примеры
**Примечание:** Любые конфигурационные файлы, приведенные здесь, должны быть отредактированы, чтобы установить правильные параметры ядра. Смотрите раздел [#Параметры ядра](#.D0.9F.D0.B0.D1.80.D0.B0.D0.BC.D0.B5.D1.82.D1.80.D1.8B_.D1.8F.D0.B4.D1.80.D0.B0)
#### Приглашение командной строки
Это простой конфигурационный файл, который отобразит приглашение командной строки `boot:` и выполнит автоматическую загрузку через 5 секунд. Если вы хотите, чтобы загрузка начиналась сразу же, без вывода приглашения, установите параметр `PROMPT` в значение `0`.
Конфигурация:
`/boot/syslinux/syslinux.cfg`
```
PROMPT 1
TIMEOUT 50
DEFAULT arch
LABEL arch
LINUX ../vmlinuz-linux
APPEND root=/dev/sda2 rw
INITRD ../initramfs-linux.img
LABEL archfallback
LINUX ../vmlinuz-linux
APPEND root=/dev/sda2 rw
INITRD ../initramfs-linux-fallback.img
```
#### Текстовое меню загрузки
Syslinux также позволяет вам использовать меню загрузки. Для этого скопируйте модуль `menu` в ваш каталог Syslinux:
```
# cp /usr/lib/syslinux/bios/menu.c32 /boot/syslinux/
```
Конфигурация:
`/boot/syslinux/syslinux.cfg`
```
UI menu.c32
PROMPT 0
MENU TITLE Boot Menu
TIMEOUT 50
DEFAULT arch
LABEL arch
MENU LABEL Arch Linux
LINUX ../vmlinuz-linux
APPEND root=/dev/sda2 rw
INITRD ../initramfs-linux.img
LABEL archfallback
MENU LABEL Arch Linux Fallback
LINUX ../vmlinuz-linux
APPEND root=/dev/sda2 rw
INITRD ../initramfs-linux-fallback.img
```
Для получения дополнительных подробностей смотрите [документацию по Syslinux](http://git.kernel.org/?p=boot/syslinux/syslinux.git;a=blob;f=doc/menu.txt) или [Syslinux wiki](http://www.syslinux.org/wiki/index.php/Menu).
#### Графическое меню загрузки
Syslinux также позволяет вам использовать графическое меню загрузки. Для этого скопируйте COM32 модуль `vesamenu` в ваш каталог Syslinux:
```
# cp /usr/lib/syslinux/bios/vesamenu.c32 /boot/syslinux/
```
**Примечание:** Если вы используете [UEFI](/index.php/Unified_Extensible_Firmware_Interface_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9) "Unified Extensible Firmware Interface (Русский)"), необходимо копировать модуль из каталога `/usr/lib/syslinux/efi64/` (`efi32` для систем i686), иначе вместо меню загрузки вы увидите черный экран. Если это случилось, произведите загрузку с установочного носителя и используйте [chroot](/index.php/Chroot "Chroot"), чтобы внести в систему необходимые изменения
В этой конфигурации используется такой же дизайн меню, как и на установочном образе Arch. Ее можно найти по адресу [projects.archlinux.org](https://projects.archlinux.org/archiso.git/tree/configs/releng/syslinux). [Фоновое изображение Arch Linux](https://projects.archlinux.org/archiso.git/plain/configs/releng/syslinux/splash.png) можно скачать там же. Скопируйте его в `/boot/syslinux/splash.png`.
Конфигурация:
`/boot/syslinux/syslinux.cfg`
```
UI vesamenu.c32
DEFAULT arch
PROMPT 0
MENU TITLE Boot Menu
MENU BACKGROUND splash.png
TIMEOUT 50
MENU WIDTH 78
MENU MARGIN 4
MENU ROWS 5
MENU VSHIFT 10
MENU TIMEOUTROW 13
MENU TABMSGROW 11
MENU CMDLINEROW 11
MENU HELPMSGROW 16
MENU HELPMSGENDROW 29
# Смотрите http://www.syslinux.org/wiki/index.php/Comboot/menu.c32
MENU COLOR border 30;44 #40ffffff #a0000000 std
MENU COLOR title 1;36;44 #9033ccff #a0000000 std
MENU COLOR sel 7;37;40 #e0ffffff #20ffffff all
MENU COLOR unsel 37;44 #50ffffff #a0000000 std
MENU COLOR help 37;40 #c0ffffff #a0000000 std
MENU COLOR timeout_msg 37;40 #80ffffff #00000000 std
MENU COLOR timeout 1;37;40 #c0ffffff #00000000 std
MENU COLOR msg07 37;40 #90ffffff #a0000000 std
MENU COLOR tabmsg 31;40 #30ffffff #00000000 std
LABEL arch
MENU LABEL Arch Linux
LINUX ../vmlinuz-linux
APPEND root=/dev/sda2 rw
INITRD ../initramfs-linux.img
LABEL archfallback
MENU LABEL Arch Linux Fallback
LINUX ../vmlinuz-linux
APPEND root=/dev/sda2 rw
INITRD ../initramfs-linux-fallback.img
```
С версии Syslinux 3.84, `vesamenu.c32` поддерживает указание необходимого разрешения через параметр `MENU RESOLUTION $WIDTH $HEIGHT`. Для этого вставьте строку `MENU RESOLUTION 1440 900` в ваш файл конфигурации (в данном примере используется разрешение 1440x900). Фоновое изображение должно иметь такое же разрешение, в противном случае Syslinux откажется загружать меню.
### Параметры ядра
[Параметры ядра](/index.php/Kernel_parameters "Kernel parameters") устанавливаются при помощи строки `APPEND` файла `syslinux.cfg`. Рекомендуется внести эти изменения, в том числе, и для режима fallback.
В самых простых случаях должно быть изменено лишь имя раздела в параметре `root`. Измените `/dev/sda2` на то, что необходимо для указания на верный корневой раздел.
```
APPEND root=/dev/sda2
```
Если вы хотите использовать [UUID](/index.php/UUID "UUID") для [точного именования устройств](/index.php/Persistent_block_device_naming "Persistent block device naming"), а не их номера, измените значение строки `APPEND`, как показано ниже, заменив `1234` на `UUID` вашего корневого раздела:
```
APPEND root=UUID=*1234* rw
```
Если вы используете шифрование [LUKS](/index.php/LUKS "LUKS"), измените строку `APPEND` для использования вашего шифрованного тома:
```
APPEND root=/dev/mapper/*group*-*name* cryptdevice=/dev/sda2:*name* rw
```
Если вы используете программный [RAID](https://en.wikipedia.org/wiki/RAID "wikipedia:RAID") с [mdadm](http://neil.brown.name/blog/mdadm), измените строку `APPEND` для указания вашего RAID-массива. В приведенном ниже примере указывается три массива RAID 1, и один из них устанавливается в качестве корневого:
```
APPEND root=/dev/md1 rw md=0,/dev/sda2,/dev/sdb2 md=1,/dev/sda3,/dev/sdb3 md=2,/dev/sda4,/dev/sdb4
```
Если загрузка с раздела raid проваливается с использованием kernel device node method, более надежным способом является использование меток разделов:
```
APPEND root=МЕТКА=МЕТКА_КОРНЕВОГО_РАЗДЕЛА rw
```
### Автозагрузка
Если вы не хотите, чтобы выводилось меню Syslinux, используйте [#Приглашение командной строки](#.D0.9F.D1.80.D0.B8.D0.B3.D0.BB.D0.B0.D1.88.D0.B5.D0.BD.D0.B8.D0.B5_.D0.BA.D0.BE.D0.BC.D0.B0.D0.BD.D0.B4.D0.BD.D0.BE.D0.B9_.D1.81.D1.82.D1.80.D0.BE.D0.BA.D0.B8), при этом установив параметр `PROMPT` в значение `0`. Убедитесь, что в вашем `syslinux.cfg` указана опция `DEFAULT`.
### Безопасность
Syslinux имеет два уровня безопасности загрузчика: мастер-пароль для всего меню и отдельные пароли для пунктов. В файле `syslinux.cfg` используйте
```
MENU MASTER PASSWD пароль
```
чтобы установить мастер-пароль загрузчика, и
```
MENU PASSWD пароль
```
внутри блока `LABEL`, чтобы установить пароль на отдельные пункты загрузки.
### Передача управления другому загрузчику (chainloading)
**Примечание:** Syslinux BIOS не может сам загружать файлы с других разделов, однако модуль `chain.c32` способен производить загрузку загрузочного сектора раздела (VBR)
Если вам необходимо передать управление другому загрузчику (например, для загрузки Windows), скопируйте модуль `chain.c32` в ваш каталог Syslinux (для получения подробностей прочитайте инструкции из предыдущих разделов). Затем создайте секцию в конфигурационном файле:
`/boot/syslinux/syslinux.cfg`
```
...
LABEL windows
MENU LABEL Windows
COM32 chain.c32
APPEND hd0 3
...
```
`hd0 3` — это третий раздел на первом устройстве BIOS. Счет устройств ведется с нуля, а счет разделов на устройствах — с единицы.
**Примечание:** В этом случае будет пропущен вызов собственного менеджера загрузки Windows (`bootmgr`), который необходим для завершения установки некоторых важных обновлений (например, [этого](http://support.microsoft.com/kb/2883200)). В подобных ситуациях рекомендуется временно установить загрузочный флаг MBR на раздел с Windows (например, при помощи [GParted](/index.php/GParted "GParted")), дать обновлениям завершить установку, после чего вернуть флаг на раздел с syslinux (например, при помощи программы для Windows [DiskPart](http://www.online-tech-tips.com/computer-tips/set-active-partition-vista-xp))
Если вы не уверены в том, какое устройство в BIOS считается "первым", вы можете использовать идентификатор MBR, или же, если вы используете GPT, метки файловой системы. Чтобы использовать идентификатор MBR, выполните команду
`# fdisk -l /dev/sdb`
```
Disk /dev/sdb: 128.0 GB, 128035676160 bytes
255 heads, 63 sectors/track, 15566 cylinders, total 250069680 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xf00f1fd3
Device Boot Start End Blocks Id System
/dev/sdb1 2048 4196351 2097152 7 HPFS/NTFS/exFAT
/dev/sdb2 4196352 250066943 122935296 7 HPFS/NTFS/exFAT
```
заменив `/dev/sdb` на то устройство, которое вам необходимо. Использование шестнадцатеричного идентификатора диска (Disk identifier) `0xf00f1fd3` в этом случае в файле `syslinux.cfg` будет выглядеть так:
`/boot/syslinux/syslinux.cfg`
```
...
LABEL windows
MENU LABEL Windows
COM32 chain.c32
APPEND mbr:0xf00f1fd3
...
```
Для получения дополнительных подробностей про chainloading смотрите [Syslinux wiki](http://www.syslinux.org/wiki/index.php/Comboot/chain.c32).
Если на том же разделе у вас установлен [GRUB](/index.php/GRUB_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9) "GRUB (Русский)"), вы можете передать ему управление, используя:
`/boot/syslinux/syslinux.cfg`
```
...
LABEL grub2
MENU LABEL Grub2
COM32 chain.c32
append file=../grub/boot.img
...
```
Это может быть необходимо для загрузки из образов ISO.
### Chainloading для других систем Linux
Передача управления другому загрузчику, такому, как в Windows, является достаточно тривиальной задачей. Но в Syslinux возможна только загрузка файлов, находящихся на том же разделе, что и конфигурационный файл. Таким образом, если у вас установлена другая система Linux на другом разделе без отдельного `/boot`, появляется необходимость в применении Extlinux. По существу, Extlinux может быть установлен в "суперблок" раздела и обозначен, как отдельный загрузчик. Extlinux является частью проекта Syslinux и включен в пакет [syslinux](https://www.archlinux.org/packages/?name=syslinux).
Следующие инструкции подразумевают, что Syslinux у вас уже установлен. Также они подразумевают, что используется типичный путь к конфигурации Arch Linux `/boot/syslinux` и разделом для передачи управления `/` является раздел `/dev/sda3`.
Загрузитесь в имеющийся Linux (вероятно, на разделе, который указан в Syslinux для загрузки), примонтируйте другой корневой раздел в желаемую точку монтирования. В данном примере будет использоваться `/mnt`. Также, если вы используете отдельный раздел `/boot` во второй операционной системе, он также должен быть примонтирован. В приведенном примере предполагается, что это `/dev/sda2`.
```
# mount /dev/sda3 /mnt
# mount /dev/sda2 /mnt/boot (необходимо только в случае отдельного /boot)
```
Установите Extlinux и скопируйте необходимые файлы `*.c32`:
```
# extlinux -i /mnt/boot/syslinux
# cp /usr/lib/syslinux/bios/*.c32 /mnt/boot/syslinux
```
Создайте файл `/mnt/boot/syslinux/syslinux.cfg`. Вот пример файла конфигурации:
`/boot/syslinux/syslinux.cfg **на /dev/sda3**`
```
timeout 10
ui menu.c32
label Other Linux
linux /boot/vmlinuz-linux
initrd /boot/initramfs-linux.img
append root=/dev/sda3 rw quiet
label MAIN
com32 chain.c32
append hd0 0
```
Взято со [страницы пользователя Djgera](/index.php/User:Djgera "User:Djgera").
### Использование memtest
Установите пакет [memtest86+](https://www.archlinux.org/packages/?name=memtest86%2B) из [официальных репозиториев](/index.php/Official_repositories_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9) "Official repositories (Русский)").
Используйте такую секцию `LABEL` для запуска [memtest](https://en.wikipedia.org/wiki/Memtest86 "wikipedia:Memtest86"):
`/boot/syslinux/syslinux.cfg`
```
...
LABEL memtest
MENU LABEL Memtest86+
LINUX ../memtest86+/memtest.bin
...
```
**Примечание:** Если вы используете pxelinux, измените имя с *memtest.bin* на *memtest*, поскольку pxelinux интерпретирует файлы с расширением .bin как загрузочные секторы и загружает только 2KB из них
### HDT
[HDT (Hardware Detection Tool)](http://hdt-project.org/) отображает информацию об аппаратном обеспечении. Как и раньше, файл `.c32` должен быть скопирован из каталога `/boot/syslinux/`. Для информации PCI скопируйте файл `/usr/share/hwdata/pci.ids` в `/boot/syslinux/pci.ids` и добавьте следующее в ваш конфигурационный файл:
`/boot/syslinux/syslinux.cfg`
```
LABEL hdt
MENU LABEL Hardware Info
COM32 hdt.c32
```
### Перезагрузка и выключение
Используйте следующие секции для возможности перезагрузки или выключения вашей машины:
`/boot/syslinux/syslinux.cfg`
```
LABEL reboot
MENU LABEL Reboot
COM32 reboot.c32
LABEL poweroff
MENU LABEL Power Off
COM32 poweroff.c32
```
### Очистка экрана
Для очистки экрана при выходе из меню добавьте следующую строку:
`/boot/syslinux/syslinux.cfg`
```
MENU CLEAR
```
### Раскладка клавиатуры
Если вам часто приходится редактировать параметры загрузки, вы можете захотеть изменить раскладку клавиатуры. Это позволит вам проще вводить "=", "/" и другие символы.
Сначала вы должны создать совместимую раскладку (в данном примере — немецкая):
**Примечание:** Необходимо обязательно создать раскладку `us.kmap`, иначе эти действия ничего не дадут
```
$ cp /usr/share/kbd/keymaps/i386/qwertz/de.map.gz .
$ cp /usr/share/kbd/keymaps/i386/qwerty/us.map.gz .
$ gunzip de.map.gz
$ gunzip us.map.gz
$ mv de.map de.kmap
$ mv us.map us.kmap
# keytab-lilo de > de.ktl
```
Скопируйте файл `de.ktl` от имени суперпользователя в каталог `/boot/syslinux/` и назначьте root'a владельцем:
```
# chown root:root /boot/syslinux/de.ktl
```
Теперь отредактируйте `syslinux.conf`, добавив:
`/boot/syslinux/syslinux.cfg`
```
KBDMAP de.ktl
```
### Скрытие меню
Используйте опцию:
`/boot/syslinux/syslinux.cfg`
```
MENU HIDDEN
```
чтобы скрыть меню и отображать только таймер. Нажмите любую клавишу в это время, и меню появится на экране.
### PXELINUX
**Примечание:** При наличии UEFI Syslinux использует один и тот же двоичный файл как для загрузки с диска, так и для загрузки по сети. Для загрузки файлов по TFTP или другим сетевым протоколам требуется функция загрузки по сети
**PXELINUX** предоставляется пакетом [syslinux](https://www.archlinux.org/packages/?name=syslinux).
Скопируйте загрузчик `{l,}pxelinux.0` (предоставляемый пакетом syslinux) в boot-каталог клиента. При использовании версии 5.00 (и более новых) также скопируйте `ldlinux.c32` из того же пакета:
```
# cp /usr/lib/syslinux/bios/pxelinux.0 "$root/boot"
# cp /usr/lib/syslinux/bios/ldlinux.c32 "$root/boot"
# mkdir "$root/boot/pxelinux.cfg"
```
Мы также создали каталог `pxelinux.cfg`, в котором PXELINUX по умолчанию ищет конфигурационные файлы. Поскольку мы не хотим иметь различий между разными MAC хоста, мы создаем конфигурацию `по умолчанию`:
`# vim "$root/boot/pxelinux.cfg/default"`
```
default linux
label linux
kernel vmlinuz-linux
append initrd=initramfs-linux.img quiet ip=:::::eth0:dhcp nfsroot=10.0.0.1:/arch
```
Или, если вы используете NBD, пропишите следующую строку:
`append ro initrd=initramfs-linux.img ip=:::::eth0:dhcp nbd_host=10.0.0.1 nbd_name=arch root=/dev/nbd0`
**Примечание:** Необходимо будет изменить параметры `nbd_host` и/или `nfsroot` таким образом, чтобы они соответствовали конфигурации вашей сети (адресу сервера NFS/NBD)
PXELINUX использует тот же синтаксис конфигурации, что и SYSLINUX; обратитесь к upstream-документации для получения дополнительной информации.
Ядро и initramfs будут переданы через TFTP, так что пути к ним должны быть прописаны относительно корня TFTP.
Для загрузки pxelinux замените `filename "/grub/i386-pc/core.0";` в `/etc/dhcpd.conf` на `filename "/pxelinux.0"`
### Загрузка файлов образа ISO9660 при помощи memdisk
Syslinux поддерживает прямую загрузку из ISO-образов при помощи модуля [memdisk](http://www.syslinux.org/wiki/index.php/MEMDISK). Для просмотра примеров обратитесь к разделу [Использование Syslinux и memdisk](/index.php/Multiboot_USB_drive#Using_Syslinux_and_memdisk "Multiboot USB drive").
## Решение проблем
### Использование приглашения Syslinux
Вы можете ввести имя блока `LABEL` записи, которую вы хотите загрузить (из тех, что указаны в файле `syslinux.cfg`). Если вы использовали конфигурации из приведенных примеров, просто напишите:
```
boot: arch
```
Если вы получите ошибку о том, что конфигурационный файл не может быть загружен (configuration file could not be loaded), вы можете передать необходимые параметры загрузки, например:
```
boot: ../vmlinuz-linux root=/dev/sda2 rw initrd=../initramfs-linux.img
```
Если у вас нет доступа к `boot:` в [ramfs](/index.php/Ramdisk "Ramdisk"), и, следовательно, временно не можете загрузить ядро:
1\. Создайте временный каталог, чтобы примонтировать ваш корневой раздел (если он еще не существует):
```
# mkdir -p /new_root
```
2\. Примонтируйте `/` в `/new_root` (в случае, если `/boot/` находится на том же разделе; иначе вам придется монтировать и то, и другое):
**Примечание:** Busybox не может примонтировать `/boot`, если он находится на собственном разделе с ext2
```
# mount /dev/sd[a-z][1-9] /new_root
```
3\. Используя `vim`, отредактируйте `syslinux.cfg` опять, чтобы он удовлетворял вашим потребностям, и сохраните файл
4\. Выполните перезагрузку
### Fsck не работает на корневом разделе
Если журнал корневой файловой системы поврежден, в ramfs emergency shell примонтируйте корневую файловую систему:
```
# mount /dev/*корневой раздел* /new_root
```
И возьмите оттуда двоичный файл tune2fs (он не включен в состав Syslinux):
```
# cp /new_root/sbin/tune2fs /sbin/
```
Следуйте инструкциям в [ext2fs: no external journal](/index.php/Fsck#ext2fs_:_no_external_journal "Fsck") для создания нового журнала корневого раздела.
### No Default or UI found on some computers
Некоторые производители материнских плат предоставляют меньшую совместимость загрузки с устройств USB, чем другие. В то время, как устройства USB, отформатированные в ext4, могут загружаться на более свежих компьютерах, некоторые машины могут зависнуть, если загрузочный раздел, содержащий *ядро* и *initrd*, не является разделом FAT16\. Для предотвращения загрузки `ldlinux` на более старых машинах и провала чтения `syslinux.cfg`, используйте `cfdisk`, чтобы создать раздел FAT16 (<=2GB), и отформатируйте его при помощи пакета [dosfstools](https://www.archlinux.org/packages/?name=dosfstools):
```
# mkfs.msdos -F 16 /dev/sda1
```
Затем установите и настройте Syslinux.
### Missing operating system
Если вы видите это сообщение, удостоверьтесь, что разделу, содержащему `/boot`, присвоен boot-флаг. Если флаг включен, возможно, раздел начинается с сектора 1, а не с 63 или 2048\. Проверьте это с помощью `fdisk -l`. Если предположение верно, вы можете передвинуть раздел(ы) при помощи `gparted` с диска восстановления. Или же, если у вас отдельный загрузочный раздел, вы можете создать резервную копию `/boot` при помощи
```
# cp -a /boot /boot.bak
```
а затем загрузиться с установочного образа Arch. Далее используйте `cfdisk`, чтобы удалить раздел `/boot` и создать его заново. Теперь он должен начинаться с правильного сектора, **63**. Примонтируйте ваши разделы и выполните [chroot](/index.php/Change_root_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9) "Change root (Русский)"). Восстановите `/boot` следующей командой:
```
# cp -a /boot.bak/* /boot
```
Проверьте правильность файла `/etc/fstab`, выполните:
```
# syslinux-install_update -iam
```
и перезагрузитесь.
Вы также получите это сообщение об ошибке, если пытаетесь загрузиться с массива [RAID](/index.php/RAID "RAID") 1 и создали массив с слишком новой версией метаданных, которую Syslinux не понимает. По состоянию на август 2013 года по умолчанию mdadm создаст массив с версией 1.2 метаданных, но Syslinux не понимает версии, новее 1.0\. В этом случае вам необходимо пересоздать массив [RAID](/index.php/RAID "RAID"), используя флаг `--metadata=1.0` в mdadm.
### Windows загружается, игнорируя Syslinux
**Решение:** Убедитесь, что разделу, содержащему `/boot`, присвоен boot-флаг. Также убедитесь, что этот флаг не включен на разделе с Windows. Смотрите раздел установки выше.
MBR, идущий в Syslinux, ищет первый активный раздел, имеющий boot-флаг. Раздел с Windows, вероятно, был найден первым и имел этот флаг.
### После выбора пункта меню ничего не происходит
Вы выбираете пункт меню, и ничего не происходит, экран только *"обновляется"*. Обычно это означает, что в файле `syslinux.cfg` имеется ошибка. Нажмите `Tab` для редактирования параметров загрузки. В качестве альтернативы, вы можете нажать `Esc` и прописать имя блока `LABEL` вашей загрузочной записи (например, *arch*). Другой причиной может быть то, что у вас не установлено ядро. Найдите способ получить доступ к вашей файловой системе (например, используя live CD), удостоверьтесь, что файл `/mount/vmlinuz-linux` существует и имеет ненулевой размер. Если это не так, [переустановите ядро](/index.php/Kernel_Panics#Option_2:_Reinstall_kernel "Kernel Panics").
### Невозможно удалить ldlinux.sys
Файл `ldlinux.sys` имеет защитный атрибут, предотвращающий его удаление или перезапись. Это сделано потому, что расположение файла не должно меняться, иначе Syslinux должен быть переустановлен. Чтобы удалить его, выполните:
```
# chattr -i /boot/syslinux/ldlinux.sys
# rm /boot/syslinux/ldlinux.sys
```
### Белый блок в верхнем левом углу при использовании vesamenu
Проблема: *По состоянию на linux-3.0, драйвер modesetting пытается сохранять текущее содержимое экрана после смены разрешения (по крайней мере, это происходит с моим Intel, когда Syslinux работает в текстовом режиме). Возникает ошибка с комбинированием модуля vesamenu в Syslinux (белый блок — попытка сохранить меню Syslinux, но драйвер не может "ухватить" картинку из графического режима vesa).*
Если у вас прописано свое разрешение и `vesamenu` с ранним modesetting, попробуйте проделать следующее с вашим `syslinux.cfg` для удаления белого блока и продолжения вывода графического режима:
```
APPEND root=/dev/sda6 rw 5 **vga=current** quiet splash
```
### Chainloading Windows не работает, когда она установлена на другом диске
Если Windows установлена не на том диске, на котором установлен Arch, и у вас возникает проблема с передачей управления другому загрузчику, попробуйте следующую конфигурацию:
```
LABEL Windows
MENU LABEL Windows
COM32 chain.c32
APPEND mbr:0xdfc1ba9e swap
```
Замените код mbr тем, что есть на диске с windows (детали [выше](#.D0.9F.D0.B5.D1.80.D0.B5.D0.B4.D0.B0.D1.87.D0.B0_.D1.83.D0.BF.D1.80.D0.B0.D0.B2.D0.BB.D0.B5.D0.BD.D0.B8.D1.8F_.D0.B4.D1.80.D1.83.D0.B3.D0.BE.D0.BC.D1.83_.D0.B7.D0.B0.D0.B3.D1.80.D1.83.D0.B7.D1.87.D0.B8.D0.BA.D1.83_.28chainloading.29)), и добавьте `swap` в опции.
### Чтение логов загрузчика
В некоторых случаях, например, когда загрузчику не удается загрузить ядро, крайне желательно узнать дополнительную информацию о процессе загрузки. *Syslinux* отображает сообщения об ошибках на экране, но появляющееся меню быстро их скрывает. Чтобы избежать этого, необходимо отключить `menu UI` в `syslinux.cfg` и использовать приглашение по умолчанию — "command-line". Это означает:
* Отменить указание UI
* Отменить ONTIMEOUT
* Отменить ONERROR
* Отменить MENU CLEAR
* Использовать больший TIMEOUT
* Использовать PROMPT 1
* Использовать DEFAULT <problematic_label>
Для получения более информативных отладочных сообщений необходимо перекомпилировать пакет [syslinux](https://www.archlinux.org/packages/?name=syslinux) с дополнительными CFLAGS:
```
-DDEBUG_STDIO=1 -DCORE_DEBUG=1
```
## Смотрите также
* [Официальный сайт](http://www.syslinux.org)
* [Конфигурация PXELinux](http://www.josephn.net/scrapbook/pxelinux_stuff)
* [Мультизагрузка USB с использованием Syslinux](http://blog.jak.me/2013/01/03/creating-a-multiboot-usb-stick-using-syslinux/)