老虎团团长:[汇编]全能(维护+安装+内存系统)优盘系统制作方法

来源:百度文库 编辑:中财网 时间:2024/04/28 00:02:09
说明:

一、由于此类文章太过分散,因此统合起来,做一个汇总,同时也当我自己的学习笔记,时间开始于20120126,结束于……(结束时会加注)

二、维护+安装+特定系统运行全能盘(需要几十G的大小):

所谓全能,是指:

1、引导所有要安装的系统:可以是镜像(格式为iso或者img,需要虚拟光驱支持),也可以是已经解压出来的文件(但不太方便,不建议用此方法)

如果能够使用虚拟光驱,则所有要安装的系统都可以使用镜像方式存在,这样最大的好处就是可以适用于虚拟机。

对于windows系统,一般两种方法,直接引导到安装系统,或者通过winpe搞定

对于linux系统,也是两种,可以直接引导到安装系统,也可以通过livecd搞定。

2、维护工具:可以进winpe或者linux的开箱即用方式解决。

3、运行特定系统:需要安装系统到优盘中(一般使用磁盘镜像法),并引导系统。或者,是使用可引导镜像的引导工具,直接进入全能镜像。


三、名词中,第一次使用都会加注英文

四、全文覆盖windows和linux,而且会尽量仔细,以适合菜鸟零起步。
另外,因为并非所有方法都可用,有的适合某部分人,有的可能就不适合,所以,请自己选择其中一个有效的方法即可。

 

前言:需要提前了解的事情

一、此处说的系统安装,分为两种情形:

1、把系统安装在优盘中,这样优盘在手,自己电脑就可随身走,方便一些有特别定制或者不喜欢、不习惯别人电脑的人使用。比如搞电脑维修的,可以把系统维护工具装在里面,随时可用。

当然,这样的特性,也适合于定制给特定的人使用,比如给每个员工一个这样的系统,里面内含特定的加密系统,这样让公司的信息不至于外泄,同时,也方便批量化维护。

2、把优盘当成系统安装文件的存储介质。

 

二、系统安装方法,根据安装源文件来源,可分为:

1、软驱(已过时):速度最慢,但有些特老的电脑,某些变态为了让其老树开花,会把系统安装盘存在软盘上或者把系统安装在软盘上。

2、光驱(过时中):速度一般,但容易刻坏盘,盘容易坏,容易读坏盘等容易导致出错

3、优盘(方兴未艾):速度比光驱快,容量大,不容易出错,相对光盘的成本也低得多(可多次重写+单位容量价钱)。

4、移动硬盘(这个个人目前未肉测过,无法评价):容量更大,可一次性集成所有待安装软件。

5、硬盘:(尚待普及),优点就是速度快(还不算最快,呵呵)。涉及分区时,此法不好用,也不太好用于跨操作系内统装视窗和你牛叉——当然,像把操作系统当软件装在别的系统里的方法,比如把有奔头装在视窗里的WUBI,也是可以的,只是这样总感觉繁冗,但跨操作系统哪能不繁冗呢?

6、内存:这种速度很快,但只能算半个安装方法,因为其前提是从别的介质复制进内存,所以,这种方法并不见得总效率有多高,只是安装的时候速度最快而已。

7、远程网络:对个人来说,还不太适用,一般都还是需要把引导的文件放到本地一个地方,用于引导,方才能够利用网络安装,比如蝶变最简安装法中,虽然只需要下载 linux和initrd.gz两个文件,一共6M,然后再从网络获取所需安装的软件包,但这6M是要放在上面的一些介质中的引导之,所以也只能算半个安装方法。

对于局域网而言,这是非常方便的布置全局域网电脑的好方法

8、还有我未知、未肉测的方式,比如sd卡

 

三、系统安装方式:

1、定制安装

2、还原/备份

3、无人值守/批量化安装:脚本模式

 

第一章 最重要的根本问题:让优盘可引导

一、可不了解的基础知识:

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

主板引导寻找引导记录(512字节)——》》读取引导记录——》》引导记录启动引导程序(16×513字节)——》》启动文件——》》启动操作系统(一般大于十几兆了)


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

主板引导——》》引导程序——》》NTLDR——》》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不支持多系统启动
不支持映像文件启动XPNTLDR,
NTDETECT.COM,
BOOTFONT.BIN
boot.ini配置文件FAT,FAT32,NTFS支持多系统启动
不支持映像文件启动XPE

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

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

注:vista之后,视窗系统的引导程序都使用BOOTMGR。


二、名词解释:

1、量产:英文USB DISK PRODUCTION TOOL,简称是 PDT,一般是优盘厂家为了让电脑识别优盘,而用于写入优盘的特定文件到优盘的特定扇区的一种批量化数据写入工具(底层级的数据写入工具)。对于一般玩家而言,可用于批量化写入——当然,一次数量多少完全是根据自己有多少个优盘接口可用来确定的了。

优盘生产厂家不像我们普通玩家,一次就搞一两个U盘,他们生产都是按批操作的,就是用电脑连上USB HUB(这个我也没有见过,应该形同集线器似的东西,但是接口都是USB)同时连上8-16个(甚至更多)优盘,然后用PDT向众多U盘写入相同数据,完成U盘生产的最后工序。所以量产因此而得名,量产软件 —— 即工厂大批量生产U盘的专用软件。量产软件从工厂流入玩家手中后,大家发现量产软件的功能是向U盘写入相应数据,使电脑能正确识别U盘,并使U盘具有某些特殊功能。

U盘是由主控板+闪存+外壳组成的,当主控板焊接上空白闪存后插入电脑,因为没有相应的数据,电脑只能识别到主控板,而无法识别到闪存,所以这时候电脑上只能显示出U盘盘符,但是却没法点击进去,就像是插入一个空白的读卡器。事实上这时候的U盘几乎就是读卡器。所以要让电脑识别出空白闪存这张“卡”,就要向闪存内写人对应的数据,这些数据包括U盘的容量大小、采用的芯片(芯片不同,数据保留的方式也不同)、坏块地址(和硬盘一样,闪存也有坏块,必须屏蔽)等等,有了这些数据,电脑就能正确识别出U盘了。而当这些数据损坏的时候,电脑是无法正确识别U盘的。当然有时候是人为的写入错误数据,像奸商量产优盘的时候,把1G的U盘的闪存容量篡改为8G,插上电脑,电脑就错误的认为这个U盘是8G,这就是奸商制造扩容盘的原理。

  除此之外,玩家还发现量产工具还有其他的功能,可以把U盘生产成各种特殊用途的U盘,比较常用的就是分区功能,把1个U盘分成数个移动盘。有两种功能:启动功能 —— 使U盘能模拟USB CD-ROM(模拟成光驱)、USB-ZIP和USB-HDD,这个是目前使用最多的功能,加密功能 —— 划出专门的加密分区。


2、U+:
U+是指在视窗下,使用ultraiso软件把优盘做成一个启动磁盘,可以直接把PE(或操作系统,只要你的优盘够大)安装到整个U盘分区中。可选择的模式有 USB-ZIP(推荐)、USB-HDD(移动硬盘)、USB-FDD(软盘)。安装完成后需要在BIOS的引导设置里面选择从USB移动磁盘引导启动才能进入PE。

 

