IT News: Digital Camera, OS, Laptop, Smartphone, Smart TV, Sound...

The Author's Project by Valeri N.Kravchuk
Сайт проверен Dr.Web
Меню сайта
  • Главная страница
  • Информация о сайте
  • Дневник
  • Каталог файлов
  • Обратная связь
  • Каталог сайтов
  • FAQ
  • Доска объявлений
  • Форум
  • Фотоальбом
  • Категории раздела
    Автомобильные гаджеты, ремонт... [220]
    Безопасность IT [484]
    Блоки питания, Power Banks, зарядки... [490]
    Видеорегистраторы [220]
    Гаджеты для спорта и здоровья... [190]
    Гаджеты, аксессуары... [625]
    Измерительная техника, инструменты [449]
    Накопители данных [226]
    Нетбуки, Ноутбуки, Ультрабуки [680]
    Мультиварки, блендеры и не только... [158]
    Планшеты [758]
    Радар-детекторы [26]
    Роботы-пылесосы [37]
    Своими руками [357]
    Сети, сетевые технологии, оборудование... [269]
    Смартфоны [4966]
    Фотокамеры, объективы, искусство фотографии.. [543]
    Умный дом [47]
    Электронные книги [96]
    CB, LPD, PMR- связь... [171]
    DECT, IP-телефоны [18]
    Drones, boats, cars... [108]
    electric cars [35]
    GPS-навигаторы, трекеры... [51]
    Linux и не только [4380]
    mini computers и не только... [409]
    News IT, Это интересно, ликбез... [1113]
    Smart TV, UltraHD, приставки, проекторы... [414]
    Smart Watch [263]
    Sound: наушники, плееры, усилители... [616]
    Windows 10... [298]
    Windows 11 [28]
    Погода

  • Метеорадар БРЕСТ
  • Погода в Бресте от www.yr.no

    Яндекс.Погода БРЕСТ

  • Интересные ссылки

    COMPIZOMANIA

    Наш опрос
    Оцените мой сайт
    Всего ответов: 1340
    Статистика
    Анализ веб сайтов

    Яндекс.Метрика

    Рейтинг@Mail.ru Яндекс цитирования

    Russian America Top. Рейтинг ресурсов Русской Америки.

    eXTReMe Tracker

    Правильный CSS!


    Онлайн всего: 1
    Гостей: 1
    Пользователей: 0
    Locations of visitors to this page
    Форма входа
    Главная » 2013 » Октябрь » 9 » Загрузка GNU/Linux без стороннего загрузчика
    16:51
    Загрузка GNU/Linux без стороннего загрузчика

    Загрузка GNU/Linux без стороннего загрузчика


    В данной статье я приведу пример, как можно отказаться от использования стороннего загрузчика, будь то Grub или Lilo, если ваш компьютер поддерживает современный стандарт UEFI, пришедший на замену BIOS. Интересной особенностью будет то, что все работы проводим на уже установленной и рабочей системе.
    По уровню сложности данная статья ориентирована на опытных пользователей Linux, т.к. некоторых моментов я касаюсь поверхностно, полагаясь на очевидность, чтобы не уходить от основной освещаемой темы.

    Введение

    Расскажу немного истории — являюсь пользователем Gentoo Linux уже более 5 лет, причем как основной и единственной ОС на всех используемых мною ноутбуках: Lenovo (от X61s до X1) и Apple MacBook Pro. Всегда при новой инсталляции использовал классический метод установки Gentoo на чистый жесткий диск, с использованием chroot. Таблицу партиций и загрузку системы настраивал дедовским способом, как завещал Handbook, на основе традиционного MBR.

    Настройка ядра

    Необходимо обеспечить поддержку загрузки с использованием UEFI в нашем ядре:
    • CONFIG_EFI=y — включение поддержки стандарта UEFI
    • CONFIG_EFI_STUB=y — включение возможности загружать ядро прошивкой UEFI, то что нам и надо
    • CONFIG_EFI_VARS=y — включение интерфейса управления UEFI через переменные /sys/firmware/efi/vars/*, понадобится чтобы указать где искать ядро для загрузки, используется утилитой efibootmgr


    При переходе на UEFI необходимо учесть то, что он не принимает параметры загрузки ядра, поэтому добавим все наши параметры в само ядро:
    CONFIG_CMDLINE="root=/dev/sda2 rootfstype=ext4 quiet splash=silent,fadein,theme:natural_gentoo console=tty1"
    

    В примере используемые мною параметры, если говорить о необходимом минимуме, то хватит и указания где находится корневая файловая система:
    CONFIG_CMDLINE="root=/dev/sda2"
    


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

    Тестирование

    Для проверки работоспособности нашего ядра нужно попробовать загрузить ОС через UEFI, но чтобы не рисковать загрузочным разделом нашей рабочей системы, мы будем использовать usb-флешку, предварительно удалив с нее все разделы.

    Подготовка

    Для загрузки средствами UEFI нам потребуется особый раздел, который называется EFI Secure Partition или сокращенно ESP, на котором будет лежать всего один файл — это подготовленное нами ранее ядро с поддержкой UEFI. По своей сути это обычный GPT раздел с определенным типом и файловой системой FAT32.

    Создание ESP-партиции

    Для создание ESP-раздела нам потребуется пакет gptfdisk, информация из пакетной базы Gentoo:
    * sys-apps/gptfdisk
     Available versions: 0.8.4 ~0.8.5 {{kernel_linux}}
     Homepage: http://www.rodsbooks.com/gdisk/
     Description: gdisk - GPT partition table manipulator for Linux
    


    Установить его можно выполнив команду с правами root'а:
    emerge sys-apps/gptfdisk
    

    Работа с данным инструментом почти ничем не отличается от всем знакомого fdisk. Допустим что наша usb-флешка определилась в системе как /dev/sdb и мы, конечно же, имеем права root'а. Выполняем следующие шаги:
    # gdisk /dev/sdb
    
    Command (? for help): n
    Partition number (2-128, default 1): 1
    First sector (34-3790814, default = 2048) or {+-}size{KMGTP}: 2048
    Last sector (2049-3790814, default = 3790814) or {+-}size{KMGTP}: +100M
    Current type is 'Linux filesystem'
    Hex code or GUID (L to show codes, Enter = 8300): EF00
    Changed type of partition to 'EFI System'
    
    Command (? for help): w
    
    Final checks complete. About to write GPT data. THIS WILL OVERWRITE EXISTING
    PARTITIONS!!
    
    Do you want to proceed? (Y/N): y
    OK; writing new GUID partition table (GPT) to /dev/sdb.
    The operation has completed successfully.
    


    В результате мы создали новую партицию sdb1 с типом 'EFI System' и размером 100 Мб, для тестирования этого вполне хватит. Теперь, как и с любой новой партицией, нам надо создать на ней файловую систему, в нашем случае это FAT32. Сделать очень просто — достаточно выполнить всего одну команду с правами root'а:
    # mkfs.vfat -F 32 /dev/sdb1
    

    После выполнения команды, файловая система будет создана.

    Копирование ядра

    Монтируем новую партицию sdb1 в любой каталог и копируем туда наше подготовленное ядро, с включенным CONFIG_EFI_STUB и другими параметрами описанными выше (все команды выполнять с правами root'а):
    # mount /dev/sdb1 /mnt/
    # cp /usr/src/linux/arch/x86_64/boot/bzImage /mnt/bzImage.efi
    # umount /dev/sdb1
    


    Настройка BIOS

    После подготовки тестовой usb-флешки необходимо перезагрузить компьютер и зайти в настройки BIOS и в разделе отвечающем за процесс загрузки выбрать использование UEFI. После чего загрузка системы должна пройти без каких-либо проблем, если ядро и флешка были подготовлены без ошибок. Тестирование можно считать пройденным и оставить систему загруженную с флешки.

    Перенастройка загрузки на рабочей системе


    По результатам пройденного выше теста, мы проверили что наше ядро корректно работает с прошивкой UEFI в нашем компьютере, поэтому приступим к миграции нашей рабочей системы на использование нового типа загрузки. Основная проблема в том что, система расположена на разделе созданном традиционной схемой разбиением на основе MBR (Master Boot Record), а для UEFI необходим GPT-раздел. Решается это проблема знакомым нам уже инструментом — gdisk из пакета sys-apps/gptfdisk. При первом запуске gdisk для нашего жесткого диска, пусть это будет /dev/sda, он предложит нам конвертировать таблицы разделов в формат GTP, предупредив о возможной потери данных. После чего проделаем все то что делали при создании usb-флешки, но с небольшими изменениями.
    С учетом вышесказанного, план работ будет выглядеть следующим образом:
    1. отключить загрузочный раздел
    2. сделать резервную копию раздела
    3. выполнить конвертацию MBR -> GPT
    4. создать новую файловую систему на загрузочном разделе
    5. подключить к точке монтирования и скопировать ядро
    6. настроить прошивку UEFI
    7. перезагрузить систему и проверить результат

    Далее остановимся на каждом пункте более подробно.

    Отключить загрузочный раздел

    В большинстве случаев загрузочный раздел подключен в каталог /boot и имеет первый номер среди партиций блочного устройства, т.е. /dev/sda1, с учетом того, что sda это наш системный диск. В моей системе все именно так, поэтому выполняем следующую команду, с правами root'а:
    # umount /boot
    

    Если данный каталог не используется какими либо приложениями, то он молча и без проблем отключиться от корня и мы сможем выполнить резервное копирование всей партиции /dev/sda1.

    Резервное копирование загрузочного раздела

    На данном этапе нам необходимо сделать резервную копию всего раздела, чтобы иметь возможность быстро откатить все изменения. В идеальном случае можно выполнить бекап всей системы, если у вас есть под рукой необходимые инструменты. Копирование партиции выполняется следующим образом, опять же под root'ом:
    # dd if=/dev/sda1 of=/root/sda1_backup.img
    

    Проверим пригодность нашей резервной копии:
    # mount -o loop /root/sda1_backup.img /mnt
    # ls -al /mnt && umount /mnt
    

    После выполнения команды ls мы должны увидеть содержимое каталога аналогичное тому, что было в рабочей системе до отключения точки монтирования /boot.

    Выполнить конвертацию таблицы MBR -> GPT

    Переходим к работе с утилитой gdisk. Весь процесс конвертации прост и требует минимум участия с нашей стороны. От нас необходимо запустить команду gdisk, сменить тип партиции sda1 на EF00 (EFI System) и сохранить изменения, т.е. процедура полностью аналогична той что мы делали с usb-флешкой, за исключением того что партиции уже созданы. После сохранения настроек, наша таблица будет переведена в новый формат, используемый GPT и пригодный для работы с UEFI.

    Создать новую файловую систему на новом загрузочном GPT-разделе

    По аналогии с процедурой создания usb-флешки, нам надо подготовить файловую систему FAT32 на нашем загрузочном разделе, теперь уже типа 'EFI System', выполнив команду:
    # mkfs.vfat -F 32 /dev/sda1
    

    После выполнения команды, файловая система будет создана.

    Подключить sda1 и скопировать ядро

    На данном этапе нам необходимо скопировать подготовленное ядро на новый раздел. Для этого выполните:
    # mount /dev/sda1 /boot
    # cp /usr/src/linux/arch/x86_64/boot/bzImage /boot/bzImage.efi
    # umount mount /dev/sda1
    

    Подготовка загрузочного раздела на этом закончена.

    Настроить прошивку UEFI

    Для того чтобы UEFI мог передать управление нашему ядру, необходимо указать где оно находится. Настройкой параметров прошивки UEFi занимается инструмент под названием efibootmgr:
    * sys-boot/efibootmgr
     Available versions: (~)0.5.4
     Homepage: http://developer.intel.com/technology/efi
     Description: Interact with the EFI Boot Manager on IA-64 Systems
    

    Его необходимо установить, выполнив команду:
    echo "sys-boot/efibootmgr" >> /etc/portage/package.keywords
    emerge sys-boot/efibootmgr
    

    После установки выполним настройку UEFI следующей командой:
    efibootmgr --create --label 'Gentoo-3.6.11' --loader '\bzImage.efi' --part 1 
    

    Подробное описание всех параметров можно посмотреть в man-странице по efibootmgr. Мы используем следующие параметры:
    • --create — создаем новую переменную в загрузчике
    • --label 'Gentoo-3.6.11' — название которое будет отображаться в списке загрузочных устройств
    • --loader '\bzImage.efi' — путь к загрузчику, в нашем случае он встроен в ядро, путь абсолютный и с использованием "\"
    • --part 1 — использовать первую партицию блочного устройства sda

    После выполнения команды будет показан подробный вывод о том какие изменения в UEFI были внесены.

    Перезагрузить систему и проверить результат

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

    После успешной загрузки системы, пакет загрузчика можно удалять:
    grep sys-boot /var/lib/portage/world | xargs emerge -Cv
    


    На этом все и можно работать с системой.

    Обновление ядра средствами genkernel


    При обновлении ядра в будущем, с использованием инструмента genkernel, несколько изменится процедура, т.к. ядро больше не надо инсталлировать в /boot. Поэтому вместо 'genkernel all' необходимо выполнять 'genkernel kernel', предварительно поправив параметр в значение INSTALL=«no» в конфигурации /etc/genkernel.conf. После сборки ядра, его необходимо переименовать и вручную скопировать в каталог /boot.

    Процесс обновления в итоге будет выглядеть следующим образом:
    # genkernel kernel
    * Gentoo Linux Genkernel; Version 3.4.45
    * Running with options: kernel
    ...
    * Kernel compiled successfully!
    ...
    * Do NOT report kernel bugs as genkernel bugs unless your bug
    * is about the default genkernel configuration...
    * 
    * Make sure you have the latest ~arch genkernel before reporting bugs.
    
    # cp /usr/src/linux/arch/x86_64/boot/bzImage /boot/bzImage.efi
    # init 6
    

    Итоги


    Плюсы:
    • отказались от одной прокладки в процессе загрузки ОС
    • уменьшилось время загрузки системы
    • изучили приемы работы с новым стандартом UEFI, пришедшему на смену BIOS


    Минусы:
    • не нашел

    http://habrahabr.ru/post/165575/

    Категория: Linux и не только | Просмотров: 903 | Добавил: laptop | Рейтинг: 0.0/0
    Всего комментариев: 0
    Добавлять комментарии могут только зарегистрированные пользователи.
    [ Регистрация | Вход ]
    Волк слабее льва и тигра, но в цирке волк не выступает!
    Волк слабее льва и тигра, но в цирке волк не выступает!
    Волк - единственный из зверей, который может пойти в бой на более сильного противника.
    Если же он проиграл бой, то до последнего вздоха смотрит в глаза противника. После этого умирает...

    Праздники сегодня

    Поиск
    Календарь
    Архив записей
    Друзья сайта
  • Официальный блог
  • JEEP - the best! Mercedes - the best! Автомобильный портал города Бреста: технические характеристики с фото, авторынок, автоспорт...
    Наша кнопка
    IT новости с моего лаптопа...

    Внимание!
    Администратор сайта laptop.ucoz.ru не несет ответственности за содержание рекламных объявлений. Все используемые на сайте зарегистрированные товарные знаки принадлежат своим законным владельцам! Используемая со сторонних источников информация публикуется с обязательными ссылками на эти источники.
    Copyright Valeri N.Kravchuk © 2007-2024