目录
安装并使用grub2引导Centos.iso文件进行安装Linux操作系统
安装前的知识及工具
在安装之前我么需要知道三件事:ISO镜像文件,grub2,硬盘分区。和两个工具:Ext2Fsd,grub2(Windows版)。下面来讲讲这些。
1. ISO镜像文件
ISO是光盘的镜像文件,就是我们可以用ISO文件来刻录到光盘或者u盘中,进行安装系统。
ISO镜像下载官网:https://mirrors.bfsu.edu.cn/centos/7.9.2009/isos/x86_64/
我这里用的是中国外国语大学镜像站。
如果你要安装Linux的话,我们可以先下载这个ISO文件,因为它比较大,4g多。
记得下载完把.iso文件名改成Centos.iso,方便引导的时候引用。
u盘插到电脑上就是硬盘,既然如此,我们可以直接从本地硬盘安装。无非就是u盘插上后可以设置u盘成为系统启动项(也就是和系统分区(下面介绍)一个作用)。
2. grub2
接着上面的讲,我们遇到一个问题,就是本地硬盘没有启动项,也就是系统开机并不能在本地硬盘里找到操作系统的内核并加载到内存进行。而且u盘是ISO文件刻录进去的,并不是直接复制。
那该怎么办呢?这就引来了我们的grub2,grub2是一个多操作系统启动程序,其实它是Linux系统自带的工具,但我们是在Windows环境下,所以我们需要先下载grub2Windows版,然后用它来进行引导Linux的ISO文件。
下载官网:http://ftp.gnu.org/gnu/grub/
我们这里选择grub-2.06-for-windows.zip下载
3. 硬盘分区
什么是分区呢?就是我们常说的CDEF盘,这就是分区。分区中有系统分区。系统分区分MSR和EFI两种。这对应两种不同的系统。
我们传统的系统引导有两种:BIOS(老早以前的,因缺点太多,快退出历史舞台了)和UEFI,BIOS中有个MSR分区,UEFI中有个EFI分区(就是上面说的系统分区)。 操作系统是从这两种系统分区开始加载内核的,意思就是我们需要在硬盘中创建一个EFI系统分区或者MSR分区。
那么 如何区分你的computer是哪种呢?
我们在桌面右击此电脑->管理->存储->磁盘管理,就能看到你的硬盘以及分区情况,几个磁盘就是有几个硬盘,接下来在磁盘上右击->属性->卷->磁盘分区属性,如果有GPT的字样,那就是UEFI,反之,BIOS。
在Windows中,通常以NTFS或exFAT或FAT32类型来分区,虽然说Linux能识别FAT32分区,可是这个分区最大文件不能超过4g,我们在Linux中,则用ext2/3/4。由于Linux识别不了Windows的分区,所以它在grub中引导时就无法访问到ISO文件,那我们又该如何创建Ext2/3/4分区呢?
工具:Disk genius
下载官网:https://www.diskgenius.cn/download.php
创建方法看这篇文章:使用Disk Genius进行Ext3分区_北·迁~的博客-CSDN博客
我们创建好Ext2/3/4分区后Windows也访问不到这个分区呀,这就要用到Ext2Fsd工具了,它可以让我们在为Windows中进行访问Ext分区。首先我们肯定需要下载这个工具吧。
下载官网:https://sourceforge.net/projects/ext2fsd/files/
打开后直接点绿色的下载exe按钮就行。在安装之前,一定要把Windows的病毒工具给关闭,本人就是吃了这个亏,为啥呢?因为安装后使用时没效果呗,(白干......给我整emo了)。
打开下载的exe安装包后,参考下面这篇文章进行安装并设置。(主要是太多了放不下,hhh~~~)
文章:Windows下安装并使用Exet2Fsd进行分区读写文件_北·迁~的博客-CSDN博客
安装并使用grub2引导Centos.iso文件进行安装Linux操作系统
介绍完知识后并按照上面的步骤设置后,就该进入正题了嘎嘎嘎~
1. cmd命令行创建EFI系统分区
因为grub2几乎可以引导所有操作系统嘛,所以我们得把它放在EFI系统分区。
在任务栏右击win图标,选择Windows PowerShell(管理员),(如果找不到,参考在Win10/11中打开PowerShell的8种方法(包括以管理员身份))
输入diskpart,进入diskpart工具。然后list disk,这会查看你电脑的磁盘数量,看看你想在哪个磁盘安装Linux,就输入以下命令
select disk 0
因为我电脑0号磁盘大,所以我选择0磁盘。然后我们输入
create partition efi size=5120
这会创建一个EFI分区,大小为5120MB。然后我们用list partition命令查看当前磁盘的分区列表。类型为系统的就是我们刚创建的EFI分区,记住EFI分区是几号
接下来我们需要为EFI分区指定盘符,依次输入以下命令
sel partition 3
assign letter=k
这样我们就为EFI分区指定了盘符,可以通过盘符访问了(以管理员身份)
删除指定的盘符命令为
remove letter=k //删除指定的盘符
exit //退出diskpart工具
2. 安装grub文件并重启电脑
我们在c盘新建一个boot目录,然后解压grub2-2.06-for-windows.zip到c:/boot/grub2-2.06-for-windows目录中去。
cmd输入wmic disdrive list brief列出本地磁盘信息
可见我们要安装的目标为本地第一块磁盘即为\\.\PHYSICALDRIVE0这条。(从Size的大小判断)
输入cd\回到c盘根目录,然后输入一下命令进入grub-2.06-for-windows目录:
cd boot/grub-2.06-for-windows
然后我们运行grub-install.exe,这个文件可以给它设定参数,target的意思是x86架构的64位操作系统,后面的意思是指定k盘为EFI的目录,在k盘下指定boot为根目录。
grub-install.exe --target=x86_64-efi --efi-directory=k:--boot-directory=k:\\.\PHYSICALDRIVE0
可能会提示未正确安装,我们来查看一下是否安装了
还是powershell工具,管理员身份运行(以后同下)
输入以下三条命令
k:
cd boot/grub
dir
如果是一下有多个目录,说明我们安装成功了
然后我们吧ISO文件复制到我们创建的Ext3分区(G盘)根目录中去
然后在powershell中输入以下命令
k:
cd boot/grub
notepad grub.cfg
会在grub目录中创建一个grub.cfg文件并用记事本打开,这是一个配置文件,可以生成菜单项。具体信息见:https://www.gnu.org/software/grub/manual/grub/html_node/index.html#SEC_Contents
在打开的grub.cfg中 我们输入一下信息:(#表示注释)
set timeout=5 # '#'号表示注释,设置时间为5秒,如果5秒内不进行选择,则自动选择默认项
set default=0 #设置默认菜单,从0开始
#menuentry表示菜单,''里的表示菜单标题,--unrestricted表示改菜单可供所有人使用
menuentry 'windows 11' --unrestricted {
set root=(hd1,gpt1) #设置当前根分区,hd几就是几硬盘,gpt几就是几分区,硬盘是从0开始,分区从1开始,我设置的这个是磁盘1的EFI系统分区,也就是Windows加载程序所在的分区
insmod part_gpt #导入gpt分区模块
chainloader /EFI/Microsoft/Boot/bootgmfw.efi
}
meuentry 'install Centos 7' --unrestricted {
set root=(hd0,4) #这是ISO文件所在的分区,如果不知道可以在grub命令行输入ls查看(windows无法进入grub命令行,重启按c就行)
loopback loop /Centos.iso # 相当于给ISO文件定义了个别名,以后引用加括号就行
linux (loop)/images/pxeboot/vmlinuz inst.stage2=hd:/dev/sda4:/Centos.iso inst.repo=hd:/dev/sda4:/Centos.iso
initrd (loop)/images/pxeboot/initrd.img
}
#linux 表示加载Linux的内核压缩文件vmlinuz
#inst.stage2指定要加载的安装程序映像的位置,Hat官网说它会在给定目录里寻找.treeinfo文件,不信你用压缩软件打开ISO文件看看,有没有一个.treeinfo文件
#inst.repo指定安装源,所以我们要指定到ISO文件,这两个文件的表示路径hd:表示硬盘,/dev/sda4是Linux的分区表示形式,sda表示磁盘0,sdb表示磁盘1
#initrd 表示将程序文件加载到内存,便于启动系统,该命令必须紧跟在linux后使用
保存后,删除EFI分区指定的盘符k。然后重启,选择‘install Centos 7’选项,就进入安装界面了。(如果没有菜单和grub命令行,而是直接进入Windows的,开机进入BIOS,设置grub所在的EFI系统分区为第一启动项就好了)。
记得安装成功后在linux里面删除/boot/grub目录,因为linux自带grub,我们使用linux自带的grub,就可以在linux中使用grub命令行啦。别忘了哦。
在这最后我们说一下,如何安装其他linux发行版,首先就是vmlinuz和initrd.img的位置,在ISO文件中它可能有多个位置,不信你看看Centos.iso/isolinux中有没有,那我们该如何正确指定这两个位置呢?其实我们可以参考ISO文件中的grub.cfg呀,因为linux自带grub嘛!我们在ISO文件中找到grub.cfg(一般就在根目录里),打开它,查找linux菜单;其次就是安装源的问题,这个可以在linux发行版官网进行查找。
总结
编者也是自己在网上查阅摸索出来的,如有不足之处,评论区请指出。
最后,认识一下吧,我叫北迁~,一位正在走上编程之路的大学生~~
希望你我越来越强,hhh~~~
下一篇文章,如何自定义grub菜单主题,编者附上自己的主题: