Элемент Windows 10 не отображается в меню GRUB после установки openSUSE

Я попробовал предложенный вариант:

Requires=docker.service network-online.target
After=docker.service network-online.target

Но это не сработало.Я получил:

-- Reboot --
Feb 09 23:20:24 coreos-512mb-fra1-01 systemd[1]: Starting New Relic Linux Server Monitor (nrsysmond)...
Feb 09 23:20:24 coreos-512mb-fra1-01 docker[782]: Failed to kill container (nrsysmond): Error response from daemon: Cannot kill container nrsysmond: Container c608c10f44c06c550492e872773b0d5a59a7b86e639f63487f6186983a4f786b is not running
Feb 09 23:20:25 coreos-512mb-fra1-01 docker[787]: nrsysmond
Feb 09 23:20:25 coreos-512mb-fra1-01 docker[794]: Pulling repository docker.io/newrelic/nrsysmond
Feb 09 23:20:25 coreos-512mb-fra1-01 docker[794]: Error while pulling image: Get https://index.docker.io/v1/repositories/newrelic/nrsysmond/images: dial tcp: lookup index.docker.io: Temporary failure in name resolution
Feb 09 23:20:25 coreos-512mb-fra1-01 systemd[1]: newrelic.service: Control process exited, code=exited status=1
Feb 09 23:20:25 coreos-512mb-fra1-01 systemd[1]: Failed to start New Relic Linux Server Monitor (nrsysmond).
Feb 09 23:20:25 coreos-512mb-fra1-01 systemd[1]: newrelic.service: Unit entered failed state.
Feb 09 23:20:25 coreos-512mb-fra1-01 systemd[1]: newrelic.service: Failed with result 'exit-code'.

Добавление Restart и RestartSec устранило проблему:

# Restart after crash
Restart=always
# Give the service 10 seconds to recover after the previous restart
RestartSec=10s

Это не элегантно, но работает. Вот журнал:

Feb 09 23:23:57 coreos-512mb-fra1-01 systemd[1]: Starting New Relic Linux Server Monitor (nrsysmond)...
Feb 09 23:23:57 coreos-512mb-fra1-01 docker[792]: Failed to kill container (nrsysmond): Error response from daemon: Cannot kill container nrsysmond: Container 31fb78809
Feb 09 23:23:57 coreos-512mb-fra1-01 docker[797]: nrsysmond
Feb 09 23:23:57 coreos-512mb-fra1-01 docker[804]: Pulling repository docker.io/newrelic/nrsysmond
Feb 09 23:23:57 coreos-512mb-fra1-01 docker[804]: Error while pulling image: Get https://index.docker.io/v1/repositories/newrelic/nrsysmond/images: dial tcp: lookup ind
Feb 09 23:23:57 coreos-512mb-fra1-01 systemd[1]: newrelic.service: Control process exited, code=exited status=1
Feb 09 23:23:57 coreos-512mb-fra1-01 systemd[1]: Failed to start New Relic Linux Server Monitor (nrsysmond).
Feb 09 23:23:57 coreos-512mb-fra1-01 systemd[1]: newrelic.service: Unit entered failed state.
Feb 09 23:23:57 coreos-512mb-fra1-01 systemd[1]: newrelic.service: Failed with result 'exit-code'.
Feb 09 23:24:08 coreos-512mb-fra1-01 systemd[1]: newrelic.service: Service hold-off time over, scheduling restart.
Feb 09 23:24:08 coreos-512mb-fra1-01 systemd[1]: Stopped New Relic Linux Server Monitor (nrsysmond).
Feb 09 23:24:08 coreos-512mb-fra1-01 systemd[1]: Starting New Relic Linux Server Monitor (nrsysmond)...
Feb 09 23:24:08 coreos-512mb-fra1-01 docker[869]: Failed to kill container (nrsysmond): Error response from daemon: Cannot kill container nrsysmond: No such container: 
Feb 09 23:24:08 coreos-512mb-fra1-01 docker[875]: Failed to remove container (nrsysmond): Error response from daemon: No such container: nrsysmond
Feb 09 23:24:10 coreos-512mb-fra1-01 docker[883]: latest: Pulling from newrelic/nrsysmond
Feb 09 23:24:10 coreos-512mb-fra1-01 docker[883]: 6ffe5d2d6a97: Already exists
Feb 09 23:24:10 coreos-512mb-fra1-01 docker[883]: f4e00f994fd4: Already exists
Feb 09 23:24:10 coreos-512mb-fra1-01 docker[883]: e99f3d1fc87b: Already exists
Feb 09 23:24:10 coreos-512mb-fra1-01 docker[883]: a3ed95caeb02: Already exists
Feb 09 23:24:10 coreos-512mb-fra1-01 docker[883]: a3ed95caeb02: Already exists
Feb 09 23:24:10 coreos-512mb-fra1-01 docker[883]: 65cdb07f703d: Already exists
Feb 09 23:24:10 coreos-512mb-fra1-01 docker[883]: a3ed95caeb02: Already exists
Feb 09 23:24:10 coreos-512mb-fra1-01 docker[883]: Digest: sha256:c184f97452321baa0b0ee4ee402e3aaa204f041beb7a71a347db6c4efecba07f
Feb 09 23:24:10 coreos-512mb-fra1-01 docker[883]: Status: Image is up to date for newrelic/nrsysmond:latest
Feb 09 23:24:10 coreos-512mb-fra1-01 systemd[1]: Started New Relic Linux Server Monitor (nrsysmond).

