windows下为另一个硬盘装centos(不使用第三方存储工具)

windows下为另一个硬盘装centos(不使用第三方存储工具)

前言

我在前段时间需要为一个新硬盘安装centos系统,但手边没有U盘等第三方存储工具,所以在网上找了很久这方面的帖子,发现有通过vmware为同一块硬盘安装ubuntu的,但那篇帖子用到了ubuntu可以直接访问其他分区文件的功能,而虚拟机下的centos做不到这一点,但这让我感到windows下为同一块硬盘安装centos存在可能,于是在大量找文章时找到了一篇对理论讲的比较详细的帖子,基于这篇帖子我成功为新硬盘安装上了centos(非常感谢这位大佬),当然中间也碰到过很多小问题,因此写下这篇帖子记录这些问题及其解决思路,希望能帮助大家对windows、linux文件格式、文件系统、硬盘分区、映像文件及其引导文件有更深层次的理解。
参考链接:手把手教你不用u盘在Windows中安装centos 7(最全教程)

理论基础

首先我们回想一下我们借助U盘安装linux系统的过程:首先我们需要下载一个iso镜像文件,然后我们借助U盘引导工具(例如:Rufus、大白菜等等),然后使用U盘引导工具把iso镜像文件写入到U盘上(注意这一步会格式化掉U盘上的数据,因为需要修改U盘的格式并新建引导分区,这些步骤的目的是让电脑在开机的时候能识别到U盘上的启动选项并基于此引导安装镜像文件),最后是关机重启,在重启时我们就能看到U盘启动项,选择后就直接启动了U盘上的引导程序。这样很快一个linux系统就能安装成功了。

我们在不使用U盘为新硬盘安装linux系统也需要经历上述步骤,但形式上有些不同,大致步骤就是:在新硬盘上创建分区->把映像文件复制到新硬盘的新分区上->在新硬盘上创建EFI分区使电脑开机时能识别到此启动项->在新硬盘上存放镜像文件的分区上安装映像文件->写一个引导启动的文件,为计算机指明要运行的程序->开始安装。

上述过程中会遇到的一些问题:
第一步是在新硬盘上创建分区,我们可以借助DiskGenius这个软件进行分区,需要注意的是分区表有两种:MBR和GPT,这里我们选用GPT。
由于我们需要安装的是Linux系统,所以需要把分区的文件系统类型设置成Ext2/3/4等Linux使用的文件系统类型(Windows使用的大多是NTFS、ExFAT或Fat32类型的文件系统,Windows和Linux的文件系统不兼容)

第二步是复制映像文件至新硬盘的分区,这一步遇到的问题是Windows下无法直接访问Ext2/3/4文件系统的分区,所以无法直接把映像文件放进去。
好在已经有大佬制作了用于Windows和Linux的文件系统之间访问问题的软件——Ext2Fsd,这个软件可以把Linux的文件系统进行“翻译”,使Windows系统能看到Ext2/3/4格式的分区并写入映像文件。

第三步是在新硬盘上制作EFI分区,EFI分区是一个使用FAT32格式的小分区,通常为100MB左右,其中存储已安装系统的EFI引导加载程序以及启动时固件使用的应用程序。这个分区会在开机时被识别,我们可以把引导程序放在这个分区内,使计算机在开机时能找到并执行引导程序。
创建efi分区可以以管理员身份打开powershell或cmd窗口使用diskpart相关命令创建EFI分区。

第四步是把镜像文件写入到新硬盘的分区上,Windows下每个分区都有一个“盘符”作为标识,我们刚刚使用Ext2Fsd可以让Windows系统识别到新硬盘的分区,但此时该分区是未分配状态还不能直接使用,所以需要以管理员身份打开powershell或cmd窗口使用diskpart的相关命令为新分区指定盘符。然后我们使用grub帮助我们构建引导程序,grub是一个非常强大的软件(但作为没研究过操作系统的小白这还是第一次听说,但是也确实感受到它的作用了hhh~),关于grub的信息我就步过多赘述了详情请大家移步这篇帖子或网上的其他帖子:grub

第五步是我们需要自行编写一个文件,这个文件是给grub程序使用为其指明该去哪里运行哪些程序使用的,因为我们在硬盘的分区上安装镜像文件后会出现很多文件(所谓安装镜像文件其实就是解压镜像文件,不同的linux系统镜像解压后的文件也不同,所以我们如果想安装其他发行版的linux需要根据解压后的文件进行调整),grub并不知道它需要运行哪些程序,所以需要我们指明。

理论部分到此就结束了,现在话说得很笼统,一部分原因也是因为本人知识水平有限,敬请大家原谅,若有问题可在评论区发出来欢迎大家一起帮忙解决。

实践开始

软件准备:
1.DiskGenius: DiskGenius官方网站
2.Grub:Grub 这里我选择的是grub-2.06-for-windows版本,可正常使用。
3.Ext2Fsd:Ext2Fsd
4.Centos7.9镜像文件:Centos7.9 我们选择CentOS-7-x86_64-DVD-2009.iso这个文件下载即可。

除Centos7.9镜像文件外的其他软件我放在百度网盘中,大家可以自行下载:链接直达
链接:https://pan.baidu.com/s/1pz87ieekh3ehrrFcz1_CYA?pwd=4jc3
提取码:4jc3

第一步,在新硬盘上创建分区:
打开DiskGenius软件,为新硬盘:
请添加图片描述
请添加图片描述
这里我建立了第一个分区并为之分配了50GB空间,这个分区的目的是为了存放并安装镜像文件,Centos7.9有LVM机制即使这50G这会儿我们用不完后续也会被利用起来,所以不用担心容量浪费(但也不能分配过大哈,因为LVM机制也需要消耗一点额外容量的)。

