Windows

BIOS + GPT + GRUB + Linux + Windows 折腾笔记

其实从标题就能看出来我有多蛋疼了。我不期望还有别的人和我有同样的奇怪需求,但是希望本文的一部分或几部分能对部分折腾者有一定有作用。

一、为什么会有这样的需求

要 BIOS 不要 UEFI

虽说现在的主板都采用 UEFI 了;虽说 BIOS 是很古老的东西了……但是,我实在不喜欢 UEFI 的复杂设计。说是 Unified 但是我感觉它一点也不统一。最重要的是:UEFI 对 Linux 不够友好。

要 GPT 不要 MBR

虽说严格来说 GPT 也是 UEFI 的一部分,但是我对它的印象好多了——MBR 只支持 4 个主分区而 GPT 默认情况就能支持 128 个分区,再也不用小心翼翼地折腾扩展分区和逻辑分区——这也是我所讨厌的。

要 Steam.exe 不要 Steam.deb

虽然我已经用惯了 Arch Linux;虽然 Valve 也有出 Steam for Linux 甚至 SteamOS,但是至少到目前为止,毕竟 Windows 才是正经的玩游戏的操作系统。

二、BIOS + GPT

2009 年之后的主板基本是 BIOS + UEFI 双配置,为了不让 UEFI 来瞎捣乱,我在主板设置里会选择 BIOS Only 以堵死 UEFI 的路。至于 2009 年以前的那些不支持 UEFI 的主板,倒有些需要小心:虽然理论上,只要不是古董电脑,都能支持 GPT,但是有一小部分有问题的 BIOS 会无法从 GPT 启动。 GPT 的分区工具首选 gdisk,不要用太旧的版本,默认就能 4k 对齐。

三、GRUB + Linux

虽然受到软件无政府主义的困扰,但是 GRUB 依旧是一款功能强大且十分流行的引导器。本文所指的 GRUB 一律指 GRUB 版本 2,而不是曾经的 GRUB Legacy。 要想让 BIOS + GPT + GRUB 工作,你需要一个 EF02 分区。由于没有了 post-MBR gap,这个分区是给 GRUB 放置它的 core.img 的,不需要文件系统。事实上,把 core.img 放在一个单独的分区里比放在 post-MBR gap 里稳定、整洁多了。在 gdisk 里新建分区时将分区标识符改为 EF02 即可,大小的话,2 MiB 足够了。 创建完 EF02 分区之后,其他的分区正常创建即可,比如我这样:

Number  Start (sector)    End (sector)  Size       Code  Name
   1            2048            6143   2.0 MiB     EF02  BIOS boot partition
   2            6144        20977663   10.0 GiB    8300  Linux filesystem
   3        20977664       230692863   100.0 GiB   8300  Linux filesystem
   4       230692864       500117503   128.5 GiB   0700  Microsoft basic data

然后使用 grub-install 即可自动将 core.img 嵌入那个迷你小分区。 至于 Linux 的安装,无需多言。

四、+ Windows

如无特别说明,以下提到的 Windows 指 NT 内核 6.0 以上版本。本文以 Windows 8.1 为例。

傲娇的 Windows

MSDN 明确指出,Windows 只能安装于 BIOS + MBR 或是 UEFI + GPT 的组合上,而 BIOS + GPT 和 UEFI + MBR 是不允许的。这实在是太傲娇了——因为 BIOS + GPT + GRUB + Linux 是完全没有问题的。事实上,我的笔记本电脑刚安装的时候并没有考虑到往硬盘里灌 Windows,因此之前一直是 BIOS + GPT + GRUB 的配置,在这样的情况想让 Windows 入驻,简直是逼我上梁山…… 为什么 MSDN 声称 Windows 不能在 BIOS + GPT 工作?经过我的试验,发现其实只是 bootmgr 读不了 GPT 而已。直到 bootmgr 被唤醒之前,一切都是没有问题的,而 bootmgr 应该去读取 \Boot\BCD 然后再根据 BCD 去加载 \Windows\System32\winload.exentoskrnl.exe。可是 bootmgr 读不了 GPT,直接导致它找不到 \Boot\BCD…… 那么怎么办呢?

  • 换一个能读 GPT 的引导器,读取 BCD 之后正常加载 Windows 内核。——不好意思,这样的引导器不存在。在得出这个结论之前,我吃了很多苦。
  • 将 BCD 放在 bootmgr 能读的地方。——比如一(小)块 MBR 存储设备,它不一定要是物理的,也能是虚拟的。在得出这个结论之前,我流了很多泪。

而 Windows 默认的安装程序要求又高、功能又弱,根本不会给你选择启动文件安装到哪里的,所以必须要手工安装。

要 imagex 不要 Setup.exe

Windows 默认安装框架是在 Windows PE 里使用 Setup.exe。该程序会运行一系列烦人的检查并增加一堆不合理的限定,比如要求 .NET Framework,比如强制添加 300 MiB 的系统分区等。而实际上它所做的事情也不过是:解压 install.wim 到指定分区、写入引导扇区、写入 BCD 这三样。可是这三件事,能自定义的部分还很少或很麻烦,那为啥不自己来呢?所以我更喜欢的方法是启动到 Windows PE 之后手工安装。

Windows PE 哪里来?TechNet 提供的方法是从 WAIK 里生成。但前面说了,Windows 的安装框架是 Windows PE,而 Windows 安装镜像文件也不过就是 Windows PE 和 install.wim 的组合而已,所以直接从安装镜像里就可以释放一个 Windows PE 出来。用 wimlib 提供的 mkwinpeimg 可以很方便地做到这一点,能直接从 Windows 安装镜像中获取 Windows PE 所需的 boot.wim 并制成可启动的镜像文件。如果你懒得自己提取 Windows PE,那么这里有我做好的两份。两份 Windows PE 除了添加了一个 imagex.exe 之外没有任何改动,十分纯洁干净:(其实不添加也行,用更加高大上的 dism 也能释放文件)

