Esp linux что это

Обновлено: 06.07.2024

В операционной системе Linux и других системах семейства Unix после завершения загрузки ядра начинается инициализация Linux системы, сервисов и других компонентов. За это отвечает процесс инициализации, он запускается ядром сразу после завершения загрузки, имеет PID 1, и будет выполняться пока будет работать система.

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

Системы инициализации Linux

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

1. System V Init

System V или SysV - это довольно старая, но до сих пор ещё популярная система инициализации Linux и Unix подобных операционных систем. Она была основой для создания многих других систем инициализации, а также первой коммерческой системой инициализации разработанной для Unix в AT&T. Она была разработана еще в 1983 году.

Почти все дистрибутивы Linux изначально использовали SysV. Исключением была только Gentoo, в которой использовалась собственная система инициализации и Slackware, с инициализацией в стиле BSD.

Основные возможности SysV:

  • Написание файлов запуска служб на bash;
  • Последовательный запуск служб;
  • Сортировка порядка запуска с помощью номеров в именах файлов;
  • Команды для запуска, остановки и проверки состояния служб.

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

С момента ее разработки прошло много лет и из-за некоторых недостатков были разработаны другие системы для ее замены, они хоть и имели новые функции и были более эффективны, но они были по-прежнему совместимы с SysV.

2. OpenRC

OpenRC - это система инициализации Linux и Unix подобных операционных систем совместимая с Sys V Init и поддерживающая систему зависимостей во время запуска. Она приносит некоторые улучшения в SysV, и как и другие системы инициализации Linux, совместима с ней, но вы должны иметь в виду, что OpenRC не заменяет полностью файл /sbin/init. Эта система инициализации используется в Gentoo и дистрибутивах BSD.

Кроме стандартных возможностей SysV, здесь поддерживается также:

  • Поддержка зависимостей служб;
  • Поддержка параллельного запуска служб;
  • Поддерживает настройку в одном отдельном файле;
  • Работает как демон;

По сравнению с SysV тут появилось много новых возможностей, но все еще не все те, что нужны для оптимальной работы системы.

3. Systemd

Systemd - это новая система инициализации Linux. Она была введена по умолчанию в Fedora 15, а сейчас используется почти во всех популярных Linux дистрибутивах. Это не только инициализирующий процесс, поддерживающий огромное количество возможностей, но и набор инструментов для управления службами и этими возможностями из системы. Основная цель - иметь полный контроль над всеми процессами во время их запуска и на протяжении всего выполнения.

Systemd очень сильно отличается от всех существующих систем инициализации, тем как она работает с сервисами, и даже конфигурационными файлами сервисов. Совместимости со скриптами SysV нет, их нужно преобразовать в linux systemd unit файлы.

Вот ее основные особенности:

  • Понятный, простой и эффективный дизайн;
  • Параллельная загрузка служб на основе зависимостей;
  • Поддерживается завершение дополнительных процессов;
  • Поддерживается собственный журнал с помощью journald;
  • Поддерживается планирование заданий с помощью таймеров Systemd;
  • Поддерживается управление сетью с помощью networkd;
  • Для управления DNS используется systemd-resolved;
  • Хранение журналов в бинарных файлах;
  • Сохранение состояния сервисов linux systemd для возможного восстановления;
  • Улучшенная интеграция с Gnome;
  • Запуск сервисов по требованию;

4. Runinit

Runinit - это кроссплатформенная система инициализации, которая может работать в GNU Linux, Solaris, BSD и MacOS. Это отличная альтернатива для SysV с поддержкой мониторинга состояния служб.

Здесь есть некоторые интересные особенности, которых нет в других системах инициализации:

  • Полный контроль сервисов, каждый сервис привязывается к своему каталогу;
  • Надежное средство журналирования и ротации логов;
  • Быстрая система загрузки и выключения;
  • Портативность;
  • Легкое создание файлов конфигурации служб;
  • Небольшое количество кода системы инициализации.

5. Upstart

Upstart - это система инициализации на основе событий, разработанная в Canonical и призванная заменять SysV. Она может запускать системные службы, выполнять над ними различные задачи, инспектировать их во время выполнения, а также выполнять нужные действия в ответ на события в системе.

Это гибридная система инициализации, она использует как SysV скрипты запуска, так и файлы служб Systemd. Вот ее самые заметные особенности:

  • Изначально разработанная для Ubuntu, но может использоваться и в других дистрибутивах;
  • Запуск и остановка служб на основе событий;
  • Генерация событий во время запуска и остановки служб;
  • События могут быть отправлены обычными процессами;
  • Связь с процессом инициализации через DBus;
  • Пользователи могут запускать и останавливать свои процессы;
  • Перезапуск служб, которые неожиданно завершились;
  • Параллельная загрузка сервисов;
  • Автоматический перезапуск служб;

