Новый загрузчик от Linux Foundation для работы с UEFI

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

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

В то время как GRUB непосредственно запускает операционную систему, Gummiboot определяет через механизмы UEFI системы, пригодные для загрузки, и передает им управлением UEFI вызовом BootServices->LoadImage(). Если на системе активен режим UEFI Secure Boot, то встроенный в него механизм проверяет подлинность компонентов, которые загружаются через BootServices->LoadImage(). Другими словами, происходит проверка цифровой подписи, ключа от производителя, которыми заверено ядро. Таким образом, первый вариант загрузчика Linux не подходит для систем с Gummiboot. Не подходит и предложенное одним из разработчиков ядра Linux Мэтью Гарретом решение этой проблемы – Shim-загрузчик, позволяющий загружать на системах с UEFI любые дистрибутивы Linux.

Выходом из создавшегося положения стало создание специального обработчика. Решение основано на перехвате процессов на этапе проверки цифровой подписи. Проверяя неизменность Gummiboot и ядра, обработчик использует не проверочные ключи, а хэши, подтвержденные пользователем. Чтобы воплотить идею в жизнь, пришлось задействовать несколько особенностей, примененных к загрузчику Shim 0.2. В этом проекте инженерам SUSE удалось сделать так, чтобы проверочные хэши, содержащие параметры компонентов, подлинность которых не оставляет сомнений, можно было сохранить в базе Machine Owner Keys (MOKs). Это означает, что разработчики дистрибутивов в качестве альтернативы цифровых подписей могут создать и сохранить в этой базе хэши компонентов, допустимых к загрузке. Делается это с помощью специально разработанной утилиты.

Следует отдельно отметить возможность работы загрузчиков на компьютерах, сертифицированных для Windows 8, для чего требуется заверение загрузчиков специальным ключом от Microsoft. Ранее этот процесс имел ряд проблем, которые на данный момент устранены. Заявка на формирование ключа для обновленного варианта загрузчика была отправлена 21 января. Процесс подписания должен занять около двух недель после отправки заявки. Когда он завершится, новый, заверенный Microsoft загрузчик будет свободно опубликован на сайте Linux Foundation.

Также, Мэтью Гаррет предложил некий обзор оборудования, на котором в данный момент невозможна загрузка Linux при активном режиме UEFI. Теряют работоспособность при загрузке Linux в таком режиме ноутбуки Samsung. Невозможно загрузить дистрибутив Fedora 18 с подписанным Microsoft загрузчиком на ноутбуках Toshiba. А на некоторых моделях ноутбуков Lenovo в процессе загрузки при активном UEFI происходит ошибка, следствием чего предоставляется возможным использовать только две ОС: Red Hat Enterprise Linux и Windows.