install.wim 哪里来?Windows 安装镜像里就有,使用 7z e Windows.iso sources/install.wim 即可把它解压出来。在移动存储设备里保存 install.wim 而不是完整的 iso,甚至能省下 500 MiB 以上的空间。

接下来就是安装了。通过可启动媒体启动进 Windows PE,用 diskpart 进行合理的分区。以下为带注释的操作过程:

# 确认当前硬盘情况
DISKPART> list disk
# 假设系统硬盘为 Disk 0 (Windows 将安装于此)
# Windows PE 所在的盘为 Disk 1 (请忽略)
# 过会儿要创建的 VHD 为 Disk 2 (Windows 启动文件将安装于此)
DISKPART> select disk 0
DISKPART> list partition
DISKPART> select partition 4
DISKPART> format label="Windows 8.1" quick
DISKPART> assign letter=c
# 以上命令格式化要安装 Windows 的分区并分配卷标 C:
# 接下来创建并挂载 VHD
DISKPART> create vdisk file=c:\bootmgr.vhd maximum=32 type=fixed
DISKPART> attach vdisk
# 然后在 VHD 里创建并激活分区。offset 不是必须的,但是我喜欢
DISKPART> select disk 2
DISKPART> create partition primary offset=1024
DISKPART> active
DISKPART> format label=bootmgr quick
# 分配一个卷标 B:
DISKPART> assign letter=b
# 退出 diskpart
DISKPART> exit

然后就是安装 Windows 和 Windows 启动文件了:

# 解压文件,注意根据实际情况选择 index,此处为 1
X:\> imagex /apply install.wim 1 c:
# dism 的等效命令是:(长多了)
X:\> dism /Apply-Image /ImageFile:install.wim /Index:1 /ApplyDir:C:\
# 写入启动代码和启动文件
X:\> bootsect /nt60 b: /mbr
X:\> bcdboot c:\Windows /s b:

至此 Windows 部分就算完成了,可以在 diskpart 里 detach vdisk 然后重启进 Linux 继续操作。

用 MEMDISK 引导硬盘镜像

在上一节中,我们得到了一个装好了 Windows 的分区,以及一块 32 MiB 的虚拟硬盘镜像,这块虚拟硬盘采用 MBR,有且只有一个主分区,主分区里装着大约 19 MiB 的 Windows 启动文件。其实这些启动文件真正核心的只有不到 1 MiB,其他的都是语言包和字体等,如果你闲得无聊可以挂载来删除它们,当然硬盘镜像文件大小不会自动缩小就是了。

那么,MEMDISK 能直接引导 vhd 么?我一开始也觉得不能,因此查到了用 VirtualBox 或 QEMU 来把 vhd 转成 raw image 的方法:VBoxManage clonehd --type raw bootmgr.vhd bootmgr.img。但是后来经 @tjmao 的提醒,我才发现原来当 type=fixed 的时候,vhd 其实就是 raw image 加上 512 字节的 footer。切掉这个尾巴之后,得到的东西和 dd 式的 raw image 是一模一样的。而就算不切掉尾巴,这一部分也会被认为是未分区空间从而被忽略掉。所以,其实 type=fixed 的 vhd 是不用转换,直接可以当 raw image 用喂给 MEMDISK 的。

那么怎么喂呢?根据调用 MEMDISK 的方法不同,具体的语法也有一定差别,完整的叙述可在这里找到。以下是 GRUB 的方法:

menuentry "bootmgr.vhd" {
  linux16 /boot/syslinux/memdisk harddisk
  initrd16 /boot/bootmgr.vhd
}

把这一段复制到 /boot/grub/grub.cfg 中即可使用。如果要使它可在 grub-mkconfig 后自动生成的话,复制到 /etc/grub.d/40_custom 中即可。

至此 Windows 的引导就算是做好了。重启计算机在 GRUB 菜单中选择对应的 menuentry 即可进入。第一次进入的时候会自动安装驱动等,安装完自动重启,然后就功德圆满了。

五、一些可以改动的部分

如导言中所说,有和我完全一样的需求的人应该不存在,但是本文的思路可用于一些别的折腾过程中。以下列举了部分可以改动的部分,适用于不同的具体情况。

Linux 不是必须的

如果你只是想安装 BIOS + GPT 的 Windows,自然不用装 Linux。但是你可能需要备一个 Notepad.exe 在 Windows PE 环境中,用来编辑引导器的配置文件。

GRUB 可以换成别的

如果不装 Linux 了,那单独装个 GRUB 也没啥意思,还不如换点别的引导器。诸如 Syslinux, Grub4Dos 等,都可以用来加载 MEMDISK。具体的语法依然戳这里不过如果换成别的启动器的话,那个启动器得要像 GRUB 一样对 GPT 有支持……

VHD 的大小问题

在想到 VHD 的方法之前,我曾试过的是把装的引导分区的 U 盘整个 dd_rescue 复制下来。这是一个较老的 U 盘,容量只有 4 GB,但是就这样产生的镜像文件也太大了,无法被 MEMDISK 正确加载。虽然最后我成功地把这个镜像挂载之后缩小文件系统和分区使它「瘦身」,但步骤较复杂。想到 VHD 的方法之后就简单了,直接创建一个小一点的 VHD 然后在里面操作即可。现在已知镜像文件不能太大,否则 MEMDISK 加载不了,那么它最小能多小呢?

核心的 Windows 启动文件只有 bootmgrBoot\BCD 这两个,加起来不到 1 MiB。我也试过,引导分区里只放这两个文件,依然能正常引导,但是实际上 VHD 不能只有 1 MiB。这是因为:

  • bcdboot 复制启动文件的时候,默认会复制那些语言包和字体,总共 19 MiB 左右
  • NTFS 分区最小需要 8 MiB

