把整個作業系統放進記憶體裡,RAM OS 讓讀寫效能快10倍

ADVERTISEMENT

驅動程式請安裝完整

經過幾次開機後,VHD裡頭應該就已經是安裝完成的Windows了。這時候請打開裝置管理員,看一下裡頭有沒有問號或驚嘆號,有的話就代表部分驅動程式沒裝好或安裝不完全,或者是根本沒驅動,請解決這些問題。如果有硬體是沒驅動、也不打算使用,那麼請將它移除,不然會造成後續疑難排解上的麻煩。

為何筆者要特別強調此點呢?因為不完整的驅動可能會影響作業系統的睡眠機制,這點對RAM OS很重要,容後再述。另外由於「直接由原生Windows開機」、「透過VHD開機」及「透過RAM Disk裡的VHD開機」會有不同的硬體抽象層(HAL)問題,進入每一種類型的作業系統後最好都檢查1次驅動。

一切無誤後,看要不要先備份一下VHD,也就是拷貝1份留存,接著安裝Firadisk驅動。Firadisk的安裝方式有很多種,有的甚至要開機數次才能完成,這些都請參考附錄裡的教學。

硬體抽象層

「Hardware Abstraction Layer」是作業系統用來與硬體之間溝通的一個橋樑。因為電腦硬體的細項諸元各不同,有了這層抽象層就能讓驅動程式不需要直接與硬體溝通、卻又能驅動硬體,軟體的開發及移植也會更有效率,不必受硬體束縛。

應用在作業系統的部署上也能受惠。用最簡單的例子解釋:在Windows XP(含)之前的作業系統,灌好的系統要搬移到不同的硬體上時常會出現錯誤,甚至無法開機。Windows Vista之後,藉由在開機組態裡加入「Detecthal yes」就能強制Windows重新偵測硬體抽象層,避免因為硬體不匹配而造成問題。

開機組態務求正確

最後一步是設置開機組態,它會嚴重影響到RAM OS的執行成敗,設置時得求絕對精準。一般情況下,一共會有3個開機組態需要變更:

一、開機硬碟上的MBR

雖然是RAM OS,開機時還是得先從硬碟載入吧!開機硬碟上的MBR是用來引導GRUB4DOS,如果你打算直接將GRUB4DOS安裝到MBR,那麼可以跳過此節。

不過,大部分情況是硬碟上已經存在Windows系統,Windows Boot Manager會去讀BCD組態來提供開機導引,所以我們要把GRUB4DOS加入BCD內,接手開機控制權,請參考附錄中的「將GRUB4DOS加入BCD」。

RAM OS系統的開機組態設置及對應關係

MBR裡的Windows Boot Manager是用來啟動硬碟上的VHD或GRUB4DOS,至於Windows安裝本身可以不存在。同時因為RAM OS使用的是存在於RAM Disk裡的VHD檔,所以可以再掛載硬碟上的VHD來備份變更資料,達到「RAM Disk也能存檔」的目的。

把整個作業系統放進記憶體裡,RAM OS 讓讀寫效能快10倍

二、GRUB4DOS的開機組態

從下載的壓縮檔中取出目錄,改名為「GRUB」,並將其內的grldr.mbr與目錄一起放到C槽、也就是系統碟根目錄下,然後重做GRUB目錄內的menu.lst,鍵入以下內容:

map --mem /win7.vhd (hd0)

map --hook

root hd(0,0)

chainloader +1

第一行的意思,是將win7.vhd載入記憶體,並掛載成為代號為hd0的硬碟。第二行使第一行的掛載命令生效,接下來將執行目錄指定為hd0的第一個分割區,最後「chainloader +1」要求GRUB4DOS將開機流程交給執行目錄下的開機載入器、也就是已經載入到RAM Disk裡的、win7.vhd裡頭系統碟上的Windows Boot Manager。

三、VHD內的開機組態

VHD裡的Windows預設是沒有開機組態的,因為只要透過開機硬碟上的Windows Boot Manager來引導就好。然而我們已經用GRUB4DOS過了一層水,沒辦法再透過上一層的載入器來引導,所以要再幫VHD裡的系統碟加1個開機組態檔,讓GRUB4DOS能順利移交開機流程。

這部分本來可以靠Windows指令簡單達成,但對於Windows開機組態不熟的使用者可能會適得其反、將組態檔案安裝到不正確的位置,所以使用「EasyBCD」這套免費工具代勞會比較順利。

請直接由硬碟中的VHD開機,並透過EasyBCD的「BCD佈署功能」將組態安裝到VHD根目錄下,再修改幾行指令:

bcdedit /store c:\boot\bcd /set {default} testsinging yes

bcdedit /store c:\boot\bcd /set {default} loadoptions DDISABLE_INTEGRITY_CHECKS

bcdedit /store c:\boot\bcd /set {default} detecthal on

Testsinging是Windows x64系統用來接納「未通過驗證驅動程式」的開關,因為Firadisk沒有經過微軟簽名,所以得開啟此選項,在Testsinging模式下的Windows桌面右下角會出現「Test Mode」字樣,對系統運作並無大礙。第二行同樣是用來關閉驅動程式驗證的指令,如果少了此設定,Windows在載入的過程中會提示你「Firadisk是未經過驗證的驅動,所以無法開機」,這時就得回開機選單按F8來手動禁用。

