Всегда когда я устанавливал линукс grub что-то делал с загрузчиком винды и приходилось его восстанавливать . Можно ли как-то сделать чтобы в бут меню был загрузчик виндовс и grub ?
Можно. Но конкретная реализация зависит от режима загрузки BIOS / UEFI. И обе системы (загрузчика) должны быть установлены в одном режиме, чтобы из одного можно было вызывать другой.
В Legacy на разных физических дисках можно, выбирая диск, но так себе, на любителя извращений. На одном физическом диске можно в PBR, который потом сохранить в файл и в загрузчике Windows добавить загрузку этого файла как mbr, потом нянчится с ним, так как каждое обновление grub2 переписывает PBR и нужно обновлять файл. В какой-то момент после очередного обновления grub2 он не грузится, понимаешь что обновился grub2, запускаешь LiveCD (хотя можно и в Windows), выполняешь команду sudo dd if=/dev/sda3 of=/media/windows/boot.pbr bs=512 count=1. Но пару тройку таких извращений и выбор падёт на grub2 как основной загрузчик, а загрузчик винды лесом.
Можно ещё через Grub4Dos, указав загрузку grldr.mbr, который грузит grldr и в menu.lst прописать загрузку линуксов. Но Windows при выборе пункта перезагружается, увеличивая время загрузки.
Прописка в BCD батником:
@echo off
color 3b
:: Для изменения BCD в загруженной системе /store и путь не указываются
REM set bcd=/store "C:\Boot\BCD"
set bcd=
echo -set-bcd
pause
for /f "tokens=2" %%a in ('Bcdedit %bcd% -create /d "Grub4dos" -application bootsector') do set guid=%%a
echo guid %guid%
pause
BCDEDIT.EXE %bcd% /set %guid% device boot
echo device
pause
BCDEDIT.EXE %bcd% /set %guid% path \grldr.mbr
echo path
pause
BCDEDIT.EXE %bcd% /displayorder %guid% /addlast
echo addlast
pause
bcdedit %bcd% -set {bootmgr} timeout 3
echo timeout
pause
REM tokens=2 или 3... на семёрке - 2
Всегда когда я устанавливал линукс grub что-то делал с загрузчиком винды и приходилось его восстанавливать
Переписывал MBR прописывая себя взамен Windows. Можешь сохранить MBR в файл и посмотреть разницу между до и после.
пару тройку таких извращений и выбор падёт на grub2 как основной загрузчик, а загрузчик винды лесом.
Винда всегда загружается только своим загрузчиком. Пока есть винда, без виндовс-загрузчика не обойдёшься. Будь то ‘chainloader +1’, ‘ntldr…’, ‘grldr…’ или ещё как, все они запускают ‘bootmgr…’
Пока есть винда, без виндовс-загрузчика не обойдёшься.
В принципе так можно сказать и про линукс, пока есть линукс без его загрузчика не обойдёшься, виндовый не загрузит ядро линукс напрямую, только через прокладку Grub2/Grub4Dos. У нас же цепочки bootmgr(BCD)->Grub2/Grub4Dos, либо Grub2/Grub4Dos->bootmgr(BCD) в Legacy.
Но виндовс абсолютно привязан к своему загрузчику. Там даже понятия нет, установить без загрузчика.
Линукс, впринципе, может быть без загрузчика. Может быть совершенно другой загрузчик (systemd-boot, rEFInd). Загрузчик может быть абсолютно посторонним, о котором система даже не знает.
ЕФИ может запустить ядро линукс без промежуточных загрузчиков.
>> /dev/sda1 EFI
/dev/sda2 Зарезервированный раздел Microsoft
/dev/sda3 Microsoft basic data
/dev/sda4 Среда для восстановления Microsoft
/dev/sda5 EFI
/dev/sda6 Файловая система Linux
sda1 для Windows, sda5 для Linux. На 100M диск не обедняет. sda5 смонтировать в /boot/efi Далее grub-install –target=x86_64-efi –efi-directory=/boot/efi –bootloader-id=«Ljaliks»
не очень понятно, что имеется в виду под boot menu, но можно такое иметь, вопрос как - зависит от ответа «какое именно boot menu»?
если EFI - то его средствами, там настраиваешь что у тебя с разных разделов разное грузится и выбираешь по кнопке UEFI/BIOS загрузчика Boot Device/Menu Option при старте (обычно F8).
если имеется в виду GRUB с его рамкой и меню выбора, то я советую вот такое добавить в его конфиг /boot/grub/grub.cfg (CC66-4B02 заменить на свой id):
перед этим проверить /boot и /boot/EFI на предмет наличия
в /etc/default/grub GRUB_DEFAULT= меняешь на нужный номер в меню загрузки (обычно там 0) или на saved, тогда ещё GRUB_SAVEDEFAULT=true ставишь
ещё можно время ожидания подкрутить, по умолчанию там 5 сек (GRUB_TIMEOUT=5)
Это было очень давно, хотя, у меня всë ещë есть работающее с BIOS/MBR разметкой железо, вот там да, линуксовые загрузчики, как и виндовые, затирают загрузочный сектор, с той разницей, что для восстановления оригинального загрузчика из Linux достаточно одной команды, а из винды – нет, потому что винда не делает резервных копий, их приходилось делать самому.