我实验成功的最小大小是 10 MiB 的 VHD,里面装着一个 8 MiB 的 NTFS。

当代的计算机大部分都是 4 GB 和 8 GB 的内存了,所以不用克扣这么一点点空间(毕竟它引导完就被释放掉了),所以创建 VHD 时选择 32 MiB 是个比较好的选择。记得 type=fixed 就行。

六、吐槽和尾巴

好久没写有关 Windows 的博文了。本来以为自己的对 Windows 的需求在 VirtualBox 里就能完全满足了,因此笔记本电脑安装系统的时候并没有为 Windows 考虑过,直接就是 BIOS + GPT + Linux 的组合了。可是自从 2014 年初在迷上了 Call of Duty 之后就入了 Steam 的大坑了,因此对独立的 Windows OS 的需求再次浮现。之前尝试 BIOS + GPT + Linux 既有配置下再塞个 Windows 怎么都没成功,因此选择了 Windows To Go 的解决方案——将整个 Windows 及其引导文件装到外置 USB 硬盘里。可是 USB 机械硬盘的速度又怎么能和 Samsung 840 Pro SSD 相比……于是发愤图强,努力研究,终于实现了 Windows 本体安装在 GPT SSD 里而把引导文件装到 MBR U 盘里的方法。慢慢地这样的方法又不能满足我的要求了,于是继续发愤图强,在各种来源都说这是不可能的情况下,我最终还是曲线救国成功了。

于是便有了本文。

转载请注明出处: https://wzyboy.im/post/1049.html

从现实到虚拟

本文介绍的是 disk2vhd 软件的应用。关于如何从现实世界进入矩阵,详见“黑客帝国”。
(我承认上一行文字是仿 Wikipedia 的……)

一、为什么要从现实到虚拟

你是否曾使用过虚拟机?你是否曾觉得虚拟机里的世界那么“不真实”?缺少了常用软件的支撑、让人郁闷的默认设置……没有了熟悉的环境,虚拟机用着是如此的不爽。

你是否曾使用过类似“影子系统”的软件?这种“软件还原卡”几乎可以让 Windows 变成“打不死的小强”,但是天生折腾心理让你需要装多系统,需要调整启动文件:重启后无法引导怎么办?这可不是影子系统能帮你的了。Symantec Ghost?拜托,杀鸡焉用牛刀?

正是由于包括但不仅限于以上的种种原因,我们需要一款软件,能将现实中的操作系统(主要指 Windows 家族)复制一份到虚拟机里。其实就是把当前的内容灌到一个 vhd 文件里。

Update: 补充一句,虚拟机里是运行不了 Ghost 的,所以使用 Ghost 是无法“从现实到虚拟”的。

二、准备

工具软件方面,只需要一个,那就是 disk2vhd。这是 Sysinternals Suite 中的一个小软件。这个 Sysinternals 公司成立于 1996 年,专门出各种各样的用于 Windows 调教管理监察的免费小工具。十年后的 2006 年,微软看上了它的实力,就把它买下来了。现在它们的大部分工具(除了某些,比如恢复 Windows 密码的 NT Locksmith 软件)都可以在微软的 TechNet 上下载到

操作系统方面,必须要是 XP(NT 5.2) 或以上的系统,根据它的官方说明,包括 Vista 在内的 NT6 系列也是完全支持的,x64 版本也包括在内。

硬件方面,主要是对磁盘有要求,即你得有一个剩余空间比较大的分区。另外,根据它的说明,如果有两块物理硬盘的话,制作 vhd 的速度会快一些,但是如果只有一块(大部分人只有一块吧),也是没有问题的。根据我的实测,制作一个 10GiB 左右的 vhd,在我的电脑上(2006 年主流配置),大约是 15 分钟的时间。

三、制作

运行 disk2vhd 软件,如图。

在图中可以看到电脑上已经挂载的那些卷,Size 是说卷的容量,Free 是剩余空间的大小,而 Required space 则是说目标 vhd 所需要占用空间的大小。默认是全部选中的,它们将被用来创建一个 vhd 文件,大小将是所有的 Required space 的总和。但是虚拟机里通常只要用到一个系统分区就可以了,所以一般只要勾选系统分区,其它都不要勾选。上面还有一个文本框,是用来指定 vhd 的路径和文件名的。默认应该是保存在剩余空间最大的分区的根目录里,以机器名为文件名。

需要注意的是,就算不勾选后面的数据分区,它们的分区信息也会被囊括在 vhd 文件里,只是分区上没有创建卷(未格式化)而已。

一切确认好之后,就可以点击 Create 开始捕获硬盘并生成 vhd 了。时间不会很长,正如本文之前所说,在 2006 年主流配置的电脑上,一个 10GiB 的 vhd 也不过 15 分钟。

vhd 终于创建完毕了。假设它就是 D:\wzyboy.vhd 吧。

四、关于 VHD

VHD 这种好东西,wzyboy’s blog 之前也做过一些介绍,更详细的可以参见 Wikipedia (zh/en)。它能被大部分虚拟机软件所支持,并且从 Windows 7 开始被原生支持,也就是说 Windows 7 可以被灌装在一个 vhd 里启动了(很像 Ubuntu 等发行版的 Wubi 安装、启动方式,当然,没有 Wubi 那么方便)。

在 Windows 7 里,可以通过自带的磁盘管理工具 diskmgmt.msc 来挂载 vhd。方法见这篇文章的第二节。

不过,有一点要注意,那就是一个 vhd 完全模拟了一个真正的硬盘,它也可以被 Windows Loader 识别,Windows Loader 会分配它一个 GUID。而一旦你用上面的方法挂载了 vhd ,它就会与现在你电脑上已经有的硬盘的 GUID 冲突,所以 Windows 会重新分配一个 GUID 给它,这样之后,vhd 里的 Windows Loader 就不能识别硬盘了,所以这个 vhd 在虚拟机里就会不能启动了。所以,请打消挂载 vhd 然后看看里面有什么东西的念头。或者,你可以在别的电脑上 / 换一块硬盘启动之后再挂载。总之不能有 GUID 相同的物理硬盘 / 虚拟硬盘同时被挂载。

