操作系统

多系统折腾记

最近频繁遇上重装系统,换电脑的事情,试过了多种硬盘分配,分区的系统安装的方案,顾总结一下。

以下内容完全是根据个人经验总结,如果有理解不对的地方望看官指出。

首先从硬盘到操作系统的层级说起

 理论知识


硬盘

尺寸上分说主要分为2.5寸和3.5寸,分别是笔记本和台式主机常用硬盘型号,当然用诸如硬盘盒,阵列柜一类的设备可以无视计算机型号作为usb储存设备连入电脑 。

储存方式来分常见的有机械硬盘(HDD),固态硬盘(SSD),混合硬盘(SSHD),此外还有液态硬盘,水晶硬盘等各种奇♂怪的处于研发阶段的储存方式。

接口上分主要有SATA,m-SATA,USB,IDE,还有最近较新的USB3.1 type-c和光纤等接口的硬盘。SATA目前发展到SATA3.0,有6Gbps带宽,是台式机常见硬盘接口形式,m-SATA外观和mini PCI-E一样,和SATA遵循同一套协议,它们的区别类似于 usb type-c之于usb type-a,接口多为固态硬盘采用。

硬盘的容量每年都在增加,2011年时常见的机械硬盘容量大约300G,而现在(2017年)市面上的机械硬盘多为1-2T,而SSD受限于更加贵的制作成本,虽然也有1-2T的,但市面上仍以256G或512G为主

硬盘通常位于储存金字塔的最底层,因此硬盘的读写速度直接影响着整个系统的速度。

机械硬盘为磁盘驱动,其读写速度主要取决于单碟容量,转速,寻道时间等多个因素。但是由于磁盘这种储存介质的固有原因,目前看来机械硬盘的性能已经被压榨得差不多了,各厂家生产出的硬盘读写速度并无太大的差别,更多的只是可靠性一类的提升了。

SSD的工作方式类似于一堆闪存(Flash)颗粒组成raid,避免了机械因素,因此读写速度可以有很大的提升。由于避免了寻道时间,SSD的随机读取速度相比HDD有很大的提升,不过由于有缓存机制,计算机通常不会直接读取硬盘某个bit的数据,因此测试SSD性能时常关注4K随机读写,及一次随机读或写4KB的数据。

引导

计算机的运行本质上是运算器(通常是CPU)依次读取储存器中的二进制的指令,并依据存放在储存器中的二进制数据进行运算的过程。这里的储存器便是Cache,内存(SRAM,DRAM)和外存(硬盘,Flash,CD-ROM)了。

这样便有了一个问题,计算机启动时最早运行的指令该存放于哪里?放内存?内存一般是易失性的(掉电丢数据),不行。外存?外存也有很多种类,该怎么判断和区分呢?

BIOS与MBR

实际上,通常计算机最早运行的执行既不在内存,也不在外存,而是在BIOS(Basic Input/Output System)上。BIOS是一块ROM(只读内存),通常由各主板厂家自行设计。一开机BIOS先检查安装的RAM,键盘,鼠标等设备是否正常安装和相应,以及PCI-E等各总线上的设备,并记录中断级别和I/O地址。一切正常后BIOS会按照预先配置的启动顺序,读取第一优先级储存设备的主引导记录,及MBR(Master Boot Record)。

MBR位于储存器最前面的512bit,包含了分区表信息以及操作系统位于哪一个分区(VBR)。至此我们可以加载操作系统并把控制权移交给操作系统了。

另一种情况是MBR中包含的不是操作系统的位置,而是一段启动管理器(boot loader)代码的位置,加载运行boot loader后,再由boot loader来启动操作系统。Linux下的grub便是这种方式。

操作系统启动后询问BIOS并获得配置信息,并检查对应设备的驱动程序是否存在,如果存在将其调入内核。接管对设备操纵权。

UEFI与GPT

BIOS存在很多历史的缺陷(汇编编写啦,规范不够统一啦,最多4个主引导分区啦,启动要load一大堆东西啦等等),EFI应运而生。UEFI由EFI1.10发展而来,现在大多主板都支持UEFI,只需要在启动时进行设置即可。

