admin 管理员组文章数量: 887006
-
- 计算机启动
- 磁盘分区表MSDOSMBR和GPTGUID partitiontable
- 1 MBR分区表
- 2 GUID partition tableGPT分区表
- 多重系统启动
- BIOS和UEFI
1.计算机启动
当我们在一个主机上安装多个系统时(如Win7和Ubuntu14.04),都会遇到开机启动哪一个系统的问题。这里典型的情况是先安装的是Ubuntu,然后再安装win7,就会出现ubuntu启动项不见的问题。我的电脑是legacy bios+mbr,多数解决方案是使用Windows的启动管理器EASYBCD,参考http://www.crazyant/781.html,新增entry,但是并不管用,可能会遇到找不到linux启动分区的情况。反正我的就不管用。另一种解决方案是在linux下使用grub2,可以参考http://blog.csdn/ethan_xue/article/details/7538568,但是在完成sudo update-grub后,直接重启,直接进入了一个grub的命令行。于是参考http://askubuntu/questions/121008/server-boots-to-grub-prompt-after-reboot,找打了解决方法。分以下几个步骤:
1. 在grub的命令行中敲ls,会列出很多分区,比如(hd0,msdos8),你需要明确你的linux安装在哪个分区比如我的是sda8。然后执行如下几个命令
2. set root=(hd0, msdos8)
3. linux /vmlinuz root=/dev/sda8 ro
4. initrd /initrd.img
5. boot
等待一会儿,就会启动ubuntu了。进入ubuntu后执行update-grub命令,再次重启,发现再次进入grub命令行界面。于是又重新执行上述步骤,进入ubuntu之后又执行grub-install –recheck/dev/sda,然后重启,结果成功了。经过多次重装系统之后,想搞清楚关于分区和多系统启动的原理,下面会详细讲述。
2.磁盘分区表MSDOS(MBR)和GPT(GUID partitiontable)
我们知道,不管是windows还是linux,都存放在磁盘中,并且由自己的启动程序boot loader启动。计算机开机的时候就得找到引导他们启动的boot loader的位置。而要找到boot loader,就必须要有描述boot loader位置的元数据信息。但是,计算机加电之后内存中并没有程序啊?怎么找到元数据信息呢?首先,我们需要知道的是,计算机在按下开关之后,就会运行第一个程序,但这个程序并不是操作系统的程序,这个程序实际上是固件(已经写入主板的程序),也就是BIOS(Basic Input/OutputSystem)。这个BIOS的作用就是做各种硬件检测,读取参数,并存入CMOS中。此时,BIOS的作用之一就是找到boot loader。不同的计算机厂商都是开发各自的BIOS,而boot loader在磁盘上,如果需要大家统一,最好的方法就是约定boot loader必须装在磁盘的某一个固定的位置(比如磁盘开始的第一个扇区的512Bytes)以便BIOS读取boot loader到内存。因此,早期的设计就是主开机记录MBR(Master Boot Record),里面装着boot loaderÿ
本文标签: 双系统 Linux Windows BIOS MBR
版权声明:本文标题:Linux和windows双系统启动问题之一(win7 + ubuntu14.04 + legacy bios + mbr) 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/jishu/1731977848h1515195.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论