五、在虚拟机里从 vhd 启动

现在该到检验成果的时候了。刚才说了,主流的虚拟机软件都支持 vhd 作为虚拟机的硬盘的,比如被微软收购后变成免费软件的 Virtual PC。不过我个人比较喜欢功能更强大的 Sun VirtualBox。这是一个开源软件。安装好软件之后启动之,按 Ctrl+D 打开虚拟介质管理器,添加刚才创建出来的 D:\wzyboy.vhd,然后再新建一个虚拟机。虚拟机新建向导很友好,这里不再赘述,新建好之后应该是这个样子的:

呃,Snap7 是我给它起的名字。

万事俱备,按下 Start 按钮启动它吧~ 多么熟悉的启动动画……我的启动动画是修改过的,于是我在虚拟机里看到的启动动画也是修改过的……我的登录界面背景也是修改过的……最终我来到了熟悉的桌面……(点击看大图)

两个一模一样的系统并行运行着:(点击看大图)

多么有趣啊。现在你可以随便做什么事情了,虚拟机弄坏了没关系的……

最后稍微提一句虚拟机里的硬盘。打开资源管理器可以看到那些分区都还在,只是没有格式化而已,你可以随意格式化它们……不过大小已经固定了。这牵扯到“分区”(Partition)和“卷”(Volume)的区别,不再跑题了。

六、直接从 vhd 启动?

文章到这里还没有结束。按理说,虚拟机里跑个 Windows 7,只有 512MiB 的 RAM,并且还受到更多的性能限制,应该比较卡吧?但是其实还是挺流畅的(出乎我的意料),反应速度什么的和主机太大区别,估计是 Windows 7 的虚拟化特性比较好吧。但是呢……既然 Windows 7 是支持从 vhd 启动呢,那直接启动它会怎么样呢?

要把 vhd 添加为一个 BCD 里的启动项可比“把大象装冰箱”复杂一些,特别是用命令行工具 bcdedit.exe 的话,好在有一个叫 EasyBCD 的工具解决了这个问题,这篇文章介绍了它的使用方法。

顺利地把 vhd 添加为一个启动项之后,我满怀希望地准备从它启动,但是失败了,在启动动画过后,迎接我的不是登录界面,而是蓝屏……我再试了几次,依然如此。于是我回到 Windows 7 里,把 vhd 挂载,然后重新分配 GUID,再次试图启动……但是依然是蓝屏。

我表示无解。

七、尾声

嗯,这是高考结束后更新的第一篇真正的文章。希望大家喜欢。若要转载,请务必注明出处及链接(详情请见页面底部的 CC 协议)。本文地址:http://wzyboy.im/post/658.html

用BitLocker创建一块需要密码才能进入的区域

自从“陈老师”的某个“门事件”之后,信息安全在“普通人”心目中的地位就越发重要了,不少人想到了加密硬盘上的数据。那么,用什么加密呢?对称式加密还是非对称式加密?用什么加密软件?解密方便吗?能随时访问吗?要转移加密文件怎么办?不少人为这些问题困扰着。本文将介绍一些常见的加密知识,并介绍一种组合式加密方式,不需要用到第三方软件,且安全、方便、一劳永逸。无论是你的私人日记,还是公司的商业机密,都可以用这种方式来加密。其实本文所介绍的方法用一些如 TrueCrypt 之类的老牌专业加密软件也可以做到,但是此方法不需要用到第三方软件。

一、一些加密方式及其优缺点

首先:没有绝对安全的加密方式

如果要论绝对安全的话,的确是没有绝对安全的加密方式的。以密码加密及暴力穷举为例,你设置了一个 12 位的强密码,别人暴力穷举要多少时间呢?你拿当前最先进的 CPU 为标准,计算,得到结果:一万多年。但这个结果真的是这样的吗?人类科技的发展是跳跃式的,计算机的发展更是如此。以一千年为例。一千年前的人类是什么样子的?那时的人类用什么东西来计算?那里还没有计算机,甚至连电都没有,但是现在呢?现在的计算机有多么发达?那时的人类设置了一道密码题,号称要 50 年才能人肉穷举完,但是放到现在,只要 0.0000001 秒就算出来了。你现在的密码也是如此,你不能预言什么时候会出现量子计算机之类的可怕的东西,也许 100 年后就出现了,于是你那号称 10000 年才能破解的东西,也许只用了 101 年就破解完了。

这么说得让人可怕,但是我们只要相对安全就可以了。什么是相对安全呢?举个通俗的例子。有一场考试,你是考官,你有考试的答案。答案装在一个用坚不可摧的材料制作的密码箱里,密码箱是四位密码的,也就是说最多试 10000 次就可以破解出来,那么密码箱里的答案安全吗?答案是未知。如果考试将在一个月后举行,期间密码箱被盗,那这答案就危险了,一个月的时间足够试 10000 次了。但是如果考试将在 5 分钟后举行,那这答案就是安全的,因为 5 分钟后这个密码箱里的信息就失效了,而这四位数的密码足够撑上 5 分钟的穷举时间。这就是相对安全。

明白了这些,请继续往下看。

最常见的:压缩软件加密

这是不少人用来加密自己数据的方式。这是一种对称式加密方式。用商业软件 WinRAR 或是开源的 7-Zip 来加密文件,方法就是直接在文件或目录上右击,然后把它们压制成一个压缩文件,制作压缩文件的时候加上一个强大的密码,压缩完成后将源文件删除甚至粉碎。

