Bcdedit windows 10 linux

Fix GNU/Linux boot loader FROM Windows 10

So you have a dual boot? Let’s say you need that Win10 running close by because of the work (although MS Office apps get slower by the minute). Then you also have Manjaro, Ubuntu or something like that because WSL doesn’t do the trick. And of course you need to update your Win10. What a great idea.

Removing your GRUB or others from UEFI loader list

Aside from people reporting day by day more and more bugs with new updated/upgrades gotten through Update manager it comes with one more surprise: IT ALWAYS! ALWAYS! REMOVES YOUR BOOTLOADER and sets it’s own as default one. So no now you can’t boot to GNU/Linux. Aside from seriously thinking about going against all my principles(cheapness) and asking employer for a MacBook Pro and even buying two (for my UX/designer wife and myself), I really hate MS so much these days that I will probably at some point buy PS for games and use GNU/Linux exclusively + host everything either on DigitalOcean, AWS, GCP or anything other than Azure. Have you noticed maybe: they really p***ed me off with Azure bugs, slowness and it’s support + now this! Ugh! But let’s try to fix some things

CMD not PowerShell

Why? Well because MS doesn’t care so if you run Powershell in Admin mode you might as well remember to type in cmd first, as PowerShell won’t work with BCD for some reason (some PCs I think, not all of them, but please do inform me why is this if you know). If you get this

The set command specified is not valid. Run "bcdedit /?" for command line assistance. The parameter is incorrect 

then you know you have this issue with CMD over PS so you need either, as previously stated, type in cmd in powershell to switch or just rum CMD as admin in the first place

BCD commands

that I learned and this one is to check where is your GRUB efi
Alt Text You can check list of loaders with bcdedit and it should look something like this
Alt Text Goal is to replace that manager so first copy the record

bcdedit /set bootmgr> path \EFI\Manjaro\grubx64.efi 
bcdedit /set fwbootmgr> displayorder 223530be-53f4-11e9-a11b-b6bc71c9efcb> /addfirst 

where should be the link to your linux firmware entry from the /enum frimware list Watch out that partition for should be something like partition=\Device\HarddiskVolume1 and not the C: drive Check again with

bcdedit should now return something like thisAlt Text You can see that I don’t bother changing name but the frimware needs to list something like this Alt Text where is my Frimware application for Manjaro and is edited to point to Manjaro instead of Windows. Now I’m not sure can you make this work without removing Windows one in firmware listings but my PC took listing Firmware app + changing bootmgr to Manjaro + removing Windows extra one at the top when using
bcdedit /enum firmware to fix it That’s it and good luck!

Источник

Как я научился напрямую перезагружаться в нужную ОС через UEFI

Сегодня мы научимся перезагружаться из Linux прямиком в Windows и обратно всего за один (двойной) клик.

image

  • Два диска с GPT с разными ОС
  • Материнская плата с UEFI и отключеным Legacy Mode
  • Windows, которую бережно поставили с полной поддержкой UEFI
  • Linux (у меня Manjaro), который бережно поставили, выпилив любое упоминание GRUB и прочих старомодных вещей
  • rEFInd — красивый менеджер загрузки (нет, не загрузчик)
  • Рабочие варианты обозначены, как Решение, остальное — мои рассуждения и описание пути к цели.
  • Я сознательно опускаю описание тех деталей, которые не относятся к сути настройки, либо легко варьируются. Упоминаются же эти детали потому, что для меня они не были очевидны на момент настройки, поэтому статья становится более понятной для неискушенных читателей, которые не будут видеть в ней инструкцию по рисованию совы.
  • Почему стоит быть осторожным при модификации NVRAM

Linux:

Linux is your bro

Linux — прекрасная база для работы с компьютером, поэтому всё, что нам нужно, уже есть в репозиториях, а коллективный разум сообщества знает всё и всегда готов помочь. Поэтому, после недолгого изучения интернета, ставим efibootmgr:

Timeout: 1 seconds BootOrder: 0001,0000 Boot0000* Windows Boot Manager Boot0001* rEFInd Boot Manager

Внимательные читатели уже наверняка заметили, что в выводе что-то не так, но тогда я был окрылён мыслью о том, что через 15 минут буду летать между операционками без проблем, и не обратил на это должного внимания.
Ок, 3 минуты на документацию, и мы находим нужный параметр «-n«, который выставляет кастомый порядок загрузки ровно на один раз. Пробуем выполнить эту команду:
Решение

