Вопрос или проблема
У меня есть ноутбук Dell G3 17 3779.
В нем установлен SATA HDD как hd0 и M.2 SSD как hd1. Оба в GPT.
Я удалил все на SSD и установил Windows 10.
Я использовал 4 раздела:
- Среда восстановления Windows (499M) |
/dev/sdb1
- EFI-система (100M) |
/dev/sdb2
- Резерв Microsoft (MSR) (16M) |
/dev/sdb3
- Основной раздел Windows NTFS (70G) |
/dev/sdb4
Также я добавил для Arch Linux 2 раздела:
- Для
/
(47.7G) |/dev/sdb5
- Для swap (980.3M) |
/dev/sdb6
HDD имеет 2 раздела:
- Резерв Microsoft (MSR) (16M) |
/dev/sda1
- Некоторый NTFS (900G) |
/dev/sda2
После установки Windows я установил Arch Linux через UEFI, следуя вики-руководству.
GRUB был установлен с помощью стандартной команды grub-install
без параметров.
Я пытался настроить GRUB вручную:
/boot/grub/grub.cfg
. $prefix/menu.cfg
/boot/grub/menu.cfg
set default=0
set timeout=10
menuentry "ArchLinux" {
linux /boot/vmlinuz-linux root=/dev/sdb4 rw
initrd /boot/initramfs-linux.img
}
menuentry "Windows" {
regexp -s root '\((.+)\)' "$cmdpath"
chainloader /EFI/Microsoft/Boot/bootmgfw.efi
}
После перезагрузки загрузился только Windows 10 без каких-либо меню загрузки.
Я установил os-prober
и попытался запустить grub-mkconfig
, но получил предупреждение:
WARNING: Не удалось подключиться к lvmetad. Возврат к сканированию устройств.
или
WARNING: Устройство /dev/loop0 не инициализировано в базе данных udev, даже после ожидания 10000000 микросекунд.
Вместо /dev/loop0
были все разделы.
И по-прежнему грузится только Windows.
Может быть, это из-за того, что мой HDD первый в BIOS, в отличие от SSD (hd0 против hd1)?
Как решить эту проблему?
Обновление: этот ответ https://askubuntu.com/a/816347/879272 позволяет мне открыть grub.
Но почему BIOS запускает EFI/Microsoft/Boot/bootmgfw.efi, игнорируя другие загрузчики?
Могу ли я отключить это поведение?
Я думаю, что BIOS все еще заставляет G3 загружать Windows.
BIOS Dell имеет хороший файловый браузер для выбора загрузчика. Войдите в настройки BIOS (возможно, F2 или F8) сразу после появления логотипа Dell и до загрузки Windows. Затем используйте файловый браузер, чтобы найти загрузчик grubx64.efi, который вы хотите загрузить, и выберите его. Затем проверьте порядок загрузки и сохраните новые настройки для перезагрузки в Grub.
Несколько недель назад у меня была такая же проблема на моем ноутбуке. Он игнорировал мой GRUB2 и запускал Windows напрямую. Вот как я решил эту проблему:
- Переименуйте директорию
/boot/efi/EFI/Microsoft
вMicrosoft0
- Измените путь в
chainloader /EFI/Microsoft/Boot/bootmgfw.efi
соответственно на/EFI/Microsoft0/Boot/bootmgfw.efi
Похоже, BIOS в моем ноутбуке всегда помещает загрузчик Microsoft в верхнюю часть списка, независимо от того, как вы его настраиваете. Поэтому переименование директории Microsoft
в EFI-разделе может обмануть BIOS, и он не будет автоматически загружать Windows.
Возможно, что-то не так с загрузчиком grubx64.efi. Вот потрясающая утилита, которая может загрузить что угодно и где угодно без загрузчика:
EDIT: В качестве альтернативы существует отличный ‘refind‘ загрузчик, специализирующийся на загрузке EFI. Утилита может быть установлена на съемный USB-диск для экстренной загрузки с фиксированного диска, с которого невозможно загрузиться, или может быть установлена в EFI-системный раздел для регулярного использования. ‘refind’ может найти загрузчик grub или загрузить установленное ядро непосредственно, если оно было собрано с загрузчиком UEFI, как это часто включается в современные дистрибутивы Linux.
Честно говоря, я не знаю коренной причины аналогичной проблемы, которую я имел с двойной загрузкой Win10 и Kali, но я потратил много времени, пытаясь заставить их работать совместно и потерпел неудачу. Это тот хак, который я использовал, чтобы заставить его работать.
- С установленным Windows
- Отключите Secure Boot в BIOS
- Отключите Fast Boot в BIOS
- Установите Ubuntu. Поскольку Ubuntu хорошо взаимодействует с Windows, он устанавливает
grub
таким образом, что Windows «нравится», и машина затем успешно загружает как Windows, так и Ubuntu - Установите другую операционную систему Linux (в моем случае Kali), но без переустановки
grub
- Загрузитесь в Ubuntu и перенастройте
grub
из Ubuntu (я использовал `grubcustomizer`) для тройной загрузки - Удалите Ubuntu
- Загрузитесь в другую ОС и приведите в порядок
grub
и установите приоритет загрузки так, как нужно (снова я использовалgrubcustomizer
).
Когда я мигрировал на эту (новую) машину, я просто установил Arch и запустил Windows из VirtualBox, скопировал данные Windows в папку и поделил эту папку между Win VM и Arch. Теперь я могу иметь обе машины работающими (Arch в качестве основной и Win в качестве VM) и работать с общим диском данных с любой платформы, подходящей для конкретной задачи.
Ответ или решение
Установка GRUB, когда SSD является hd1, может представлять определенные сложности, особенно в конфигурациях с несколькими операционными системами, как в вашем случае. Ниже приводится пошаговое руководство, как правильно установить и настроить GRUB на вашем ноутбуке Dell G3 17 3779 с установленными Windows 10 и Arch Linux.
1. Подготовка перед установкой GRUB
Перед началом установки GRUB убедитесь, что вы выполнили следующие требования:
-
Проверка режима UEFI: Убедитесь, что стартовая система работает в режиме UEFI, а не Legacy. Вы можете проверить это в BIOS вашего ноутбука, зайдя в настройки загрузки.
-
Отключение Secure Boot: Это может повлиять на загрузку GRUB. Перейдите в настройки BIOS и отключите Secure Boot.
-
Отключение Fast Boot: Это также может помешать корректной загрузке. Найдите и отключите эту настройку в BIOS.
2. Установка GRUB на SSD
Теперь, когда вы убедились, что все настройки BIOS корректны, перейдите к установке GRUB:
-
Загрузитесь с Live-USB Arch Linux. При этом убедитесь, что система загружается именно в режиме UEFI.
-
Подготовьте корневую файловую систему. Сначала смонтируйте раздел с установленной Arch Linux:
mount /dev/sdb5 /mnt
Затем смонтируйте EFI-раздел:
mkdir /mnt/boot mount /dev/sdb2 /mnt/boot
-
Установите GRUB на SSD (hd1). Выполните следующие команды:
# Введите chroot arch-chroot /mnt # Установите GRUB grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=GRUB
Здесь важно указать
--efi-directory
, чтобы GRUB знал, где находится EFI-раздел. -
Создайте конфигурацию GRUB:
Для этого выполните команду:
grub-mkconfig -o /boot/grub/grub.cfg
Эта команда создаст файл конфигурации GRUB, который будет включать все доступные операционные системы, включая Windows 10.
3. Настройка конфигурации GRUB
Если после выполнения вышеуказанных шагов при загрузке система все еще загружает Windows напрямую, необходимо отредактировать конфигурацию GRUB.
В файле /boot/grub/grub.cfg
добавьте следующие записи (если они отсутствуют):
set default=0
set timeout=10
menuentry "Arch Linux" {
linux /boot/vmlinuz-linux root=/dev/sdb5 rw
initrd /boot/initramfs-linux.img
}
menuentry "Windows" {
insmod part_gpt
insmod chain
chainloader /EFI/Microsoft/Boot/bootmgfw.efi
}
4. Проверка порядка загрузки в BIOS
После установки и настройки GRUB:
- Перезагрузите ноутбук и снова зайдите в BIOS (обычно нажатие клавиши F2 или F8 во время загрузки).
- Проверьте порядок загрузки: GRUB должен находиться выше Windows Boot Manager. Если этого не произошло, отредактируйте порядок загрузки.
5. Альтернативные методы
Если проблема с загрузкой GRUB продолжается, рассмотрите следующие альтернативные решения:
-
Переименование каталога Microsoft:
Если BIOS продолжает обращаться к Microsoft Boot Manager, вы можете временно переименовать потенциальные каталоги:mv /boot/efi/EFI/Microsoft /boot/efi/EFI/Microsoft0
Затем измените путь в конфигурации GRUB соответственно.
-
Использование rEFInd:
rEFInd — это другой загрузчик, который может помочь в более удобной конфигурации и загрузке нескольких операционных систем.
Заключение
Установка и настройка GRUB на системе с несколькими операционными системами требует внимательности и точности. Следуя приведенным шагам, вы сможете успешно установить GRUB и настроить его для загрузки как Arch Linux, так и Windows 10. Убедитесь, что вы проверили все настройки BIOS, и при необходимости воспользуйтесь альтернативными методами для решения проблемы.