优点:

  • 简易。有点基本电脑操作常识的人都会这样的操作,非常简单。
  • 有效。目前对付压缩文件密码的方法还只有暴力穷举这一种。所以如果密码足够强大的话(如上文所说,强大到使破译者破译它需要的时间大于这个信息的有效期),这是非常安全的。
  • 转移数据方便。如果你要把加密的商业机密传递给你的合作伙伴,那么直接把压缩包通过网络传送给他,然后再把压缩包的密码通过其它方式(非对称式加密等)传送给他,这些加密数据就传输完成了。甚至你可以把压缩包和密码都放在存储介质里亲手交给对方。只要保持存储介质不被调包,那么也是安全的。

缺点:

  • 加密解密速度慢。如果压缩包里是你每天打开电脑都需要用到的数据,比如一份企划案。那么就麻烦了,每天开机都要解压之,然后编辑修改,关机前还要重新加密。关键问题是,如果这些文件很大,那么加密和解密的速度都是慢的。
  • 容易因疏忽而导致泄露。如果你加密后忘记删除源文件,那么就完蛋了。就算删除了,也有数据恢复软件可以把它恢复出来。就算是用数据粉碎机使得源文件不可恢复了,你能保证解压时的临时目录里没有数据残留吗?难道你要把整个硬盘分区都粉碎一遍?就算你单独分个区,专门用来粉碎着玩,但是你能保证在焦头烂额的工作之后你还能记得这些步骤吗?就算你会编个脚本什么的自动执行这些步骤,你能保证你公司的老总也会编脚本吗?……好吧……停止吧。

我的名字叫强大:专业加密软件

这世界上不少的专业加密软件,有些是商业的,有些是免费的,有些甚至是开源的。比如这个

我来自微软: EFS 加密

这其实是微软的 NTFS 文件系统中的一项功能,是一种基于文件系统的对称式加密。方法是在 NTFS 卷中,右击想要加密的文件或目录 → 属性 → 高级 → 加密文件。经过这样处理过后的文件或目录在资源管理器里默认显示为绿色。

二、关于 VHD 及如何创建、挂载

VHD 的全称是 Virtual Hard Disk。这最早是 Connectix 开发的一种技术,可以虚拟出一块硬盘,然后以一个文件的形式来存储这块虚拟的硬盘,文件里包括但不仅限于的信息有硬盘的分区、硬盘里的所有数据等。这个技术后来被微软买下了,并用在 Microsoft Virtual PC 里,但是到了 Windows 7 时代,这种技术被更多的人所了解,因为 Windows 7 提供了底层的支持。

底层支持是什么意思?在之前,你要用到 VHD,无非是在 Microsoft Virtual PC 或者是 Sun VirtualBox 等虚拟机软件里,而现在,在加载底层驱动的时候,VHD 就已经被支持了,这意味着 Windows 7 还没启动完成,你就已经可以读取并使用 VHD 了。

这又意味着什么呢?意味着你可以把 Windows 7 装到 VHD 里,然后从 VHD 启动!也就是说,可以像用 wubi 装 Ubuntu 那样,把整个 Windows 7 装到一个文件里!又或者,相当于把虚拟机里的系统带到了宿主电脑上启动了。微软官方有视频教程教你怎么做。

本文并不打算教你如何把 Windows 7 装到 VHD 里,而是要借用 VHD 来创建一块需要密码才能进入的区域。下面讲讲 VHD 的创建及挂载。前提:你正在使用 Windows 7 操作系统。

  1. 在“运行”里敲入 diskmgmt.msc 打开“磁盘管理”。
  2. 在菜单里选择创建 VHD,打开如下的窗口。
  3. 设置保存 VHD 文件的位置。
  4. 选择 VHD 文件的大小。注意最大也不能超过你放 VHD 文件所在分区的剩余空间的大小。事实上,太大也没有意思,用不掉,所以适可而止就行了,我选择的是 1GiB 的大小。
  5. 下面有一个格式问题,建议选择固定大小,动态大小并不方便。
  6. 开始创建。创建过程视你选择的文件大小而定,1GiB 的话,大约一分钟就搞定了。此时你存储它的目录里已经有一个对应大小的文件了。因为选择的是固定大小,所以以后它就一直这么大了。
  7. 此时你会发现 VHD 已经被自动挂载了,下面的磁盘列表里多了一个出来,右下角可能还会出现正在安装新硬件的提示,过了一会儿,这块 VHD 就像真正的硬盘一样出现在磁盘列表里了。
  8. 新硬盘买回来装上去要干啥?要分区呗。这块 VHD 虽然是虚拟的硬盘,但是它像真的硬盘一样,全新出厂,要初始化一下,然后分区,看图:
  9. 用 MBR 方式初始化它,然后就可以右击它进行分区了,只分一个区也行,分两个区也行,不管你怎么分,都不影响你真正的硬盘的分区表,所以随便玩好了。
  10. 分好之后,应该是这个样子的:(我分了两个区)

    同时在资源管理器里和系统托盘里都能看到它的存在,就像一块移动硬盘一样存在着。

三、关于 BitLocker

BitLocker 是微软推出的一种加密技术,由于众所周知的垄断地位,微软可以与一些硬件厂商相合作,使 BitLocker 与硬件相结合,更好地保证数据的安全。

BitLocker 只有在 Windows Vista 及以上版本的 Windows 里才有,而且要是 Enterprise 或者 Ultimate 版本才行。这中间又有一些小小的差别,比如 Vista RTM 中通过 GUI 只能加密操作系统所在卷, Vista SP1 及以后的版本都可以加密。而在 Windows 7 里,又增加了加密可移动设备的功能。

BitLocker 的优点

  • BitLocker 用的是 AES-128 的加密,到目前为止是非常牢靠的。
  • BitLocker 可以设置成对用户透明的模式。用户是感觉不到它的加密与解密过程的。
  • BitLocker 可以与硬件结合,发挥更大的效能。
  • BitLocker 加密不会影响文件速度!

