本帖最後由 阿達金田一 於 2016-7-4 21:20 編輯  
huhiha 發表於 2016-7-4 17:37   
grub4dos的命令太難了!實在是沒有那麼多精力去研究。我個人來說,最多只能是在有空的時候,通過看文檔這 ...  
你貼的那個 ramdisk 4g 
我覺的主要是針對 windows 中使用 ramdisk 時 ( 它裡面都說 api 了...那就是在 win ) 
 
簡單的說...就是 XP ( x86 win ) 時... 因為只吃到 4G 
所以早期有一種用 ramdisk 來吃(使用) 4G 後記憶體的方法 
 
但因為該主題說的 ramdisk 4G 問題... 所以很有可能會導致不可預期的錯誤 
該問題...簡單說的就是 ramdisk 程式 佔用到 硬體 或 其它程式 使用的 記憶體 部份 ... 而造成衝突 
其實這個問題發生的機率不大... 
要細說的話有點小複雜 
x64 系統... 基本上可以使用超過 4G ... 所以沒必要用 ramdisk 去吃 4G 後... 而且應該也吃不到 
ramdisk 吃 4G後... 主要是針對 系統 只能吃 4G 的情況 (多為 XP 或 x86 系統) 
而 ramdisk+PAE 會去使用無法直接使用的 4G後 記憶體 (通常這是可選擇的...) 
而 硬體 佔用 記憶體 是從 後到前 ... http://coolpc.com.tw/phpBB2/view ... 2249&st=0&sk=t&sd=a 
也就是 記憶體大於 4G + 系統只吃4G + 發生重疊(overlap) ... 時... ramdisk 佔用 4G 後... 才有可能會出問題 
 
另外 Win 虛擬裝置 和 grub4dos 虛擬裝置 並不一樣 ...  
而且 grub4dos 應該也會避開 硬體佔用的部份...因為它不是用 win api 去處理 
而是用 Bios 去存取 記憶體 ... 
 
至於小問題 
1. 
dos 本來就不支援 ntfs ... 不過是有讓 dos 支援 ntfs 的程式 
只是 ntfs 有版本問題... 所以支援 ntfs 的 dos 程式 也不知道是否可以支援較新的 NTFS 
目前另外 dos ... 大多是給一些 dos 上跑的工具 ... 而這些工具大多的磁碟工具 
像 spfdisk ghost diskgen MHDD 等等 
而通常 這些 工具程式 ... 是直接處理 磁區 ... 而不是檔案 
而能 處理檔案 的是 工具程式 本身自帶的 檔案系統 判斷... 而不是依懶 dos 
 
2. 
shutdown 指令 是指 windows 的那個 shutdown 
還是你 dos 中自帶的 shutdown 程式 
如果是後者... 硬體有關係(但不是驅動)... 那個 dos 的 shutdown 也有關係 
dos 本身其實並沒有太多驅動 
除了 記憶體相關的 主要是 himem.sys emm386.exe 
和 基本 io ( keyboard )... io.sys 外... 
其它則是大都是外部指支援 ... 像要支援 滑鼠 可能就是執行一個 mouse.com 
所以... dos 本身並沒有 電源管理 ... 
所以 dos 如果要 shutdown 功能... 就是去執行外部的 shutdown 程式 
而 shutdown 程式 就要看 程式 本身的支援 ( 這可能是調用 bios ) 
 
3. 
覺的你最好先去 新手村 看一下開機的概念 
 
這個其實我前面有提到一點... 就是 root 
bootmgr 並不能 引導 vhd 任意系統 ... 因為 bootmgr 不會 root 到 vhd 
 
bootmgr 去載入 grub4dos ... 只是把 開機管理 換成 grub4dos 
所以實際就是 grub4dos 在開機... 因此 
 
bootmgr -> grldr -> dos ... 實際上 dos 是用 grub4dos 來 載入+開機 ... 而不是 bootmgr 
grub4dos 倒是可以引導 vhd 的任意系統 ( 前題是 固定大小 的 vhd ) 
因為 grub4dos 可以重新 root 
 
bootmgr 的真實模式 其實和 grub4dos 的 chainloader 有點像 
其實就是換個 開機程序 
例如 ... 在一個 硬碟 上 ... 先裝 linux ... PBR 是被寫入 Linux 的 開機程序 
如果把 PBR 存成一個檔案(例如 Linux.PBR ) ...再灌 win ... PBR 會被寫入 win 的 開機程序 
但可以用 win 的 bootmgr 去載入 Linux.PBR ... 使用 Linux 的 PBR 開機程式 
這樣就可以用 Linux 開機 
 