完成開機組態設置後,重新開機,在Windows開機選單選擇以GRUB4DOS開機,沒差錯的話應該馬上就會進入記憶體的掛載進度,掛載完成後,默數幾秒就會進入Windows,接下來就只剩一些最佳化設定。

把整個作業系統放進記憶體裡,RAM OS 讓讀寫效能快10倍

▲安裝完Firadisk後,裝置管理員裡會多出1個Firadisk元件。如果沒有出現這個元件、或是該元件上有問號或驚嘆號,就是安裝不完整,將無法順利進入RAM OS。

把整個作業系統放進記憶體裡,RAM OS 讓讀寫效能快10倍

▲RAM OS開機過程中如果出現驅動程式驗證問題,請在開機選單中禁用此項,中文為「停用驅動程式強制簽章」。

系統最佳化放最後

進入到RAM OS桌面後,不妨檢查一下裝置管理員內的元件是否皆運行正常。接著進入電腦管理設定分頁檔大小,取合理範圍即可,切勿完全關閉、也不要讓Windows自行管理,不然原本就已經容量有限的RAM Disk會被分頁檔塞爆,因為Windows會嚐試在RAM Disk裡存放RAM Disk所佔用記憶體的置換檔。

接下來要進行的其它設置,都是為了因應RAM OS在關機後就會不見的原生特性。首先是得想辦法讓RAM OS裡頭的變更都能回存至實體硬碟,這點可利用VHD能掛載成本機磁碟的天生優勢,在RAM OS裡頭掛載硬碟上的VHD並且執行同步軟體來備份變更,如此一來就能達到無縫循環、每次用RAM OS開機都能保有上一次更動的資料。

此舉限於一些個人文件或與系統無關的檔案,如果是要安裝新的程式、其至是需要重開機的類型,最好還是用硬碟上的VHD開機處理。

除此之外,切記得關閉RAM OS的休眠(hibernate)功能,因為讓RAM OS休眠意義不大,其至可能會直接早成資料流失。不能休眠沒差,但睡眠(Stand by)就是必要的,RAM OS剛好可以利用睡眠模式啟動時、電腦只剩下記憶體持續供電的特性保存資料,也可以省去每次使用RAM OS開機時所需消耗的漫長載入時間。

關閉休眠功能只需要在命令列鍵入「powercfg /h off」即可,另外BIOS裡的電腦待命模式也要切換到「S3」。睡眠模式會不會耗電?以筆者插了4條DDR3-8GB模組的測量結果來看,總機耗電量跟本不到2瓦,考慮到誤差值,事實上可能更低。所以啦,如果有辦法讓電腦處於不斷電狀態,在大多數情況下都沒有重新開機的必要。

(後面還有RAM OS效能實測)

魯蛇實驗室
作者

戶田惠梨香 新垣結衣 長澤雅美 吉高由里子 志田未來 北川景子 香里奈 竹內結子 北乃紀伊 菅野美穗 黑川智花 宮崎葵 夏帆 貫地谷詩穗梨 石原里美 有村架純 井上真央 真野恵里菜 能年玲奈 深田恭子

使用 Facebook 留言
魯蛇實驗室
2人給推

2.  魯蛇實驗室 (發表於 2013年5月07日 10:53)
因為還要回寫入硬碟當然會很慢,最簡單的解決方案還是用SSD,效果差不多而且又方便。
Allen Huang
3.  Allen Huang (發表於 2013年5月07日 11:44)
「...Windows內建的RAM Disk有1.5TB容量限制,對完整的作業系統來說跟本不夠用...」
摁... 1.5TB??
SeeingSky
2人給推

4.  SeeingSky (發表於 2013年5月07日 16:13)
早知道早些時候SSD跟RAM便宜的時候買些來用
現在價格...回不去了 囧rz
魯蛇實驗室
1人給推

5.  魯蛇實驗室 (發表於 2013年5月07日 16:43)
※ 引述《SeeingSky》的留言:
> 早知道早些時候SSD跟RAM便宜的時候買些來用
> 現在價格...回不去了 囧rz
長期來看,記憶體價格還是會越來越便宜的(希望啦)
SeeingSky
6.  SeeingSky (發表於 2013年5月07日 16:55)
現在幫別人組電腦都會被問說怎麼記憶體越來越貴...
還問我說是不是有偷收錢= =|||
Neil
7.  Neil (發表於 2013年5月07日 22:28)
「應用程式透過作業系統創造的虛擬位址來存取實體與虛擬記憶體(Pagefile/Swapfile.sys)」

請問一下,那虛擬位址(Virtual Address)是存在哪裡?實體記憶體?虛擬記憶體(硬碟、pagefile)?還是cache?
無痕
8.  無痕 (發表於 2013年7月30日 07:03)
虛擬位址是給軟體的記憶體管理機制位址。
如果要說存在哪我想是存在處理器暫存器。
因為虛擬位址是通往實體位址的橋樑...。
hewatika
9.  hewatika (發表於 2016年12月20日 04:49)
整篇看得很燃!!!

RAM OS 是多少年前的宅夢哪!!!

無奈現在 SSD 這麼便宜,以至於這篇文章也只能看乾爽的...

文末沒有測 IOPS,實在是破壞了這篇文章的整體感~

殘念
發表回應
謹慎發言,尊重彼此。按此展開留言規則