sudo efibootmgr -n 0000 && sync && reboot

И оказываемся в Windows, как того и желали. Теперь эту команду записываем в скрипт/alias/*.desktop-файл и радуемся тому, как всё здорово получилось.

Windows:

Typical Windows

Началось всё с поиска аналога efibootmgr для Windows, которого в чистом виде, конечно же, нет. Для успокоения совести я даже попытался использовать Linux Subsystem, но это, конечно же, не сработало.
Беглый поиск по интернетам показал, что схожим функционалом по модификации NVRAM обладает утилита bcdedit. Отлично, думаю я, запускаю PowerShell из-под Администратора и пишу

 Firmware Boot Manager --------------------- identifier displayorder  timeout 1 Windows Boot Manager -------------------- identifier device partition=\Device\HarddiskVolume2 path \EFI\Microsoft\Boot\bootmgfw.efi description Windows Boot Manager locale ru-RU inherit default resumeobject toolsdisplayorder timeout 30 Firmware Application (101fffff) ------------------------------- identifier device partition=\Device\HarddiskVolume2 path \EFI\REFIND\REFIND_X64.EFI description rEFInd Boot Manager

Где Linux? Куда грузиться? Ненавижу винду
На самом деле оказалось, что виновата не Windows, а я (да-да, тот самый момент для внимательных пользователей), и вот почему: rEFInd — прекрасная утилита, которая обычно, для корректной работы, требует только установить себя. Она умеет подхватывать все .efi файлы, разные дистрибутивы с разными ядрами, сама подставляет иконки. Прелесть, а не инструмент. Но это сыграло со мной злую шутку, так как оказалось, что UEFI ничего не знает про Linux, так как отсутствует соответствующий ему .efi-файл.
Поэтому презагружаемся обратно в Linux, конфигурируем systemd-boot (bootctl). Теперь всё выглядит вот так:

Timeout: 1 seconds BootOrder: 0001,0003,0000,0002 Boot0000* Windows Boot Manager Boot0001* rEFInd Boot Manager Boot0002* Linux Boot Manager Boot0003* Manjaro

Возвращаемся обратно и снова запускаем.

 Firmware Boot Manager --------------------- identifier displayorder    timeout 1 Windows Boot Manager -------------------- identifier device partition=\Device\HarddiskVolume2 path \EFI\Microsoft\Boot\bootmgfw.efi description Windows Boot Manager locale ru-RU inherit default resumeobject toolsdisplayorder timeout 30 Firmware Application (101fffff) ------------------------------- identifier device partition=\Device\HarddiskVolume2 path \EFI\REFIND\REFIND_X64.EFI description rEFInd Boot Manager Firmware Application (101fffff) ------------------------------- identifier device partition=\Device\HarddiskVolume2 path \EFI\SYSTEMD\SYSTEMD-BOOTX64.EFI description Linux Boot Manager Firmware Application (101fffff) ------------------------------- identifier device partition=\Device\HarddiskVolume1 path \EFI\manjaro\vmlinuz-4.13-x86_64 description Manjaro

Тут стоит упомянуть, что проблему мне помогали решать пользователи reddit. Именно благодаря им мы имеем следующий шаг:

Где аргументом является identifier необходимого варианта — Linux Boot Manager.

Powershell не даёт нормально выполнить эту команду, ругаясь на

The entry list data is not valid as specified.

Всё из-за того, что Microsoft периодически любит что-нибудь сломать. Решение просто и элегантно — вызываем классический CMD и работаем в нём. Это можно сделать командой

Перезагружаемся и видим, что порядок загрузки не изменился, а мы оказались в первом элементе в BootOrder (у меня это был rEFInd), выбираем Windows и видим страшный привет из времен DOS, который говорит нам, что \EFI\SYSTEMD\SYSTEMD-BOOTX64.EFI не найден. Да, мы изменили параметры загрузчика Windows, но не UEFI.
Борьба с этой ошибкой заняла у меня все праздники, но ничего путного не получалось. Я уже подумывал написать на C++ небольшую программку для этого (то, что это возможно, следует из существования такого софта, как EasyUEFI).
Но тут на очередном сайте я обнаружил вот такую конструкцию

И тут меня осенило, что можно прямо сказать bcdedit что и куда писать. Дальше стоило только проверить догадку:
Решение

bcdedit.exe /set bootsequence /addfirst

Тут важно, что мы явно сказали писать не в (как он, видимо, делает по-умолчанию), а в , что и является нашими настройками UEFI.
Перезагружаемся, и всё работает так, как мы этого хотели. Сохраняем это дело в bat/lnk, дописываем

Выставляем запуск из-под администратора и готово!
Спасибо за внимание! Буду крайне рад замечаниям по технической части в комментариях, замечаниям по оформлению — в ЛС.

Источник

I need to see the BCDedit for a Windows10/Ubuntu install both by Wubi and by separate partition

If you want to add an UEFI entry for Ubuntu with bcdedit, you can use the following commands as administrator:

List all BCD entries for UEFI:

Copy UEFI entry of «Windows Boot Manager» to create a new entry for Ubuntu:

bcdedit /copy /d "Ubuntu Secure Boot" 

Set file path for the new Ubuntu entry. Replace with the returned GUID of the previous command.

bcdedit /set path \EFI\ubuntu\shimx64.efi 

Set optionally Ubuntu as first entry in the boot sequence. Replace with the returned GUID of the copy command.

bcdedit /set displayorder /addfirst 

Alternatively, you can use a script which does the job for you:

@ECHO OFF rem add Ubuntu EFI entry bcdedit /enum firmware for /f "tokens=2 delims=<>" %%a in ('bcdedit /copy /d "Ubuntu Secure Boot"') do set guid= bcdedit /set %guid% path \EFI\ubuntu\shimx64.efi bcdedit /set displayorder %guid% /addfirst bcdedit /enum firmware 

Solution 2

The easiest way for your intention should be EasyUEFI. EasyUEFI can create an entry for Ubuntu. \EFI\ubuntu\shimx64.efi is the right file path for that entry. If necessary, you can also change the boot order.

How to Install Ubuntu on Windows 10 (WSL)

How to Install Ubuntu Alongside With Windows 10 in Dual-Boot

How to Install linux without cd or usb | Dualboot | UEFI | Step By Step (2021)

Cara Membuat Dual Boot Windows dan Linux Ubuntu 2021 Step By Step - LENGKAP!

I need to see the BCDedit for a windows10/ubuntu install both by wubi and by seperate partition

How to Dual Boot Ubuntu 20.04 LTS and Windows 10 [ 2020 ]

WLC

Updated on September 18, 2022

Comments

I seem to have windows passing by on GRUB/Ubuntu. There’s no Ubuntu folder under Windows. I can boot from firmware to Grub, then choose either OS. I removed Wubi/Ubuntu and reinstalled directly to the same partitions. The windows Boot Manager did not create an entry for Ubuntu, so I need to create the entry. Wubi puts wubildr.mbr on my system. but this is the wrong thing for EFI installs. I need the shimx64.efi so the created Windows boot in EFI might work. I will make a copy of my boot with bcdedit , and point the entry to Ubuntu. If this is incorrect, please tell me what to do next?

This might help. But The system start-up (Firmware) is already booting both the OS, as it should. It’s just windows doesn’t acknowledge Ubuntu.

@WLC The folder \EFI\ubuntu is on the EFI partition. The EFI partition is hidden under Windows, but EasyUEFI should also see this hidden partition.

bcdedit entries «Firmware Application (101fffff)» should be visible in Windows menu Advanced Startup Options->Use a device

bcdedit entries «Windows Boot Manager» as I used in my guide are not visible in this menu but the main function is to insert an entry to EFI menu of your firmware and change boot order if necessary

I tried the above commands. It indeed added a new entry, but adding it as first one (/addfirst) does not seem to be effective. It still boots Windows by default instead of grub.

Frank Nocke

The Makers of easyBcd say: ”If your Windows PC is booting in EFI mode, Microsoft has blocked the loading of [. ] This means that you can no longer use EasyBCD to add Windows 9x, XP [or] Linux entries.” – So I understand, with UEFI neither EasyBCD tool nor bcdedit will make this possible? Or am I missing something? (and I keep reading bcdedit /set path \EFI\ubuntu\grubx64.efi accross the net, strongly sound like it is possible.

Источник

Читайте также:  Linux mint нет звука фиктивный выход
Оцените статью
Adblock
detector