BitLocker 的缺点

它是基于分区的加密,也就是说,它只能加密整个分区,而不能加密某个文件或目录。这带来一些问题:

  • 我需要为了加密而单独分一个区出来吗?
  • 我要把文件传送给别人怎么办?用移动硬盘倒是可以,但是网络传输怎么办?
  • 它对用户透明,所以人家一旦占用了我的电脑我的文件就形同虚设了。

Bitlocker + VHD

有一个解决方案可以去掉 BitLocker 的那些缺点,那就是用 BitLocker 加密 VHD 里的分区。

  • 加密之后是一个文件,可以随便怎么传输。
  • VHD 文件如果没有装满,压缩率是非常高的,可以轻易压缩到里面的文件所占的空间的大小,方便网络传输。
  • 每次要用就挂载,不要用就在系统托盘里像安全删除移动硬盘一样把它删除了,就卸载了。
  • 每次挂载之后的进入都是要输入密码的,以确保不会被非法使用。

四、用 BitLocker 加密 VHD 分区

这一步骤和加密普通分区是差不多的。

  1. 按照上文的方法挂载 VHD 分区。
  2. 在资源管理器里右击要加密的分区,启动 BitLocker。
  3. 这里选择用密码方式加密,输入一个足够强壮的密码,然后按提示把密码恢复文件保存到一个安全的地方。如果你记忆力够好,把文件删除了都没事。
  4. 开始加密。这一过程视分区大小而定,1GiB 的分区也不会超过 3 分钟。注意,这个过程是一劳永逸的,只有这第一次初始化要这么多时间,之后的操作都是不需要等待的。并且正如上文所说,即使你从非加密区分往加密分区复制文件,或是从加密分区向非加密分区复制文件,读写速度也是不会改变的。
  5. 加密完成后是这个样子的:
  6. 大功告成。你可以在加密分区里随意存储机密文件了,用完之后在系统托盘里删除掉这块 VHD,别人就无法操作了。如果要再次使用,则在磁盘管理里再次挂载即可,挂载之后是要重新输入密码的。

五、尾声

这篇文章我写了好久,但是写完后才发现,这真是自己一时冲动写的。废话了一大堆,其实没啥实际意义……不过既然写得很辛苦,那就发上来吧,可能,也许,会对一些朋友有用吧。

转载请注明本文地址,谢谢。

——————————我是分割线————————————

唔,以下的内容与本文无关。

RSS 出错了

不知造了什么孽,本博客的自带 RSS 输出出现了奇怪的问题:每月 1 日会自动随机输出以前的 10 篇旧文章,实在是倒人胃口,估计也影响了不少订阅自带输出的 Google Reader 用户的心情。在此我表示非常非常非常地抱歉……但是我实在是查不出这是什么原因,因为我已经把 RSS 相关的插件都禁用了,还是如此……不过,值得高兴的是,我用 FeedBurner 烧制的 RSS 源没有出现问题,情绪稳定,所以建议订阅本博客自带 RSS 的用户改订阅 FeedBurner 的源……详情见这里。谢谢你们啦~

高三了……

7 月份和 8 月份的时候,本博客的更新还是比较频繁的,但是进入 9 月份以后,本博客的更新频率就一下子降了下来。为什么?因为我高三了……高三的生活压力大的……非常大,所以以后写博客的机会少了一些了,可能要一到两个月才有一篇更新吧。不过大家不要因此而退订我的博客啊……等我上了大学——或者说 2011 年 6 月初高考结束,一切就恢复了,我会写出更多更实用的文章的。谢谢大家支持。

小广告:可定制的多功能 U 盘

这这这……这真的是广告。很久以前,我闲着无聊写了一篇《教程:如何制作一个多功能 U 盘》,貌似还挺受欢迎的。后来 @btfish 等人提醒我说可以批量做一些这样的 U 盘,然后在网上卖,方便那些动手能力不强的朋友(尤其是 MM)自己装系统、恢复系统啥的。我觉得这倒是个好主意,就去买了些 U 盘,试着做个一个,的确是赠送 MM 之佳品啊。 @btfish 已经自己买了一个了。不知大家有这方面的需求吗?如果有,我就再去买些 U 盘做,然后邮寄,如何?详细情况请点击这里查看~

用 Android 手机控制电脑

冬天,北风吹着、雪花飘着,宅男宅女都窝在被窝里不愿出去,但是又想用电脑上个网,看看动漫、打打游戏啥的……钻出被窝就意味着寒冷,待在被窝里就意味着不能玩台式电脑……真的是这样吗?

看几张截图:

snap20100824_121638

snap20100824_122001

snap20100824_120621

snap20100824_121039

这些截图并不是在电脑上截下的,它们是在一只普通的 Android 手机上用 ShootME 这个软件截下的。看了这些截图,你应该明白,要在被窝里看动漫、玩台式机上的游戏不再是难事了。

要实现这样的效果也不难,并不是我在 Android 上装了一个 Windows 操作系统。它只是用了远程桌面功能而已。根据维基百科的解释,远程桌面协议是:

远程桌面协议(RDP, Remote Desktop Protocol)是一个多通道(multi-channel)的协议,让用户(客户端或称“本地电脑”)连上提供微软终端机服务的电脑(服务器端或称“远程电脑”)。大部分的Windows都有客户端所需软件。其他操作系统也有这些客户端软件,例如Linux、FreeBSD、Mac OS X。服务端电脑方面,则听取送到TCP 3389端口的数据。

除了微软的 RDP,其它的操作系统,如 Mac OS X 什么的,也是有相应的远程桌面协议的,所以理论上你也可以在 Android 手机上玩 Mac OS X。但是此文仅以 Windows 7 为例进行介绍。

客户端准备

