内存盘吧 关注:40贴子:134

32位window 7 旗舰版内存操作系统(win7 ramos)教程

只看楼主收藏回复

32位window 7 旗舰版内存操作系统(win7 ramos)教程
作者信箱:budgood@126.com
前言
原理:FiraDisk和WinVBlock可以支持grub4dos 中的指令(map--mem)出来的光驱,软驱,硬盘等虚拟驱动器并从相应的仿真盘启动。把vhd文件map 为内存设备。这和制作成img、vdf等格式文件map 为内存设备是一个效果。反正总是需要操作系统镜像的文件,至于这个文件是什么格式,只要能被grub4dos或同类软件支持都可以。
以前看了网上的一些教程,误以为Primo Ramdisk或VSuite_Ramdis是必需的。从而自己“误入歧途”而没有成功。当然,那是人家的制作方式,我自己笨到现在还不会。其实完全可以不使用Primo Ramdisk或VSuite_Ramdis。这个教程中就没有用它们。
为win7 ramos这东西,我耗费了一些时间,最后搞定了。我这里是装在了一块4k已经对齐固态硬盘上,这个硬盘只有一个分区。
为了让其他人不费时间,所以就把实现方法公布。
至于vdf文件并没有成功,无论Primo Ramdisk或VSuite_Ramdis生成的vdf格式,总是提示一些错误信息。这没有少折腾。比如,我还对本不需要进行碎片整理的固态硬盘进行了碎片整理。此外,找到了Contig,这是一个整理单文件碎片的可执行文件。把该文件拷贝到C盘 用户文件中当前用户的目录下,双击这个文件,接受协议。
在命令提示符下输入 contig -v d:\win7.vhd
能整理d盘下的win7.vdf的碎片。只要找对了路径和文件名,就可以整理指定的文件。但是整理Primo Ramdisk和VSuite_Ramdis生成的vdf格式文件后仍然有问题。加载该vdf为内存盘,用AS SSD检查对应的盘,发现31k bad,也就是4k没有对齐。这个问题,那是莫名其妙。
而vhd确实是4k对齐,这是我放弃vdf方案的一个原因。
使用64位系统,两个重要驱动都没有装好。32位是成功的。这样就只能用32位系统。对于同一台装了16G或更多内存的电脑,32位和64位做成的10G以上的内存操作系统性能上的差别能有多大?
实际上内存操作系统载入需要时间,取决于硬盘读取内存操作系统镜像文件的速度。如果每秒读300M,对应一个10多G的镜像,那可是需要40秒以上,比原生系统启动慢多了。基于启动时间的考虑,我的看法是不要构建超过16G的镜像文件。对于内存较多的机器,也建议不超过本机内存的一半。
本文中涉及的软件有:firadisk、WinVBlock、grub4dos、Bootice。这四个软件都可以在网络上找到。