UEFI采用文件系统的方式引导,它可以直接识别FAT格式文件,并直接运行其中以efi为后缀的UEFI应用程序。因此在UEFI中实现双系统很简单,只要将各个系统的引导efi文件放入硬盘中FAT格式的分区下即可。甚至安装系统也只需要将安装文件iso解压到FAT分区即可。

GPT对应于MBR,它有最多可以有128个分区,和唯一的磁盘和分区GUID(Globally Unique Identifier Partition Table Format )等优势

BIOS和UEFI指的是引导方式,一般在主板上进行选择,MBR与GPT是分区表格式,在每个硬盘格式化时进行设定。通常来说BIOS只能启动MBR,而UEFI一般使用GPT。Windows支持BIOS和UEFI启动,但是在安装完成后不能切换启动方式。OS X只支持UEFI启动。

文件系统

每个分区可以有自己独立的文件系统,主流的包括NTFS(Windows常用),ext4(Linux常用),HFS(OS X常用),FAT32(Flash设备常用),exFAT(FAT32的改良版本)等,详细的不再赘述,各操作系统都可以通过安装插件等方式来支持其他的文件系统,不过在非原生支持的文件系统下运行程序可能会出现一些问题(例如ext4的硬链接在Windows下会失效,在Windows下运行HFS格式里的软件可能会出现网络xx一类的蜜汁问题)

操作系统

主流操作系统有Windows,OS X,Linux几大类,其中Liunx和OS X是类Unix系统,因此在使用时有很多相似之处(启动过程除外…)

总结

计算机系统的启动过程是

    1. 计算机通电
    2. CPU读取内置ROM芯片中的数据,BIOS或UEFI进行系统自检,并按照预先设置的优先级依次尝试寻找各储存器,并将控制权交给该储存设备(硬盘)
    3. 如果是BIOS启动,系统确定储存器分区表的分区以及操作系统所在的分区,并将控制权转交给操作系统。如果是EFI启动,系统首先确定分区表的分区,接着寻找文件系统格式为FAT32的分区,并按照其中的内容启动EFI系统,接着按照情况启动操作系统的boot loader,将控制权转交给操作系统
    4. 操作系统启动

实践

讲了这么多理论的东西,接下来的则是操作系统的实际安装过程了,按照之前的理论,我们的双系统可以从几个层次来做:

1.两个系统放在一个硬盘里,对于笔记本这个硬盘可以是笔记本内部的硬盘或移动硬盘,区别在于接口是SATA还是USB,这种情况通常是将硬盘分成几个分区,不同的操作系统在不同的分区,操作系统的启动器来进行选择

优点是省空间,缺点则是两个操作系统的关联性较大,添加或删除一个操作系统往往会对另一个有小影响

2.两个系统放在不同的硬盘里,通过BIOS或UEFI启动顺序进行选择

优点是每一个操作系统独立安装于单独的硬盘,可以很方便的进行拆分和迁移,缺点自然是需要更多的硬盘

Windows单系统安装/重装

