Содержание

1.7. Программа Начального Старта (ПНС).

Сейчас, пожалуй, я опишу тот аспект Эльбруса, который мне показался гораздо более удобно реализованным в сравнении с решениями для x86. Я расскажу о Программе Начального Старта (ПНС), которая на Эльбрусе используется для загрузки ОС и для загрузки установщика ОС с флешки. Это собственная разработка МЦСТ, она не основана на OpenBoot или LibreBoot.

ПНС у Эльбруса является одновременно и заменой BIOS, и, отчасти, заменой загрузчика grub x86 Linux. На обычных компьютерах с Intel и AMD сперва BIOS проводит первичную инициализацию комплектующих и периферийных устройств (клавиатуры и мыши, например), а затем передаёт загрузчику ACPI таблицы, описывающие оборудование вашего компьютера. Далее задача по загрузке ОС лежит уже на загрузчике ОС (grub в случае с Linux). У Эльбруса же часть функций grub берёт на себя ПНС.

Вспомогательное меню (help) в ПНС.

Скриншот 19. Вспомогательное меню (help) в ПНС.

Давайте попробуем разобрать меню ПНС. Чтобы его вызвать, нужно прервать автоматическую загрузку ОС кнопкой space (пробел), а далее нажать кнопку h. У ПНС есть своя временная память (NVRAM), в которой хранятся текущие настройки: с какого диска и с какого раздела диска осуществлять загрузку. ПНС умеет работать с файловой системой формата ext2 (представлена в 1993 году). Современные дистрибутивы Linux полагаются на файловую систему ext4 от 2008 года, поэтому напрямую ПНС не производит загрузку ОС. Но мы можем из ПНС загружать ext2 boot раздел с минимальным набором файлов для загрузки ОС с ext4 раздела (в т.ч. initrd).

Содержимое конфигурационного файла для загрузки (boot.conf).

Скриншот 20. Содержимое конфигурационного файла для загрузки (boot.conf).

Чтобы указать, какую систему нам следует загружать и откуда, нам надо в конфигурационном файле /boot/boot.conf просто прописать ID разделов ext4, с которых мы будем производить загрузку, а также указать минимальный набор утилит, необходимых для работы с этими ext4 разделами (это файлы image и initrd). Выше вы видите на скриншоте, как я в одном файле /boot/boot.conf прописал варианты загрузки сразу 2 дистрибутивов: Альт Линукс версии 9 и Альт Линукс версии 10.

UUID разделов всех накопителей, подключенных к компьютеру с Эльбрус 8С.

Скриншот 21. UUID разделов всех накопителей, подключенных к компьютеру с Эльбрус 8С.

UUID разделов всех накопителей, подключенных к компьютеру с Linux, мы можем узнать командой blkid.

Обычно установщик ОС делает всё это за вас, но иногда могут возникать ошибки или же вы хотите что-то вручную изменить. Если вам надо какие-либо изменения внести в grub (например, изменить порядок доступных для загрузки ОС в grub), это сделать несколько сложнее: недостаточно просто отредактировать тот или иной файл. Надо или воспользоваться утилитой Grub Customizer, или отредактировать вручную все файлы, а потом воспользоваться update-grub для обновления конфигурации загрузчика.

А у Эльбруса конфигурация не строится из информации, собранной при сканировании оборудования, а также из текстовых файлов. Нет, у Эльбруса текстовый файл (boot.conf) и есть вся конфигурация его ПНС. Тут указываются время ожидания для нажатия кнопки space (пробел) и система для загрузки по умолчанию (default=Alt10). Редактура простейшая.

Информация из ПНС о текущем разделе, с которого осуществляется загрузка.

Скриншот 22. Информация из ПНС о текущем разделе, с которого осуществляется загрузка.

Далее в ПНС мы можем сменить ext2 раздел, с которого будем осуществлять загрузку. У меня загрузка настроена с диска #4 и с раздела 0. Выводится эта информация нажатием кнопки u после space (пробела) в ПНС.

Информация из ПНС о всех подключенных накопителях и их разделах.

Скриншот 23. Информация из ПНС о всех подключенных накопителях и их разделах.

Чтобы посмотреть номера подключенных накопителей (дисков) и номера их разделов, надо нажать кнопку D в ПНС. Всё, далее вносим нужные нам изменения, нажав на C, и сохраняем изменения кнопкой M. Делов то: отредактировать /boot/boot.conf и поменять порядок загрузки в ПНС. Easy!

За сим тему с ПНС завершим. Далее поглядим на трансляцию x86 кода.