法律状态公告日
法律状态信息
法律状态
2020-07-10
未缴年费专利权终止 IPC(主分类):G06F9/445 授权公告日:20180413 终止日期:20190714 申请日:20150714
专利权的终止
2018-04-13
授权
授权
2015-12-09
实质审查的生效 IPC(主分类):G06F9/445 申请日:20150714
实质审查的生效
2015-11-11
公开
公开
技术领域
本发明涉及电子技术领域,具体说是基于链式引导和动态修改分区表的任意多系统的安装方法。
背景技术
目前越来越多的跨平台开发与应用,需要对多操作系统的支持,比如Windows、linux、Mac等,再加上各个系统的不同的版本与分支,组合就更多,对多操作系统的需求就更加迫切。
虽然纯软件的APP应用可以通过虚拟机来满足,但是一些与硬件相关的开发,如驱动,使用虚拟机则无能为力。
因此常规的跨平台开发与应用需要安装多台机器,极不方便工程应用。
另一方面,目前计算机硬盘空间远远超过一般存储需求的大小,此时只安装一个操作系统,造成硬盘空间的极大浪费。
虽然专利《一种实现多操作系统的方法及电子设备》实现了一种多系统的安装,但是其实现的操作系统个数少于分区个数。
根据现有的MBR分区机制,最多有四个主分区,而启动分区只能是主分区。
虽然理论上GPT分区表对分区个数没有限制,但实际上一些操作系统对GPT分区启动存在一定的限制,无法实现任意分区启动,
因此现存的多分区启动,无法实现多于四个操作系统的安装。
目前大部分多分区启动都是基于BIOS层以及Bootloader的一级引导机制方法,只能实现简单的开机引导,二次扩展开发的难度很大。
发明内容
为解决上述技术问题,本发明采用链式引导加动态修改系统分区表的方法来实现任意多系统的安装,突破操作系统安装个数受硬盘分区个数的限制。
为实现上述技术目的所采用的技术方案是:基于链式引导和动态修改分区表的任意多系统的安装方法,包括以下步骤,
步骤一、在常规开机启动流程中增加一级通用的Bootloader,变成两级Bootloader组成的链式启动,改进的后开机流程:首先BIOS从MBR中加载第一级Bootloader,称为Bootloader1,并且由Bootloader1加载相应操作系统的Bootloader,称为Bootloader2,而由Bootloader2加载与启动相对应的操作系统;
步骤二、把整个硬盘分为四块,分别放置在四个主分区:Muti-system、Data、MaintainOS和Bootloader。其中Muti-system分区用来存放各种操作系统,各个系统分时复用同一个分区,Data分区用来存放各系统之间的共享数据,MaintainOS分区安装一个基本的定制linux操作系统,用来动态的修改分区表实现系统的切换,Bootloader分区用来存放Bootloader1,以及操作系统划分表,Bootloader2则存放在Muti-system分区中各自操作系统空间的起始部分;
步骤三、利用linux启动盘,把MaintainOS安装放在MaintainOS分区,启动进入MaintainOS,并在MaintainOS中把Bootloader1安装在Bootleader分区,同时建立操作系统划分表,放在Bootloader分区。根据切换方法,切换到对应的系统空间,进行正常操作系统安装;
所述的切换方法为:
步骤一、把操作系统划分表中相应的系统状态置为1,其它系统的状态置为0,并把二级启动分区改为MaintainOS;
步骤二、重启机器,Bootloader1根据启动分区的状态加载MaintainOS对应的Bootloader2,由Bootloader2启动MaintainOS;
步骤三、MaintainOS根据Bootloader分区中的操作系统划分表中激活的系统项来修改Muti-system分区的起始地址,并把二级启动分区改为Muti-system分区;
步骤四、重启机器,Bootloader1根据启动分区的选项链式加载Muti-system的对应的Bootloader2,启动相应的OS;
步骤五、切换完毕。
本发明有益效果是:
1、本发明提供一种任意多操作系统的安装方法,突破了操作系统安装个数受硬盘分区个数的限制,其安装的操作系统个数只与硬盘容量大小和操作系统所占的空间有关,并且各操作系统之间相互独立、互不影响。
2、本发明采用定制的linux操作系统,容易进行二次开发、扩展与网络集成。
A、对于系统的备份与维护,就是一般的linux文件操作,开发和日常操作难度都很小,并且极容易实现自动和定时备份。
B、由于linux操作系统本身提供网络的支持,可以把操作系统划分表放在远程的服务器端,从而实现多操作系统的远程切换。
C、备份也可以另外添加存储设备(只要MaintainOS支持即可),也可以实现远程备份。
D、系统和数据之间的分区是独立的,因此系统之间可以共享数据分区。
附图说明
图1为启动流程图;
图2为分区表结构图;
图3为多系统硬盘分区方案;
图4为操作系统划分表。
具体实施方式
本发明所要用的支持链式启动的Bootloader1要满足两个条件:
1、支持链式启动。
2、支持大部分的文件系统。
例如可以用grub作为一个通用Bootloader1。Bootloader2则采用各个操作系统所对应的Bootloader即可。例如windows可以用其自带的,而linux可以用grub,lilo等等。
MaintainOS采用定制的linux,可以使用gentoo来进行定制。
只需要安装最基本系统就可以,不需要安装XWindow。
本发明把整个硬盘分为四块,分别放置四个主分区(Muti-system,Data,MaintainOS,Bootloader),刚好满足MBR的分区表最多只有四个主分区的要求。因为MBR分区表存放在硬盘第一个扇区的最后64字节,每份分区表占据16个字节,正好四个分区。
分区表结构如图2,本发明通过调整分区的开始地址、结束地址以及分区的大小实现分区表分时复用。
本发明中所有操作系统分时共享Muti-system分区。Data、MaintainOS和Bootloader1分别独占一个分区。通过MaintainOS动态的改写分区表中Muti-system分区始止地址实现操作系统的切换,分区的顺序分可以随意调整。一般的分配策略是顺序分配,如图3所示:
1、Muti-system分区用来存放各种操作系统,安装的操作系统个数取决于硬盘容量的大小。例如需要安装6个系统,每个系统120G,那么就需要600G的硬盘空间。
2、Data分区用来存放各系统之间的共享数据,其大小由硬盘的剩余空间大小来确定。
3、MaintainOS安装一个基本的定制linux操作系统,用来实现系统切换以及系统的备份(一般情况下需要2G左右空间)。
4、Bootloader分区用来存放Bootloader1,以及操作系统划分表(如图4),而Bootloader2则存放在Muti-system分区中各自操作系统空间的起始部分。
(一)多系统安装过程
1、根据需求以及硬盘的大小,计算出分区大小,对硬盘进行分区。
2、利用定制的linux启动盘,把MaintainOS安装放在MaintainOS分区。
3、启动进入MaintainOS,并且MaintainOS中把Bootloader1安装在Bootleader分区,同时在Bootloader分区建立操作系统划分表。
4、根据本发明中操作系统切换方法,切换到对应的系统空间,进行正常的操作系统安装。
实施例1
(一)我们以1T的硬盘,安装六个操作系统为例。硬盘分配方案如下:
这里开始地址/结束地址,是硬盘的(LogicalBlockAddress)LBA地址,并以cyls为单位(大小为8K)按照1G=1000M,1M=1000K计算,并取整得到。这些单位可以查看:sfdisk-l-uC来查看。
(二)具体实现步骤
1、用sfdisk对硬盘进行分区
六个操作系统分时共享同一个Muti-System分区(每一次只激活一个系统),而Data,MaintainOS,Bootloader各自独立一个分区。根据上表,写入真正的分区表。
sfdisk/dev/sda<<EOF
1,14589,L#Win7
87541,33572,L#Data
121114,243,L#MaintainOS
121358,243,L#Booloader
EOF
2、安装定制的gentoo到MaintainOS分区。
3、安装grub到Bootloader分区,并且配置menulist
timeout3
defaultsaved
titleMaintainOS
rootnoverify(hd0,2)
chainloader+1
savedefault1
titleMuti-System
rootnoverify(hd0,0)
chainloader+1
savedefault1
4、把操作系统划分表存放在Bootloader分区。
5、在gentoo中添加开机自启服务。自动读取Bootloader分区的操作系统划分表,并据此修改分区表中Muti-System分区的地址。
6、Bootloader分区在所有系统中都是可见的。在需要切换的时候,只要修改grub/default的启动选项为MaintainOS分区,同时修改对应的系统的状态即可,重启机器即可切换。
机译: 生成与用于检测任意长度位串输入是否与多个已知任意长度位串之一匹配的多个已知任意长度位串相关联的基于对数-基于哈希的分层数据结构
机译: 光纤引导部件的安装方法,使用该引导部件的安装装置以及光纤引导部件的安装方法
机译: 光纤引导部件的安装方法,使用该引导部件的安装装置以及光纤引导部件的安装方法