Вопрос или проблема
Я пытаюсь настроить сервер для загрузки 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 в этом процессе выступает как загрузчик, который помогает выбрать и настроить параметры запуска операционной системы. Однако, для успешной реализации минималистичной загрузки необходимо четкое понимание всех составляющих процессов:
-
PXE и UEFI: Эти технологии позволяют загружать образы из сети. PXE использует TFTP протокол для передачи файлов, включая GRUB2, который будет обработан клиентом.
-
GRUB2: Это загрузчик, который используется для выбора и загрузки ядра операционной системы с необходимыми параметрами. Он позволяет адаптировать параметры, которые передаются ядру, и значим для настройки правильной загрузки.
-
Network File System (NFS): Служит для передачи корневой файловой системы клиента по сети, что позволяет загруженной системе занять все необходимые файлы с сервера.
-
Ядро и initrd: Они критичны для процесса загрузки: ядро инициализирует операционную систему, а initrd содержит необходимые модули для начального запуска и монтирования корневой файловой системы.
Пример (Example)
В вашем случае вы следовали руководству, в котором настраивался сервер PXE для установки openSUSE Leap через сеть. Вы столкнулись с проблемой, заключающейся в том, что загрузка ОС останавливается из-за попытки обращаться не к тем графическим драйверам. Error с dracut initqueue hook
дал понять, что проблема связана с зависимостями или неправильной конфигурацией корневой файловой системы.
Также вы предприняли попытку использовать образ корневой файловой системы, созданной с помощью dd
. Проблема заключается в неправильной подготовке пространства для NFS или в сложности с btrfs
-разделом.
Применение (Application)
Выполним необходимые шаги для исправления возникших ошибок и успешной загрузки минимальной ОС:
-
Подготовка ядра и initrd: Убедитесь, что у вас загружаются правильные версии ядра и initrd. При необходимости их можно собрать отдельно, чтобы включить только необходимые модули.
-
Подготовка образа корневой файловой системы: Используйте
rsync
вместоdd
для создания копии вашей файловой системы. Это поможет избежать некоторых общих проблем, связанных с блочным копированием. Проверьте совместимость btrfs, возможно, стоит попробовать использовать ext4 для упрощения процесса. -
Настройка 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-сервере. -
Отладка и тестирование: Если при загрузке все еще возникают ошибки, используйте соответствующие параметры ядра для отладки, такие как
quiet
,debug
илиrd.debug
, чтобы получить больше информации о процессе загрузки.
Рекомендуется постепенно тестировать каждый этап. Например, сначала убедитесь, что загрузка первоначальных файлов идет корректно и только затем переходите к следующему шагу, чтобы загружать и монтировать корневую файловую систему.
Также получите доступ к более детальной документации и сообществу, например, через форумы openSUSE, чтобы получить дополнительную поддержку и примеры конкретных конфигураций, которые могли бы вам подойти.