Product SiteDocumentation Site

8.8. Настройка Загрузчика

На вашей системе загрузчик скорее всего нормально настроен и полностью работоспособен, но не лишним будет знать и как настроить или установить (переустановить) загрузчик в случае, если он исчезнет из Главной Загрузочной Записи (Master Boot Record). Такое может случиться например после установки другой операционной системы, такой как Windows. Следующая информация также может помочь вам изменить конфигурацию загрузчика, если это необходимо.

8.8.1. Идентификация Дисков

При настройке загрузчик должен выполнить идентификацию различных жёстких дисков и их разделов. Linux использует “блочные” специальные файлы, располагаемые для этих целей в каталоге /dev/. Начиная с версии Debian Squeeze, схема присвоения имён специальным файлам, обозначающих жёсткие диски, стала единообразной в ядре Linux, и все жёсткие диски (IDE/PATA, SATA, SCSI, USB, IEEE 1394) сейчас представлены как файлы следующего вида /dev/sd*.
Каждый раздел представлен в следующем виде: "sdxX", где "x" - номер диска, а "X" - номер раздела: для примера, /dev/sda1 - это первый раздел (X=1) на первом диске (x=a), и /dev/sdb3 - это третий раздел (X=3) на следующем (втором) диске (x=b). Таким образом всегда можно определить, какой раздел какому диску соответствует.
Архитектура ПК (или “i386”, включая его младшего двоюродного брата “amd64”) уже давно подошла к ограничению своих возможностей при использовании формата таблицы разделов типа “MS-DOS”. В соответствии с этой таблицей было позволено разместить на одном жёстком диске только четыре “основных” раздела. Для обхода этого ограничения, один из них можно было создать как “расширенный” раздел, который мог содержать внутри себя дополнительные “вторичные” разделы. Они начинали нумероваться с 5-го раздела. Таким образом вторичный раздел мог быть /dev/sda5, следующий - /dev/sda6, и т.д.
Другой недостаток формата таблицы разделов типа “MS-DOS” касается ограничения на размер жёсткого диска - он не должен превышать 2 Терабайта. Это создаёт реальную проблему в настоящее время в связи с появлением в продаже жёстких дисков большого размера.
Новый формат таблицы разделов - GPT ослабляет ограничения на количество разделов на одном диске (он позволяет создать до 128 разделов при использовании стандартных настроек) и увеличивает разрешённый максимальный размер жёсткого диска (до 8 зебибайтов - по IEEE1541). Если вы планируете создать много физических разделов на одном диске, то вначале нужно убедиться в том, что таблица разделов в GPT-формате уже создана в момент первоначальной разбивки на разделы диска (то есть это будет ваше первое действие при разделении диска на разделы - сначала создается таблица GPT, а потом диск разбивается на разделы). Справочно: GPT - это GUID Partition Table - у каждого раздела диска есть GUID (Глобальный Уникальный Идентификатор). GPT разработан компанией Intel.
Не всегда можно быстро вспомнить, какой диск подсоединён к какому SATA контроллеру, или какой находится в третьей позиции в цепочке SCSI. Особенно это касается именования жёстких дисков, подключаемых "горячим способом", поскольку присваиваемые им имена могут изменяться от одной загрузки к другой. К счастью, udev создаёт, в дополнение к /dev/sd*, ещё и символические ссылки с фиксированными именами, которые вы можете использовать при явной идентификации жёсткого диска. Эти символические ссылки располагаются в /dev/disk/by-id. На машине с двумя жёсткими дисками, например, они могут быть найдены следующим образом:
mirexpress:/dev/disk/by-id# ls -l
total 0
lrwxrwxrwx 1 root root  9 23 jul. 08:58 ata-STM3500418AS_9VM3L3KP -> ../../sda
lrwxrwxrwx 1 root root 10 23 jul. 08:58 ata-STM3500418AS_9VM3L3KP-part1 -> ../../sda1
lrwxrwxrwx 1 root root 10 23 jul. 08:58 ata-STM3500418AS_9VM3L3KP-part2 -> ../../sda2
[...]
lrwxrwxrwx 1 root root  9 23 jul. 08:58 ata-WDC_WD5001AALS-00L3B2_WD-WCAT00241697 -> ../../sdb
lrwxrwxrwx 1 root root 10 23 jul. 08:58 ata-WDC_WD5001AALS-00L3B2_WD-WCAT00241697-part1 -> ../../sdb1
lrwxrwxrwx 1 root root 10 23 jul. 08:58 ata-WDC_WD5001AALS-00L3B2_WD-WCAT00241697-part2 -> ../../sdb2
[...]
lrwxrwxrwx 1 root root  9 23 jul. 08:58 scsi-SATA_STM3500418AS_9VM3L3KP -> ../../sda
lrwxrwxrwx 1 root root 10 23 jul. 08:58 scsi-SATA_STM3500418AS_9VM3L3KP-part1 -> ../../sda1
lrwxrwxrwx 1 root root 10 23 jul. 08:58 scsi-SATA_STM3500418AS_9VM3L3KP-part2 -> ../../sda2
[...]
lrwxrwxrwx 1 root root  9 23 jul. 08:58 scsi-SATA_WDC_WD5001AALS-_WD-WCAT00241697 -> ../../sdb
lrwxrwxrwx 1 root root 10 23 jul. 08:58 scsi-SATA_WDC_WD5001AALS-_WD-WCAT00241697-part1 -> ../../sdb1
lrwxrwxrwx 1 root root 10 23 jul. 08:58 scsi-SATA_WDC_WD5001AALS-_WD-WCAT00241697-part2 -> ../../sdb2
[...]
lrwxrwxrwx 1 root root  9 23 jul. 16:48 usb-LaCie_iamaKey_3ed00e26ccc11a-0:0 -> ../../sdc
lrwxrwxrwx 1 root root 10 23 jul. 16:48 usb-LaCie_iamaKey_3ed00e26ccc11a-0:0-part1 -> ../../sdc1
lrwxrwxrwx 1 root root 10 23 jul. 16:48 usb-LaCie_iamaKey_3ed00e26ccc11a-0:0-part2 -> ../../sdc2
[...]
lrwxrwxrwx 1 root root  9 23 jul. 08:58 wwn-0x5000c50015c4842f -> ../../sda
lrwxrwxrwx 1 root root 10 23 jul. 08:58 wwn-0x5000c50015c4842f-part1 -> ../../sda1
[...]
mirexpress:/dev/disk/by-id# 
Обратите внимание, что некоторые диски указаны несколько раз (поскольку они ведут себя одновременно как диски ATA и SCSI), но соответствующая информация в основном содержится в модели и серийных номерах дисков, по которым можно найти файл периферийного устройства. Хотя ссылки в /dev/disk/by-id/ создаются с использованием серийного номера устройства и физического пути, существуют более удобные ссылки, например: /dev/disk/by-label/ (на основе заданных меток), /dev/disk/by-uuid/ (на основе уникальных идентификаторов, которые могут измениться при переформатировании устройства с помощью команды mkfs.* или mkswap), /dev/disk/by-path/ (на основе кратчайшего физического пути) и /dev/disk/by-partlabel/ и /dev/disk/by-partuuid/ (только разделы с метками GPT и их уникальными идентификаторами). Если вы используете эти ссылки, например. в имени файла /etc/fstab всегда отдавайте предпочтение уникальным идентификаторам, а не меткам. Вы также можете получить и изменить эту информацию для каждого раздела или устройства с помощью команд lsblk и blkid.
Примеры файлов конфигурации, приведённые в следующих разделах, базируются на следующих исходных данных: одиночный SATA-диск, где на первом разделе установлена старая Windows, а второй раздел содержит Debian GNU/Linux.

