linux-windows双系统启动设置

news/2024/11/29 11:29:47/

linux-windows双系统启动设置

  • 参考:
    • 迁移win10的efi引导分区到系统固态硬盘
    • Windows 更换硬盘后通过 BCDBoot 命令修复 UEFI 启动引导
    • Windows 和 GPT 常见问题解答(uefi、GPT、ESP、MSR概念扫盲贴)
    • microsoft.com - UEFI/GPT-based hard drive partitions
    • archlinux-wiki - EFI system partition

在 Windows 10 的基础上安装 linux mint

  • refer
    • Fix Grub Not Showing For Windows 10 Linux Dual Boot
    • ow to Install Ubuntu Alongside With Windows 10 or 8 in Dual-Boot

安装前准备

  1. 在BIOS中关闭Secure Boot
    • MSI B450 BIOS
      1. 开机,狂按DEL键,进入BIOS界面
      2. 点击BIOS右上角放大镜图标,搜索“Secure Boot”,设置为Disable

安装

  1. 创建UEFI的mint安装启动U盘
  2. 启动installer开始安装,下一步,直到选择安装类型(选择分区)
  3. 选择类型:Install mint alongside Windows 10
    • 关于安装到哪一个分区?
      点击下一步,installer自己选择分区,并弹出对话框,告诉你它选择了哪个分区。
      很尴尬呀,并没有图形化界面让你自己选择哪个分区。
      我的做法是,返回上一步,另外开gparted将ext4系统分区创建好,其他不想installer碰的分区,改成ntfs格式。
  4. 下一步,直到安装好
  5. 重启,F11进入启动菜单,选择linux mint

安装后

  • MSI B450 BIOS 设置默认使用ubuntu boot
    1. 开机,狂按DEL键,进入BIOS界面
    2. 进入菜单 Settings -> Boot -> UEFI Hard Disk Drive BBS Priorities

Windows

windows重装、升级导致grub失效

  1. 系统管理员身份运行 cmd
  2. 执行 bcdedit /set {bootmgr} path \EFI\ubuntu\grubx64.efi
  3. 如果不行,尝试: bcdedit /deletevalue {bootmgr} path \EFI\ubuntu\grubx64.efi

恢复使用 Windows boot manager

  1. bcdedit /set {bootmgr} path \EFI\Microsoft\Boot\bootmgfw.efi

迁移win10的efi引导分区到系统固态硬盘

  1. Windows安装U盘启动系统,按SHIFT+F10进入命令行。

    diskpart
    list disk
    select disk your-disk-no # Note: Select the disk where you want to add the EFI System partition
    list partitionselect partition your-partition-no # Note: Select the Windows OS partition or your data partition
    shrink desired=100 # 从目前启动盘中挤出 100 M,这里单位是M,数值多少更具要迁移过来的那个EFI分区大小来确定
    create partition efi size=100
    format quick fs=fat32
    assign letter=selectlist partition
    list volume # 记录下Windows系统盘此时的Volume,不一定是C哦,例如,这个命令输出列表里可能是:F
    exit  # 推出 DiskPart..bcdboot F:\Windows /s S:
    
  2. 拔掉U盘,重启系统

现在SSD都是4k扇区,老版本ghost11.0.2 又有对齐问题,得用最新版本ghost32 11.5.1 ,勉强凑合。

ghost 12 直接克隆,毫无问题。
至于UEFI启动修复很简单,就是修复一下BCD文件就OK了。比如新盘ESP挂载F:,系统挂载G:盘。然后到F:\EFI\Microsoft\Boot下面,修改设备
bcdedit /store BCD /set {bootmgr} device partition=F:
bcdedit /store BCD /set {memdiag} device partition=F:
bcdedit /store BCD /set {default} device partition=G:
bcdedit /store BCD /set {default} osdevice partition=G:
这些操作可以在UEFI/MBR系统上都能用,BCD对UEFI/MBR或者32/64位都没有太大区别。唯一差别就是一个是winload.exe一个是winload.efi,已经bootmgr多了个path到\EFI\Microsoft\Boot\bootmgfw.efi。所以MBR系统克隆到UEFI也可以用bcdedit修复一下,然后复制\Windows\Boot\EFI,Fonts,Resources重构一个ESP目录。