Поскольку я получил эту проблему в DigitalOcean CoreOS, я искал помощь в их ресурсах. Существует поток , связанный с этой проблемой. Это предполагает следующее:

After=early-docker.service systemd-networkd-wait-online.service
Requires=early-docker.service systemd-networkd-wait-online.service
Before=early-docker.target

Но эти строки заставляли Docker зависать / зависать. Мне пришлось убить все процессы, связанные с моей службой, а затем перезапустить службу Docker, чтобы она снова работала.


Версия Docker:

docker -v
Docker version 1.10.0, build e21da33

1
17.01.2019, 21:45
2 ответа

Пожалуйста, проверьте имена установленных пакетов GRUB. Если они содержат что-то вродеgrub2-i386-pc(или каталог /boot/grub2/i386-pcсуществует ), вы случайно загрузили программу установки SuSE в устаревшем режиме BIOS, и поэтому он установил устаревшую версию BIOS загрузчика GRUB, которая, естественно, не может загружать никакие операционные системы. система, использующая более новую схему загрузки UEFI.

Чтобы это исправить:

Во-первых, узнайте, как загрузить систему в Linux в режиме UEFI и получить доступ к установке OpenSUSE. Для этого может подойти установочный носитель openSUSE в режиме Rescue System или LiveCD/USB. Вот ссылка на соответствующие инструкции из документации openSUSE

Убедитесь, что вы действительно находитесь в режиме UEFI, запустив efibootmgr -v. Если он отвечает EFI variables are not supported on this system, вам удалось загрузиться не в режиме UEFI, а в устаревшем режиме BIOS. (Загрузка в устаревшем режиме BIOS отключает службы среды выполнения UEFI, которые представляют собой механизм, используемый для доступа к переменным EFI NVRAM.)

Возможно, вам потребуется изменить настройки UEFI BIOS, чтобы предпочесть загрузку UEFI устаревшему BIOS, или полностью отключить устаревшую совместимость (, часто известную как CSM = модуль поддержки совместимости ). Фактическая процедура на этом этапе зависит от вашего оборудования и UEFI BIOS. Обратитесь к документации по вашему оборудованию.

После того, как вам удалось загрузить систему в режиме UEFI и получить доступ к установке openSUSE, удалите все текущие пакеты загрузчика GRUB. Затем смонтируйте системный раздел EFI как /boot/efiи полностью переустановите GRUB2. Если управление пакетами требует, чтобы вы выбрали фактическую версию аппаратного обеспечения GRUB2 -, зависимый пакет, выберите grub2-x86_64-efiвместо grub2-i386-pc.

Обычно полная переустановка GRUB включает сценарий, который автоматически обновляет переменные EFI NVRAM с помощью инструмента efibootmgr. С efibootmgr -vвы должны увидеть список параметров загрузки, аналогичный тем, что доступны в настройках UEFI BIOS. После (re )установки UEFI-версии GRUB список должен включать новую запись для OpenSUSE, указывающую расположение файла загрузчика grubx64.efiв системном разделе EFI. Если по какой-то причине этого не произошло, вы можете использовать следующую команду, чтобы создать его вручную:

efibootmgr -c -d /dev/sda -L "openSUSE" -l '\EFI\opensuse\grubx64.efi'

Обратите внимание, что параметр efibootmgr -dуказывает все дисковое устройство -, содержащее системный раздел EFI, а не сам раздел.

Системный раздел EFI не является эксклюзивным для Windows :в системах UEFI, предполагается, что все установленные операционные системы помещают туда свои основные загрузчики. Существует даже стандартизированная схема каталогов для предотвращения конфликтов между загрузчиками :. Предполагается, что каждый производитель помещает свой загрузчик в каталог \EFI\<vendor name>\, и OpenSUSE и Microsoft соблюдают это.

2
27.01.2020, 23:23

Вы можете попробовать что-то похожее на решение, найденное здесь .

  1. Загрузитесь в SUSE и смонтируйте раздел Windows.
  2. Из оболочки:

    sudo os-prober
    
  3. Если окна найдены, запустите:

    grub2-mkconfig -o /boot/grub2/grub.cfg
    
1
27.01.2020, 23:23

Теги

Похожие вопросы