Загрузка рабочего образа Linux UEFI / PXE / GRUB

Вопрос или проблема

Я пытаюсь настроить сервер для загрузки opensuse-15.5 через PXE в среде UEFI и GRUB2.
Я нашел этот учебник для Suse, который сработал довольно хорошо.
У меня есть клиент, получающий IP-адрес, загружающий несколько файлов с TFTP на той же машине, и у меня также настроен NFS сервер.

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

Следуя инструкциям в учебнике, я дошел до того, что клиент не может подключиться к репозиториям для начала установки ОС.
Что я сделал после этого, так это заменил образы initrd и linux на те, которые я получил из установки ОС на том же клиенте, который я пытаюсь загрузить. Также я сделал образ корневой файловой системы на клиенте (той же установки) и разместил его на сервере, чтобы сделать его доступным через NFS.
После этого результат был такой: клиент загрузил initrd, затем linux, но остановился, не завершив загрузку, на этапе, когда, возможно, пытается настроить видеокарту. В строке упоминается drm и i915 (Извините, у меня сейчас нет доступа к клиенту, но я обновлю информацию правильным сообщением завтра).

Я даже не уверен, какую из образов Linux мне нужно загружать и какие параметры мне нужно передать в GRUB, чтобы все заработало. Я пытался разобраться в руководстве по GRUB и других источниках, но у меня осталось больше вопросов, чем ясности.
Может ли кто-нибудь подсказать…:
какие команды я должен добавить в grub.cfg (и от каких нужно избавиться)?
какой образ Linux мне следует использовать?
и, возможно, любой источник информации, который приходит на ум?

Большое спасибо за ваше время.

Габс.

ИЗМЕНИТЬ: Точка сбоя не имела ничего общего с графикой/drm/i915. Последнее сообщение на экране (около минуты) показывало graphics/drm/i915, но на самом деле проблема возникала сразу после этого, на dracut initqueue hook. Насколько я понимаю, система как-то начинала искать флешку, которая была смонтирована и включена в fstab в момент создания образа корневого раздела с dd.

После повторного создания образа (и отправки его на сервер через NFS на этот раз) я вижу, что эта проблема решена (см. фото)введите описание изображения здесь

Проблема сейчас, как видно на следующей картинке, на этапе switch root. Я действительно не знаю, что это значит, но я постараюсь это выяснить.
введите описание изображения здесь

Следующая картинка – это net/grub.cfg. Я отредактировал этот файл и избавился от команд install и instsys, так как считал, что они не нужны (я не пытаюсь установить ОС). Я также попробовал этот grub.cfg без команд root и nfsroot, которые, по моему пониманию, будут использовать файловую систему на жестком диске вместо той, что на сервере, и все кажется работающим.
Только когда требуется получить корневую файловую систему с сервера NFS, у меня возникает ошибка, изображенная на второй картинке. Извините, третья картинка размыта.
введите описание изображения здесь

В данный момент я предполагаю, что что-то не так с файловой системой. Я создал образ с помощью dd, переместил его на сервер и смонтировал с помощью mount -o loop /image /srv/tftpboot/openSUSE-XXX/rootfs. Я читал, что это не то же самое, что создать образ раздела или всего диска. Также btrfs каким-то образом особенный в отношении создания образов. Существует ли особый способ сделать это?
Извините за задержку с обновлением. Еще раз спасибо за вашу помощь и время на комментарии.

Ответ или решение

Настройка загрузки минималистичной операционной системы на сервер через PXE в среде UEFI с использованием GRUB2 представляет собой сложную, но интересную задачу. В вашей ситуации проблема заключается в возможности успешно загрузить образ операционной системы из сети для выполнения определённых команд в терминале, минуя процесс установки ОС. Рассмотрим основные аспекты этой задачи, чтобы добиться успешной загрузки.

Теория (Theory)

PXE и UEFI предоставляют возможность загружаться из сети, позволяя клиентским машинам загружать начальные файлы системы, такие как ядро и initrd, без использования локальных дисков. GRUB2 в этом процессе выступает как загрузчик, который помогает выбрать и настроить параметры запуска операционной системы. Однако, для успешной реализации минималистичной загрузки необходимо четкое понимание всех составляющих процессов:

  1. PXE и UEFI: Эти технологии позволяют загружать образы из сети. PXE использует TFTP протокол для передачи файлов, включая GRUB2, который будет обработан клиентом.

  2. GRUB2: Это загрузчик, который используется для выбора и загрузки ядра операционной системы с необходимыми параметрами. Он позволяет адаптировать параметры, которые передаются ядру, и значим для настройки правильной загрузки.

  3. Network File System (NFS): Служит для передачи корневой файловой системы клиента по сети, что позволяет загруженной системе занять все необходимые файлы с сервера.

  4. Ядро и initrd: Они критичны для процесса загрузки: ядро инициализирует операционную систему, а initrd содержит необходимые модули для начального запуска и монтирования корневой файловой системы.

Пример (Example)

В вашем случае вы следовали руководству, в котором настраивался сервер PXE для установки openSUSE Leap через сеть. Вы столкнулись с проблемой, заключающейся в том, что загрузка ОС останавливается из-за попытки обращаться не к тем графическим драйверам. Error с dracut initqueue hook дал понять, что проблема связана с зависимостями или неправильной конфигурацией корневой файловой системы.

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

Применение (Application)

Выполним необходимые шаги для исправления возникших ошибок и успешной загрузки минимальной ОС:

  1. Подготовка ядра и initrd: Убедитесь, что у вас загружаются правильные версии ядра и initrd. При необходимости их можно собрать отдельно, чтобы включить только необходимые модули.

  2. Подготовка образа корневой файловой системы: Используйте rsync вместо dd для создания копии вашей файловой системы. Это поможет избежать некоторых общих проблем, связанных с блочным копированием. Проверьте совместимость btrfs, возможно, стоит попробовать использовать ext4 для упрощения процесса.

  3. Настройка GRUB2: Ваш grub.cfg должен включать точные пути к файлам ядра и initrd, а также команды для монтирования корневой файловой системы с NFS. Пример настройка может выглядеть так:

    menuentry 'Minimal Linux' {
       set root='(tftp,192.168.0.1)'
       linux /path/to/vmlinuz nfsroot=192.168.0.1:/path/to/rootfs rw
       initrd /path/to/initrd
    }

    Настройте параметры root и nfsroot так, чтобы они соответствовали реальному расположению файлов на NFS-сервере.

  4. Отладка и тестирование: Если при загрузке все еще возникают ошибки, используйте соответствующие параметры ядра для отладки, такие как quiet, debug или rd.debug, чтобы получить больше информации о процессе загрузки.

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

Также получите доступ к более детальной документации и сообществу, например, через форумы openSUSE, чтобы получить дополнительную поддержку и примеры конкретных конфигураций, которые могли бы вам подойти.

Оцените материал
Добавить комментарий

Капча загружается...