第二步,将镜像文件复制到新建的分区:
此时Windows还不能访问上一步新建的分区,我们需要借助Ext2Fsd来帮助访问。
Ext2Fsd软件可能会出现问题,它没有明显的错误提示,在我最开始使用的时候我按照网上的帖子使用但没有发现其实软件没有正常运行,耽误了很长时间,因此在这里提示大家注意下面的界面:
请添加图片描述

请添加图片描述
第一张图是确认版本,我这里使用的是0.68版本,现在最新的是0.69版本但可能存在不兼容等问题,所以推荐使用0.68版本。(如果你最开始安装的版本不能正常使用后续又更换了其他版本的花建议查看一下你当前软件的版本,因为之前的版本你可能没有卸载成功,导致你来回换了几个版本但其实用的还是最开始的不兼容的版本。)
第二张图是确定软件可以正常运行,图中“当前状态”一栏中显示Ext2Fsd is already started.表示软件已经正常启动。
第一张图:帮助->关于本程序
第二张图:工具与设置->配置文件系统设置

在确认程序正常启动后我们可以按照下面帖子内的内容进行操作:Windows下使用Ext2Fsd进行分区读写

第三步,在新硬盘上制作EFI分区:
请添加图片描述

请添加图片描述
这里用到的代码块:

#使用管理员身份打开powershell或cmd,图中展示的是powershell,命令是通用的,使用cmd效果一致。
#这里 “#” 代表注释,#标识的行不需要运行。

#首先使用diskpart命令运行diskpart工具,这是windows系统管理磁盘的工具。
diskpart    
#然后列出当前电脑上有几块硬盘,我得电脑上当时有两块硬盘
list disk
#list disk命令列出硬盘的同时会为每给每块盘一个数字标识,我们可以借助数字标识选中其中的某块硬盘,这里我选中了标识为0的硬盘
select disk 0
#列出选中的硬盘上的所有分区,因为此时我只创建了一个分区,所以这里也只显示一个。(剩余的空间都是未分配状态,windows不能直接使用)
list partition
#创建efi分区,用于后续存放镜像文件引导程序。
create partition efi size=1024
#为当前选中的分区分配盘符。刚创建efi分区,系统默认选中的是efi分区,如果你不是刚刚创建可以使用 list partition     、    select parition (efi分区的标识) 这两条命令选中。注意盘符不能与已有的重复。
assign letter=k

第四步,把镜像文件写入新硬盘的分区:
首先我们需要把镜像文件粘贴到新硬盘的分区上,可以直接粘贴也可在cmd使用命令行。
请添加图片描述


#使用wmic disdrive list brief列出当前电脑上的硬盘,我们需要关注新硬盘的名字对应的DeviceID
wmic disdrive list brief
#移动到grub-2.06的安装位置
cd boot/grub-2.06-for-windows
#使用ls命令列出当前文件夹下的所有文件,如果和图中一致则表明当前位置可以。
ls
#执行下面的命令启动当前文件夹下的grub-install.exe程序,其中--efi-directory=k: 和--boot-directory=k :表明要在盘符为K;的分区安装镜像文件,\\.\PHYSICALDRIVE0表明要在这个DeviceID的硬盘上安装,因此要注意之前分配的盘符和要安装系统的硬盘的DeviceID。
grub-install.exe  --target=x86_64-efi  --efi-directory=k:   --boot-directory=k:   \\.\PHYSICALDRIVE0

#出现 Installation finished. No error reported.表示安装成功。

第五步,编写引导文件:

#如果出现多个目录则表明我们安装成功了。
k:
cd boot/grub
dir

#下面开始写引导文件。
k:
cd boot/grub
notepad grub.cfg

对引导文件的解释请大家参考原博主的解释和网上的其他资料:手把手教你不用u盘在Windows中安装centos 7(最全教程)

#设置菜单出现10秒
set timeout=10
set default=0


#设置图形界面,否则将会出现找不到输出媒体的报错(实际上引导程序已经运行成功了)
set prefix=(hd1,gpt2)/boot/grub
insmod efi_gop
insmod font

if loadfont ${prefix}/fonts/unicode.pf2
then
        insmod gfxterm
        set gfxmode=auto
        set gfxpayload=keep
        terminal_output gfxterm
fi

#下面的路径需要根据自己设备的实际情况进行填写,你可能需要补充很多grub的知识点,这个步骤提示很少你可能会很崩溃,祝你好运~
#注意CentOS.iso是因为我在复制镜像文件的时候把名字也修改了。
menuentry 'install Centos7' --unrestricted{
	set root=(hd1,1)
	loopback loop /CentOS.iso
	linux (loop)/images/pxeboot/vmlinuz inst.stage2=hd:/dev/sda1:/CentOS.iso inst.repo=hd:/dev/sda1:/CentOS.iso
	initrd (loop)/images/pxeboot/initrd.img
}


其中大家可能会遇到没有图形界面、由于硬盘位置更改导致进入救援模式等等大量的问题,这可能需要大家补充一些grub、引导centos安装程序、Linux文件系统(例如:挂载操作、LVM等)的知识,中间可能会让大家很崩溃,但也希望大家不要气馁,这些问题应该都是可以解决的,崩溃的时候转移一下注意力然后静下心的时候思考各个操作背后的逻辑,才能应对各种不同的问题。

最后祝愿大家不断成长,生活快乐学业有成~ 加油加油加油!!!

  • 39
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值