NoName Team 電腦資訊討論區

 找回密碼
 我要註冊
搜索
樓主: smallhaung

[已解決] 從usb啟動 如何在選單上運行 硬碟的c: 的win7系統

[複製鏈接]
 樓主| 發表於 2012-3-30 11:12:04 | 顯示全部樓層
阿達金田一 發表於 2012-3-30 03:55
樓主下次說明要說清楚一點...你用 測試器/虛擬PC 和 實機是有差的
我還以為你是在實機上測...不過實機也是 ...

這些都是我學習過程的心得阿
一開始我也很白爛的 一直用實機操作 一直在那開機 重開機 時間又拖的好長
後來得知有 簡易啟動器 用過以後愛上他  誰知他會有些許問題
再後來 又學得再vm跑模擬 但還是有些問題
結果明明需要快速來測試選單是否正確可作動 但卻這2樣都會有些許問題
如果只能實機操作試驗是否成功 真的會搞死人
不知有沒有必定成功又快速測試的方法?




另外有 有些選單的寫法我真的看不懂啥意思
像以下3個選單 我雖然有去看過命令的用法和說明 但都沒有解釋的很清楚 有些寫法也都是參考人家的
用法去用的
不知你是否懂他每行命令的意思
能否麻煩你解釋這些每一行是啥意思嗎

title          【2】Windows 7
find --set-root --devices=h /win7.BIN
map () (hd1)
map (hd1) ()
map --rehook
chainloader /win7.BIN


title         【3】Windows 7
chainloader (hd1,0)+1
rootnoverify (hd1,0)

title         【4】Windows 7
map (hd0) (hd1)
map (hd1) (hd0)
map --hook
rootnoverify (hd0)
chainloader +1


主要是rootnoverify和chainloader這2個重要命令
看了命令說明 實在不懂 也沒什麼實例說明
像【3】和【4】 為啥有時chainloader在rootnoverify前 有時在其後
而接在rootnoverify和chainloade其後面的參數更是困擾
偏偏這2個命令和其後面參數 最是選單能否成功的關鍵

發表於 2012-3-30 11:59:43 | 顯示全部樓層
本帖最後由 阿達金田一 於 2012-3-30 12:22 編輯

chainlaoder 基本上是用來載入 開機檔 和 開機(引導)磁區
例如 io.sys ntldr setupldr.bin bootmgr 光碟引導 等等

rootnoverify 其實是 root 但不偵錯 ( 也就是 強制root )
一般 root 時...只要是 grub4dos 不支援的 檔案系統 ... root 會失敗
rootnoverify 則是不管是否有問題...強制指定 裝置位置 為 root

chainlaoder 和 rootnoverify
並沒有"直接"的衝突...有時後哪個在哪那個在後...並沒有差別
基本上 chainloader 有指定 裝置位置 時
那 rootnoverify 一般來說就沒什麼差 (省略掉也可以)
反過來說 chainloader 未指定 裝置位置 時...則是以 root 裝置

root 基本上就是 根裝置...意思上可以當成 目前裝置位置

find 指令是搜尋檔案...而參數 --set-root
就是找到檔案的話...以檔案所在裝置位置設定為 root
主要是用在不確定 裝置位置 時...以檔案所在來設定 root
如此...在 chainloader 時...我們就可以不指定裝置位置
例如
find --set-root /RXPE/SETUPLDR.BIN
chainloader /RXPE/SETUPLDR.BIN


所以
chainloader (hd1,0)+1
rootnoverify (hd1,0)
意思相當於
rootnoverify (hd1,0)
chainloader +1

因為 chainloader +1 是載入 root 的 第1個磁區
而 root 被 rootnoverify (hd1,0) 設為 (hd1,0)

而 map 基本上是掛載的意思
但 map 並不是下指令就馬上生效
而是在 map --hook 時才會生效 (我是沒用過 --rehook 啦...--rehook我就不清楚啦)