8.8.2. Конфигурация GRUB 2

Более поздней версией загрузчика (по времени создания программы) является GRUB (GRand Unified Bootloader). Теперь нет необходимости вызывать загрузчик после каждого обновления ядра; GRUB знает как читать файловую систему и найти (место)положение ядра на диске самостоятельно. Для установки загрузчика в MBR на первом диске надо просто выполнить grub-install /dev/sda. Это приведет к перезаписи MBR, поэтому будьте осторожны, чтобы не перезаписать неправильное местоположение. Хотя можно установить GRUB в загрузочную запись раздела, помните, что обычно это - ошибка и выполнение grub-install /dev/sda1 это не то же самое, что и grub-install /dev/sda.
Файлом настройки GRUB 2 является /boot/grub/grub.cfg, но в Debian данный файл формируется на базе других. Будьте аккуратны и не изменяйте этот файл вручную, так как эти изменения будут потеряны при первом же выполнении update-grub (что может случиться в момент обновления различных пакетов на вашей системе). Общепринято вносить изменения в файл /boot/grub/grub.cfg другим путём: через редактирование переменных в файле /etc/default/grub (для примера - добавить параметр в командную строку ядра или изменить время, сколько секунд будет отображаться меню). Для добавления новой строки загрузки в меню, можно либо создать файл /boot/grub/custom.cfg, либо внести изменения в файл /etc/grub.d/50_custom. Для более сложных конфигураций, вы можете откорректировать другие файлы в каталоге /etc/grub.d, или добавить туда свои файлы. Расположенные здесь сценарии (скрипты) сформируют фрагменты конфигурации (для последующего внедрения их в глобальную настройку GRUB), которые в дальнейшем можно будет использовать с помощью внешних программ. Этими сценариями будет обновлён перечень ядер для загрузки GRUB: сценарий 10_linux - принимает во внимание все установленные ядра Linux (на используемом в настоящее время разделе жёсткого диска); 20_linux_xen - учитывает Xen виртуальные системы, и 30_os-prober просматривает ваш жёсткий диск на предмет присутствия других операционных систем (Windows, OS X, Hurd) (на других разделах этого жёсткого диска и на всех разделах других жёстких дисков, имеющихся в данный момент в системе).

8.8.3. Использование GRUB с EFI и Secure Boot

Использование GRUB для загрузки традиционной системы BIOS (устаревшей или UEFI-CSM) или системы UEFI — это совершенно другое дело. К счастью, пользователю не нужно знать различия, поскольку Debian предоставляет разные пакеты для каждой цели, и установщик автоматически решает, какой из них выбрать. Пакет grub-pc выбирается для устаревших систем, где GRUB установлен в MBR, тогда как для систем UEFI требуется grub-efi-arch, где GRUB устанавливается в системный раздел EFI (ESP). Для последнего требуется таблица разделов GPT, а также раздел EFI.
Чтобы переключить существующую систему (с поддержкой UEFI) из устаревшего режима загрузки в UEFI, необходимо не только переключить пакеты GRUB в системе, но также настроить таблицу разделов и создать раздел EFI (вероятно, включая изменение размера существующих разделов для создания необходимого свободного пространства). Поэтому это довольно сложный процесс, и мы не можем описать его здесь. К счастью, есть руководства от блоггеров, описывающие необходимые процедуры.
Если вы используете систему с включённой «Secure Boot» и установили shim-signed (см. врезку КУЛЬТУРА Защищенная загрузка и загрузчик), вам также необходимо установить grub-efi-arch-signed. Этот пакет не устанавливается автоматически, должна быть включена установка рекомендуемого пакета.