问 Windows 默认装入了什么分区?
答 Windows 只公开基本数据分区。其他 FAT 文件系统分区也可以被装入,但是不只以编程的方式公开。只有基本数据分区分配了驱动器号和装入点。
装入了 ESP FAT 文件系统,但它不是公开的。这使运行在 Windows 上的程序能更新 ESP 的内容。使用 “mountvol /s” 为 ESP 分配一个驱动器号,以实现对分区的访问。访问 ESP 需要管理员权限。
虽然 MSR 以及从 MSR 创建的任何分区都具备可识别的文件系统,但它们都不是公开的。
Windows 不能识别任何特定于 OEM 的分区或与其他操作系统相关的分区。具备可识别文件系统的无法识别的分区可以当作 ESP 处理。它们将被装入,但不是公开的。与 MBR 磁盘不同,特定于 OEM 的分区和其他操作系统分区之间没有实际的区别,都是“无法识别的”。

答 您可以使用下表中所列的工具访问不同类型的 GPT 磁盘分区。
工具 | Windows | 固件
Diskpart.efi | 磁盘分区工具 | ESP MSR 数据
Diskpart.exe | 磁盘分区工具 ESP MSR 数据 |
Diskmgmt.msc | 逻辑磁盘管理器 ESP 数据 |
Explorer.exe | 文件资源管理器 数据 |
您也可以使用 Microsoft Platform SDK API 开发属于自己的工具,在 GPT 磁盘分区的原语级别对其进行访问。
问 在 Windows 中如何管理 GPT 磁盘?

  • DiskGenius 的系统迁移工具
    DiskGenius -> 工具 -> 系统迁移

BCDboot.exe

在 win8/10 系统中有一条 BCDboot.exe 命令,它是一种快速设置系统启动分区或修复系统启动环境的命令行工具。CDboot.exe 命令是通过从已安装的 Windows 系统文件夹中复制一小部分启动环境文件来设置/修复系统的。BCDboot 还会在系统分区上创建引导配置 BCD 文件,该文件存储了启动引导项,可让您选择引导已安装的 Windows。

当系统无法启动时,用U盘或光盘启动 Windows PE 环境、或者使用 win8/10 的高级修复模式启动到命令符环境(推荐),然后运行BCDboot命令来修复损坏的系统。

BCDboot 命令通常在 %WINDIR%\System32 文件夹内,它运行后从计算机上已有的 Windows 映像复制一套启动环境文件到启动分区(GPT)/目录(MBR)中。

这些启动环境文件包括:从已安装的系统 %WINDIR%\boot\efi 文件夹和 %WINDIR%\System32\boot 文件夹复制到系统启动分区中。在UEFI+GPT环境下,BCDboot 将文件复制到固件所标识的默认系统启动分区(ESP)。另外,BCDboot 还使 %WINDIR%\System32\Config\BCD-Template 文件为模板,在系统启动分区上创建新的 BCD(启动菜单)文件,并初始化 BCD 启动环境文件。可以在 BCD-Template 文件中定义特定的 BCD 设置(需要BCB文件编辑器)。

  • 在基于 BIOS 的系统上,系统分区是使用主引导记录 (MBR) 磁盘格式的磁盘上的活动分区。BCDboot 会在系统分区上创建 Boot 目录,并将所有需要的引导环境文件都复制到此目录中。

  • 在基于 UEFI(统一可扩展固件接口) 的系统上,EFI 系统分区是使用 GUID 分区表 (GPT) 磁盘格式的磁盘上的系统启动分区(ESP)。BCDboot 会创建 \Efi\Microsoft\Boot 目录,并将所有需要的引导环境文件都复制到此目录中。

  • BCDboot 命令行格式

    BCDBOOT source [/llocale] [/svolume-letter] [/v] [/m [{OS Loader GUID}]] 
    

    各参数的具体含义:

    • source ,例如,c:\windows 系统安装目录
    • /s S: 指定esp分区所在磁盘,例如,这里是S盘
    • /f uefi 指定启动方式为uefi,注意之间的空格一定要输入。
    • /l zh-cn 指定uefi启动界面语言为简体中文
  • 示例

  1. BIOS+MBR 常用
    bcdboot C:\Windows /l zh-cn
    解释:从系统盘C:\Windows目录中复制启动文件,并创建BCD(中文)启动菜单,从而修复系统启动环境。
  2. UEFI+GPT 常用
      bcdboot C:\Windows /s S: /f uefi /l zh-cn
      解释:用DG等工具先将ESP分区装载为S盘,从系统盘C:\Windows目录中复制UEFI格式的启动文件到ESP分区中,修复系统。