map (hd0) (hd1)
map (hd1) (hd0)
map --hook
則是把 (hd0) 掛到 (hd1)
又把 (hd1) 掛到 (hd0)
我說了 map 在還沒 map --hook 是未生效的
所以 map --hook之前 hd0 還是 hd0 , hd1 還是 hd1
因為才可以把 hd0 map 到 hd1 , 又把 hd1 map 到 hd0
你可以想成 hd0 預定 map 到 hd1 , hd1 預定 map 到 hd0
而 map --hook 時...之前的 map 指令才會生效
因此上面的指令相當於把2個裝置位置 互相調換

至於其它太複雜的指令參數..我也不清楚
find --devices=h 應該是指搜尋時包含 隱藏 的裝置位置 (隱藏分區)
發表於 2012-3-30 11:59:48 | 顯示全部樓層
smallhaung 發表於 2012-3-30 11:12
這些都是我學習過程的心得阿
一開始我也很白爛的 一直用實機操作 一直在那開機 重開機 時間又拖的好長
後 ...

怎麼會去用Windows Loader
我覺得小馬比較勇健,無視KB971033   

rootnoverify和chainloader順序沒有差
chainloader是啟動指定的設備
rootnoverify是改變啟動的設備

chainloader主要是抓pbr來跑,所以只能指定單一磁區,如chainloader (hd0,0)+1
但是相容性好像沒那麼好(好像與儲存在扇區的PBR位置有關)
而rootnoverify可以指定開機磁區rootnoverify (hd0,0),也可指定整顆硬碟rootnoverify (hd0),相容性比較好
發表於 2012-3-30 12:09:04 | 顯示全部樓層
不好意思,小弟從上面爬文注意到一個小地方
各位大大在測試軟體時,可以不須透實機來測試?
因為小弟在資訊方面真的很淺,通常爬文看見有興趣的軟體都會想試一下
但像上面某樓大大說的一樣,我也是實機測試,開機關機

所以..有軟體可以不需要透過實機測試?
發表於 2012-3-30 12:14:01 | 顯示全部樓層
chainloader +1 的 +1, 應是指第一扇區.

chainloader (hd0)+1, 意思應是 第一硬盤的 第一扇區, 即 MBR 所在地方.
chainloader (hd0,0)+1, 意思應是 第一硬盤內第一分區的 第一扇區, 即 partition 的 bootsector 所在地方.

chainloader (hd0)+1 是引導 MBR.
chainloader (hd0,0)+1 是引導 第一分區內的 bootsector.

樓主為何不用 VirtualBox 或 VMWare 去做測試呢? (VirtualBox 是免費軟件)


發表於 2012-3-30 12:19:05 | 顯示全部樓層
本帖最後由 阿達金田一 於 2012-3-30 12:20 編輯

覺的樓上 trptrp 的說明...和我個人理解的有些不同
root 要說成 啟動裝置 算是沒錯
(因為大部份的時候是如此...習慣上都會把拿來開機的裝置設為 root)

不但 chainloader 和 rootnoverify 應該沒有你說的相容性
相容性那是 grub4dos 本身的問題

rootnoverify (hd0,0) 也不是指定開機磁區 ... 說是 開機分割區 還比較正確一點
(hd0,0)+1 才是 開機磁區
同理
(hd0)+1 就是 MBR

不然你覺的
rootnoverify (hd0)
chainloader +1
時要讀哪裡

chainlaoder 基本上是用來載入 開機檔 和 開機(引導)磁區
如果只是啟動指定設備...那為又何來
chainloader /RXPE/SETUPLDR.BIN
chainloader /io.sys
chainloader /NTLDR
chainloader /BOOTMGR
這些指令...
而且也不是啟動指定設備...而載入指定裝置位置(如果有指定...沒有就是 root)的開機磁區
發表於 2012-3-30 13:04:18 | 顯示全部樓層
本帖最後由 trptrp 於 2012-3-30 13:18 編輯

呵呵,因為習慣把把分割區當成磁區了,說分割區應該才對

應該說chainloader用來啟動PBR,rootnoverify可以指定MBR或PBR,因為不確定每台電腦的啟動分區在哪裡,才會用指定啟動MBR((hd0)+1 )來做
相容性的意思是指在某些情況下,chainloader指定開機分區PBR,卻出現錯誤;同樣的用rootnoverify來指定,卻可以開機。也許就像你說的是grub4dos 本身的問題