客户端就是你的手机。此处特指装备了 Android 操作系统的手机。至于版本是无所谓的,Donut, Eclair, Froyo 都行,如果你能搞到 Gingerbread 或者 Honeycomb,你也可以试试……手机的配置更是无所谓的。我是拿 HTC Dream 做的测试。HTC Dream 是世界上第一款商用 Android 手机,它的配置在现在看来是相当相当落后的,但是实际情况是用 HTC Dream 远程桌面连接我的电脑也是非常流畅的,没有卡的感觉。

需要的软件是一个支持 RDP 的远程桌面客户端。这里推荐下 Xtralogic 牌的。点击下面的图标可以下载它的汉化版。(汉化质量不敢恭维……好多错别字)

服务器准备

服务器就是你的电脑。此处特指装备了 Windows 操作系统的电脑。版本么,Windows XP 以上就可以了。Windows 2000 也许……也行吧。不保证。Windows 7 是最佳的。不过由于我常用的 Windows 7 系统里关闭了太多的服务,所以此处以 Windows 7 的同源兄弟 Windows Server 2008 R2 为例介绍。(截图是在 Windows 7 里截的)

RDP 是微软的协议,所以 Windows 里是自带此功能的,不需要再装其它的软件。设置方法如图:(如果你是在网页上看的,点击看大图)

rdp-setup-windows-7

需要说明的是,如果你的账户已经是管理员账户了,那么就不要再点“选择用户”了,直接保存即可。不过需要注意的是,你要使用的远程连接的这个账户是一定要设置密码的,没有密码的账户是不允许连接的。

连接!

远程桌面不一定要求要在同一局域网里的,理论上公网上任意两只设备都能相互连接,但是此处以局域网为例进行介绍。

首先要确保手机和电脑在同一局域网里,在同一网段里。可以把电脑和手机都连接到同一个路由器下面,然后都设置好固定 IP。比如电脑的 IP 是 192.168.0.100,手机上的 IP 就可以设置为 192.168.0.101 什么的。Windows 下设置 IP 的方法是在“网络连接”里,打开“本地连接”的属性 → “TCP/IP 协议 版本4” → “属性”,在这里改。Android 下使用固定 IP 的方法是打开“无线设置” → “Wi-Fi 设置”→ Menu 键 → “高级” → “使用静态 IP”, 在这里改。

改完之后两只设备应该可以互相 ping 通了。可以在 Android 上任意终端模拟器上输入 ping -c 4 192.168.0.100 (这是电脑的 IP,请根据实际情况修改),Ping 通了就算设置好了。事实上,很多人家里只要是用路由器上网的,基本都已经在同一网段了,这些设置都可以省略的……只要知道电脑的 IP 就可以了……

打开手机上已经安装好的“远程桌面”程序,按 Menu 键 → 添加服务器。地址就填刚才电脑的 IP,用户名填你在电脑上的登录名,确切地讲是你加入远程桌面允许用户列表里的名字,密码就填你电脑上的密码,接下来几个都可以不填。下面讲讲分辨率。

一般来说,手机的分辨率是小于电脑的,所以如果在分辨一栏选择了一个大于手机分辨率的值,那么手机就只能看见一部分屏幕,需要靠滑动来查看其它的部分,就像一个网页一样,要上下拖动才能看完整。如果把视图缩小,那么的确是可以看完整的,不过字也就变小了。如果选择“适应屏幕”,则是把远程桌面的分辨率设置成和手机分辨率一样的,这样既是完整的,又是字正常的,但是这样的分辨率下可能有一些电脑上程序不能完整显示。在题图中,第一、二、三张图选择的是适应屏幕的分辨率,第四张图是选择了一个大于手机屏幕分辨率的分辨率。

综上,如果你的手机的屏幕分辨率本来就比较高的话,比如 Nexus One, Milestone, Desire 啥的,就选择适应屏幕好了,你会感觉你在用上网本的,如果你的手机屏幕分辨率比较低,比如 Dream, Magic 啥的,就选择一个标准分辨率 1024×768 好了,或者可以选择一个 960×480 (长宽都是 480×320 的两倍)的分辨率,然后视图缩至最小,个人感觉那样的字还能勉强看清,题图中的第四张就是这样的分辨率。

全部填好后,点“保存”,然后这个配置就被存储下来了,以后只要启动程序,连接之就可以了。