Ubuntu

efibootmgr 工具可以管理efi启动项

设置硬盘分区表格式(GPT 还是 MBR)

使用 Windows 的 diskpart

  1. 以管理员权限运行 cmd, 执行 diskpart 进入工具命令行界面
  2. 改成GPT分区表
    list volume
    list disk
    select disk your-disk-no
    convert gpt
    

使用 DiskGenius 分区工具

  1. 启动winpe,使用DiskGenius分区工具
  2. 在 DiskGenius 中选中磁盘
  3. 菜单“硬盘” 》转换分区表类型为:MBR格式 / GPT
  4. 重启,开始windows安装。

使用 fdisk

  • 执行 fdisk -l
    • 如果 磁盘信息显示 Disklabel type: gpt 则是 GPT 分区;
    • 如果 磁盘信息显示 Disklabel type: dos 则是 MBR 分区;

进一步查是什么文件系统,使用:minfo -i /dev/sdxY :: | grep 'disk type'


http://www.ppmy.cn/news/820546.html

相关文章

ubuntu windows双系统默认启动项切换

ubuntu windows双系统默认启动项切换 打开终端打开grub文件编辑grub文件更新grub最终效果 打开终端 同时按住键盘上的“Ctrl Alt T”三个键(即快捷键“CtrlAltT”) 打开grub文件 编辑grub文件 其中GRUB_DEFAULT0代表系统默认启动第0项,因为…

Win10+Ubuntu双系统 使用EasyUEFI修复Ubuntu引导启动项

某同事安装了Win10Ubuntu双系统,有一天电脑突然坏了开不了机,把硬盘拆下放到别的机器上,发现是直接进入Win10系统,而不是grub选择界面。进F12也找不到ubuntu的启动项。 最开始我先使用《Win10Ubuntu双系统修复Ubuntu系统引导》里…

Win10与Ubuntu双系统设置开机启动项

通过U盘安装Ubuntu16.04后,开机默认显示Ubuntu的开机启动项,但是选择win10系统有时会出现花屏的现象,且开机较慢。所以自己捣鼓一番。 首先进入win10系统,打开diskgenius软件,选择 硬件->重建/修复MBR引导 关机&a…

C++的std::for_each()

当给定一个容器范围,我们通常需要对其中的每个元素执行相同的操作。这样的操作可能包括打印元素、修改元素的值或应用一个自定义函数等等。在 C 标准库中,std::for_each() 算法函数提供了一种方便的方式来对容器范围内的元素执行指定的操作。 std::for_…

双系统 Win10 Ubuntu 启动项修复

双系统 Win10 安装 Ubuntu 没有grub启动项的解决及双系统 Ubuntu grub启动项中 没有Windows的解决 一、此方法针对sudo update-grub不起作用找不到启动项 进入ubuntu系统后,打开终端,输入sudo vim /etc/default/grub 把第7行的GRUB_TIMEOUT_STYLEhidden改…

win7与深度(Deepin)linux 双系统启动顺序调整

一台win7电脑,安装deepin系统后,默认启动是系统是Deepin. 电脑开机后进入启动页面。前2项为Deepin的启动引导,第3项是Win7的启动引导。每次启动想进入Win7都需要手动选择,非常麻烦。 现把win7改成默认的启动系统。 步骤如下&…

Ubuntu+Windows双系统,开机默认启动项设置Windows优先

电脑是Ubuntu18.04Win10双系统,开机一直都是默认先Ubuntu,Windows在最下面,有时候按下开机键一不留神就进Ubuntu了,于是寻思着在启动项中设置为默认优先Windows。 第一步:查看序号 首先,重启电脑&#xf…

deepin window 双系统设置window为默认启动项

进入deepin系统后打开命令行 输入 sudo gedit /etc/default/grub 输入密码 修改 GRUB_DEFAULT"0" 0表示第一个启动项,windows如果在第三个 就改成2 保存退出 输入reboot 重启