zoukankan      html  css  js  c++  java
  • 可恶的vista和U盘启动盘的制作

    (未完成)

    兴冲冲安装了一个vista,结果用了2天,现在出现了错误,卡在crddisk.sys上了,连安全模式都进不去,查了半天,好像说是SATA的驱动或者无线卡驱动有问题,而且更可怕的是到今天为止没有什么解决方案。所以奉劝大家如果不想妨碍工作的话,还是等下半年sp1出来之后再尝试vista吧。

    不管怎么样,反正系统是要先进去的。公司的机器没有光驱,所以只好打U盘的主意。查阅了N多资料之后,发现网络上的资料似乎并不能保证一次都能成功。所以bigtall决定写一个正常好使的关于USB盘启动的文章。

    首先我们要来补充一点基础知识。

    一、基础知识

    不知道各位看官是否还记得金庸的《雪山飞狐》?《飞狐外传》固然是大块头的正本,其实这本续集也是有精彩之处,bigtall自打初中时候看了之后,到现在依然不能忘记:悬崖顶上的山庄通过一个绞盘带动大篮子上下,结果后来给人炸了。后来修复的时候,山下的人用一根很长很细但是很结实的细线由信鸽带到山上,山上的人用力扯线,车上来一根也是很长很结实,但是比较粗一点的线,如此几番,最后拉上来一根粗绳子,大家就从此上下了。

    操作系统的引导过程也大致如此。首先PC机系统引导的时候,以实模式从FFFF:0000地址开始执行BIOS中的程序,BIOS会依次寻找系统中所有物理磁盘的0面0道1扇区,把第一个找到的结尾标志是0x55AA的内容(512字节)读入,然后执行这段称之为引导记录的代码。如果把BIOS看作鸽子的话,那这512字节的小程序当然就是鸽子带上来的细线了。引导记录能做的事情很有限,就是在各个磁盘分区中寻找跟具体操作系统相关的引导程序,装入,然后执行这一段引导程序。引导程序一般都会比较大,占用多个扇区的空间(一般是1个磁道,至少16个扇区,也就是16*512字节),所以这段程序做的事情会多一些,他们会查找文件系统,寻找到相应的启动文件,装入启动文件,然后执行它。到启动文件阶段之后,就是真实的操作系统启动过程了。

    我们以XP系统为例,假设XP装在C盘,机器开启电源之后,首先BIOS装入引导记录,引导记录会装入C盘的引导程序(题外话:XP好像会给每一个逻辑盘都写上引导程序的,所以你可以指定任意的分区作为启动盘);XP的引导程序负责在磁盘上寻找NTLDR这个程序,装入并运行NTLDR之后,你就会看到屏幕上有XP的启动信息了,一个XP的标志显示在屏幕上了。

    日常操作中,如果熟悉DOS操作系统的朋友就会知道FDISK和SYS这个两个命令,FDISK是磁盘的分区程序,但是它有一个隐含的命令参数“/MBR”是恢复硬盘引导记录的;SYS这个命令就是写引导程序的,并且会把完整的基础DOS启动环境建立起来,XP下没有这个程序,但是我们有很多方法可以来建立XP的运行环境。接下来我们就来看XP的相关知识。

    到目前为止,如果要做一个用于Windows系统日常维护的启动工具盘,我们需要接触到三种类型共四种实现:DOS系统引导、XP系统引导、XPE(Windows PE 1.x)系统引导和VistaPE(Windows PE 2.x)系统引导,我们看下表:

    系统 启动文件 支持的文件系统 说明
    DOS

    IO.SYS(或ibmbio.sys)
    MSDOS.SYS(或ibmdos.sys)
    CONFIG.SYS配置文件

    FAT,FAT32 不支持多系统启动
    不支持映像文件启动
    XP NTLDR,
    NTDETECT.COM,
    BOOTFONT.BIN
    boot.ini配置文件
    FAT,FAT32,NTFS 支持多系统启动
    不支持映像文件启动
    XPE

    SETUPLDR.BIN(或NTLDR)
    NTDETECT.COM
    BOOTFONT.BIN
    WINNT.SIF配置文件

    FAT,FAT32,NTFS NTLDR支持多系统启动
    SETUPLDR.BIN支持压缩的映像文件直接启动
    比如IMG文件,ISO文件,CAB文件等
    Vista/
    VistaPE
    BOOTMGR
    BOOT\BCD
    BOOT\BOOT.SDI
    BOOT\BOOTSECT.EXE
    BOOT\ETFSBOOT.EXE
    FAT,FAT32,NTFS 支持多系统启动
    支持映像文件直接起动

    这个表比较重要,下文bigtall就不会重复说明建立系统时候需要拷贝的文件了。

    各位看官可能对PE比较陌生,其实装过windows的朋友都接触过这个东西。我们运行安装windows的时候,一开始不是文本界面吗,然后启动一次就会进入图形界面,一直到windows安装完为止。这个图形界面就是一个PE环境,其实就是Windows的一个精简版本,用任何一个版本的XP都可以从中剥离一个PE出来,而且不违反M$的授权协议。现在因为PE本身功能比较强大,所以Vista已经用PE堂而皇之地作为系统维护环境的基础了。

    基础知识补充完毕,接下来我们来看我们的需求。

    二、操作步骤

     我们的目标是(画外音:~没~有~蛀~牙~)创建一个U盘启动工具盘,所以多启动支持比较重要,不过bigtall对XP系列对多启动支持并不是很满意,所以我们要选一个更好用的,当然是GRUB for DOS了。它是一个强大的跨平台的专用的多系统引导程序。更为关键的是操作起来非常简单。首先我们来看一下完成整个步骤所需要准备的东西:

    1. 一个空的U盘,bigtall准备了两个:一个1G的和一个128M的。
    2. 工具PEtoUSB,作用是格式化一个NT/XP启动盘。到http://gocoding.com/page.php?al=petousb下,这个项目是从sf迁移过来的,可是没有找到源代码。
    3. 工具USBBOOT,另外一款格式化U盘的工具,到 http://flashget.newhua.com/down/usboot.rar 下,和PEtoUSB配合,基本没有不能格式化的U盘。
    4. 下载grub for dos环境和其安装工具grub-install
    5. 下载一个vista PE的iso,地址是http://www.greendown.cn/view_down.asp?downd_id=17&downd=0&ID=6270&down=yes ,不过bigtall找到一个晚一些时候的 VISTAPE0509.iso,必须用迅雷,因为原始地址没有了。
    6. 下载深山红叶熊猫烧香版V28,是XPE内核的工具盘,必要。必须用迅雷,因为原始地址没有了。这里如果用avg free会杀出3个木马。不过没关系。
    7. 下载一个DOS启动工具盘,入口页面在这里,下载地址在这里:部分1部分2部分3。这个dos工具中的spfdisk磁盘分区工具非常好用,强烈推荐。

    准备好之后,我们要开始我们的操作步骤了,这里,我们会把这几种系统放到一个盘上,用grub统一进行启动管理。我们首先规划一下目录:

    loader            存放所有和启动相关的文件,尽可能全部放在这里
    loader\grub    相关的文件和备份
    loader\redleaf·深山红叶的启动文件目录
    loader\vistaPE·PE2环境

    大家估计手里已经痒得不行了,废话就不说了,以下就是步骤和注意事项:

    1. 格式化U盘,因为有DOS系统,所以大家直接格式化成fat或者fat32格式。格式化工具使用PEtoUSB,1G的建议使用HDD方式格式化,128M的可以用ZIP格式,不过要注意的是,因为U盘启动没有统一的标准,所以要自己的机器支持才行。格式化直接影响系统能否正常启动。测试方法很简单,在格式化之后,直接插入电脑,用USB方式启动,如果报告类似于“Missing xxxxx”的错误,并且让你“press any key”的话,测试就通过了。
    2. 运行grub-install工具,更新引导程序。这个步骤一定要注意,不要错选了你的硬盘哦。操作失误别来找我,bigtall可是一概不认账、不负责的哦。另外,如果不小心把grub弄得无法启动了,用这个工具简单修复一下就可以了。
    3. 将grub for dos中的grldr文件复制到根目录中。
    4. 编写grub的启动配置文件\menu.lst,具体内容见文后。到此,我们需要再一次进行测试:用USB方式启动,过了几秒钟之后,你应该会看到一个带有选项的界面,按c键可以进入grub的命令行模式,大家可以help一下看看。
    5. 安装dos系统。解压缩SBMSR400.part?.rar,把其中的IMG文件复制到loader目录中。对应menu.lst的配置内容为:
    6. 安装深山红叶系统。将iso根目录下面的winpe.im_,winpe.sif和xcmd.ini复制到U盘根目录;把wins中的两个文件setupldr.bin和ntdetect.com复制到loader\redleaf中;把programs目录拉到U盘根目录下;然后对应menu.lst配置内容为:
    7. 安装VistaPE系统。把vistaPE的ISO根目录下面的bootmgr复制到U盘根目录;把BOOT目录和SOURCES目录拉到U盘根目录下。如果要工具,则把PROGRAMS拉到U盘根目录,和深山红叶的合并在一起。(有好事者可以去修改一下xcmd.ini,让红叶变得更丰满一些)。

    至此,我的维护工具盘就成功了。bigtall给大家show一下我的1G盘的目录结构:

    F:.
    │  grldr
    │  menu.lst
    │  boot.ini
    │  WINPE.SIF
    │  BOOTFONT.BIN
    │  NTDETECT.COM
    │  WINPE.IM_
    │  XCMD.INI
    │  BOOTMGR
    │  
    ├─loader
    │  │  SBMSR400.IMG
    │  │  DOS98.IMG
    │  │  
    │  ├─grub
    │  │      menu.lst(根目录menu.lst的备份)
    │  │      MEMDISK.GZ
    │  │      
    │  ├─redleaf
    │  │      NTDETECT.COM
    │  │      SETUPLDR.BIN
    │  │      
    │  └─vistaPE
    │          BOOTMGR
    │          
    ├─MENU
    │          
    ├─PROGRAMS
    │              
    ├─SOURCES
    │      boot.wim
    │      
    └─BOOT
            BOOTSECT.EXE
            ETFSBOOT.COM
            BCD
            BOOT.SDI
            

    这里有一个需要大家特别注意的事情:因为引导程序功能有限制,所以他们不能读取不连续的文件,换句话说,他们不能处理文件碎片的情况。所以在制作的时候,不要在U盘上做大量的删除操作,尽可能是copy进去。如果有人做了大量的删除操作,可以用XP自带的碎片整理程序整理一下就可以了。

    说到这里,细心的看管应该有些疑问了,我另外的那个128M的盘呢?别着急,bigtall这就给你道来。我的这个128的盘时间比较老了,只支持USB1.1接口,所以用起来比较慢。所以bigtall需要挑选一下环境才可以,我选择深山红叶。做法很简单,不过跟前文操作步骤略有不同,需要用UsbBoot格式化,步骤如下:

    1. 使用UsbBoot格式化,我的机器用ZIP和FDD模式都可以认。格式化的时候UsbBoot会自动在里边放一个DOS启动系统的。
    2. 直接从GRUB FOR DOS中复制GRUB.EXE到U盘
    3. 在U盘用notepad生成一个名字叫CONFIG.SYS的文本文件,其中只有一行内容:DEVICE=grub.exe
    4. 从深山红叶系统中手工复制bootfont.bin, ntdetect.com, winpe.sif, setupldr.bin, winpe.im_到U盘根目录即可。
    5. 在U盘放一个menu.lst启动配置文件,内容参考附录

    启动之后是一个基本的winpe环境,带有网络支持,不过要手工程序菜单中的工具。

    三、应用

    前文bigtall向大家抱怨了一下可恶的Vista,然后做了两个U盘启动盘,目的当然很明显,bigtall要在没有光驱的机器上装XP了,而且我要首先bigtall用刚做的1G的U盘启动机器

    四、后记

    维护系统是一个比较专业的活儿,如果看管您对自己没有把握或者没有完全搞清楚里边的事情,bigtall奉劝您还是少做为妙,免得误操作丢失了数据,捶胸顿足也来不及了。

    另外,转载请大家保留作者bigtall的名字,以及本文的原始出处。谢谢!

  • 相关阅读:
    你认为做好测试计划工作的关键是什么?
    一套完整的测试应该由哪些阶段组成?
    你对测试最大的兴趣在哪里?为什么?
    如何测试一个纸杯?
    黑盒测试和白盒测试各自的优缺点
    在您以往的工作中,一条软件缺陷(或者叫Bug)记录都包含了哪些内容?如何提交高质量的软件缺陷(Bug)记录?
    测试人员在软件开发过程中的任务
    软件测试分为几个阶段? 各阶段的测试策略和要求是什么?
    软件测试的策略
    软件产品质量特性
  • 原文地址:https://www.cnblogs.com/BigTall/p/882941.html
Copyright © 2011-2022 走看看