IP属地:浙江1楼2014-11-30 16:07回复
    一、基本条件
    你已经有了一个原生的window7系统,需要把grub4dos-0.4.6a文件夹内的所有的文件拷贝到C盘根目录下。
    现在需要一个VHD系统。我把相关的vhd文件放在了整块硬盘的文件系统的根目录下。在VHD系统中,VHD系统的盘符是C,整块硬盘的盘符是D。一般还会连隐藏分区(100M左右)显示出来,盘符为E。E不可以删除或格式化,否则系统引导会出问题。
    把32位window 7 旗舰版系统装入VHD,装硬件驱动和必要的软件等。要确保vhd文件比自己的机器内存小。
    如果你只有一个VHD系统,那么把原生系统隐藏的boot文件夹拷贝入根目录下:这一步可能不是必须,总是有备无患,后面用得着。这应该不影响VHD启动,因为没有改变启动文件bootmgr。这个我试验过。


    IP属地:浙江2楼2014-11-30 16:08
    回复
      二、具体步骤
      (一) 取消驱动签名检查。
      选择附件 /命令行提示符,右键选择以系统管理员运行。分别输入下面两道命令。
      bcdedit -set loadoptions DDISABLE_INTEGRITY_CHECKS
      bcdedit/set testsigning on


      IP属地:浙江3楼2014-11-30 16:09
      回复
        (二)安装firadisk和WinVBlock驱动
        控制面板中打开设备管理器,选择计算机名,右键选择添加过时驱动。然后找到这两个文件夹下的inf文件。点击确定,不理会windows的提示,坚持安装这两个驱动。
        若有必要重启后,看看这两个驱动是否装好,然后进入第三步。


        IP属地:浙江4楼2014-11-30 16:10
        回复
          (三)建立GURBDOS启动项
          1、第一个方案(推荐)
          进入原生系统,添加grub实模式启动。需要用到BOOTICE软件。


          IP属地:浙江5楼2014-11-30 16:11
          回复
            选择智能编辑模式,在“添加”中选择新建实模式(gurb/liunx)启动项目。结果会多出了一个:Realmode App Loader


            IP属地:浙江6楼2014-11-30 16:13
            回复
              选择保存。
              如果你运行的机器中是VHD系统,那么就选择“其它BCD文件”,打开boot文件夹下的BCD,新增启动项。


              IP属地:浙江7楼2014-11-30 16:13
              回复
                2、第二个方案(不推荐)
                在命令行提示符输入下面的命令的建立启动项方式:
                bcdedit /create /d " Realmode App Loader " /application bootsector
                执行结果类似:
                Microsoft Windows [版本 6.1.7601]
                版权所有 (c) 2009 Microsoft Corporation。保留所有权利。
                C:\Users\Administrator>bcdedit /create /d " Realmode App Loader " /application b
                ootsector
                项 {3043969d-77cc-11e4-acb8-00e0665b10ac} 成功创建。
                其中长字串{3043969d-77cc-11e4-acb8-00e0665b10ac} 是这个项的数字标识{id}。
                然后,通过以下命令来设置启动参数:
                bcdedit /set {id} device boot
                bcdedit /set {id} path \grldr.mbr
                bcdedit /displayorder {id} /addlast
                请用先前的命令所返回的实际的id 来替换掉 {id}。
                实例:bcdedit /set {3043969d-77cc-11e4-acb8-00e0665b10ac } device partition=c:
                或者bcdedit /set {3043969d-77cc-11e4-acb8-00e0665b10ac } device partition=%systemdrive%
                bcdedit /set {3043969d-77cc-11e4-acb8-00e0665b10ac } path \grldr.mbr
                bcdedit /displayorder {3043969d-77cc-11e4-acb8-00e0665b10ac } /addlast
                这个方法让高手来进行吧。用过了头会让启动项不正常,最后就很难修复启动了。


                IP属地:浙江8楼2014-11-30 16:14
                回复


                  IP属地:浙江10楼2014-11-30 16:15
                  回复


                    IP属地:浙江11楼2014-11-30 16:16
                    回复


                      IP属地:浙江12楼2014-11-30 16:17
                      回复
                        pxe detect
                        configfile
                        default 0
                        timeout 5
                        title find /menu.lst, /boot/grub/menu.lst, /grub/menu.lst
                        errorcheck off
                        configfile /menu.lst
                        configfile /boot/grub/menu.lst
                        configfile /grub/menu.lst
                        if "%@root%"=="(ud)" && calc *0x82A0=*0x82b9&0xff
                        if "%@root:~1,1%"=="f" && find --set-root --devices=f /menu.lst && configfile /menu.lst
                        find --set-root --ignore-floppies --ignore-cd /menu.lst && configfile /menu.lst
                        find --set-root --ignore-floppies --ignore-cd /boot/grub/menu.lst && configfile /boot/grub/menu.lst
                        find --set-root --ignore-floppies --ignore-cd /grub/menu.lst && configfile /grub/menu.lst
                        errorcheck on
                        commandline
                        pxe detect
                        configfile
                        default 0
                        timeout 1
                        tltle boot from win7ramos============================================A
                        fallback 1
                        find --set-root /w7_12gx86.vhd
                        map --mem --top (hd0,0) /w7_12gx86.vhd (hd0)
                        map --hook
                        root (hd0,0)
                        chainloader /bootmgr
                        boot
                        tltle boot from win7ramos==========================================B
                        fallback 1
                        find --set-root(hd0) /w7_12gx86.vhd
                        map --mem --top(hd0) /w7_12gx86.vhd (hd0)
                        map (hd0) (hd1)
                        map --hook
                        root (hd0,0)
                        chainloader /bootmgr
                        boot
                        debug off
                        timeout 0
                        default 0
                        title RAMOS win7x32================================================C
                        find --set-root(hd0) /w7_12gx86.vhd (hd0).vhd
                        map --mem --top(hd0) /w7_12gx86.vhd (hd0) (hd0)
                        map (hd0) (hd1)
                        map --hook
                        root (hd0,0)
                        chainloader /bootmgr
                        boot
                        提示:注意在代码中的/前留一个空格。


                        IP属地:浙江13楼2014-11-30 16:18
                        回复
                          (五)、内存操作系统的BCD
                          内存操作系统的BCD(进入内存操作系统后的“当前系统”)是这样的:
                          在命令行提示符中使用bcdedit查看:


                          IP属地:浙江15楼2014-11-30 16:19
                          回复


                            IP属地:浙江16楼2014-11-30 16:20
                            回复


                              IP属地:浙江17楼2014-11-30 16:21
                              回复