Большинство ее возможностей работают благодаря интеграции с системой инициализации Systemd. В последнее время всё меньше используются скрипты SysV init и всё больше применяются юнит файлы Systemd. Рано или поздно Systemd вытеснит и полностью заменит Upstart в Ubuntu.

Выводы

Как я уже говорил, система инициализации запускает и управляет всеми другими процессами в системе Linux. SysV до недавнего времени была основной системой инициализации в большинстве дистрибутивов Linux, но из-за некоторых своих недостатков для нее было разработано несколько замен, в том числе Systemd.

Какие системы инициализации Linux используются в вашем дистрибутиве? В списке обозначены не все существующие системы, какую из них нужно добавить в список? Напишите в комментариях!

The EFI system partition (also called ESP) is an OS independent partition that acts as the storage place for the EFI bootloaders, applications and drivers to be launched by the UEFI firmware. It is mandatory for UEFI boot.

Contents

Check for an existing partition

If you are installing Arch Linux on an UEFI-capable computer with an installed operating system, like Windows 10 for example, it is very likely that you already have an EFI system partition.

To find out the disk partition scheme and the system partition, use fdisk as root on the disk you want to boot from:

The command returns:

  • The disk's partition table: it indicates Disklabel type: gpt if the partition table is GPT or Disklabel type: dos if it is MBR.
  • The list of partitions on the disk: Look for the EFI system partition in the list, it is usually at least 100 MiB in size and has the type EFI System or EFI (FAT-12/16/32) . To confirm this is the ESP, mount it and check whether it contains a directory named EFI , if it does this is definitely the ESP.
Warning: When dual-booting, avoid reformatting the ESP, as it may contain files required to boot other operating systems.

Create the partition

The following two sections show how to create an EFI system partition (ESP).

Warning: The EFI system partition must be a physical partition in the main partition table of the disk, not under LVM or software RAID etc.

The partition size should provide adequate space for storing boot loaders and other files required for booting.

This article or section needs expansion.

To prevent interoperability issues with other operating systems[1][2] it is recommend to make it at least 260 MiB. For early and/or buggy UEFI implementations the size of at least 512 MiB might be needed.[3] If none of these are relevant issues, the partition size can be as small as 2 MiB, in which case in could house nothing more than a boot loader.

GPT partitioned disks

Choose one of the following methods to create an ESP for a GPT partitioned disk:

    : Create a partition with partition type EFI System . : Create a partition with partition type EF00 . : Create a partition with fat32 as the file system type and set the esp flag on it.

MBR partitioned disks

  • It is recommended to use GPT since some firmwares might not support UEFI/MBR booting due to it not being supported by Windows Setup.
  • bootctl does not support installing systemd-boot to an MBR partitioned disk; see systemd issue 1125.

EFI system partition on a Master Boot Record partition table is identified by the partition type ID EF .

Choose one of the following methods to create an ESP for a MBR partitioned disk:

    : Create a primary partition with partition type EFI (FAT-12/16/32) . : Create a primary partition with fat32 as the file system type and set the esp flag on it.

Format the partition

The UEFI specification mandates support for the FAT12, FAT16, and FAT32 file systems (see UEFI specification version 2.9, section 13.3.1.1), but any conformant vendor can optionally add support for additional file systems; for example, the firmware in Apple Macs supports the HFS+ file system.

To prevent potential issues with other operating systems and since the UEFI specification says that UEFI "encompasses the use of FAT32 for a system partition, and FAT12 or FAT16 for removable media"[4], it is recommended to use FAT32. Use the mkfs.fat(8) utility from dosfstools :

If you get the message WARNING: Not enough clusters for a 32 bit FAT! , reduce cluster size with mkfs.fat -s2 -F32 . or -s1 ; otherwise the partition may be unreadable by UEFI. See mkfs.fat(8) for supported cluster sizes.

For partitions smaller than 32 MiB using FAT32 may not be possible. In which case, format it to FAT16 or even FAT12. For example, a 2 MiB ESP will only be able to support FAT12:

Mount the partition

The kernels, initramfs files, and, in most cases, the processor's microcode, need to be accessible by the boot loader or UEFI itself to successfully boot the system. Thus if you want to keep the setup simple, your boot loader choice limits the available mount points for EFI system partition.

Typical mount points

  • /efi is a replacement[5] for the previously popular (and possibly still used by other Linux distributions) ESP mountpoint /boot/efi .
  • The /efi directory is not available by default, you will need to first create it with mkdir(1) before mounting the ESP to it.

Alternative mount points