3、刻盘(刻录到光盘中)


4、B+(使用bootice直接写入)

 

量产和U+区别:

1、量产能把优盘模拟成光驱:

分区是USB-CDROM ,说明白点就是一个装着光盘的光驱,插上这样的U盘之后系统自检会检测到两个光驱(当然主机原来的光驱也包含在内)所以量产后要进入PE是需要通过光驱引导启动的(大家可能会问:不是主机本来有个光驱吗?恩,接着往后看),在进入系统后在设备管理里面也可以见到两个光驱的存在。所以量产后只需在BIOS里设置成从光驱启动即可进入PE。

      注意:有些主板可以选择光驱引导启动的光驱顺序,一般默认是第一光驱然引导后才引导USB量产出来的光驱,而这个顺序可以在BIOS boot里面设先从哪个光驱引导。而又有一些主板只支持从第一光驱引导启动,而U盘量产后的USB-CDROM位于第二光驱,如有这样情况可以考虑是否先拔掉主机原有的光驱。(这里主要说的是老主板)

有些游戏的加密系统,使用的是光驱方式,也可以使用模拟软件来模拟光驱(效率仅次于破解,如果能破解就破解吧,不能的话就模拟),另外的一个蛋疼方式就是用优盘来模拟光驱(仅仅比直接使用光驱好点,但仍然是蛋疼的),最蛋疼的方式摸过于傻傻地直接使用光驱(最直接的方法是禁用光驱,然后用模拟软件模拟光驱,彻底消灭光盘的生存空间)


2、U+多个系统在优盘中

即量产后产生除USB-CDROM这个分区外的一个会几个分区上分别以U+的方式安装另外一个或几个完全不同PE(一个U盘装得下好几个PE,就像一台电脑可在不同的分区上装不同的系统一样)。这种在安装后按照U+的在BIOS的引导设置里面选择从USB移动磁盘引导启动进入PE。


综上所述:1、量产是可以从光盘引导启动(U盘就相当于有光盘的光驱) ,即USB-CDROM+可移动磁盘(这里的可移动磁盘又可以U+),2、U+是属USB(移动磁盘)引导启动,而USB-ZIP、USB-HDD、USB-FDD只是3种安装U+的方式。而又有些主板不支持USB移动磁盘引导启动的,所以,为兼容性考虑,建议还是量产。

现在很多U盘都支持3驱3启动,也就是1个U盘分成3个区,每个区模拟成一个驱动器,分区的时候就分成一个USB-HDD、一个USB-ZIP和一个USB-CDROM,分别加载不同的启动镜像,启动时选择相应的驱动器就能载入对应的启动镜像,这样兼容性很强,几乎通吃所有有usb接口的智能电器,很方便。
注意:因为生产U盘厂家很多,主控型号玲琅满目,所以量产软件要和主控相对应,什么型号的主控就用什么量产软件,选错量产软件,将导致无法量产或者量产错误。大家最好先用chipgenius来检测一下U盘的主控芯片,有条件的最好能拆开U盘看看主控型号,然后下载相对应的量产软件才可以进行量产。

 

三、把优盘变成可多重启动引导盘通用方法[此部分可不看]

由于优盘容量较大,只当一个系统的安装盘实在浪费,所以,一般都会做成多重引导工具盘,用于安装和维护等多重功用。

(一)、格式化优盘

1、视窗下:

使用系统带的格式化工具,格式化之,此处不选快速格式化

2、你牛叉下:

首先,要安装有相关工具mkfs.vfat(各个系统的打包方式不同,此处不提供具体的包名,提供最终的可执行命令名称)

然后运行命令:mkfs.vfat /dev/sd[x]

其中sd[x]是指你牛叉下的硬盘编号,比如/dev/sdb或者/dev/sdb1,可使用fdisk -l来查看到底是哪个编号是指优盘的。

注意:由于是要修改的是引导区,所以,一般是格式化/dev/sdb而不是其下的/dev/sdb1

 

(二)、用软件写入引导工具信息

所需的软件,可选:syslinux、isolinux、gfxboot、grub、grub2等

EZBOOT目录:GRLDRG4D.BIN(对应GRUB4DOS启动)、GRLDRGFX.BIN(对应GFXBOOT启动)、ISOLINUX.BIN(对应ISOLINUX启动)


1、批量化自动的写入工具:

(1)、视窗下下可用:

使用ultraisoportable写入引导文件到优盘的引导区

 

(2)、你牛叉下可用:

unetbootin liveusbcreator multiboot


2、手动方式

(2)、linux下可用dd命令

如果你牛叉使用的是syslinux,可以使用下面命令安装syslinux的到优盘的引导区(也就是所谓的mbr)
dd bs=440 conv=notrunc count=1 if=/usr/lib/syslinux/mbr.bin of=/dev/sd[x]

(3)、直接使用引导软件,直接安装到引导区

可选引导软件:syslinux grub2

方法:可见下面 使用优盘安装linux镜像部分。


(三)、引导方式

1、eazyboot

2、grub

3、syslinux

前面三种是一般引导较常使用的方式。

4、grub2 (推荐)或者brug

虽然配置复杂了点,但其模块化,使得其可定制大小,其直接支持多国语言,支持直接挂载镜像文件

grub2 和grub 有很多不同的地方:
a)图形接口
b)使用了模块机制,通过动态加载需要的模块来扩展功能
c)支持脚本语言,例如条件判断,循环、变量和函数
d)支持抢救模式,可用于系统无法引导的情况
e)多语言支持。包括支持非 ASCII 的字符集和类似 gettext 的消息分类,字体,图形控制台等等
f)有一个灵活的命令行接口。如果没有配置文件存在,GRUB 会自动进入命令模式
g)针对文件系统、文件、设备、驱动、终端、命令、分区表、系统加载的模块化、层次化、基于对象的框架
h)支持多种文件系统格式
i)可访问已经安装的设备上的数据
j)支持自动解压


(四)、多重引导

在dos中使用虚拟光驱,加载镜像文件,好处就是不用进你牛叉可即用系统,也不用进视窗预装系统。有了这个,可以保持各种镜像文件的完整性,从而以后只需要更新镜像即可,不用重新提取镜像内文件再覆盖原有文件。

1、grub4dos

2、grub2

 

第二章、制作镜像

一、镜像类型

0pe:结构化的pe系统,可以把体积最小减至2/3m,用于超小存储介质。

维护型的小型linux:puppy slax

系统恢复类的镜像:Recovery Is Possible (RIP) 是一个 CD/USB 的启动、修复、备份和维护工具,支持文件系统包括:Reiserfs, Reiser4, Btrfs, Ext2/3/4, HFS+, ISO-9660, Squashfs, UDF, XFS, JFS, UFS2, CIFS, MS DOS, NTFS, 和 VFAT;包含很多工具用来做系统恢复,同时支持 IDE/SCSI/SATA, RAID, LVM2, 和 Ethernet/Wireless

……

二、镜像放入优盘

前两种是很老的方法,已经过时,推荐第三种方法。

(一)、视窗下

分为两步:

1、提取镜像文件到优盘:一般用ultraiso搞定

2、修改优盘引导:一般用bootice搞定


(二)、你牛叉下(三种方法都不推荐):

