zoukankan      html  css  js  c++  java
  • 笔记本多硬盘win7下U盘安装Cnetos7引导问题!

    CentOS7出来的时间已经不算短了,前段时间一直在虚拟机上使用,最近闲下来了,就像在自己的笔记本上装一个win7和Centos7的双系统体验以下实体机的效果,几经波折之后终于顺利的装上了WIN7和CentOS7的双系统!在这里主要是想分享一下自己遇到的问题,以供网友门参考借鉴!

    首先介绍一下我的电脑配置,我的笔记本型号是Y400,一共有三块硬盘,128ssd(1号) + 1T的hdd(2号) + 1T的hdd(3号);128的SSD被分为两个分区,第一个分区装win7,第二个放游戏和一些免安装的软件;我在第二块硬盘和第三块硬盘用作仓库盘,因为都没有用完,所以随时可以从两块hdd后边划一部分出来使用!

    我刻录U盘镜像使用的是UltraISO(软碟通) ,刻录完成后的安装步骤网上已经介绍的很详细了,我这里就不多作介绍了,我在安装过程中选择的是第二块硬盘(也就是2号硬盘,提前已经在windows下画出了136G的未分配空间),选择“我要配空间”,点击“完成”后,选择“标准分区”,然后通过左下角的“+”号分区,分500mb的/boot分区,120GB的/分区,16GB的swap空间,此时然后点击完成,选择“接受更改”,然后一步一步安装配置就好,安装完成后点击重启;

    由于我的电脑是多硬盘,所以在安装Centos7时安装引导只能装在Centos7所在的那块硬盘上(默认的,如果更改也只能选择不安装引导),此时重启后的电脑没有像网上网友所说的那样“只有Centos7的启动菜单,而没有了win7的引导菜单”,我的电脑直接向往常一样直接进入win7的界面,然后启动进入win7,因为我的ssd默认为第一启动盘,而我装Centos7装在了第二块硬盘上,所以对ssd上的东西都没有影响,因此我尝试用第二块硬盘启动(F12选择以第二块硬盘启动),结果是屏幕左上角只有一个点和一个光标,此方法失败(仅仅是我的电脑这样失败了,有网友这样成功过,你也可以试一试);

    然后在网上查资料,问网友,于是乎就在win7下装了一个EasyBCD,

    然后重启电脑,就可以看到NeoSmart Linux了(这个名称可以自己改,我改为了“menu list”)。

     

    回车进入该启动项列表

    启动项列表了,这下总算弄好了,但是回车后,发现屏幕黑屏,没什么反应,于是强制重启电脑,到CentOS Linux启动项列表这里时,不按回车,按字母“E”键,查看一下启动菜单哪有问题:

    发现这个启动菜单有些问题,我的电脑是三硬盘,而我的CentOS7是装在第二块硬盘上的,上图中我用红色圈出来的那块区域中显然不对,

    set root='hd0,msdos2'  指定root为第一块硬盘的第二个分区,这里的root对应的是/boot分区(如果没有单独指定/boot分区的,这个root应该指向"/"分区)。

    题外话(基础知识补充)

    hdx,msdosy

    hd指定的是硬盘,以0开始,hd0代表第一块硬盘,以此类推

    msdos指定一块硬盘上的分区,以1开始,msdos1代表第一个分区,以此类推(其实直接写1也是可以的)

    hda 和sda的区别:

    hd代表本机磁盘接口为IDE接口

    sd代表本机磁盘接口为SCSI接口

    他们都以a开始,以hda或sda代表第一块磁盘,a,b,c,d...以此类推

    hda和sda后可以跟数字,代表第一块磁盘的不同分区;如sda1代表第一块磁盘的第一个分区;

    以我的电脑硬盘为例加以说明:

    我的电脑有三块硬盘(我电脑是scsi接口的,所以用sd描述,而没有用hd描述):

    SSD整块磁盘       分区一(C)       分区二(F)

    sda          sda1            sda2

    第一块HDD        分区一(D)       分区二(/boot)      分区三(/)     分区四(swap)

    sdb                   sdb1               sdb2      sdb3          sdb5

    第二块HDD       分区一(E)

    sdc                   sdc1

     新手们肯定会疑惑为什么第一块HDD的分区四编号为sdb5,而不是sdb4,那是因为在mbr分区模式(还有一种GPT分区没有此限制,但是我对这中分区不太了解)下一块硬盘最多有四个主分区,那么超过四个主分区怎么办?此时只能将第四块分区会变成扩展分区,在扩展分区中在进行分区,以后所分配的区域都将被成为逻辑分区,整个扩展分区代表的是sdb4,扩展分区内部进行分区时是从编号5开始的。

    如果一个电脑有一块硬盘,硬盘有两个分区,一个主分区,一个扩展分区,扩展分区里只一个逻辑分区,那么主分区就是sda1,另一个逻辑分区就是sda5

    我就说到这里,如果又不明白的或是不懂得,直接问我,或者百度,这些都是非常基础的东西。

    这句配置语句显然与我的实际情况不符,我的Centos7是装在第二块硬盘的,所以应该是hd1,/boot是第二块硬盘的第二个分区,所以这句应改为

    set root='hd1,msdos2',

    if下边那一段和else下边那一段是在寻找/boot分区,并为其设定uuid(全球唯一标示),这个东西知不知道无所谓,你只要知道if和else之间那一段中出现hd的地方都必须是hd1,msdos2就行了(这里我查过我通过虚拟机安装的Centos7的grub.cfg,事实证明确实出现hd的地方都要和root设定的值一致)。

    知道了这个我就进行了临时修改,然后通过ctrl+X执行启动菜单,结果依然无法进入系统,这就令我很郁闷,难道多硬盘引导Centos7就这么困难?

    于是就在网上发帖求教,有个大神告诉我在启动项列表 处选中第一项按"C"(或者在启动项菜单页面按"ctrl + C")进入   grub>  界面,

    然后执行(一行一行的执行,不要一次写完再执行)

    linux    (hd1,msdos2)/vmlinuz-3...     root=/dev/sdb3  (如果/boot分区不为单独分区,则执行 linux    (hd1,msdos2)/boot/vm...   root=/dev/sdb2);

    initrd   (hd1,msdos)/initramfs-3....img    (如果/boot分区不为单独分区,则执行  initrd  (hd1,msdos2)/boot/initramfs-3...img);

    boot

    上边三行代码,前两行写到数字3时可以按下tab键补齐,root前有空格,其中(hd1,msdos)代表的是/boot分区,root代表的是/分区,所以/boot分区是单独分区和不是单独分区有一点小小差别,老鸟们不要吐槽,我写这么详细主要是为了帮助新手们的!

    执行完上边的代码后果真进入了系统,进入新的Centos7配置完成后,再次手动启动了Centos7,有点郁闷,说不定以后启动系统都得用手动加载的方式了,于是我又看了下启动菜单的代码,最终发现菜单用的是linux16和initrd16,如下图

    我之前能顺利启动用的命令是linux和initrd啊,于是乎抱着试一试的心态将/boot/grub2/grub.cfg里的linux16与initrd16后的16都去掉,将set之后else之前出现hd的地方都改为了'hd1,msdos2',然后重启系统,竟然真的通过Centos的启动菜单进入系统了 。

    至此,多硬盘下,win7和Centos7双系统的引导终于算是完成了,但是现在终于能正常的使用双系统了!

    但是躁动我的并没有就此罢手,我突然想起我之前在我的双硬盘电脑上装win7和ubuntu的双系统时好像也遇到类似的情况(忘记当初有没有使用easyBCD了,但是帮同学在单硬盘上安装win7和ubuntu的双系统时确实成功了),老是无法启动成功,也没有启动项,于是我在第三块硬盘上分出一块100G的为分配空间,在那块空间安装了ubuntu14.04,安装完成后还是由于多硬盘的的关系无法启动,自己引导居然也没有成功,通过在网上查阅相关资料,grub2有一个比较方便而强大的功能,grub2-mkconfig -o /boot/grub2/grub.cfg,这条命令可扫描所有的启动项,并将其显示在启动菜单上(在linux下使用时,它只能扫描到linux能识别的盘符,如果你的windows盘的ntfs的格式,则无法扫描到windows的启动项,如果你想让它扫描到windows的启动项,就必须通过ntfs软件挂在相应的windows系统盘,挂在之后就能扫描到了,关于挂在windows盘可参照我的“Centos6.5系统初学者基本系统配置1”),因为Centos7使用的是grub2作引导的,其内部使用的是grub2,所以我直接进入CentOS7,通过root用户执行grub2-mkconfig -o /boot/grub2/grub.cfg,然后重启电脑,发现果然有有ubuntu的启动项了

    然后真的可以进入ubuntu了,看来grub2还是蛮强大的,有兴趣的可一多多研究,

    这里面还有一个不懂得地方,就是如果装单系统或是在虚拟机里装Centos7,linux16和initrd16都没有问题,系统可以启动,但是为什么在多硬盘多系统下就无法启动!如果有懂这个东西的麻烦指教一下

  • 相关阅读:
    vue过滤器
    laravel service provider(服务提供器)使用场景
    laravel下视图间共享数据的两种方法
    【实例】laravel给所有视图共享数据
    Java并发(八)计算线程池最佳线程数
    mybatis-plus多表联合分页查询
    MybatisPlusException: can not find lambda cache for this entity[]异常解决
    Swagger2学习——@ApiImplicitParams注解
    Spring Validation 校验
    SpringBoot:通过多个Context限制Bean的活动范围
  • 原文地址:https://www.cnblogs.com/Kosese-zhanglei/p/4153486.html
Copyright © 2011-2022 走看看