关于双系统更改盘符增删系统相关知识一箩筐
每次操作双系统,总会被各种技术分区等为难一顿,从很久就想搞清楚,这次正好有机会,把查找的资料和实际的操作记录下来。
BIOS legacy
简介
Basic Input Output System--基本输入输出系统
按下开机键后,电脑需要先启动BIOS系统,BIOS做一系列初始化,然后按照规则再加载磁盘上的引导系统,通过引导系统进入Windows或者Linux等。
功能
自诊断程序
自检硬件信息
CMOS设置程序
开机过程中,按特殊键(F2 F8 del等)进入的BIOS设置界面,就是常说的BIOS设置。实际上不能叫做BIOS设置,应该是CMOS设置。
系统自举装载程序
这里是与我们系统分区相关的步骤,BIOS会扫描硬盘,列出所有的引导,可以在BIOS中选择从哪个引导进入系统,比如从U盘启动时,就需要从BIOS选择。
中断服务
这个与我们无关。就是BIOS会提供一些操作硬件的中断服务
UEFI
简介
只要不是太古老的电脑,现在都是默认UEFI。UEFI--Unified Extensible Firmware Interface 统一可扩展固件接口,源于Intel开发的可扩展固件接口(Extensible Firmware Interface),一开始这个项目相当于Intel自己维护开发,后来为了统一,更好的发展,Intel把它交由统一可扩展固件接口论坛(Unified EFI Forum)维护,并且改名为UEFI。
The Unified Extensible Firmware Interface (UEFI) Forum is an alliance between technology companies to coordinate the development of the UEFI specification. The board of directors includes representatives from twelve "Promoter" companies: AMD, American Megatrends, ARM, Apple, Dell, Hewlett Packard Enterprise, HP Inc., Insyde Software, Intel, Lenovo, Microsoft, and Phoenix Technologies.
从上面维基百科上可以看出这个组织成员基本上包含了当前计算机相关的各个方面技术的领导者,也就相当于是业内标准。
EFI
Intel当时开发EFI是由于硬件系统的发展从16位到32位到64位,性能越来越高,相对应磁盘也越来越大,原BIOS发展缓慢,并且由于开始的架构古老,没有为后续的扩展做充足的准备,导致影响制约了计算机的发展,所以Intel另起炉灶,研发了EFI。
功能
UEFI的工作和BIOS基本一致,开机启动,引导系统,管理分区等。并且由于是新的架构,摒弃了BIOS多余的一些步骤,使得电脑启动更快;扩展了BIOS的一些限制,对大容量磁盘管理以及分区更好的支持。
除此之外,还提供了更友好的图形界面接口,支持本地化和鼠标控制。
UEFI被认为是未来BIOS的接替者,可以把它看作和BIOS是一个层级,只不过是新的技术。
Secure Boot
在UEFI中,有一个模块叫做Secure Boot,用来避免病毒修改了bios相关内容,禁止启动。但是这个主要有微软推动,需要系统或者软件经第三方认证过,导致有时候Linux系统无法启动。建议关闭。
如何确认系统是BIOS legacy还是UEFI
安装系统的时候,必须要确认是哪种技术启动,两个系统安装磁盘分区等需要一致,不然就会导致这个可以看到,那个就看不到,无法启动。
通过BIOS设置界面确认
开机按特殊键,进入BIOS设置,在boot启动项找到相关选择,会显示是legacy还是UEFI
Windows
在开始菜单中找到系统信息(System Information),里面有显示BIOS模式(BIOS Mode)
Linux
查看系统是否有/sys/firmware/efi,如果有就是UEFI,如果没有就是legacy
或者debian系的系统运行efibootmgr,如果是UEFI就会输出如下相关信息,如果不是,会有提示信息表示不支持
$ efibootmgr
BootCurrent: 0001
Timeout: 0 seconds
BootOrder: 0001,0016,0017,0018,0019,001C,001D,001B,001A
Boot0001* deepin
Boot0010 Setup
Boot0011 Boot Menu
Boot0012 Diagnostic Splash Screen
Boot0013 Lenovo Diagnostics
Boot0014 Startup Interrupt Menu
Boot0015 Rescue and Recovery
Boot0016* USB CD
Boot0017* USB FDD
Boot0018* NVMe0
Boot0019* NVMe1
Boot001A Other CD
Boot001B Other HDD
Boot001C* USB HDD
Boot001D* PXE BOOT
Boot001E Regulatory Information
MBR
简介
主引导记录(MBR,Master Boot Record)是采用MBR分区表的硬盘的第一个扇区,即C/H/S地址的0柱面0磁头1扇区,也叫做MBR扇区。
MBR与BIOS是一起存在的,都是比较老的技术了。
MBR只能设置4个主分区,其余的需要扩展分区(逻辑分区)实现。
主分区 扩展分区
主分区就相当于可以直接管理控制访问的分区;而逻辑分区是为了扩展只有4个主分区限制的产物,从名字上也可以看出是逻辑上的分区,也就是把一个主分区内部再做处理,这样不仅会影响性能,也会导致磁盘混乱,数据丢失不好恢复等问题。
GPT
简介
全局唯一标识分区表(GUID Partition Table,缩写:GPT)是指全局唯一标示磁盘分区表格式。它是可扩展固件接口(EFI)标准(被Intel用于替代个人计算机的BIOS)的一部分,被用于替代BIOS系统中的以32bits来存储逻辑块地址和大小信息的主引导记录(MBR)分区表。
GPT只能支持UEFI,有着更好的性能,安全性,更好的权限管理等。
EFI分区 ESP
注意这个EFI分区(EFI system partition)与上面EFI的区别,不过从名字也能看出其关系。EFI分区就是UEFI技术下,使用GPT引导的产物,里面保存的就是GPT技术下的磁盘分区信息。
确认本系统对应的ESP
系统开机,不同的EFI分区需要在BIOS中选择,同一个EFI分区中可以有多个系统。如果需要更改或者确认当前系统属于哪一个ESP,对于Linux而言,进入到root,然后运行df(必须root才能看到,其他用户sudo无法看到),/boot挂载的盘符就是对应的ESP
确认ESP的目的是因为我的系统有两个ESP,防止误删导致系统启动不了。
实际上也可以到Windows系统下通过diskgenius查看ESP内容来确认。
更改删除系统
https://www.cnblogs.com/studywithallofyou/p/16802487.html
根据另一篇文章,可以对磁盘系统进行扩充,迁移等
删除ESP中无用的信息
删除Windows后,理论上ESP中Windows相关的内容不需要了,可以删除,如果不删除也没有影响。如果删除,请确保操作正确,避免删除了其他数据导致系统无法启动
Windows
在Windows下可以使用diskgenius进行删除
Linux
进入到root用户,在/boot/efi/EFI下,可以看到其他系统对应的启动项,删除即可
这里删除后,在BIOS的启动项中就看不到了。实际上BIOS的启动项就是读取这里的信息加载起来的。
删除linux启动项上Windows的选项
上面虽然删除了,但是在启动系统时,Linux系统的grub界面还能看到Windows的选项,需要打开/boot/grub/grub.cfg,找到Windows对应的选项,删除(最好注释掉),如下示例:
### BEGIN /etc/grub.d/30_os-prober ###
#menuentry 'Windows Boot Manager (在 /dev/nvme0n1p1)' --class windows --class os $menuentry_id_option 'osprober-efi-2882-EC2A' {
# insmod part_gpt
# insmod fat
# if [ x$feature_platform_search_hint = xy ]; then
# search --no-floppy --fs-uuid --set=root 2882-EC2A
# else
# search --no-floppy --fs-uuid --set=root 2882-EC2A
# fi
# chainloader /EFI/Microsoft/Boot/bootmgfw.efi
#}
### END /etc/grub.d/30_os-prober ###
Windows相关的信息已经全部注释掉了,启动后就不会显示了
efibootmgr管理启动项
查询
efibootmgr也可以管理启动项,增加或者删除,可以先运行efibootmgr查看当前信息
$ efibootmgr
BootCurrent: 0001 当前默认启动项编号
Timeout: 0 seconds 超时时间
BootOrder: 0001,0016,0017,0018,0019,001C,001D,001B,001A 启动顺序
Boot0001* deepin deepin的启动编号
Boot0010 Setup
Boot0011 Boot Menu
Boot0012 Diagnostic Splash Screen
Boot0013 Lenovo Diagnostics
Boot0014 Startup Interrupt Menu
Boot0015 Rescue and Recovery
Boot0016* USB CD
Boot0017* USB FDD
Boot0018* NVMe0
删除
下面的语句就是把0001对应编号的启动项删除。不过这个我试着把Windows的删除,没看到哪里变化ESP内容还在,grub启动界面选项也在
efibootmgr -b 0001 -B
增加
efibootmgr除了删除启动项外,还可以增加一个启动项。
efibootmgr -c -w -L “xxxx” -d /dev/sda -p 1 -l \\EFI\\xxx\\xxx_x64.efi
-L指定一个名称
-d 系统安装的磁盘
-p 系统安装的磁盘的分区编号
-l efi启动文件,所以上面说的,如果不嫌原来的Windows启动项碍事,可以不删除,后续如果想找回,可以根据原来的格式修改一下,不过也有专门的工具可以创建efi文件。因为没有对路径加引号,所以要两个\,也可以加引号,避免转意符。
相关引导程序
refind systemd-boot opencore