"啟動指定的設備"是指要啟動的東西,如PBR或MBR
下次會把用語解釋清楚
發表於 2012-3-30 13:30:15 | 顯示全部樓層
title         【4】Windows 7
map (hd0) (hd1)
map (hd1) (hd0)
map --hook
rootnoverify (hd0)
chainloader +1
經 virtualbox 測試, 當硬盤有一已安裝的 WinXP, title 4 才有效.

以 cd/dvd 引導 grub4dos, 可直接用 find --set-root, chainloader /ntldr, 因 hd0 是 WinXP 硬盤.
以 usb 引導 grub4dos, hd0 已被 usb flash 佔用, 所以要 (hd0) usb 及 (hd1) WinXP 硬盤 互換,
然後才引導 (hd0)+1.

這是 WinXP 啟動的硬性要求, 所以才有 title 4 的步驟.
如是 Win7,  find --set-root, chainloader /bootmgr 足夠了, 因 Win7 已沒有 WinXP 啟動的硬性要求.


 樓主| 發表於 2012-3-30 13:54:52 | 顯示全部樓層
阿達金田一 發表於 2012-3-30 11:59
chainlaoder 基本上是用來載入 開機檔 和 開機(引導)磁區
例如 io.sys ntldr setupldr.bin bootmgr 光碟引 ...
chainlaoder 和 rootnoverify
並沒有"直接"的衝突...有時後哪個在哪那個在後...並沒有差別
基本上 chainloader 有指定 裝置位置 時
那 rootnoverify 一般來說就沒什麼差 (省略掉也可以)
反過來說 chainloader 未指定 裝置位置 時...則是以 root 裝置


程式執行不是都有順序 從最上一行慢慢往下執行 所以上下位置應該是有關係的吧
例如
find --set-root /win7/boot.bin  #如果找到  此時root 應該是/win7 對吧?
chainloader /boot.bin  #此時掛載執行 /win7/下的boot.bin  對吧?
rootnoverify /winxp  #此時強設root為 /winxp 對chainloader /boot.bin 應該無影響了吧 也就是此行無意義

但是我看一些說明  正確執行是在rootnoverify後面下一行命令boot
所以最後到底是chainloader掛載執行了 /win7/下的boot.bin 還是 /winxp/下的boot.bin 呢


boot the OS/chain-loader which had been loaded
引導已加載的操作系統或扇區鏈式加載器。
確定進行啟動用,通常和chainloader命令搭配使用,在菜單文件中可以省略,命令行模式下需要。


find --set-root /win7/boot.bin  #如果找到  此時root 應該是/win7 對吧?
rootnoverify /winxp #此時強設root為 /winxp
chainloader /boot.bin  #此時掛載執行 /winxp/下的boot.bin  對吧?

find --devices=h 應該是指搜尋時包含 隱藏 的裝置位置 (隱藏分區)

我看文件說明
    find --devices=h /file   #只查找硬盤上的文件
 樓主| 發表於 2012-3-30 14:03:58 | 顯示全部樓層
trptrp 發表於 2012-3-30 11:59
怎麼會去用Windows Loader
我覺得小馬比較勇健,無視KB971033   

小馬我有抓過1次  也是在無憂爬文時看到的  後來忘了丟哪了
他好像是寫入bios內的
而Windows Loader 他是模擬軟體install  雖然他也有slic寫入bios方式  但我都不敢用slic的方式
所以一直都是用Windows Loader這個

rootnoverify和chainloader順序沒有差
chainloader是啟動指定的設備
rootnoverify是改變啟動的設備

怎麼啟動後  又要改變啟動呢
以我這個能正確做動的選單來說
title         【3】Windows 7
chainloader (hd1,0)+1       #啟動了
rootnoverify (hd1,0)          #又要改變啟動  有什麼目的和意義呢??
您需要登錄後才可以回帖 登錄 | 我要註冊

本版積分規則

小黑屋|手機版|NoName Team 電腦資訊討論區 |網站地圖

GMT+8, 2025-11-22 13:31 , Processed in 0.404024 second(s), 14 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回復 返回頂部 返回列表