Table of Contents 准备: 1、gpt分区形式移动固态硬盘一个, 2、VMware Workstation Pro ,下载地址 3、bootice,下载地址 4、xorbootu,下载地址及教程 5、wtga,下载地址及教程 7、centos x86_64版下载地址https://buildlogs./rolling/7/isos/x86_64/,推荐everything版本 9、diskgenius软件,百度下载 10、vhd文件扩容教程 11、打开efi分区的方法
一、基础知识1、计算机启动过程参考文章https://www.jianshu.com/p/f11e6e5d5c81 windows10的uefi + gpt大致启动过程:通电 -> 读取并展示所有可引导的存储设备 -> 用户选择或默认第一个硬盘 -> 读取第一个FAT格式的分区 -> 执行EFI/Boot/bootx64.efi文件 -> 加载启动管理器EFI/Microsoft/bootmgfw.efi并读取bcd文件 -> 按bcd中信息和用户选择(只有一个就不用选)启动对应操作系统 -> 一般是加载指定分区(如c盘)的Windows/system/winload.efi文件 windows10的BIOS + mbr大致启动过程:通电 -> 读取并展示所有可引导的存储设备 -> 用户选择或默认第一个硬盘 -> 读取硬盘的mbr(主引导记录,在第一个扇区,512字节) -> 据此在分区表中检查活动分区位置 -> 在活动分区的分区引导记录(PBR,活动分区引导记录也称DBR,大约1M的分区,一般打不开,需要bootice才能编辑)中查找bootmgr和Boot/BCD -> 据此加载指定分区的windows/system/winload.efi文件,启动系统 win10的efi启动 <==> gpt磁盘,BIOS启动 <==> mbr磁盘 gpt磁盘和mbr磁盘的区别就是gpt一定会多出一个efi分区保存分区信息,mbr则是保存在第一个扇区。 二、安装windows到vhd方法一、使用wtga使用wtga非常简单,选择ISO文件,目标磁盘,vhdx模式,uefi+gpt,600gb,其他默认就行了。 1、要注意要在本地磁盘系统上进行制作,若是移动磁盘上的系统则有可能提示创建vhd文件失败而失败。 2、对多种类系统不友好。若安装Linux会使用其他引导程序,对efi分区产生改动,就会使原来的引导故障。 3、若改动后启动蓝屏,应该使用bootice高级模式编辑bcd,修改windows boot manager的applictiondevice为该移动硬盘(坏了是unknowdevice),但是一个问题是只能引导一个了,多个的话也不会出现选择界面 4、也不利于备份查看。无法直接用虚拟机进入系统中查看系统。 方法二、使用vmware1、首先创建vhd磁盘到移动硬盘:计算机管理 -> 磁盘管理 -> 操作 -> 创建vhd,30GB,固定大小,vhd后缀。 必须是固定大小,动态的引导要用win10专用程序,不然启动时会提示vhd host space not enough。然后再初始化为mbr磁盘,分配盘符。这里也不能是gpt,因为不好引导。 2、打开vmware,创建自定义虚拟机: windows x64类型,BIOS启动方式,物理硬盘(整个磁盘)。这里物理硬盘选择我们刚刚创建并挂载的磁盘,可以进磁盘管理找到对应的序号。 3、进入设置,选择CD,指向安装ISO包。 4、启动,等待安装,重启,关机。再去磁盘管理分离vhd。 5、打开xorboot,第三个选项(uefi启动序列) -> 导出xorboot.efi 6、新建菜单,类似下面这样 7、OK,完成了,可以重启,f12,选择磁盘,选择这个系统启动了 8、优点:可以在另外一个系统,挂载磁盘,用BIOS启动类型的的虚拟机登录系统。只是需要手动扩容,无大碍。 9、可能开机总是弹出一个什么优化提示,那是因为屏蔽了本地硬盘,系统优化缓存没地放,可以启用一个本机盘就行。无大碍。 附win10开机自动挂载虚拟磁盘的方法:1、手动点击磁盘文件,弹出错误,需要去磁盘管理手动联机并分配驱动器号。 2、保存下面为bat文件
进win10设置,关闭自动播放,就不会每次启动弹出资源管理器了 3、控制面板 -> 管理工具 -> 任务计划程序 (打开启动任务)创建任务。 常规 -> 选择用户和不管用户登录都要运行 ,使用最高权限运行 操作 -> 添加bat文件 触发器 -> 用户登录时或者开机时,看你需要
三、安装Linux到vhd安装Linux到vhd是比较麻烦的,Linux不好的看教程都看不懂。我是搞整整两天才成功,看了无数的教程。主要教程地址: 这是无忧论坛的niumao大神写的,这应该目前唯一可用的原创启动vhd中Linux的教程,我找遍全网,基本是复制他的方法,在国外论坛是也是被推荐了这个网址,有兴趣的兄弟可以去这个论坛研究一下。 我示例用的ubuntu,制作好了需要的两个启动文件了,有兴趣的可以拿来直接用。下载地址https://pan.baidu.com/s/1xh6iwybAdIt2KjyJmet1hw,提取码 rzih。里面也包含教程和标准文件。 grub2启动菜单写法如下:
1、使用grub2引导从这里下载grub2-for-windows,https://www./en/install-grub2-from-windows/#Download 制作efi文件的时候要把上菜单需要的命令添加进去 制作好引导后放到对应的目录下,最好使用xorbootu菜单,指向它的efi文件,以便和windows引导共存,目录结构不能变(EFI/Boot/bootx64.efi 是写死的)。 2、制作vhd文件(1)新建vhd,固定大小20gb,vhd类型,挂载,打开VMware,新建类型为ubuntu 64位(不能没有64),BIOS启动类型,磁盘使用物理磁盘,指向此整个磁盘。修改配置,CD为ubuntu的ISO文件。开机 (2)制作过程中需要特别注意的一点是,一定不要出现逻辑分区,只有一个主分区就行。ubuntu16,若系统自动分区,会有swap这个逻辑分区,我当初就是这样,踩了个大坑。这里手动分区,分一个就够了。ubuntu18,系统自动只有一个主分区,可以自动。最好使用diskgenius工具查看,若磁盘下只有一个盘就OK。手动分区,会遇到虚拟机屏幕分辨率太小,按钮被隐藏的文件,建议去网上找样图,用tab键分。 (3)最好使用我制作的两个文件引导此ubuntu.vhd,(initrd.img-4.13.0-36-generic和vmlinuz-4.13.0-36-generic),若成功则可下一步自己制作,这样兼容性好很多。 (4) 三个文件最好放同一目录 若启动失败,报错init问题,如not init working found,那就可能是分区没分好,启动菜单写错了。 3、自己制作initrd.img文件方法如下: 首先通过虚拟机进入你的ubuntu ①在终端安装必要软件 sudo apt-get install kpartx kpartx-boot util-linux dmsetup lvm2,若联网却提示找不到软件,请 sudo apt-get update。最好分开安装,dmsetup可能是dm-setup ② sudo gedit /usr/share/initramfs-tools/init 把init里面第30行的 ③sudo gedit /usr/share/initramfs-tools/scripts/local ,用标准文件里local的替换 ④sudo gedit /usr/sbin/mkinitramfs 用标准文件里mkinitramfs的替换 ⑤sudo gedit /etc/initramfs-tools/modules 加入以下三行 ⑥ 编译安装ntfs-3g ./configure ⑦ sudo gedit /usr/share/initramfs-tools/scripts/local-bottom/ntfs_3g 用标准文件里ntfs_3g的替换 ⑧生成:sudo /usr/sbin/mkinitramfs -o ~/initrd.img-XXXXXXXXX-generic // 这里xxxx请与/boot/里对应的文件版本号保持一致 不出意外的话可以在home中找到生成的文件 (6)vmlinuz文件是/boot/下对应的那一个 (7)建议使用U盘传输文件,貌似无法在虚拟机和主机之间复制粘贴。方法:菜单栏 -> 虚拟机 -> 可移动设备 -> 你的u盘 -> 连接。可能需要重新插拔U盘,以连接。 (8)说明,我的标准文件是在niumao大神分享ubt-small.vhd中提取的,因为他分享的文件不对(可能是版本问题),直接去启动它的vhd,复制出来,替换,也是可以的。 四、安装centos等到vhd方法一、先制作好vhd文件,centos分三个区,不要有lvm分区,swap也分成标准分区(主分区),提取出上面ubuntu的lib/modules下的xxxxxx.generic文件夹(先压缩再解压),再放进centos的lib/modules/ 里面。我也分享了一个可以直接用的https://pan.baidu.com/s/1Wkxs2C9RxX9D7OdyXL_Qag 提取码:ls5l 上面的引导菜单只需改对应文件和kroot=/dev/mapper/loop0p2(这个2应该改为你的根分区“/”所在顺序,若你分了三个主分区,根分区在中间就是2,使用diskgenius即可查看根分区的位置),下面贴出我的菜单(class可换可不换)
ps:centos不支持ntfs,所以U盘格式化为fat即可,fat不支持那个文件夹中的数据类型,所以需要变为压缩文件。 若VMware中分辨率太低,不妨右键程序图标,设置调整视图属性。 centos安装时把软件全钩了也只需10g的空间,建议全钩了,不然之后安装就很麻烦,例如图形界面。 因为还需设置这个文件夹的权限为755,新手建议用root用户操作,默认755. 方法二见分享教程fedora,是可以给centos用的,我试了,没直接转移一个压缩文件方便,不介绍了。 其他Linux与方法一一样替换即可 五、最后1、把所有系统都变成一个文件,无需格式化U盘,是不是心情很舒畅。到这里我们就成功的把win10、ubuntu、centos成功装进vhd,放进优盘,并且优盘无需改动,可以方便的备份,复制,可以方便的真机登录和虚拟机登录,也可以方便的升级。直接把安装到u盘,一般只能装一个系统,而且升级的话大概率会使系统废了,装进vhd升级没问题的。(ps: 有些同学喜欢禁用win10自动更新,如果只是禁止启动的话是没用的,win10还是会强制更新,而禁用自动启动会导致更新失败,并数次重启还原,然后又是更新,这时应该开启自动更新服务) 2、可以将虚拟机使用整个移动硬盘进行启动测试,但是efi分区得把ID改回来 3、若想让移动固态硬盘成为第一启动项,而不用每次按f12选择,建议使用bootice,修改ufei启动序列,自己进BIOS修改可能会无效。 4、禁用win10自动更新的方法:设置 -> 网络和Internet -> 状态 -> 更改连接属性 -> 开启 '按流量计费的链接' 目前这方面的教程比较稀少,我写的也比较匆忙,不懂的兄弟可以找我QQ1147940842,如果觉得有帮助或者有不好的地方,还请留言,评论,感谢。
补充:最近(2019/4/26)实现动态大小的vhdx装系统,原来只需修改注册表项就行了,[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\FsDepends\Parameters] "VirtualDiskExpandOnMount"从1改为4,就不会提示vhd空间不足,原因是动态vhd引导时为了性能,会扩张到最大大小,参考微软原文。再说明下安装时选虚拟机x64配置,uefi对应gpt磁盘,虚拟磁盘新建时应该使用diskgenius重新快速分区,要有esp分区,磁盘管理器分会无法安装;bios对应mbr,就不能用diskgenius分,只能磁盘管理器。现在就方便很多了,初始体积减少大半,可以方便的差分。 补充:可以使用xorbootu引导,也可以使用原windows引导文件,如从可用win10系统的efi分区照移(如gpt虚拟机磁盘),原bootx64.efi改名,新建引导项指向它,原BCD删除,新建一个,添加各种启动项。不知为何win启动管理器界面编程老版黑白的,不是新版蓝色的,试了几次改不回来,不过也好,老版的不要选定后重新启动机器。 补充:vhd + bitlocker是非常不错的文件保护方式
|
|