在操作系统正在运行时原地重装系统是不可行的,我们不能直接删掉正在运行的操作系统核心文件换成其他的,因为这个操作本身需要操作系统的支持。

  • 直接重装:如果重装前本来已经是windows系统,可以点开iso镜像文件直接重装,按照提示一步步操作即可。
  • U盘/移动硬盘安装:按照之前的说明,这一种方式相当于用另一个储存器(U盘/移动硬盘)写入另一个系统和分区表,在引导时首先选择此储存器,这样原来的操作系统并没有启动,只相当于文件,即可随意操作。用U盘分区的原理也一样。
    • 在U盘中写入iso:可以使用ultraiso等软件进行写入,详细操作不再赘述
    • 在U盘中写入PE:WinPE(Windows Preinstallation Environment)是微软开发的windows预安装环境,是一个提供了windows内核和最基本功能的微型操作系统,之前提到了U盘安装的原理是在U盘里写入另一个可以运行的小型系统,windows的iso安装文件里本身包含了这样一个小系统,PE则是另外一种。
    • 常见的微软官方PE下载链接如下winPE,除此之外还有很多国产软件提供了对PE和常用装机软件的支持,如微PE,老毛桃等,不过出于安全考虑,笔者并不建议大家使用,因为如果软件开发者在安装过程中植入恶意代码,那么因为先入为主在安装系统时插入后门,完全可以绕过所有操作系统和杀毒软件。如果确实需要使用请务必确保链接和文件的安全性
  • Ghost安装:ghost原本是用来对操作系统进行镜像克隆和备份。像之前所说的,只要硬盘里包含完整的分区表且对应的分区中包含操作系统,就可以正常启动。因此如果我们将一块含有操作系统的硬盘完整的镜像克隆到另一个硬盘上,另一块硬盘就可以启动该操作系统,这就是ghost的原理。当然实际上ghost要做的事情远不止如此,比如不同硬盘容量不一致,操作系统只占用了很小一部分空间没必要克隆硬盘全部等,都是ghost要解决的。
    • Ghost重装系统由于操作简单,速度快,已经成为大部分用户安装系统的首选方案,但是笔者并不建议大家采用这样的方式。因为ghost相当于直接拷贝一个好的操作系统,固然可以省去安装操作系统甚至一部分软件的时间,但是ghost提供者也可以在里面植入足够的后门或者安装一大堆无用的广告软件提供给下载者事实上常见的如雨林木风,番茄之家,系统之家等ghost提供站上的90%的镜像都已经植入了后门(数据来源于某手机新闻不一定可靠,但是原理上完全有可能),从而成为怎么也删不掉的辣鸡广告软件的受害者。ghost作为因此还是那句话,如果要使用ghost安装请务必确保来源的安全性
    • 直接安装Ghost:站点下载的大部分镜像可以采用这种方式,只需要几次点击,一次重启,即可自动重装系统。其原理是修改当前操作系统所在硬盘的引导,将ghost安装器放至特定位置并将硬盘的第一启动系统指向它,这样就避免了从原操作系统启动。
    • 用PE安装Ghost:大部分的PE工具箱里也提供了ghost安装,方法比较简单,按照软件秒速操作即可
  • 光盘安装这种方式现在已经比较少见了,我们可以将iso文件刻录至光盘里或直接买正版光盘安装系统,这种方式的原理和U盘安装类似,只不过将可读写的Flash/移动硬盘换成了只读的CD-ROM,启动时从光盘载入必要的数据到内存,完成安装,光盘本身不可写

Linux单系统安装/重装

Linux下成熟的系统有很多,如Ubuntu,Debian,Fedora,CentOS等。

对于Linux熟练用户相比早已深谙自己动手,丰衣足食的道理,并不需要看次文章。对于Linux新手建议首先尝试Ubuntu,一是Ubuntu在用户交互上做得不错,很适合Windows用户到Linux的转移;二是Ubuntu用户相对较多,比较容易查找遇到的问题。

  • 光盘安装:直击用光盘安装或制作U盘iso镜像安装是通常采用的方式,Ubuntu界面比较友好按照提示一步步来基本可以顺利安装。
  • U盘Linux安装器:一些大神会自己编写小的Linux安装工具,并用dd等方式和iso文件一起弄到U盘里安装,这种方式的原理和winPE一样,均是使用另一个储存器来引导和运行专门的系统。
  • 其他方式:折腾Linux就是一个DIY的过程,在这过程中我们会学到很多原理和知识,同时明白了它们我们可以按照自己想要的方式随意安装系统。

OS X单系统安装/重装

和Linux的开源自由不同,OS X是一个相对封闭的生态圈,大家都用一样的硬件一样的操作系统。

因此安装OS X的方式很简单:买台Mac。=_=

重装也只需要在开机时按住command+R,选择“重新安装macOS”即可

