我是如何用VMware在U盤上安裝Windows和Linux系統的

前言

長久以來,我想作成一件事兒,就是在U盤或移動硬盤上安裝Window和linux,這樣我就能夠到任何一臺電腦上使用個人開發平臺了。這件事兒,終於在上週徹底的實驗成功了。linux

基本原理

將硬盤分紅3個部分,第一部分為FAT32格式的DOS盤,第二部分為Linux分區,最後為Windows分區。ios

我們將DOS盤做為啟動盤,啟動grub程式,加載menu.lst。grub是linux下的一支啓動引導程序,在這裡我們使用他來引導各個系統。對linux和Windows引導方式各有不一樣。linux主要通過加載Linux的內核來進行引導,而Windows則有本身的啟動器,因此事實上我們是通過加載Windows的啟動器(bootmgr)來進行引導。web

原理圖

開始準備

硬體:windows

  1. 移動硬盤(推薦)、U盤
  2. 普通PC

軟體:centos

  1. 虛擬機VMware Player
  2. DiskGenius(使用U盤的話)
  3. grub4dos
  4. bootice
  5. ghost

其餘文件bash

  1. Linux鏡像(如:CentOS 7.0
  2. Windows鏡像(如:Windows 7)
  3. DOS系統(如:DOS 7.1

安裝DOS系統

網絡上有不少安裝DOS系統的工具,不過不少都是把整個硬盤變成DOS盤(或許是我找得不夠仔細),而我們須要的是將硬盤分出一部分空間安裝DOS系統。我使用的方法是比較特殊的,使用虛擬機進行DOS系統的安裝。工具

首先,備份好U盤或移動硬盤的全部數據!然後刪除全部分區,將硬盤分出大約100MB的空間格式化為FAT32的格式(沒必要太多,個人加上TC才14M)。移動硬盤只要用Windows的磁盤管理就好了,U盤就須要DiskGenius來分區了(請不要分配驅動號)。post

DOS分區

然後,啟動虛擬機,創建一個windows7虛擬系統。把移動硬盤添加到虛擬機裏面:ui

1.選擇「Edit virtual machine setting」,添加一個硬盤:spa

edit setting

add hardware

hard disk

然後選擇「use a physical disk」,Device選擇你的移動硬盤,一般是最後一個(若是你只接入一個移動硬盤的話)。

add physical disk

choose Device

剩下的默認就行了。然後就能夠在硬體列表中看到添加的磁盤,容量看對一下,應該就沒錯了。

compare

然後,選擇「Floppy」,選擇下載的DOS img。記得勾上「connect at Power on」。接著把創建虛擬機時創建的虛擬硬盤移除。

floppy setting

然後啟動虛擬機,就會進入DOS系統的安裝,若是提示要插入第二塊軟驅,就「Disconnect」掉Floppy,然後進入「Setting」選擇「DOS71_2.img」,再Connect上繼續就行了。其餘沒啥可說的。

dos second disk

按裝完後,若是不作任何修改,這樣的DOS盤也就只能在虛擬機裏面啟動而已了。在實際的電腦上啟動就會報錯,緣由我還沒找到,不過能夠作一些修改解決這個問題:

  1. 先關閉虛擬機,這樣你才能對硬盤的數據作修改;
  2. 去「文件夾和搜索選項」那裡把顯示系統文件和隱藏文件給打開;
  3. 進入DOS盤,刪除裏面的config.sys(到這裡DOS盤就能夠在PC上正常啟動了)
  4. 新建ghost和grub文件夾;
  5. 將grub4dos裏面的menu.lst和chinese文件夾裏的全部文件解壓到DOS盤裏的grub文件夾。
  6. 將ghost解壓到ghost文件夾
  7. 編輯autoexec.bat,在第二行前面插入一行,加上 PATH=C:\;C:\DOS71\;C:\ghost\;C:\grub\ 最後保存。

至此,DOS系統就安裝完畢了。

安裝 Linux

在這一步,我們使用CentOS 7作為示例。

基本上都是Next…Next的事情,就不贅言了。說說特殊的地方。

  1. 不要安裝引導,選擇自定義分區
  2. 選擇標準分區
  3. 記錄下根路徑的分區(如:sda5)

以下圖:

no-install-grub

std part

sda5

安裝完成後,當然是進不去Linux系統的~~因此,我們就要——

引導Linux

這個時候啟動應該是進入DOS系統,

dos_begin

啟動DOS後:

bashcd grub
grub.exe

這樣就能夠啟動grub了(啟動grub後,切記不要移動鼠標,否則就會死機),啟動後畫面以下:

grub view

選擇commandline,現在我們須要去加載Linux的內核,內核是位於boot目錄下,從我們剛才安裝的畫面能夠看出,boot分區是另外獨立一塊空間。

先用cat指令查看硬盤分區(cat後面有空格):

bashcat (hd0,

然後按下Tab鍵,能夠看到有3個xfs分區,第一個一般就是boot分區。

grub_01

bashcat (hd0,1)/

同樣按下Tab鍵,就能夠看到這個分區下的文件,其中vmlinuz-3.10.0-123.el7.x86_64就是Linux的內核,不一樣版本的Linux應該會有所不一樣。這就說明瞭這個就是boot分區

grub_02

在用同樣的方法查看其餘分區,找到分區下包含dev文件夾的目錄。

grub_03

然後將其設置為根目錄

bashroot (hd0,4)

然後用kernel命令加載Linux內核

bashkernel (hd0,1)/vmlinuz-3.10.0-123.e17.x86_64 ro root=/dev/sda5

按Tab能夠補全文件名,上面指令中的sda5,就是最先我們在安裝時記錄根目錄的設備名。

接著設置initrd文件:

bashinitrd (hd0,1)/initramfs-3.10.0-123.el7.x86_64.img

然後就能夠引導了。

bashboot

至此,你就成功引導了linux系統~

grub_04

但是!難道每次我們進入系統都有打這麼一長串嗎?當然不是。我們現將liunx關機,然後將grub裏面的menu.lst文件拷貝到DOS盤的根目錄,然後在文件最後面加入:

bashtitle CentOS
root (hd0,4)
kernel (hd0,1)/vmlinuz-3.10.0-123.e17.x86_64 ro root=/dev/sda5
initrd (hd0,1)/initramfs-3.10.0-123.el7.x86_64.img
boot

然後在autoexec.bat最後一行加上

bashcall \grub\grub.exe

在啟動DOS時,就能夠看到CentOS選項了。以後只要通過這個選項就能夠啟動CentOS了。

安裝Windows

安裝Windows最糟糕的地方就是,他竟然死都要裝引導,因此若是採用和上面linux的方法,就會把DOS的引導給覆蓋掉。因此……我們依然是藉助虛擬機的幫助,快速將Windows安裝到移動硬盤上。

還記得我們最開始時移除的那個虛擬機自動創建的虛擬硬盤嗎?這個虛擬系統叫Window7可不是沒有道理的~嘿嘿嘿~

現在我們要把他從新添加回來,和添加移動硬盤略有不一樣,選擇「Use an existing virtual disk」,然後選那個磁盤文件就能夠了。

win7_back

然後在CD/DVD選擇一個Windows7的鏡像就能夠了。在那個虛擬系統裏面安裝一個Win7系統便可。

注意:若是啟動時仍然從dos啟動,就把移動硬盤移除後再啟動,另外分區時要預留大約10幾G的空間。

安裝完成後,進入系統,將預留的空間格式化,創建一個盤出來。

為了把在虛擬機安裝好的Windows7轉移到移動硬盤上,我們就須要用Ghost,把Windows7 Ghost下來,然後在移動硬盤上還原。可是,當前Windows7是運行中的,因此必須進入到DOS下再對Windows7進行Ghost,那麼我們能夠在啟動虛擬機時,按下F2鍵,進入BIOS設定,在boot設定DOS盤先啟動:

bios setting

進入dos後,運行Ghost文件夾裏的ghost11.exe

bashcd ghost
ghost11.exe

進入ghost,選擇local>Partition>To Image

ghost01.jpg

再選擇對應硬盤,與磁盤,再選擇保存在剛才新建的盤便可。

ghost06

注意要把系統保留分區一併Ghost

ghost07

ghost08

待Ghost完畢,在進入Windows,在移動硬盤新建一個分區原來存放Windows,啟動DOS盤中的Ghost32將Windows恢復到移動磁盤的分區中。

local>Partition>From Image

選擇恢復時,無需恢復系統保留區的文件,只要選擇系統分區便可:

ghost03

可是!這樣恢復後,實際上Windows是沒有任何引導的。

因此,我們須要把系統保留區裏的啟動文件提取出來,使用Ghost裏面的Ghostexp.exe打開備份的Ghost文件。將引導文件提取出來,拷貝到恢復的Windows磁盤裏。

ghost09

然後,我們還須要修改一下裏面的BCD文件,BCD文件記錄的是與Windows啟動相關的信息(當然不會是文本的)。我們要使用bootice來修改:

選擇BCD編輯,選擇其餘BCD文件,瀏覽剛剛恢復的Windows盤,選擇其中Boot的BCD文件:

BCD Edit

編輯「啟動磁盤」和「啟動分區」,選中BCD文件所在分區。保存便可。

Setting boot disk

至此,我們的Windows就安裝好了~那麼,接下來就是——

引導Windows

bootmgr是引導Windows的入口,那麼啟動根目錄就要設置為bootmgr所在的分區,能夠直接使用

bashroot (hd0,6)

設置根目錄,但其實下面這樣會更合理

bashfind --set-root /bootmgr

找到bootmgr然後把其所在分區設置為根目錄。

然後,將bootmgr裝載進來:

bashchainloader /bootmgr

然後就能夠啦~

那麼在menu.lst裏就是添加:

bashtitle Windows 7
find --set-root /bootmgr
chainloader /bootmgr

至此,DOS+Linux+Windows移動系統硬盤就搭建完畢啦~*:‧\( ̄▽ ̄)/‧:*
最後,附上個人menu.lst文件

bash# This is a sample menu.lst file. You should make some changes to it.
# The old install method of booting via the stage-files has been removed.
# Please install GRLDR boot strap code to MBR with the bootlace.com
# utility under DOS/Win9x or Linux.

color black/cyan yellow/cyan
timeout 15
default /default

title CentOS 7
root (hd0,4)
kernel (hd0,1)/vmlinuz-3.10.0-123.el7.x86_64 ro root=/dev/sda5
initrd (hd0,1)/initramfs-3.10.0-123.el7.x86_64.img
boot

title Windows 7
find --set-root /bootmgr
chainloader /bootmgr

title DOS 7.1
savedefault --wait=2
quit

title Command Line
savedefault --wait=2
commandline

title Reboot
savedefault --wait=2
reboot

title Halt
savedefault --wait=2
halt

本文最先發表於:http://lift.c-code.cc/post/2015-02-08/40065934337

相關文章
相關標籤/搜索