1、图形界面的unetbootin,

2、gujin(单优盘引导多个livecd,目标是替代lilo和loadlin)

3、手动,把安装的镜像放入优盘,例如archlinux的镜像,步骤:

首先,挂载镜像

mount -o loop /path/to/image/archlinux-XXX.iso /path/to/iso/

其次,把镜像中用于安装的部分复制进优盘

cp -r /path/to/iso/arch/ /path/to/usb/

再次,安装syslinux到优盘

extlinux --install /path/to/usb/arch/boot/syslinux/

最后,修改下优盘里的syslinux的配置文件/path/to/usb/arch/boot/syslinux/*.cfg,把原来的引导改为优盘的:

原来的:archisolabel=ARCH_201108 

改为:archisolabel=

若是双架构的安装镜像,需分别在两处修改,即i686和x86_64镜像中。

当然,也可以通过修改优盘的卷标,而不用去修改syslinux配置,方法:

若优盘为ext2/ext3/ext4/btfs分区格式,则: e2label /dev/sdb2 ARCH_201108

若优盘为fat32格式,则:dosfslabel /dev/sdb2 ARCH_201108

(三)不提取镜像,直接复制镜像进优盘,修改引导[推荐!!]

 

三、修改镜像内容

可使用工具:xdelta

四、在pe中加入所需的软件

 

第三章、实际方法介绍:

之所以先用这种方法,是因为适合新手,但这种方法的效率是有限的,明显没有直接引导加载安装文件速度快。

有了pe(预装系统),一切都那么简单,有了live(可即用)系统,一切都那么简单

问题:(个人未肉测)

是否可以在win pe加载linux的镜像,然后安装linux呢?或者,是否可以在linux的live系统里,加载视窗的镜像,然后安装视窗呢?

win xp pe= windows xp preinstallation environment 就是视窗预装环境:是带有限服务的最小Win32子系统,基于以保护模式运行的Windows XP Professional内核。它包括运行Windows安装程序及脚本、连接网络共享、自动化基本过程以及执行硬件验证所需的最小功能。

 

注意:

1、win pe都是向下兼容,但不向上,所以,如果要安装win7,只能用win7 pe。

2、需要选择安装的驱动器和磁盘分区时要注意,千万不可把优盘给选了:选了就是安装到优盘了。

 

前提条件:

①有放得下原版镜像的容量(现在应该不是大问题,8G优盘也就几十块钱——时间20111201)
②这个原版镜像或i386(安装文件所在目录)放在优盘启动盘根目录(当优盘启动盘为多分区时,也可放在任意分区根目录)

③当然,这个优盘启动盘能运行win PE!(不管是量产到U的win PE、还是U+到U的win PE、还是其它等等到U的win PE…只要能进win PE就行)

 

一、PE下安装集成安装版win xp sp3的方法:

(说明:此法较为通用,破解镜像都是可以使用此法安装,而由于一般的网上下载的镜像都是这种集成了安装程序的,所以此法通用性最高)

步骤:

1.网上下载集成安装版镜像放到U盘启动盘根目录,如J:\
2.将这个U盘启动盘插入电脑USB接口,重启电脑进入PE程序
3.用PE格式化你要安装的盘(开始—>我的电脑—>右键C盘—>格式化)
4.用PE中的虚拟光驱加载ISO
             (开始->程序->VIRTUAL..->找到并装入ISO->确定->最小化)
5.打开-我的电脑打开装载ISO虚拟光驱盘符并运行Setup.exe(或AUTORUN.exe)
①正在复制安装文件(开始复制文件到复制文件结束,即绿色进度条走完)
②正在重新启动计算机(即红色进度条走完,会跳出一个话框,千万别点话框中的“确定”按钮,不要理睬它)
6.拔出U盘(就是红色进度条走完了就拔掉U盘:)
7.手动重启电脑

8.接下来的全部自动完成,直到进入Windows XPSP3操作系统桌面

注意:

拔掉优盘之所以做法特别强调,因为想让电脑再次从硬盘启动前,U盘在无读写的情况下拔出。这样可以:
(1)避免重启后再次进入U盘系统。
(2)避免进入安装时,一些系统文件被写入U盘,造成硬盘系统文件缺失而不能引导。
(3)避免第一次进入系统,U盘被认到D分区。

  当然,量产成USB-CDROM,有从硬盘启动项的U盘除外。

如果U格式成USB-ZIP的话那是肯定不需要拔U盘就能完成安装且不会向U盘写数据的,我都安装过不下6次了

PE内核是装到内存里,外核才是在优盘里,拔掉优盘,PE还在,不过一些没在内存里的软件就用不起来了

我的解决办法是将XP镜像文件放到硬盘某个分区。实际上我U盘里的镜像文件就是从硬盘里拷贝出来的。我这步免了。然后通过虚拟光驱加载该ISO文件。为了避免安装程序将启动 文件写入U盘。现在就把U盘拔出来。而不是等安装后才拔出来(那样已经晚了)。之后才点SETUP。程序会报错一次。不要管它继续安装等到提示要重启电脑时再手动重启一切和光盘安装系统一样 哈哈。(记住重启时别再把U盘插进去哦)否则又进入PE系统了。


二、win pe下,通过加载视窗的原版镜像给电脑安装系统:

步骤:

第一步:网上下载原版镜像,放到U盘启动盘根目录,如J:\
第二步:将这个U盘启动盘插入电脑USB接口,重启电脑进入PE程序
第三步:用PE格式化你要安装的盘
             (开始—>我的电脑—>右键C盘—>格式化)  
第四步:用PE中的虚拟光驱加载ISO
             (开始->程序->VIRTUAL..->找到并装入ISO->确定->最小化)
第五步:打开-->我的电脑-->进装载ISO的虚拟光驱盘符-->双击Setup.exe  安装程序开始运行
第六步:点击 安装Micrcsoft Windows XP                            --->下一步     
第七步:①选中 全新安装                                                --->下一步
            ②选中 我接受这个协议                                       --->下一步         
            ③输入产品密钥 MRX3F-47B9T-2487J-KWKMF-RPWBY--->下一步
            ④语言和区域(默认) 语言(中国)
            ⑤高级选项:勾选 从安装CD复制所有安装文件
                            勾选 我想在安装过程中选择安装驱器号和磁盘分区->确定/下一步
            ⑥选择 否,跳过此步骤                                         --->下一步
            ⑦选择 否,跳过这一步继续安装windows                  --->下一步
            ⑧选择 跳过这一步,继续安装windows                     --->下一步
            开始复制安装文件到硬盘:
            ⑨正在复制安装文件(开始复制文件到复制文件结束,即绿色进度条走完)
            ⑩正在重新启动计算机(即红色进度条走完,会跳出一个话框,千万别点话框中的“确定”按钮,不要理采它!)
第八步:拔出U盘(就是红色进度条走完了就拔掉U盘!)
第九步:手动重启电脑(这一步千万别漏了)

第十步:①选中 要现在安装windows XP,请按ENTER               -->回车
            ②选中 要在所选项目上安装windows XP,请按ENTER   -->回车
            ③选中 保持现有文件系统                                      -->回车
           经过一段较长时间(其间有一段时间黑屏,这是正常的)之后:
第十一步:再次进入区域和语言选项①自定义(默认)
                                              ②语言信息(默认)         --->下一步
第十二步:输入①姓名(随便填)
                   ②单位(随便填)                                       --->下一步
             输入①系统管理员密码(可不填)
                   ②确认密码                                            --->下一步
第十三步:日期和时间设置(默认)                                    --->下一步
第十四步:网络设置选中 典型设置                                       --->下一步
第十五步:工作组或计算机①选中 不,此计算机不在网络上或者在没有域的网络上
                      ②把此计算机成为下列工作组的一个成员(默认) -->下一步
                   再经过一些时间:  
第十六步:显示设置           --->确认-->确认-->下一步
第十七步:选中 自动更新--->下一步
第十八步:谁会使用这台计算机 您的姓名(随便填一个)  -->下一步-->完成-->进入桌面

 

三、win pe下其他安装方法:

(一)、PE下自动ISO安装原版XPSP3的方法(无人值守呀,省得花注意力盯着这上面了):
第一步:下载所需的自动安装文件:网上下载并解压winnt文件得到winnt.sif和winnt32-->保存到文件名为winnt的文件夹中
第二步:生成自动安装的镜像:网上下载安装并运行UltraISO(镜像编辑制作工具,同类的软件还有)—>在左上方点击文件—>打开—>找到并打开存放的ISO文件zh-hans_windows_xp_professional_with_service_pack_3_x86_cd_vl_x14-74070—>在左下方找到并打开存放的文件夹winnt—>将右下方窗口内的winnt32拉至右上方窗口内的空白处—>将右下方窗口内的winnt.sif拉至右上方窗口内的I386文件夹中—>在左上方点击文件—>另存为(即得到一个全自动安装的ISO)
第三步:把上面已集成了自动安装程序的zh-hans_windows_xp_professional_with_service_pack_3_x86_cd_vl_x14-74070放入U盘启动盘根目录
第四步:将这个U盘启动盘插入电脑USB接口,重启电脑进入PE程序
第五步:用PE格式化你要安装的盘(开始—>我的电脑—>右键C盘—>格式化)
第六步:  用PE中的虚拟光驱加载ISO
             (开始->程序->VIRTUAL..->找到并装入ISO->确定->最小化)
第七步:打开-我的电脑-->打开装载ISO虚拟光驱盘符并运行Winnt32.bat安装程序开始复制文件
         ①正在复制安装文件(开始复制文件到复制文件结束,即绿色进度条走完)
         ②正在重新启动计算机(即红色进度条走完,会跳出一个话框,千万别点话框中的“确定”按钮,不要理采它!)
第八步:拔出U盘(就是红色进度条走完了就拔掉U盘!)
第九步:手动重启电脑
第十步:接下来的全部自动完成(开始时有一段时间黑屏,这是正常的,等一下就会自动进入安装界面,直到进入Windows XPSP3操作系统桌面)


(二)、提取原版镜像中的i386,PE下安装原版XPSP3的方法:

(说明:此法蛋疼,但好处就是有利于减少存储空间,如果优盘空间有限的可用)

第一步:网上下载并提取原版ISO中的i386,放到U盘启动盘根目录,如J:\i386
第二步:网上下载并解压Winnt把里面的Winnt.32.bat放到J:\
                                                     Winnt.sif放到J:\i386\    
第三步:将这个U盘启动盘插入电脑USB接口,重启电脑进入PE程序
第四步:用PE格式化你要安装的盘(开始—>我的电脑—>右键C盘—>格式化)                   
第五步:运行J:\Winnt32.bat安装程序开始复制文件
         ①正在复制安装文件(开始复制文件到复制文件结束,即绿色进度条走完)
         ②正在重新启动计算机(即红色进度条走完,会跳出一个话框,千万别点话框中的“确定”按钮,不要理采它!)
第六步:拔出U盘(就是红色进度条走完了就拔掉U盘!)
第七步:手动重启电脑(这一步千万别漏了)

第八步:接下来的全部自动完成(开始时有一段时间黑屏,这是正常的,等一下就会自动进入安装界面,直到进入Windows XPSP3操作系统桌面)


(三)、PE下Ghost系统ISO安装XPSP3的方法:

(说明:好处就是快,坏处就是无法根据自己电脑情况定制,最大的坏处是有的ghost里面包含了自己不需要的软件,比如恶意软件)

第一步:网上下载Ghost系统ISO,放到U盘启动盘根目录,如J:\
第二步:将这个U盘启动盘插入电脑USB接口,重启电脑进入PE程序   
第三步:用PE中的虚拟光驱加载ISO
             (开始->程序->VIRTUAL..->找到并装入ISO->确定->最小化)
第四步:打开-->我的电脑-->找到并点击装载ISO的虚拟光驱盘符-->弹出光盘安装界面-->选中并点击莱单项安装Ghost xpsp3到C盘-->接下来,系统就自动安装了,直到进入Windows XP SP3操作系统桌面.

(虚拟光驱安装系统的方法,和硬盘安装系统的方法相似,一个是使用虚拟光驱软件,一个是使用硬盘安装器)


(四)、PE下XP SP3.GHO文件格式安装XP SP3的方法:

(说明:相比上面的好处就是节省了空间——空间紧张的可以用,另外,此法也适用于使用ghost备份了自己系统的人。)

第一步:网上下载Ghost系统.ISO后提取其中的XPSP3.GHO,放到U盘启动盘根目录,如J:\
第二步:将这个U盘启动盘插入电脑USB接口,重启电脑进入PE程序
第三步:用PE格式化你要安装的盘(开始—>我的电脑—>右键C盘—>格式化)
第四步:运行PE中的GHOST32.exe
第五步:Local--->Partition--->Fron Image
第六步:找到XPSP3.GHO文件所在的磁盘(U盘)-->双击XPSP3.GHO文件
第七步:选中要还原到的那个硬盘/分区
第八步:在按下最后一次回车后,拔掉U盘

 

(五)、PE下,还原硬盘中的ghost备份到电脑上
1.重启进PE
2.运行PE中的GHOST32.exe
3.从本地硬盘中加载备份的镜像:Local--->Partition--->From Image
4.找到ghost备份所在的硬盘/分区/文件夹-->双击.gho文件
5.选中要还原到的那个硬盘/分区
6.在按下最后一次回车后,拔掉U盘

 

(六)、PE下,备份C盘系统到硬盘非系统分区
1.重启进PE
2.运行PE中的GHOST32.exe
3.选择本地硬盘中要备份的目录:Local--->Partition--->To Tmage
4.选中存放备份的硬盘/分区/文件夹
5.在按下最后一次回车后,拔掉U盘
6.手动重启电脑

 

附:winnt32.bat  及 winnt.sif  内容
winnt32.bat
(复制蓝色字部分,粘贴到记事本中->另存为->在文件名空栏中输入winnt32.bat->保存得到winnt32.bat)
=============================================================

.\i386\winnt32 /dudisable /s:.\i386 /syspart:c /unattend:.\i386\winnt.sif /makelocalsource /tempdrive:c /noreboot

(必须阻止往U盘上写启动文件:红色命令部分,在加载虚拟光驱后,可将优盘拔下,执行winnt32.bat 时,所有启动文件会写入c盘)
=============================================================
winnt.sif
(复制蓝色字部分,粘贴到记事本中->另存为->在文件名空栏中输入winnt.sif在文件类型空栏中选中所有文件->保存得到winnt.sif) ,下面的文字也是可以修改的,比如修改管理员帐号和密码
=============================================================
; Microsoft Windows
; (c) 1994 - 2001 Microsoft Corporation. 保留所有权利。
;
; 无人值守安装应答文件示例
;
; 此文件包含如何自动安装或升级 Windows 的信息,这样
; 安装程序运行就不需要用户的输入。您可以在 ref.chm
; 中找到更多信息,该文件位于
; CD:\support\tools\deploy.cab
;
[Unattended]
Unattendmode = FullUnattended
OemPreinstall = NO
TargetPath = *
Filesystem = LeaveAlone

[GuiUnattended]
; 设置时区为中国
; 设置管理员密码为空
; 设置 AutoLogon为 ON 并登录
TimeZone = "210"
AdminPassword = *
AutoLogon = Yes
AutoLogonCount = 1

[LicenseFilePrintData]
; 用于 Server 安装
AutoMode = "PerServer"
AutoUsers = "5"

[GuiRunOnce]
; 列出当第一次登录计算机时您想启动的程序

[Display]
BitsPerPel = 16
XResolution = 800
YResolution = 600

[Networking]

[Identification]
JoinWorkgroup = Workgroup

[UserData]
FullName = "User"
OrgName = "Microsoft"
ComputerName = *
ProductKey     = "MRX3F-47B9T-2487J-KWKMF-RPWBY"

; 其他用户 Lenovo User      Lenovo (Beijing) Limited

=================================================================== 

二、优盘插入后直接有xp安装界面/linux安装界面

需要修改引导界面

 

三、优盘安装linux镜像

使用grub2,因为grub2可以使用loopback直接加载镜像(iso文件),而且grub2本身支持多种语言(syslinux需要改造下),因此会方便点

(一)、优盘不分区的情况下操作方法:

1、在优盘(假设该优盘被挂载为 /dev/sdb1)上安装grub2到启动引导区(注意下面第二条命令中,位置是/dev/sdb,而不是/dev/sdb1,也就是安装到了引导区了,而不是安装到可见的那个硬盘区里)。

代码:
sudo mount /dev/sdb1 /mnt -t vfat #挂载U盘sudo grub-install --root-directory=/mnt /dev/sdb #安装grub2到/dev/sdb, 并以/mnt作为根目录, 实际就是上一步挂载的优盘跟目录.

2、假设是要安装archlinux,则把archlinux-2011.08-2-archboot.iso放到U盘的镜像目录下(比如:/mnt/iso/archlinux-2011.08-2-archboot.iso)


3、然后编辑U盘grub2的启动菜单,初始化grub2的配置:
grub-mkconfig -o /mnt/boot/grub/grub.cfg
或者自己创建一个:
sudo nano /mnt/boot/grub/grub.cfg
代码:
### BEGIN /etc/grub.d/05_debian_theme ###set menu_color_normal=cyan/blueset menu_color_highlight=white/blue### END /etc/grub.d/05_debian_themeset timeout=30set default=0# (0) archlinux-archboot.iso-x86_64menuentry 'archlinux-archboot.iso-x86_64' {loopback loop (hd0,1)/iso/archlinux-2011.08-2-archboot.isolinux (loop)/boot/vm64initrd (loop)/boot/initrd64.img rootdelay=10}# (1) archlinux-archboot.iso-i686menuentry 'archlinux-archboot.iso-i686' {loopback loop (hd0,1)/iso/archlinux-2011.08-2-archboot.isolinux (loop)/boot/vmlinuzinitrd (loop)/boot/initrd.img rootdelay=10}

其中:

loopback是grub2用于直接读取优盘的功能模块,loop是挂载的优盘的一个代号(中介用的,后面可以不用写完整的路径),可以随意,比如下面的lo1 。

(hd0,1)是优盘启动后优盘的盘符,每个人的不太一样,因此,需要重新启动后,查看插入优盘的盘符,或者在安装时临时修改。

linux (loop)/boot/vm64 部分是指启动内核所在目录,需要根据不同的镜像进行修改,比如ubuntu中是/casper/vmlinuz

4、完了就是测试是否制作成功了,可以重启系统,然后选择优盘引导启动系统。启动后就会进入安装程序,相当于执行

代码:
/arch/setup
接下来的安装过程请参阅arch官方的wiki,如果网络不错,还是建议选择网络安装,省得安装旧包。

当然,如果会写菜单,grub2还可以引导很多,包括本机的win7/xp以及刚安装的arch(像我安装arch的时候就不安装引导程序,等安完重启时用U盘引导它启动,然后直接安装grub2。当然,也可以启动进入livecd,然后chroot到arch下安装grub2,这个扯远了)。

这样的好处就是,需要的时候只要把镜像拷贝到优盘上就可,平时可以删了留出空间干别的事情。既省了刻盘,也省的要清空U盘。

(二)、在分区的情况下:

目前测试ntfs ext4成功,其他未测试

注意:因为下文是直接使用电脑上的grub配置,不建议如此,因为如果电脑本身也是使用这个配置的话,会引发混乱!建议还是采用上面不分区时的做法,就是手动写或者自动生成后修改。

1 将下载的iso放入优盘分区中,分区任意。
2 在grub2启动项挂载iso。比如我的电脑有C: D: E: F: ,NTFS格式和ext4, swp分区。

将a.iso放在D:盘(linux下位置假设是(hd0,2))根目录下。grub2启动项上按c进入命令行模式,

代码:loopback lo1 (hd0,2)/a.iso
3 加载硬盘格式支持
代码:insmod ntfs
其中:
因为D盘是NTFS格式,如果是fat格式,则要换成insmod fat,依次类推其他格式。

3、原版的ubuntu9.10CD的启动内核在casper文件夹下,其他linux发行版请自行修改;代码:linux (lo1)/casper/vmlinuz boot=casper iso-san/filename=/a.iso noeject noprompt --

其中:
boot=casper是Ubuntu系列的LiveCD启动参数, 如果引导其他的Linux发行版镜像, 需要自行修改为适合其他系统的参数.
iso-sca/filename用绝对路径指定镜像文件位置.

4、相关文件名请自行修改代码:initrd (lo1)/casper/initrd.lz

5代码:boot
完成。测试新氧的9.04, U原版CD通过。均是CD版,DVD版未测试。

把1~4直接写入到/etc/grub.d/40.custom下,直接生成grub.cfg. 具体代码如下:

代码:menuentry "Ubuntu LiveCD On D:(这里名称任意)" {
loopback lo1 (hd0,2)/a.iso
insmod ntfs
linux (lo1)/casper/vmlinuz boot=casper iso-san/filename=/a.iso noeject noprompt --
initrd (lo1)/casper/initrd.lz
}
然后代码:update-grub
大功告成!
依此类推,可以填加任意多个liveCD了,你的启动菜单也会变的很壮观,但其实不占用过多的硬盘空间,只是各个镜像而已。
现在可以轻松自己打包各自的liveCD,再加上grub2有自己的启动盘,这样,不管是从机子硬盘还是移动硬盘、U盘、光驱内启动grub2,都可以应用以上思路直接启动硬盘或移动硬盘、U盘内的iso文件,而且是ISO的live系统,不影响移动硬盘、U盘的正常使用

 

(三)、挂载iso,提取引导文件[不推荐方式]

通过如下命令,挂载ISO文件到“/mnt/iso”目录下:
# mount -t iso9660 /rhel-5.3-server-i386-dvd.iso /mnt/iso -o loop

将“/mnt/iso/isolinux”目录下的“vmlinuz”和“initrd.img”两文件复制到根目录下。


注:

1、一般linux下的所谓优盘启动盘制作工具,都是这种方式,好处是直接方便简单,坏处是一个优盘只能一个镜像,这样大容量优盘就很浪费了。对于想制作启动、安装、维护全能系统的人来说,就不太适用了。

2、当然,也可以通过修改提取出来的文件的名字,来实现引导多个镜像,比如把isolinux改名为rhel5。但这样明显没有只修改grub菜单来得省事。

实现方法:

把iso文件里面的isolinux和images目录都提取出来,放到该分区的根目录,那个最好把isolinux这个名字改一下,改成fedora啊、centos啊、rhel5啊什么的,喜欢什么改什么;images名称不变。

修改menu.lst啦,在文本最后面加上类似下面的东西:
title install Fedora 10
kernel (hd0,0)/fedora/vmlinuz
initrd (hd0,0)/fedora/initrd.img

上文不适用LiveCD之类的系统,以上在CentOS5和RedHat Enterprise 5上试验成功。

对于Fedora、ubuntu等,在网上找了一些资料,并测试通过,可使用如下方法:

Fedora:
把iso LiveCD放在某个ext3(或者reiserfs、fat32)分区的根目录下,
然后把该iso中的LiveOS目录复制到这个ext3(或者reiserfs、fat32)分区的根目录。

再把isolinux/vmlinuz0和isolinux/initrd0.img复制到前面得到的LiveOS中。
经测试,发现只能放在根目录下,其他方式均会导致无法启动进入到图形化界面。

重新启动电脑,并进入grub,按c键进入命令行状态,按如下命令操作:
grub> root (hd0,X)
grub> kernel /LiveOS/vmlinuz0 root=/dev/sdaY ro liveimg rhgb

grub> initrd /LiveOS/initrd0.img
grub> boot
注意蓝色的X,Y部分需要修改成存放iso文件的分区,其中Y=X+1。

ubuntu:
将安装镜像文件ubuntu-9.04-desktop-i386.iso文件放在一个分区的根目录,如F:\
挂载iso文件,命令如下:

mount ubuntu-9.04-desktop-i386.iso -o loop /media/cdrom
进入/cdrom, 把casper目录下的vmlinuz及initrd.gz两个文件copy到放ubuntu-9.04-desktop-i386.iso的分区的

根目录,如F:\vmlinuz,F:\initrd.gz。
重新启动电脑,并进入grub,按c键进入命令行状态,按如下命令操作:

grub> root (hd0,X)
grub> find /ubuntu-9.04-desktop-i386.iso         #(这个好像不输入也可以)

grub> kernel /vmlinuz boot=casper iso-scan/filename=ubuntu-9.04-beta-desktop-i386.iso quiet ro automatic-ubiquity ocale=zh_CN.UTF-8 noprompt --

grub> initrd /initrd.gz
grub> boot 


四、安装win系统到优盘中

 

五、安装linux到优盘中

需要修改引导项,一些livecd本身就具备这样的能力,最懒的方式是指修改grub引导。然后引导进入的时候,再选择直接运行系统,即可。

不懒的话,就抄写下镜像里面相关的引导文件内容即可。

下面有操作实例,方法就是直接克隆一个硬盘镜像(使用dd),然后运行镜像。

六、直接加载镜像到内存中

把整个镜像加载到内存中,整个安装过程会很快,但这个方法如果镜像大小大于内存(比如内存只有2g,但镜像是个dvd4g),会耗光内存。

方法:使用SYSLINUX和MEMDISK

过程:

1、把优盘格式化为FAT32并创建如下文件夹:

X:\BootX:\Boot\ISOsX:\Boot\Settings

2、 复制镜像到优盘的ISOs文件夹中

3、到syslinux网站下载syslinux(版本要高于4.05),并复制:

./win32/syslinux.exe to the desktop, or wherever you want.

./memdisk/memdisk 到优盘的Settings文件夹中,并在此文件夹中创建一个文件:syslinux.cfg ,并写入类似以下的引导内容:

DEFAULT arch_isoLABEL arch_iso        MENU LABEL Arch Setup        LINUX memdisk        INITRD /Boot/ISOs/archlinux-2011.08.19-netinstall-x86_64.iso        APPEND iso
4、在syslinux.exe所在的地方,创建一个 *.bat (or *.cmd) 文件,并运行下面命令:
@echo offsyslinux.exe -m -a -d /Boot/Settings X:

到此步完成

注意: If you get the famous 30 seconds error (especially with the i686 version), press the Tab key at the "Boot Arch Linux" entry and add "vmalloc=256M" at the end for the netinstall image and "vmalloc=448M" for the core image.



第四章 测试

一般最直接的办法,是制作完成优盘启动盘后,重启电脑,查看效果,但这样明显麻烦费事,也不利于即时修改,因为,一般可以使用虚拟机仿真进行测试。

一、可模拟硬件环境的虚拟机:qemu

qemu是比较变态的一个虚拟工具,能够在一个计算机上模拟各种架构的电子设备(其他的虚拟机大都没有这个能力,只能模拟和本计算机同架构的硬件环境),比如x86、x86-64、PowerPC、SPARC 32、SPARC 64 ,ARM(常见手机平板用的芯片)等,可以称之为“仿真”的虚拟机吧。

既然是仿真,那么用来做跨平台测试开发就非常有用,可以不用掏钱去买那些设备了,比如开发用于手机的软件,不用再去买手机一个个来测试了,只需要在电脑上模拟出一个手机即可,大大节约研发成本。

而一般的手机系统厂商所发布的开发包(sdk),除了java虚拟机,就是用的qemu,比如已经被废弃的米果手机操作系统。


(一)固件

qemu可以跨平台运行,一般安装后有两个重要部分,以我的archlinux中为例(qemu 版本为 1.0):

1、用于架构的固件:x86、x86-64、PowerPC、SPARC 32、SPARC 64等平台的固件,名字以qemu-架构名形式出现,比如qemu-arm、qemu-mips,下面是我的系统中可用的可模拟架构:

qemu-alpha                qemu-system-arm
qemu-arm                  qemu-system-cris
qemu-armeb                qemu-system-i386
qemu-cris                 qemu-system-lm32
qemu-ga                   qemu-system-m68k
qemu-i386                 qemu-system-microblaze
qemu-img                  qemu-system-microblazeel
qemu-io                   qemu-system-mips
qemu-launcher             qemu-system-mips64
qemu-m68k                 qemu-system-mips64el
qemu-microblaze           qemu-system-mipsel
qemu-microblazeel         qemu-system-ppc
qemu-mips                 qemu-system-ppc64
qemu-mipsel               qemu-system-ppcemb
qemu-nbd                  qemu-system-s390x
qemu-ppc                  qemu-system-sh4
qemu-ppc64                qemu-system-sh4eb
qemu-ppc64abi32           qemu-system-sparc
qemu-s390x                qemu-system-sparc64
qemu-sh4                  qemu-system-x86_64
qemu-sh4eb                qemu-system-xtensa
qemu-sparc                qemu-system-xtensaeb
qemu-sparc32plus          qemu-unicore32
qemu-sparc64              qemu-x86_64
qemu-system-alpha

2、用于硬件模拟的固件:模拟视频卡、 PXE(Preboot Execution Environment) 启动和其他选项的单独的固件文件,可以在/usr/share/qemu里查看

bamboo.dtb        petalogix-ml605.dtb       sgabios.bin
bios.bin          petalogix-s3adsp1800.dtb  slof.bin
keymaps           ppc_rom.bin               spapr-rtas.bin
linuxboot.bin     pxe-e1000.rom             vgabios.bin
mpc8544ds.dtb     pxe-eepro100.rom          vgabios-cirrus.bin
multiboot.bin     pxe-ne2k_pci.rom          vgabios-qxl.bin
openbios-ppc      pxe-pcnet.rom             vgabios-stdvga.bin
openbios-sparc32  pxe-rtl8139.rom           vgabios-vmware.bin
openbios-sparc64  pxe-virtio.rom
palcode-clipper   s390-zipl.rom
注:有时候随 QEMU 提供的固件并不合适。例如,用于 x86 和 x86-64 系统的固件是传统的基本输入输出系统(BIOS)。如果您想测试或开发那些依赖较新的可扩展固件接口(EFI=Extensible Firmware Interface) 或更高级固件的软件,可能需要到别处寻找。QEMU 网站提供可扩展固件接口镜像,因此这种特殊条件能够满足。其他情况可能更困难。如果想要运行特定类型的固件,可能需要用相关的关键词上网搜索。

(二)、模拟方式

1、架构模拟:比如在x86_64的archlinux上模拟基于arm的手机操作系统andriod。


2、系统模拟:比如在x86_64的archlinux上模拟x86_64的debian系统。



二、测试进行流程

(一)安装qemu

待写

(二)试运行qemu


(三)设置测试所需的环境

既然是用于测试引导情况,那么,对于启动所需的选项和usb的支持,就是必须的了

指定硬盘:使用 -hda-hdb-hdc-hdd 来引用 Parallel ATA (PATA) 硬盘,-cdrom 指定 CD 或 DVD 镜像文件或设备。这些选项都采用文件名作为参数。光驱占用了 -hdc 的位置,因此不能同时使用这两个选项。

启动顺序: -boot,它指定了启动设备。使用 -boot c 从第一个硬盘启动,-boot d 从 CD-ROM 设备启动。

引导:-bios 选项指定一个不同的固件文件


(四)测试

其实这一步是最无聊的,就是不断的开启和关闭虚拟机

qemu-system-x86_64 -hda /dev/sdX

第五章、常见故障
一、中途被拔出
只需要重新加载就可以了,比如:
mount /dev/sd[x] /src
二、安装到最后需要采取的干预措施


第六章、操作实例

实例一:bigtall(从零开始,比较全面合理,但不建议新手尝试)

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

  1. 一个空的U盘,本人准备了两个:一个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,让红叶变得更丰满一些)。

至此,我的维护工具盘就成功了,给大家秀秀一下我的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接口,所以用起来比较慢。所以本人需要挑选一下环境才可以,我选择深山红叶。做法很简单,不过跟前文操作步骤略有不同,需要用UsbBoot格式化,步骤如下:

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

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

实例二:

1、将移动硬盘主分区设为活动分区,并格式化成FAT32格式。
2、用UltraISO打开6合1合盘,选中光盘根目录下的所有文件,右击,提取到移动硬盘主分区。
3、双击 “BOOTICE引导扇区维护工具”,选中移动硬盘后,点击“主引导记录M”、选“UltraISO”一栏,"安装/配置";再点“分区引导记录P”,选“syslinux4.04”一栏,"安装/配置"。

实例三:

使用UltraISO本身的写入映像功能。

使用UltraISO会有的问题:编码!尤其是在linux下,如果手动复制进一个镜像,会导致整个优盘乱码,只能重新制作启动优盘。


实例四:carbonjiao将linux安装到硬盘镜像(loop)中

1. 2011-03-18 木仓花axlrose的指点下,响应修改,功能加强。。。

用途:
1、多系统爱好者(比如俺),不希望磁盘分区太复杂,但又想使用多系统;
2、为测试系统方便;
3、方便删除系统(删除一个文件,修改启动配置);
4、可以做成类似PE的ROM系统;
。。。
还可以发展更多。。。

背景:
1、GRUB2 bootloader 已经支持loop设备启动(不知道其他的支持得如何);
2、Arch GNU/Linux 官方的启动脚本无法从loop设备启动

实现的效果: 启动文件中存放的Arch GNU/Linux

实现步骤:

1、 创建硬盘镜像

代码:dd if=/dev/zero of=/mnt/sda9/Arch/Arch-i686.img bs=1M count=3500创建一个3.5GB大小的磁盘文件Arch-i686.img 存放到 /mnt/sda9/Arch 目录下

2、 建立文件系统

代码:mkfs.reiserfs /mnt/sda9/Arch/Arch-i686.img这里只用reiserfs, 要看引导程序的支持程度, 本打算用btrfs的,结果用grub2-btrfs测试启动不成功
ext2 ext3 ext4 reiserfs 应该是支持的, 很盼望将来grub2-btrfs能完美支持btrfs的磁盘文件设备

3、安装(移植)系统到硬盘镜像
代码:sudo mount /mnt/sda9/Arch/Arch-i686.img /tmp/install安装: 不赘述, 很多文档介绍

移植现有Arch GNU/Linux 系统:
代码:sudo tar cvpf - / --exclude=/mnt --exclude=/media --exclude=/sys \
      --exclude=/proc --exclude=/var/abs --exclude=/var/cache/pacman/pkg \
      --exclude=/var/lib/pacman/sync | sudo tar xvpf - -C /tmp/install
4、修改相关配置
代码:sudo mkdir /tmp/install/sys
修改fstab (/tmp/install/etc/fstab),将挂载/的那行改为
代码:/dev/loop0          /            reiserfs          defaults  0    1
5、修改启动内核和硬盘镜像设备的系统

这个就是重中之重了, 因为目前Arch 官方的启动脚本不支持。 这里就添加一个hook来实现挂在硬盘镜像设备

1) 新建 /tm/install/lib/initcpio/hooks/automount 内容:
-----------2011-03-22--- 更新 官方模式,可以不用修改init
------------2011-03-18-- 在木仓花的建议下修改, 功能更强大
代码:代码:run_hook ()
{
    if [ "x$loopfile" != "x" ]; then
        mount_handler="loop_mount_handler"
    fi
}

# $1 /new_root
loop_mount_handler ()
{
    # 启动参数指定 real_root=loop=/dev/sda1 loopfile=Arch/archlive.disk
    # 或者指定 real_root=loop=/dev/disk/by-label/C loopfile=Arch/archlive.disk  (label有中文得时候会出错)
    # 或者指定 real_root=loop=/dev/disk/by-uuid/047C-F52A loopfile=Arch/archlive.disk
    #              上面的例子中"sda1"  "C"  "047C-F52A" 根据具体情况对应替代,或者用*花建议得grub2自动探测
    #echo "run automount hook begin"

    if [ "x$1" = "x" ]; then
        UNION="/new_root"
    else
        UNION="$1"
    fi

    # 保险点, 根据Arch目前风格,再检测、创建目录
    if [ "x$HOST" = "x" ]; then HOST="/host"; fi
    if [ ! -d $HOST ]; then mkdir -p $HOST; fi
    if [ ! -d $UNION ]; then mkdir -p $UNION; fi

    case ${real_root} in loop\=*)
        loop=${real_root/loop=}
        case $loop in *by-uuid*)
                if [ ! -e $loop ]; then
                        loop_lowercase="$(dirname $loop)/$(echo $(basename $loop) | tr [:upper:] [:lower:])"
                        loop_uppercase="$(dirname $loop)/$(echo $(basename $loop) | tr [:lower:] [:upper:])"
                        if [ -e ${loop_lowercase} ]; then
                                loop="${loop_lowercase}"
                        elif [ -e ${loop_uppercase} ]; then
                                loop="${loop_uppercase}"
                        fi
                fi
                ;;
        esac
        if [ -e $loop ]; then
                fstype=$(blkid -u filesystem -o value -s TYPE -p "${loop}")
                fsopt="-t $fstype"
                MOUNT="mount"
                if [ "${readwrite}" = "no" ]; then rwopt="ro"; else rwopt="rw"; fi
                case $fstype in
                        ntfs)  MOUNT="mount.ntfs-3g"
                                rwopt="rw"
                                fsopt=""
                                ;;
                        vfat)  rwopt="rw"
                        ;;
                        squashfs|iso9660|udf) rwopt="ro"
                        ;;
                        esac
                if [ "x$mountopts" != "x" ]; then
                        mountopts="-o $mountopts,$rwopt"
                else
                        mountopts="-o $rwopt"
                fi
                $MOUNT $fsopt $mountopts $loop  $HOST

                if [ -f $HOST/$loopfile ]; then
                        loopfile="$HOST/$loopfile"
                        fstype=$(blkid -u filesystem -o value -s TYPE -p "${loopfile}")
                        if [ "${fstype}" = "squashfs" ]; then rwopt="ro"; fi
                        #echo "mount -t $fstype -o loop,$rwopt $loopfile $UNION"
                        mount -t $fstype -o loop,$rwopt $loopfile $UNION
                            if [ $? -eq 0 ] ; then
                                echo "mkdir -p $UNION$HOST"
                                      mkdir -p $UNION$HOST
                                # 将存放硬盘镜像的分区挂载到目标系统的/host目录下,跟wubi的处理方式相同
                                #echo "mount -o bind $HOST $UNION$HOST"
                                mount -o bind $HOST $UNION$HOST
                                MOUNTED=1
                            else
                                echo " mount -t $fstype -o loop,$rwopt $loopfile $UNION  error"
                            fi
                        else
                            echo "$HOST/$loopfile  is not file"
                fi
        else
                echo "${loop} not exist!"
        fi
        ;;
        esac
    #echo "run automount hook end"
}随便写的, 快速实现需要的功能就可以了

2) 新建文件 /tmp/install/lib/initcpio/install/automount 内容如下:
代码:install ()
{
    MODULES=" $(checked_modules "/usb/host" | grep -ve "_cs" -e "sl811-hcd" -e "isp116x-hcd")"

    MODULES=$(echo ${MODULES}) #trim whitespace
    if [ -n "${MODULES}" ]; then
        MODULES="${MODULES} usb_storage sd_mod sr_mod"
        MODULES="${MODULES} $(checked_modules "drivers/usb/storage/ums-*")"
    fi
    MODULES="${MODULES} nls_utf8 cp936"
    BINARIES="blkid mount.ntfs-3g tr"
    FILES=""
    SCRIPT="automount"
}

help ()
{
cat<  This hook auto mount the root device base on cmdline.
  Can support:
        1. Boot from normal harddisk or USB disk;
        2. Boot from CD-ROM or DVD-ROM;
        3. Boot from loop device file (made by dd or other tools);
        4. Boot from squashfs files;
  ...
HELPEOF
}
3) 修改 /tmp/install/etc/mkinitcpio.conf
在MODULES 中加入loop
在HOOKS最后加入 automount
代码:HOOKS="base udev autodetect pata scsi sata filesystems automount"
4) ----2011-03-22 新automount脚本不需要改init 。。。

5) 重新创建内核镜像
代码:          sudo mount -o bind /sys /tmp/install/sys
          sudo chroot /tmp/install mkinitcpio -p vmlinuz-linux到现在为止,磁盘文件准备完成

6、 配置启动

有几种方式:
1) 直接grub2 启动
2) ntldr --> g2ldr 来启动
3) grub --> grub2 启动
。。。 还有好几种

我用的方法2),需要制作g2ldr (不赘述,有相关文档介绍)
grub2 启动配置文件 grub.cfg 启动loop 设备项内容:

--------------2011-03-18---木仓花修改、加强如下, 可以自动搜索。。。 使用卷标、UUID。。。
代码:menuentry "Arch i686 (on loop 虚拟盘)" {
        insmod part_msdos
        insmod reiserfs
        insmod loopback

        #set img_label=winxp    #指定分区卷标label时使用
        set img_file=Arch/Arch-i686.img  #设定查找标的
        search --file --no-floppy --set=img_root /$img_file    #直接搜索硬盘镜像文件
        #search --label --no-floppy --set=img_root $img_label  #查找指定分区卷标label方式
        #loopback loop0 (hd0,msdos9)/$img_file      #直接指定硬盘镜像文件位置
        probe $img_root -l --set=img_label          #探测分区卷标label ,目标label 不能有中文等无法识别的字符
        #probe $img_root -u --set=img_root_uuid    #探测uuid 但测试发现因为大小写问题导致linux的by-uuid值不匹配
        loopback loop0 ($img_root)/$img_file
        set root=(loop0)
        linux /boot/vmlinuz-linux real_root=loop=/dev/disk/by-label/$img_label loopfile=$img_file  quiet
        #linux /boot/vmlinuz-linux real_root=loop=/dev/disk/by-uuid/$img_root_uuid loopfile=$img_file  quiet
        # 此处还可以用if等判断, 来灵活使用label或者uuid, 欢迎高手指导
        initrd /boot/initramfs-linux-fallback.img
}重新启动即可。

后话:

1、 启动脚本automount 稍作变化, 可以扩展出更多更强的功能, 比如从squashfs 启动, 再挂载可写分区保存。。。 或者直接挂载内存做成类似PE的rom系统。。。

2、。。。


=====================================================

黑传说附加信息:

感谢上文中所有贡献者(不记名了,因为原来此文只是留在本地电脑中,汇编收集的,没留原作者名字),关于linux部分,很多是个人写的,另外大部分通过了个人肉测(系统和软件版本不同,可能效果会不同),windows下的,个人肉测不多

本文会持续更新,直到全部完成。