Note: You may also need to copy the Microcode to the boot-entry location.

Furthermore, you will need to keep the files on the ESP up-to-date with later kernel updates. Failure to do so could result in an unbootable system. The following sections discuss several mechanisms for automating it.

Note: If ESP is not mounted to /boot , make sure to not rely on the systemd automount mechanism (including that of systemd-gpt-auto-generator(8) ). Always have it mounted manually prior to any system or kernel update, otherwise you may not be able to mount it after the update, locking you in the currently running kernel with no ability to update the copy of kernel on ESP.

Using bind mount

Instead of mounting the ESP itself to /boot , you can mount a directory of the ESP to /boot using a bind mount (see mount(8) ). This allows pacman to update the kernel directly while keeping the ESP organized to your liking.

Note: This requires a kernel and bootloader compatible with FAT32. This is not an issue for a regular Arch install, but could be problematic for other distributions (namely those that require symlinks in /boot/ ). See the forum post [6].

After verifying success, edit your Fstab to make the changes persistent:

Using systemd

Then enable and start efistub-update.path .

Tip: For Secure Boot with your own keys, you can set up the service to also sign the image using sbsigntools :

Using filesystem events

Filesystem events can be used to run a script syncing the EFISTUB Kernel after kernel updates. An example with incron follows.

Note: The first parameter /boot/initramfs-linux-fallback.img is the file to watch. The second parameter IN_CLOSE_WRITE is the action to watch for. The third parameter /usr/local/bin/efistub-update is the script to execute.

In order to use this method, enable the incrond.service .

Using mkinitcpio hook

Mkinitcpio can generate a hook that does not need a system level daemon to function. It spawns a background process which waits for the generation of vmlinuz , initramfs-linux.img , and initramfs-linux-fallback.img before copying the files.

Add efistub-update to the list of hooks in /etc/mkinitcpio.conf .

Using mkinitcpio preset

As the presets in /etc/mkinitcpio.d/ support shell scripting, the kernel and initramfs can be copied by just editing the presets.

Replacing the above mkinitcpio hook

Edit the file /etc/mkinitcpio.d/linux.preset :

To test that, just run:

Another example

Using pacman hook

A last option relies on the pacman hooks that are run at the end of the transaction.

The first file is a hook that monitors the relevant files, and it is run if they were modified in the former transaction.

The second file is the script itself. Create the file and make it executable:

Troubleshooting

ESP on software RAID1

It is possible to make the ESP part of a RAID1 array, but doing so brings the risk of data corruption, and further considerations need to be taken when creating the ESP. See [7] and [8] for details and UEFI booting and RAID1 for an in-depth guide with a solution.

The key part is to use --metadata 1.0 in order to keep the RAID metadata at the end of the partition, otherwise the firmware will not be able to access it:

GNU Parted - это программа для создания и редактирования таблиц разделов. GParted это GUI для неё.

Contents

Установка

Установите parted пакет. Для графического интерфейса, установить gparted пакет, графический интерфейс для parted.

Использование

Parted имеет два режима: коммандная строка и интерактивный. Parted всегда должен начинаться с:

где device это жёсткий диск, который нужно отредактировать (например /dev/sda ). Если не указать device аргумент, parted может предположить какое устройство вы хотите.

Режим командной строки

В режиме командной строки, он принимает одну или более команд. Например:

Примечание: Параметры (такие как --help ) можно указать только в командной строке.

Интерактивный режим

Интерактивный режим упрощает процесс разбиения и уменьшает ненужное повторение с помощью автоматического применения всех команд разбиения на указанное устройство.

Чтобы начать работу с устройством, выполните:

Чтобы увидеть список доступных команд, введите:

Когда закончите, или если хотите сделать таблицу разделов или схему для другого устройства, выйдите из parted с помощью:

Если вы не указываете параметр команде, Parted подскажет вам его. Например:

Округление

Поскольку многие системы разделов имеют сложные ограничения, Parted обычно будет делать что-то немного другое, чем вы просили. (Например, создание раздела начиная с 10.352Mb, не с 10.4Mb) Если рассчитанные значения слишком сильно отличаются, Parted попросит у вас подтверждения. Если вы точно знаете, что хотите, или точно видите, что делает Parted, это может помоч указать конечные точки разделов в секторах. (с помощью "s" суффикса) и указать "unit s" команду, чтобы конечные точки раздела отображались в секторах.

В parted-2.4, когда вы указываете начало и/или конец значения с использованием двоичных единиц IEC, например “MiB”, “GiB”, “TiB”, и т.д., parted обрабатывает эти значения как точные и равны тому же числу, указанному в байтах (то есть с суффиксом "B"), в том, что он не дает “полезный” диапозон. Сравните это с запросом на запуск раздела “4GB”, который может фактически разрешиться в некотором секторе до 500MB до или после этого момента. Таким образом, при создании раздела лучше указывать единицы байтов (“B”), сектора (“s”), или двоичные блоки IEC, такие как “MiB”, но не “MB”, “GB”, и т.д.