Windows+Linux双系统安装

  • 内置单硬盘安装:
    笔记本内置的单硬盘安装和台式机的单硬盘安装是一样的,通常硬盘采用SATA接口连接。通常建议的安装顺序是先Windows后Linux,如果先Linux后安装Windows的话可能出现识别不到Linux系统的情况。不过由于我们已经知道双系统安装在单硬盘里是通过先引导进入其中一个系统的boot loader,再通过此boot loader选择启动哪一个系统的方式实现的。因此如果已经先安装了Linux后安装Windows,也可以通过Windows自带的引导修复工具解决问题。

    • 优点:省空间,便于携带(不需要外带额外的硬盘)
    • 缺点:两个系统关联度较高,要额外添加第三个系统或去掉双系统中的一个比较麻烦,某一个系统崩溃后的重装是个麻烦事
    • 文件系统的选择:
      文件系统/分区格式是记录数据的格式,位于数据储存的最底层,不管是文件,数据亦或是正在运行的操作系统都只是文件系统记录的数据的载体。因此理论上只要是系统支持的格式,都可以用来作为操作系统的分区。也因此有的人选择将FAT32这个大部分操作系统都支持的格式作为操作系统的分区,这样的好处是两个系统之间的数据可以直接访问而无需安装任何插件。不过个人建议安装系统时最好选用默认支持的格式(例如Windows用NTFS,OS X用HFS,Linux用EXT3,EXT4等),因为之所以有文件系统而不是直接写入二进制数据,正是因为文件系统提供了除了直接数据之外的很多重要功能,像是NTFS和HFS等都是日志式系统,当数据出现错误时可以据此进行恢复,而FAT格式不是日志式系统,并不支持这种功能。Linux下的硬链接则是另一个例子
  • 外置单硬盘安装:
    这里的外置硬盘指USB接口的移动硬盘,之所以要区别于SATA接口的硬盘是因为UEFI下windows的iso原生镜像无法直接用usb接口安装。解决办法之一是将移动硬盘拆下插入笔记本里作为内置硬盘安装好后再取出来……
  • SATA双硬盘系统安装:
    通常是台式机,或者笔记本拆掉光驱组出两个SATA口。因为SATA一般不暴露作为外部接口,所以硬盘的拆装通常要麻烦一些,好处自然是携带方便
  • SATA+USB双硬盘系统:
    这种方式无疑是非常方便的,将主要使用的操作系统安装在电脑内置的硬盘里,另一个系统和引导全部安装在外置USB储存设备上。当拔下USB时是一个单独的操作系统,需要另一个系统时只需要插上USB,修改一下启动顺序即可。这样操作系统独立存于USB储存器内,当需要时只要找到任一个宿主计算机,插上即可启动。也可以用同样的方式制作第三个USB操作系统。即插即用^_^
  • USB双硬盘系统:
    和上一种类似,主要适用于没有固定宿主计算机的场合
  • 虚拟机:
    这种严格说不算是真正的双系统,虚拟机的好处多多,不仅方便,制作和删除都十分容易。缺点一是性能比实体机差一些,二是当遇上一些和硬件有关的问题(例如显卡)时,往往会比实体机更加折腾

OS X+Windows双系统安装

我们不玩黑苹果(硬件坑实在是大坑,而且OS X还是用原生配套的设备比较能提高生产力),因此和OS X有关的问题我们都假设在一台Mac下操作。

  • Boot Camp:
    OS X对Windows的双系统支持其实相当不错,只要command+space输入boot camp,按照提示一步步操作即可。这种方式对应于之前提到的“内置单硬盘双系统”,两个系统的入口通过Boot Camp管理。具体是一个十分复杂的过程,因为OS X采用EFI引导而Windows采用BIOS引导(当然最新的win10是支持EFI引导的),如果想了解详情可以参考这篇文章
  • WTG:
    现在的Windows动辄一百多G,如果全部放在Mac的Flash下实在是很浪费,因此按照“SATA+USB双系统”的思路,将Windows做成一个USB硬盘系统无疑是一种好的方式。而微软正好提供了用于在移动设备上安装Windows的WTG(Windows To GO)可以用来解决这个问题。
    WTG的思路是将Windows内容放入vhd虚拟文件内,通过预先写入的专门的系统来运行,相当于一个Windows虚拟机。支持BIOS和EFI启动。
  • 虚拟机:
    OS X下的Parallels是一款不错的虚拟机软件,如果需要较好的跨平台支持或服务器上虚拟机推荐VirtualBox,此外VMware也是一款不错的虚拟机软件。

OS X+Linux双系统安装

由于OS X本身就是类Unix系统,因此一般来说并没有太迫切的Linux双系统需求。如果真的遇到只能在Linux下操作的问题,大部分情况也不需要太高的性能要求,因此用Parallels安装一个Ubuntu虚拟机或直接用docker跑一个linux基本就能解决问题。

OS X+Linux+Windows三系统安装

目前没有遇到这种需求,如果以后真的遇到这种情况再更新吧。

By Auroraka 2016.01.02

2 thoughts on “多系统折腾记

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s