那重點來了...前面說的... 開機 都是指 root 
(hd0,0) 開機... root 就是 (hd0,0) 
grub4dos 可以重新 root 所以...在 map vhd 時 ... 最後可以用 root 
例如 ... 
假設先用 (hd0,0) 開機進入 grub4dos 
而 grub4dos 執行以下指令 
map (hd0,0)/dos.vhd (hd32) 
map --hook 
root (hd32,0) 
chainloader +1 
boot 
 
把 dos.vhd 掛到 (hd32) 
設定 root 為 (hd32,0) 
chainloader +1 載入 (hd32,0) 的 PBR 
如果沒有 root 可能開機就會失敗... 
 
也就是上述的流程就是 
root (hd0,0) -> grub4dos -> root (dos.vhd) -> dos.vhd PBR 
 
但 bootmgr 並不會做 root ... 
那怕你把 vhd 的 PBR 存成檔案 (例如 dos.pbr) 然後 bootmgr 用真實模式載入 
root (hd0,0) -> bootmgr -> dos.vhd -> dos.pbr 
由於沒有 root dos.vhd ... 所以無法 dos vhd 開機 
 
而 bootmgr 轉 grub4dos 其實還是 grub4dos 在開機 
root (hd0,0) -> bootmgr  -> grub4dos -> root (dos.vhd) -> dos.vhd PBR 
 
真實模式 ... 是執行一個 Bios 程式 
Bios 程式大多為開機程式... 但也有一些是工具程式 像 bootmgr 也有 memtest.exe 
 
16-bit real-mode loader application 你或可翻成 
16位元 真實模式 加載 應用程序 
 
所以 真實模式 和 vhd 是2回事 
grldr 就是 grub4dos 本體... grub4dos 就是一個 bios程式 
 
另外我並沒有說 “那些文件格式都是一樣的” 
只是說 vhd .vfg .img .ima 都可以 ... 
主要是 檔案內容... 實際上 vhd .vfg .img .ima 都可以是 2進制映像 
所以如果都是 2進制映像...那其實不就是都一樣 
只是 vhd 也有 動態大小 的格式... 使用 動態大小 時...就不是 2進制映像 
 
所以我說 副檔名 是給人看的 
例如 
.iso 是代表這個檔案是 iso 的映像 
但 .bin 只是代表這個檔案是 2進制映像 
.img 只是代表這個檔案是 映像(image) 
.ima 只是代表這個檔案是 軟碟映像(image) 
.vhd  只是代表這個檔案是 MS 的 虛擬HD 
.vmdk 只是代表這個檔案是 VM 的 虛擬HD 
.vdi 只是代表這個檔案是 vbox 的 虛擬HD 
 
.vdi .vmdk 是 虛擬PC程式 在用的 就不討論 
基本上 .bin .iso .img .ima ...其實大多是 2進制映像(bin) 
.vhd 則看是用那個儲存類型... 固定大小 類型...也是用 bin 來儲存 (只是檔案尾會有額外的資料) 
 
而 bin ... 2進制映像...說穿了 
就是以 磁區 來儲存... 依磁區順序(LBA) 儲存 全部磁區 
所以是什麼東西的 映像 一點也不重點 
像 光碟bin 硬碟bin 軟碟bin ... 都是 bin 
副檔名要取什麼都可以...你要取 .ABC 也可以 
grub4dos 照樣可以掛載 
主要還是 檔案內容 是不是 bin 
 
例如 
光碟bin ... 副檔名常用的就是 .bin .iso .img 
硬碟bin ... 副檔名常用的就是 .bin .img ... (整顆硬碟...也就是包含 分割表) 
分割區bin(軟碟bin) ... 副檔名常用的就是 .bin .img .ima ... (也就是單一 磁碟 的 bin) 
 
而 grub4dos map ... 可以 虛擬裝置 並 映射到 bin ( 而 bin 也可以加載到 ram ) 
而各種裝置有自己的 開機流程 ... 當然也有各自的 開機引導 
開機光碟 (iso) ... 開機引導 自然在 光碟(iso) 中 
 
CDFS ... 
https://zh.wikipedia.org/wiki/ISO_9660 
 
CDFS 其實就是 CD FS ... CD File System ... 光碟檔案系統 
而實際上 光碟 也有別的 FS ... 例如 UDF ... ( NT6 的 Win 官方光碟大多是用 UDF 格式 ) 
https://zh.wikipedia.org/wiki/%E ... F%E6%A0%BC%E5%BC%8F 
 
但對 bin 來說...都只是 2進制映像 ... 對 grub4dos 來說就是把 bin 掛載上去而以... 
 |