附注:

  1. 远程桌面只是传输视频和音频信号,所以即使你在用远程桌面玩电脑上的游戏,手机也不会感到卡,因为游戏是运行在电脑上的,传到你手机上的只不过是一个视频和音频信号而已。
  2. 玩这个东西当然是屏幕分辨率越大越好,我曾经见过有在 iPad 上装远程桌面连接 Windows 7 的……
  3. 最好用一只用实体 QWERTY 键盘的手机来玩这个,比如 Dream,Milestone 什么的。

    ~~~~
    wzyboy
    Twitter: @wzyboy
    转载时请注明本文地址,谢谢合作。

    成功安装 Windows Server 2008 R2

    主流的操作系统,比如 Windows, Ubuntu, 甚至 Puppy Linux 之类的,都分两个版本,一个是 Desktop 版,一个是 Server 版。顾名思义,前者适用于桌面电脑,后者适用于服务器。一般来说,我们装的都是 Desktop 版。以用户最多的 Windows 为例,我们平时所说的 Windows XP,Windows Vista,Windows 7 什么的,都是桌面版本。而服务器版一般人很少接触。Windows Vista 对应的服务器版本是 Windows Server 2008,内核为 NT 6.0,与 Vista 是一样的。而 Windows 7 对应的服务器版本是 Windows Server 2008 R2。别看只是多了一个 R2,但性能上也是 Windows 7 与 Windows Vista 的差距啊!

    Windows Server 2008 R2 简介

    首先,这是一个服务器系统,是微软在 2009 年 10 月 22 日发布的,这个操作只有 64 位版本。确切地讲,这是微软第一个只有 64 位版本的操作系统。这个操作系统是 Windows 7 的服务器版本,所以内核也是 NT 6.1,比它的上一代,也就是 Windows Server 2008 要强不少。

    根据我的实测,整个系统装完之后占用 7.5GiB 的硬盘空间,相对还是比较省的。没有我想象中的 64 位系统那么大。开机后内存约为 500MiB,还算可以接受。完成安装的话,是有 GUI 的,但是主题服务是关闭的。

    优点

    1. 稳定。服务器系统的目标人群是网站管理员,是运行在服务器上的,所以稳定是必须的。
    2. 精悍。一些花哨的东西都去掉了,只留下系统核心功能。
    3. 强劲。由于是 64 位系统,所以对 CPU 的性能有一定提升,此外最大内存支持也可达到一个很高的水平。
    4. 安全。这点有点牵强,不过它的各种安全措施的确是非常到位。
    5. 部分人群可以免费得到正版的序列号。这一点下文会提到。

    缺点

    1. 不适合玩游戏。毕竟是服务器系统,本来就不准备让你装在桌面电脑上,像视频加速、垂直同步等功能都是关闭的,甚至声音服务默认也是禁用状态。

    Windows Server 2008 R2 的适合人群

    • 想装酷的。有些童鞋为了炫耀自己的电脑有多么强劲而喜欢装服务器操作系统(其实服务器操作系统和电脑配置没有任何联系),那么这款最新的服务器系统很适合他们……
    • 不注重娱乐的电脑用户。这类人对电脑游戏之类的不是很喜欢,他们只要“用”电脑,不要求“玩”电脑,那么这样的操作系统足矣。
    • 厌倦了 Windows XP ,想尝试新系统,但是又没钱买正版且不想用盗版的人。如上文所说,部分人群可以获得这个系统的免费且正版的版本。

    获取并安装免费且正版的 Windows Server 2008 R2

    微软有一个项目叫 DreamSpark。这是一个针对学生的项目,可以免费使用一些微软的商业软件。当然,不是所有的商业软件。这些商业软件主要是一些开发用的软件。具体来说是这些:
    dreamspark-products

    像 Windows Vista, Windows 7 这些桌面级的软件,这个列表里自然是没有的,如果那些软件都是“白送”的,那微软就不要赚钱了……

    当然也不是什么人都能直接得到这些免费的正版商业软件的。这项服务只是面向学生的,主要是大学生。所以你需要有一个学生的身份,然后在 DreamSpark 的网站上证明你的学生身份,就可以拿到这些软件的正版序列号了。具体步骤如下:

    1. 大学生都有一个学校域名的 edu.cn 邮箱。比如 yourname@pku.edu.cn 之类的,用你的母校的这样的邮箱就可以注册 DreamSpark 了。
    2. 先去 Windows Live 主页把你的 edu.cn 的邮箱注册为一个 Windows Live ID,然后用这个 ID 登录 DreamSpark。
    3. 选择你想要的产品,此处是 Windows Server 2008 R2。会要求你验证学生身份。选择 Verify as a student,再在右侧的列表里选择自己的母校,很快就能通过验证,然后就可以拿到 Product ID。把这个 ID 记下来就可以了。
    4. 在那个页面上是可以直接选择下载 Windows Server 2008 R2 的,但是我不建议从那里下载,因为那里下载到的是扩展名为 img 的 Windows Image 格式,并不推荐。我推荐从微软的 MSDN 上下载。下载地址点击这里:7600.16385.090713-1255_x64fre_server_eval_en-us-GRMSXEVAL_EN_DVD.iso。文件大小为 2.79GB,建议把这个地址复制入下载工具下载。注意这是英文版的,中文版的请自行到这个页面选择。中文版的文件太大了……
    5. 下载完之后就可以安装了。建议写入到 U 盘里安装。写入工具可以使用微软官方出品的 Windows 7 USB DVD Download Tool。我之前介绍过,兼容性很好。点此下载
    6. 这个工具的用法还是见那篇文章。写入完成后直接重启电脑就可以用 U 盘启动进行安装了。
    7. 安装过程中一路下一步就可以了,不会提示“是否安装百度搜霸”的……特别注意一定要选择安装默认的 Standard 版本,因为如果你用学生中心的序列号激活的话,只能用 Standard 版本。

    一些 Tips

    如果你决心以后就在桌面电脑上用这个服务器系统了,那么下面这些对你可能会有一些用:

    • 再次声明:服务器版操作系统并不适合在桌面电脑上用。游戏、娱乐什么的这上面啥都没有。唯一的“多媒体工具”是“画图”。
    • 64 位的系统架构下,有些 32 位程序不能正常运行。所以驱动什么的都要找 64 位版的。
    • 如果你用上文提到的学生中心的序列号激活了,那么就是 Standard,你可以使用最多 32GiB 的内存……
    • 如果你真的想把这个服务器系统改造成类似桌面系统的样子,那么可以访问这个网站。它会教会你如何把 Windows Server 2008 R2 转变成一个 Workstation。

    尾声

    其实我之前也没有在桌面电脑上装过服务器系统。这一次主要是想试试 64 位的感觉。之前我一直错误地以为“32位电脑”上是不能安装 64 位系统的,直到昨天,@Achmany, @yskin 两位推友才告诉我(12),原来只要 CPU 支持 x86-64 指令集就可以了……于是我就萌发了尝试下 64 位操作系统的想法。

    然后么,我本来用的系统是 Windows 7,本着“不倒退”的原则,我只有 Windows 7 x64 和 Windows Server 2008 R2 这两个选择,而且后者可以用学生身份申请到免费的序列号,那当然就选择后者了。

    64 位终将是主流,32 位迟早要被淘汰。想尝鲜而又不想买正版不想用盗版的同学们,去试试 Windows Server 2008 R2 吧~

    ~~~~
    wzyboy
    Twitter: @wzyboy
    转载请注明本文地址,谢谢合作。