Разбиение

Создание новой таблицы разделов

Вам нужно (пере)создать таблицу разделов устройства, если она никогда ранее не разбивалась, или когда вы хотите изменить тип этих таблиц разделов. Пересоздание таблицы разделов устройства также будет полезно когда схема разделов требует реконструкции с нуля.

Откройте каждое устройство, таблица разделов которого должна быть (пере)создана с помощью:

Затем создайте новую GUID Partition Table, используйте следующую команду:

Чтобы создать новую Главную Загрузочную Запись/MS-DOS таблицу разделов, используйте:

Схемы разделов

Следующая команда будет использоваться для создания разделов:

  • part-type-or-part-label интерпретируется по-разному в зависимости от таблицы разделов:
    • MBR: параметр интерпретируется как part-type , который может быть primary , extended или logical .
    • GPT: параметр интерпретируется как part-label , который устанавливает PARTLABEL атрибут раздела. Метка раздела должна быть установлена всегда, так как mkpart не разрешает создавать разделы без метки.

    Примечание: Во многих туториалах в интернете используются команды которые начинаются с mkpart primary даже для GPT. Они не правильные, это установило бы "primary" как метку раздела. Совет: Большинство Linux native file systems сопоставимы с тем же кодом типа раздела MBR (0x83), так что совершенно безопасно, например, использовать ext2 для ext4- форматирования разделов.
    • start это начало раздела от начала устройства. Он состоит из числа, за которым следует unit, например 1MiB означает начало с 1 MiB.
    • end конец раздела от начала устройства (not из start значения). Он имеет тот же синтаксис, что и start , например 100% означает конец в конце устройства (использовать все оставшееся пространство).
    Совет: На диске с MBR таблицей разделов оставьте не менее 33 512-байт секторов (16.5 KiB) свободного нераспределенного пространства в конце диска, чтобы конвертировать между MBR и GPT. Важно: Важно, чтобы разделы не перекрывали друг друга: если вы не хотите оставлять неиспользуемое место в устройстве, убедитесь, что каждый раздел начинается там, где заканчивается предыдущий.

    Следующая команда будет использоваться для отметки раздела, содержащего /boot директорию как загрузочную:

    • partition - номер раздела, который должен быть отмечен (смотрите вывод команды print ).
    • esp это назначения для boot на GPT. [1]

    This article or section needs expansion.

    Reason: Explain the boot , legacy_boot и esp флаги и их различное использование в MBR и GPT. (Discuss in Talk:Parted (Русский))

    UEFI/GPT примеры

    В каждом случае специальный загрузочный EFI system partition (Русский) is required.

    При создании нового системного раздела EFI используйте следующие команды (рекомендуемый размер - не менее 260 MiB):

    Оставшаяся схема разделов полностью зависит от вас. Для другого раздела, использующего 100% оставшегося пространства

    Для / (20 GiB) и /home (все оставшееся пространство) разделов:

    Для / (20 GiB), swap (4 GiB), и /home (все оставшееся пространство) разделов:

    BIOS/MBR примеры

    Для минимального одного основного раздела, использующего все доступное дисковое пространство, будет использоваться следующая команда:

    В следующем случае, 20 GiB / будет создан раздел, за которым последует /home раздел, используя все оставшееся пространство:

    В последнем примере, /boot (100 MiB), / (20 GiB), swap (4 GiB), and /home (все оставшееся пространство) разделы будут созданы:

    Изменения размера разделов

    Важно: ext2/3/4 разделы, размер которых изменяется, должны быть размонтированы и не использоваться. Трудно и опасно пытаться редактировать корневую файловую систему в работающей ОС; вместо этого используйте live media/rescue систему.

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

    Увеличение размера разделов

    Чтобы увеличить размер (в интерактивном режиме parted):

    Где number - номер раздела, который вы увеличиваете, и end - новый конец раздела (который должен быть больше старого).

    Затем чтобы увеличить (ext2/3/4) файловую систему на разделах:

    Или увеличить Btrfs файловую систему:

    Где sdaX обозначает раздел, который вы увеличиваете, и [size] - новый размер раздела. Примечание; [size] опциональный, по умолчанию: заполнить оставшееся место на разделе.

    Сжатие разделов

    Чтобы сжать ext2/3/4 файловую систему на разделе:

    Примечание: В отличие от parted, resize2fs(8) использует K, M, G и T что обозначает KiB, MiB, GiB и TiB. Документация e2fsprogs неверно ссылается на кибибайты, мебибайты, гибибайты и тебибайт как "степень двойки килобайты, мегабайты, гигабайты, терабайты".

    Чтобы сжать Btrfs файловую систему:

    Где sdaX обозначает раздел, который вы сжимаете, и size - новый размер раздела.

    Затем сожмите раздел (в интерактивном режиме parted):

    Где number - номер раздела, который вы сжимаете, и end - новый конец раздела (который должен быть меньше старого конца).

    Когда закончите, используйте resizepart команду из util-linux сообщающая ядру о новом размере:

    Где device - устройство, на котором находиться раздел, number - номер раздела и size - новый размер раздела, в 512-байт секторах.

    Предупреждения

    Parted will always warn you before doing something that is potentially dangerous, unless the command is one of those that is inherently dangerous (e.g. rm, mklabel and mkpart).

    Выравнивание

    При создании раздела, parted может предупредить о неправильном выравнивании раздела, но не поможет с правильным выравнивание. Например:

    Предупреждение означает, что начало раздела не выровнено. Введите "Ignore" что проигнорировать, вывести таблицу разделов по секторам, чтобы увидеть, где она начинается, и удалить/пересоздать раздел с начала сектора округляя до увеличения степени до 2, пока предупреждение не прекратится. В качестве одного из примеров, на флешке с секторами 512B, Parted найдёт разделы начинающиеся на секторах которые кратны 2048, что соответствует выравниванию в 1 MiB.

    Если вы хотите parted может попытаться рассчитать для вас правильное выравнивание, укажите начальную позицию как 0% вместо некоторого конкретного значения. Чтобы сделать один большой ext4 раздел, ваша команда должна выглядить так:

    Советы и приемы

    Dual boot с Windows XP

    Если вы имеете Windows XP разделы которые вы хотите переместить с диска на диск, а также ваш загрузочный раздел, вы можете легко сделать это с помощью GParted и оставаться на Windows счастливым, просто удалив следующий ключ реестра ДО перемещения раздела:

    Ссылка на источник здесь.

    Проверка выравнивания

    На существующем размеченном диске, вы можите использовать parted чтобы проверить выравнивание разделов на диске. Например, проверить выравнивание раздела 1 на /dev/sda :

    Устранение проблем

    Раздел FAT32 после изменения размера, не распознается в Windows

    Для старых сборок, однострочный обходной путь был упомянут в отчете об ошибке, но в отчете также указывалось, что он не работал должным образом для всех. [5][6]

    Следует отметить, что этот вопрос во многом не коснулся gparted, поскольку проект включил патч в свою сборку от gparted версии 0.26.0-1 (выпущенной в 2016-04-29).[7]

    gparted на Wayland вызывает ошибку "cannot open display: :0"

    Данная проблема возникает потому, что xwayland получает отказ в доступе от gparted запущенном от имени root . разработчики gparted реализовали [8] небольшой обходной путь, который временно добавляет root в список пользователей, которым разрешёно подключаться xwayland пока приложение запущено.

    Итак, вы указали в настройках BIOS загрузку с CD/DVD или с USB, и при загрузке с Ubuntu LiveCD получили вместо фиолетового экрана с пиктограммами клавиатуры и человечка вот такой экран:

    Загрузка с UEFI

    Ничего страшного, так бывает 1) . В этом случае нужно учесть ряд моментов, о которых и будет рассказано в этом разделе. Кстати, наличие фиолетового экрана при загрузке совсем не означает, что у вас нет UEFI, просто с чёрным экраном все особенности UEFI проявляются наиболее ярко. Так что, в любом случае прочитать этот раздел будет очень полезно. А пока смело выбирайте верхнюю строчку «Try Ubuntu without installing» и нажимайте Enter . После непродолжительного ожидания вы попадёте на рабочий стол Ubuntu, и, пока ждёте загрузки Ubuntu, поговорим об UEFI.

    Введение в UEFI и GPT

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

    Что происходит при включении компьютера? Прежде всего компьютер должен корректно инициализировать сам себя, то есть своё собственное оборудование, и передать управление загрузчику операционной системы. Занимается этим процессом «Extensible Firmware Interface» (EFI) (Расширяемый интерфейс прошивки) — интерфейс между операционной системой и микропрограммами, управляющими низкоуровневыми функциями оборудования. Раньше за это отвечал BIOS, а теперь EFI, который после очередного изменения стандарта стал называться «Unified Extensible Firmware Interface» (UEFI) — это название и будет использоваться в дальнейшем. Надо заметить, что UEFI, как более современный интерфейс, полностью поддерживает все функции BIOS, обратное, к сожалению, не верно. В настройках режим поддержки BIOS чаще всего называется «Legacy» («наследуемый» или «традиционный» по-английски) или просто «UEFI Disabled» («UEFI отключён», как не трудно догадаться). Сейчас, однако, нас интересует включённый режим UEFI.

    Итак, при включении компьютера UEFI начинает инициализировать оборудование и находит какое-то блочное устройство, скажем, жёсткий диск. Вы, наверное, знаете, что целиком жёсткий диск практически никогда не используется — диск обязательно разбивается на разделы, в том числе и для удобства в обращении. А вот разбить его на разделы можно, на сегодняшний день, двумя стандартными способами: с помощью MBR или GPT. В чём их отличие?

    MBR («Master Boot Record» — основная загрузочная запись) использует 32-битные идентификаторы для разделов 2) , которые размещаются в очень маленьком кусочке пространства (64 байта) в самом начале диска (в конце первого сектора диска). Из-за такого маленького объёма поддерживаются только четыре первичных раздела (подробнее об этом можно узнать в этой статье). Поскольку используется 32-битная адресация, то каждый раздел может быть не более 2,2 ТБ. Кроме того, загрузочная запись не имеет никакой запасной MBR, так что если приложение перезапишет основную загрузочную запись, то вся информация о разделах будет потеряна.

    GPT («GUID Partition table» — таблица разделов GUID) использует уже 64-битные идентификаторы для разделов, поэтому кусочек пространства, в котором сохраняется информация о разделах, уже больше чем 512 байт, кроме того, не существует ограничения на количество разделов. Заметьте, ограничение на размер раздела в этом случае почти 9,4 ЗБ (да-да, вы всё прочитали правильно — зеттабайт, единичка с двадцатью одним нулём!). А в конце диска имеется копия GPT, которая может использоваться для восстановления повреждённой основной таблицы разделов в начале диска 3) .

    Так вот, когда связь между оборудованием и операционной системой осуществляется через включённый режим UEFI (а не Legacy BIOS), использование GPT для разбивки разделов является практически обязательным, иначе наверняка возникнут проблемы совместимости с MBR 4) .

    Ну вот, с блочными устройствами, кажется, разобрались, UEFI всё корректно инициализировал, и теперь он должен найти загрузчик операционной системы и передать управление ему. В первом приближении это выглядит так: поскольку UEFI преемник BIOS, то он выполняет поиск загрузчика в строгом соответствии с установленными правилами. Если он находит загрузчик операционной системы, который не поддерживает UEFI, то активируется режим эмуляции BIOS (именно так, даже если Legacy BIOS явно не указан). И начинается всё сначала, с той лишь разницей, что теперь уже эмулированный BIOS проверяет состояние оборудования и загружает микропрограммное обеспечение — простые драйверы для отдельных аппаратных компонентов. После этого эмулированный BIOS опять выполняет поиск загрузчика ОС и активирует его. Тот, в свою очередь, загружает операционную систему или выводит на экран список доступных ОС 5) .

    А в случае UEFI всё происходит несколько иначе. Дело в том, что UEFI имеет собственный загрузчик операционных систем с интегрированными менеджерами запуска установленных ОС. С этой целью для него — для загрузчика UEFI — на диске должен быть создан небольшой раздел (100–250 МБ), который называется «Extensible Firmware Interface System Partition» (системный раздел расширяемого интерфейса прошивки, ESP). Кроме указанного размера, раздел должен быть отформатирован в файловой системе FAT32 6) и быть загрузочным. На нем находятся драйверы аппаратных компонентов, к которым может получать доступ запущенная операционная система. И в этом случае загрузка происходит прямо с этого раздела, что намного быстрее.

    Итак, подведём некоторые итоги: чтобы по полной задействовать функционал UEFI, диск должен быть с GPT, и на нём должен быть специальный раздел ESP 7) . Обратите внимание на фразу «чтобы по полной задействовать функционал» — существует масса способов установки Ubuntu на систему с «урезанным» в той или иной степени UEFI, и все они зависят от наличия или отсутствия предустановленных операционных систем на вашем компьютере. Например, вы хотите оставить предустановленную Windows. Какую Windows — «семёрку» или новомодную 8.1? А может быть у вас, не дай бог, установлена «ператская винда», активированная с MBR, и не желающая запускаться с GPT, и вы, тем не менее, хотите дальше её изучать? Кроме того, очень много зависит от разрядности операционных систем — без плясок с бубном невозможно 32-битную систему заставить работать с UEFI. И таких примеров достаточно много. Поэтому в этом разделе пойдёт разговор только про установку Ubuntu в режиме «максимально полного» задействования возможностей UEFI, хотя даже после прочтения этого введения, вы уже сможете представлять устройство своего компьютера и, при желании, реализовать свой собственный сценарий установки.

    Ну что, приступим?

    Разметка диска

    Прежде чем продолжить, обязательно ознакомьтесь с правилами разметки диска и устройством файловой системы в Ubuntu, иначе некоторые вещи вам могут быть не совсем понятны.

    Итак, вы загрузились в Ubuntu с LiveCD в режиме UEFI. Открывайте «Редактор разделов GParted» 8) , а пока поговорим об очень важных особенностях, на которые нужно обратить внимание.

    Самое главное, у вас должен быть план ваших действий, поверьте — перечень шагов и порядок их выполнения достаточно обширен, так что желательно записать где-нибудь на бумажке основные пункты плана и периодически с ними сверяться. Итак, что же вам известно. Для нормальной установки Ubuntu в режиме UEFI жёсткий диск вашего компьютера должен быть правильно подготовлен, а именно:

    на диске должны быть стандартные разделы: системный, подкачки, а также раздел для домашнего каталога.

    Кроме того, нужно определиться с операционными системами на вашем компьютере — от того, будет ли Ubuntu единственной системой, или рядом с ней будут находиться другие поддерживающие режим UEFI системы, зависит план разбивки и установки.

    Начнём с ответа на второй вопрос: о наличии других операционных систем. Если на вашем компьютере уже установлены операционные системы, поддерживающие загрузку в режиме UEFI (например, Windows 8), и вы не намерены пока от них отказываться, то первые два пункта плана уже выполнены: раздел ESP наверняка уже есть, ну и диск, разумеется, с GPT. Давайте проверим, что это действительно так.

    Предположим, после запуска редактора разделов GParted у вас откроется вот такое окно 9) :

    Окно GParted

    Какую информацию можно получить при внимательном изучении этого окна? Во-первых, посмотрите на столбец «File System» («Файловая система»): все разделы отформатированы в ntfs , кроме одного раздела с файловой системой fat32 — это, по всей видимости, и есть раздел ESP. На диске уже установлена Windows 8 (раздел /dev/sda4 — в Windows это диск C: ) — об этом говорит метка диска (столбец «Label»). Во-вторых, на жёстком диске есть ряд служебных разделов Windows — об этом можно узнать не только по меткам ( WINRE_DRV и LRS_ESP ), но и по флагам (столбец «Flags») — все эти разделы скрыты, поскольку у них установлен флаг hidden , что намекает на специальный характер информации на них. И, наконец, присмотритесь к разделу /dev/sda5 — вы случайно не потеряли диск D: в Windows? Вот он, в целости и сохранности.

    Итак, первые два пункта плана уже выполнены, а реализация третьего пункта: создание разделов для Ubuntu — достаточно подробно описана в примере использования GParted для переразбивки жёсткого диска. Напомним вкратце, что от диска с данными (в примере это /dev/sda5, или диск D: в Windows) нужно «отрезать» достаточное пространство и на его месте создать три раздела: подкачки, системный и раздел для домашнего каталога. Учтите также, что ваш диск — GPT, так что расширенного раздела, содержащего логические диски, у него нет, следовательно, при создании разделов выбирайте Primary partition («Основной раздел»).

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

    В итоге должно получиться что-то похожее на эту картинку:

    Результат работы GParted

    Здесь показаны дополнительно созданные разделы:

    /dev/sda6 — системный раздел для вашей будущей Ubuntu, в примере его размер 15 ГБ; /dev/sda8 — раздел для пользовательских данных или, другими словами, раздел для домашнего каталога /home — в примере под него выделено всё оставшееся свободное пространство. /dev/sda6 — системный раздел (раздел для «корня» системы) /dev/sda8 — раздел для пользовательских данных.

    Эта информация очень пригодится в дальнейшем при установке Ubuntu, поскольку из-за большого количества разделов можно очень легко запутаться и назначить не той «цифре» требуемую точку монтирования.

    А что делать, если ОН 11) уже наступил вы решили отказаться от использования других операционных систем и хотите установить Ubuntu единственной системой?

    Нет ничего проще, хотя и придётся постараться. Прежде всего хочется предупредить, что после этого вся, абсолютно вся информация на вашем жёстком диске будет утрачена 12) . Так что позаботьтесь о резервном копировании всех важных для вас файлов. Есть, конечно, способ избежать бэкапа, но только если общий объём сохраняемых файлов немного меньше половины общего дискового пространства. Догадаетесь как 13) ?

    Тем не менее, продолжаем работать с редактором GParted. Ваша задача — удалить все разделы и на свободном месте создать нужную для Ubuntu конфигурацию диска. Для этого можно щёлкнуть правой кнопкой мыши на каждом из разделов и выбрать из выпадающего меню пункт «Delete». Но лучше поступить по-другому: найдите на панели меню редактора GParted пункт «Device» (Устройство) и выберите в меню «Create Partition Table…» (Создать таблицу разделов…). Появится предупреждение:

    WARNING: This will ERASE ALL DATA on the ENTIRE DISK /dev/sda

    (ВНИМАНИЕ: это приведёт к УДАЛЕНИЮ ВСЕХ ДАННЫХ на ВСЁМ ДИСКЕ /dev/sda)

    Не переживайте, вы же позаботились о резервных копиях? Посмотрите чуть ниже — на надпись «Advanced» (Подробности). Щёлкните мышью на треугольник слева и в меню выберите gpt :

    Выбор GPT

    Всё дисковое пространство станет серым. Щёлкните на нём правой кнопкой мыши и начните создавать необходимые разделы, выбрав «New» (Новый) из выпадающего меню. Первый из новых разделов — специальный раздел ESP, требуемый, как вы помните, для работы UEFI. Поскольку он форматирован в неродной для Linux файловой системе, и кроме того, должен быть загрузочным, то расположить его надо в начале дискового пространства. Определите ему размер в поле «New size (MiB)» (Новый размер в МиБ 14) ) 100 МБ 15) , а файловую систему — fat32 :

    Создание раздела ESP

    Таким же образом создайте разделы под будущие: системный (15 ГБ с файловой системой ext4 ), раздел подкачки (4 ГБ с linux-swap ) и для домашнего каталога (всё оставшееся пространство в ext4 ). Как вы помните, GParted применяет изменения не сразу, а просто ставит их в очередь на выполнение. Поэтому нажмите на зелёную галочку «Apply All Operations» (Выполнить все операции):

    Применить изменения

    Да, совсем не обязательно управлять флагами загрузки на этом этапе — установщик Ubuntu выполнит всё так, как надо. А теперь внимательно читайте про то, как устанавливать Ubuntu, и, как будете готовы, продолжим.

    Установка Ubuntu

    После такой подготовительной работы установка Ubuntu не вызовет трудностей, особенно если вы внимательно прочитали правила установки. Просто достаньте бумажку с перечнем разделов и обратите внимание, что для специального раздела EFI (/dev/sda2 из примера о совместной установки Ubuntu и Windows) нужно точно назначить свойство загрузочного раздела EFI, а не резервной загрузочной области BIOS:

    Назначение раздела EFI

    Если вы этого не сделаете, то установщик покажет вам такое уведомление:

    Ошибка при установке

    Исправьте ошибку, а если не получится, выйдите из установщика, запустите редактор GParted и проверьте, что всё, рассказанное выше, выполнено.

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

    Возможные проблемы

    Иногда бывает так, что после установки одна из операционных систем, предустановленных на компьютере, не запускается. Что ж, не вдаваясь в достаточно сложные способы приведения всего в норму, отметим, что есть комплексное решение возможных проблем с загрузкой. Имя этому решению — Boot-repair 16) .

    Придерживайтесь золотого правила: «Никогда не чинить то, что ещё не сломалось»!

    Загрузитесь в Ubuntu. Не имеет значения как вы это сделаете — Boot-Repair работает как с LiveCD, так и на установленной системе. Разумеется, если вы испытываете трудности с загрузкой только что поставленной Ubuntu, то первый способ становится единственным 17) . Для начала Boot-Repair нужно поставить на ваш компьютер, делается это с помощью терминала. Нажмите Ctrl + Alt + T и в появившемся окне наберите:

    FIXME

    : Изменить команду ближе к выходу релиза.

    Сейчас вы, конечно, скажете: «Вы что там, совсем? Столько букв — я же ничего не понимаю и обязательно ошибусь!» Разумеется, никто представленную команду 18) по буквам в терминал не вводит — просто выделите её полностью и щёлкните средней кнопкой мыши в окне терминала, или перетащите выделенный текст туда же. Нажмите Enter . Если вы находитесь в уже установленной Ubuntu, появится предложение ввести ваш пароль. Обратите внимание, при вводе пароля никакие символы не отображаются: ни точки, ни звёздочки — вообще ничего, — наверное, не нужно объяснять почему так сделано. После ввода пароля опять нажмите Enter .

    Загрузите открытый ключ репозитория с программой из хранилища доверенных ключей 19) :

    Обновите список приложений командой:

    Установите и запустите Boot-Repair :

    После непродолжительного сканирования появится основное окно Boot-Repair :

    Стартовое окно Boot-Repair

    FIXME

    : В процессе написания.

    Читайте также: