Showing posts with label grub4dos. Show all posts
Showing posts with label grub4dos. Show all posts

2015-11-14

使用 GRUB4DOS / RMPrepUSB 的注意事項

1. 可 mount 大部份 ISO 檔案的方法
A : 參考 www.rmprepusb.com
>>> 93 - Boot almost ANY linux ISO from a grub4dos USB drive (e.g. Tails, BackTrack or even Ophcrack)!
>>> 21 - GRUB4DOS GUIDE (with videos) - how to make a multi-boot drive (+examples)

2. Error 60: File for drive emulation must be in one contiguous disk area
A1 : RMprepUSB->Drive->Make all files on drive contiguous (Ctl+F2)
A2 : Run winimage
A3 : (最笨最有效的作法) Copy USB 內容到暫存目錄, delete USB 內容, 是 delete, 不是 format. Using the Ctrl-F2 hotkey in RMPrepUSB to make all the files on the E2B drive contiguous. 再將暫存木錄之內容, 回存到 USB.
A4 : (建議的作法): Comment from http://rmprepusb.blogspot.tw/.  A nice tool you can use to help you look at the files on the USB drive and understand what is happening is the free Piriform Windows utility Defraggler. 分析之後, 針對單一檔案進行處理, 不要中斷; 千萬不要全部重組.
defraggler
Defraggler also asks if you want to erase the Recycle Bin files when you Analyze or Defrag a drive.
As you can see from the screenshot above, you can select a drive, click Analyze and then immediately see the fragmented files (shown by the red squares). You can then select a red square and Defraggler will list what files are in that block. You can then tick the checkbox next to any of these files and defragment them separately by clicking the 'Defrag checked' button. Nice!
Defraggler is not a good tool to use on the whole USB drive however. It attempts to move all the files to the beginning of the drive as well as make them contiguous. This can take a longggg time and is also uneccessary. What is more, if you Stop Defraggler during a defrag operation, it can prevent the drive from being defragged again and prevent WinContig from being able to make all the files contiguous unless you first delete a large file from the USB drive to make more room! So I would advise that you only use Defraggler to defrag single files and don't interrupt it once it has started. If you need to make all files on a drive contiguous use WinContig (or Ctrl+F2 in RMPrepUSB).
P.S. In case you missed it, in a previous blog post, I describe a case where a 6GB ISO could not be copied and then defragged on an empty 8GB USB drive and the reason why this happens.

2011-11-24

Grubinst 初級使用 (Grub4DOS utility)

1. 介紹
grubinst是一個用來將GRUB4DOS安裝到硬盤的MBR(或者分區的引導扇區)以及映像文件中的工具。

grubinst.exe是一個命令行方式的程序,它的功能基本上與不點的GRUB4DOS發行包中的bootlace.com(可以運行在純DOS或者Linux環境)相同,但是跟bootlace.com不同,grubinst完全是用C語言開發的,能夠在Windows NT/2K/XP、Linux和FreeBSD等操作系統下編譯並運行。

grubinst_gui.exe以管理員身份執行是grubinst.exe的圖形界面shell程序,對於那些不熟悉命令行操作的用戶來說,它提供了更友好的圖形操作界面,目前,grubinst_gui.exe只能運行在Windows操作系統(事實上是只能運行在NT/2K/XP環境)下。

另外請注意,當前版本的grubinst不支持在Windows 95/98/ME下修改硬盤的MBR,對於這些操作系統,請使用bootlace.com。

2. grubinst跟bootlace.com的區別
在bootlace.com裡,硬盤盤等設備只能用設備的BIOS識別號來表示,如0x80表示第一塊硬盤,0x81表示第二塊硬盤等等。而在grubinst中,硬盤則可以用特定的設備文件名來表示(跟grub的傳統類似),如(hd0), (hd1)...。軟驅暫時還不支持這種表示方式。

grubinst支持幾個新的選項,主要用於恢復原來的MBR。

--save-mbr=FILENAME

This option is used to save the original MBR to FILENAME 這個選項用於保存原來的MBR到文件中。

--restore-mbr=FILENAME

這個選項用來從前面保存的文件中恢復原來的MBR。

--restore-prevmbr

這個選項用來恢復保存在硬盤或者映像文件中第二個扇區的原來的MBR。

正常情況下,原來的MBR只有一個扇區,它被保存在新的GRLDR MBR中的第二個扇區中。你可以用--restore-prevmbr選項來恢復它。然而,如果原來的MBR的長度超過一個扇區,例如,你安裝了別的引導管理軟件,那麼GRLDR MBR就沒有足夠的空間保存原來的MBR。在這種情況下,你應該使用--save-mbr=FILENAME將原來的MBR保存到一個外部文件中,需要時再使用--restore-mbr=FILENAME選項從保存的文件中恢復它。

3. 用法及示例
取自grubinst 1.1的--help。

grubinst   [選項]   設備或文件
選項:

--help,-h 顯示本幫助
--pause 退出前暫停
--version 顯示grubinst版本信息
--verbose,-v 輸出詳細信息
--list-part,-l 列出設備或者文件中的所有分區信息
--save=FN,-s=FN 保存原來的MBR/引導扇區到文件FN中。
--restore=FN,-r=FN 從前面備份的FN中恢復原來的MBR/引導扇區
--restore-prevmbr,-r 恢復保存在設備或者文件第二扇區中的原來的MBR
--read-only,-t 只是模擬操作,沒有真正的寫操作(測試模式)
--no-backup-mbr 不在第二扇區中備份原來的MBR。
--force-backup-mbr 強製備份原來的MBR到第二扇區(默認選項)
--mbr-enable-floppy 在軟驅上搜索grldr(默認選項)
--mbr-disable-floppy 禁止搜索軟驅上的grldr
--mbr-enable-osbr 當分區表非法時(通常是某操作系統的引導扇區),仍然啟動原來的MBR(默認選項)
--mbr-disable-osbr 當分區表非法時(通常是某操作系統的引導扇區),禁止啟動原來的MBR。
--duce (不明白,無法翻譯)disable the feature of unconditional entrance
to the command-line.
--boot-prevmbr-first 在搜索GRLDR之前嘗試首先啟動原來的MBR
--boot-prevmbr-last 在啟動原來的MBR之前先搜索GRLDR(默認選項)
--preferred-drive=D 優先啟動磁盤編號, 0 <= D < 255.
--preferred-partition=P 優先啟動分區編號, 0 <= P < 255.
--time-out=T,-t=T 在啟動原來的MBR之前等待T秒,如果T是0xff,無限等待,默認等待5秒
--hot-key=K,-k=K 如果在啟動原來的MBR之前按下了指定鍵,則啟動GRUB。K的長度為一個字(word),也就是int16/AH=1中斷的AX寄存器值。高位字節是對應按鍵的掃瞄碼,低位字節是ASCII碼。默認按鍵是0x3920,也就是空格鍵。
--key-name=S 指定熱鍵的顯示名
--floppy,-f 如果安裝目標是軟驅,則指定這個選項。
--floppy=N 如果安裝目標是硬盤的某個分區,則指定這個選項。N用來指定分區編號:0,
1,2和3對應主分區,4,5,6,...對應邏輯分區。
--sectors-per-track=S 對--floppy選項指定每磁道扇區數,1 <= S <= 63, 默認是63.
--heads=H 對--floppy選項指定磁頭數,1 <= H <= 256, 默認是255.
--start-sector=B 對--floppy=N選項指定隱藏扇區數。
--total-sectors=C 對--floppy選項指定總扇區數,默認是0。
--lba 對--floppy選項使用LBA方式。如果軟驅的BIOS支持LBA,你可以指定這個選項。
按規定所有的軟驅BIOS都支持CHS方式,所以最好指定--chs選項。如果既沒指定
--lba也沒指定--chs,則LBA指示字節(一般是啟動扇區第3字節)的值不會被改
變。
--chs 對--floppy選項使用chs方式。如果你的軟驅BIOS不支持LBA方式,你應該指定
--chs選項。我們假定所有的軟驅BIOS都支持CHS方式,所以推薦使用--chs選項。
如果既沒指定--lba也沒指定--chs,則LBA指示字節(一般是啟動扇區第3字節)
的值不會被改變。
--install-partition=I, -p=I 安裝引導扇區到指定硬盤(或硬盤映像)的分區I。
--boot-file=F,-b=F 改變默認啟動文件名(默認是grldr)。
--load-seg=S 改變啟動文件的默認內存加載段(默認是0x2000:0)。
--grub2,-2 裝載grub2的內核g2ldr而不是grldr。
--output,-o 輸出內置的grldr.mbr(受-b參數的影響)。

示例 1: 安裝GRLDR MBR到第一個硬盤

grubinst (hd0)

示例 2: 安裝GRLDR MBR 到磁盤映像文件disk.dsk

grubinst disk.dsk

示例 3: 恢復第一塊硬盤的單扇區MBR

grubinst --restore-prevmbr (hd0)

示例 4: 安裝GRLDR MBR到第一塊硬盤並保存原來的MBR到MBR.sav文件中。

grubinst --save-mbr=MBR.sav (hd0)

示例 5: 從保存的MBR.sav中恢復原來的MBR。

grubinst --restore-mbr=MBR.sav (hd0)

示例 6: 在啟動時10秒內按下空格才加載GRUB

grubinst --boot-prevmbr-first --time-out=10 (hd0)

4. 編譯方法
要編譯grubinst,在Linux/FreeBSD下你需要GCC,在Windows NT/2K/XP下你需要mingw或者Visual C++ 6.0。

mingw:

make -f Makefile.mgw

Visual C++ 6.0:

nmake -f Makefile.vc6

Linux GCC:

make -f Makefile.lnx

FreeBSD GCC:

make -f Makefile.bsd

這裡提供的二進制代碼使用mingw編譯。

2011-11-23

使用 Grub4Dos 來做隨身碟的開機管理

grubinst_gui (圖形介面) 使用步驟
1. 準備:下載並解壓 grubinst 和 Grub4Dos。
2. 執行:右鍵點選 grubinst_gui.exe,選擇「以管理員身份執行」
3. 選擇磁碟:在「Disk」處點擊「Refresh」,選擇要安裝的目標磁碟(務必確認磁碟代號,如 USB 隨身碟,通常 hd0 是系統硬碟)。
4. 安裝:點擊「Install」按鈕。若顯示「The MBR/BS has been successfully installed」,則表示安裝成功。
5. 複製檔案:將 Grub4Dos 壓縮包中的 grldr 和 menu.lst 檔案複製到目標磁碟的根目錄下。 

grubinst (命令列) 常用語法
安裝到硬碟 MBR (以第2個硬碟 hd1 為例):
grubinst (hd1)
將引導代碼安裝到分區 (如第1個硬碟第1個分區):
grubinst (hd0,0)
設定延遲等待時間 (例如10秒):
grubinst --boot-prevmbr-first --time-out=10 (hd0) 

首先使用 grubutil 裡頭的 grubinst_gui.exe 程式, 把隨身碟的 MBR 修改成使用 grub 來開機, 然後把 grub4dos 的 grldr 放到隨身碟的根目錄中, 基本上, 這樣子做之後, 就會在開機後執行 grldr 來使用 grub 了.  剩下來的, 就是設定 grub 的各種開機選項了.  只要同樣在隨身碟的根目錄中, 建立一個 menu.lst 的文字檔, 設定 grub 的各種開機選項就可以了.
首先, 如果你的隨身碟要由 DOS (Windows 98 中的 DOS) 開機, 只要把 IO.SYS, MSDOS.SYS 與 COMMAND.COM 複製到隨身碟的根目錄中, 然後在 menu.lst 中加上下面的設定:


title DOS
chainloader /io.sys

這樣子在 grub 中就會出現 DOS 這個選項了. 選擇後就會透過 IO.SYS 來做一般 DOS 開機的動作了.

接著, 我還有用 NoN 的 XPE, 把 ISO 檔案內的 SETUPLDR.BIN, RXPE.COM, RXPE.IM_ 與 RXPE.SIF 放到隨身碟的根目錄, 再把 OUTTOOL 目錄複製一份到隨身碟中, 然後在 menu.lst 中加上下面的設定:

title NoName XPE
chainloader /setupldr.bin

這樣子在 grub 中會出現 NoName XPE 這個選項, 選擇後就會載入 NoN XPE 了.

接著, 經常使用的 memtest86 軟體, 建立一個 MEMTEST86 的目錄, 把 memtest86.bin 放到這個目錄下頭, 然後在 menu.lst 中加上下面的設定:

title MemTest86 3.4
kernel /memtest86/memtest.bin (fd0)
boot

這樣子在 grub 中選擇 MemTest86 3.4 就會執行 memtest86 軟體.

接著, 在 Linux 中, 經常使用 SystemRescueCd 這個光碟, 同樣也可以放到隨身碟中. 首先建立一個 SYSRCD 的目錄, 然後把光碟內的 sysrcd.dat 放到這個目錄下, 再把光碟內 isolinux 目錄下的 rescuecd 與 rescuecd.igz (如果你習慣選擇使用其他的 kernel 也可以, 如 x86-64 的 rescue64 與 rescue64.igz)也放到 SYSRCD 目錄內. 然後在 menu.lst 中加上下面的設定:

title SystemRescueCd
root     (hd0,0)
kernel /sysrcd/rescuecd subdir=sysrcd setkmap=us video=ofonly vga=0 cdroot
initrd /sysrcd/rescuecd.igz
boot

這樣子在 grub 中選擇 SystemRescueCd 就會載入 SystemRescueCd 的內容了.

如果你有使用 Acronis True Image 這個軟體, 可以先使用這個軟體, 產生回復光碟或光碟的 iso 檔案, 然後建立一個 ATIRCD 的子目錄, 把光碟內的 kernel.dat 與 ramdisk.dat 放到 ATIRCD 的子目錄中. 然後在 menu.lst 中加上下面的設定:

title    Acronis True Image
root (hd0,0)
kernel /atircd/kernel.dat quiet
initrd /atircd/ramdisk.dat /s
boot

這樣子在 grub 中選擇 Acronis True Image 這個選項, 就會執行 True Image 了.

如果你有 Windows 98 的開機片, 也可以把開機片做成一個 image 檔案 (winimage 或 linux 下頭直接用 dd 指令就可以), 如 win98.img 然後建立一個 WIN98 的目錄, 把這個檔案放到 WIN98 目錄中, 在 menu.lst 中加上下頭的設定:

title Windows 98 Boot Disk
map --mem (hd0,0)/win98/win98.img (fd0)
map --hook
chainloader (fd0)+1
rootnoverify (fd0)

這樣子 grub 會弄一個虛擬的軟碟機, 把這個 image 載入會再開機.

最後, 加上一些進入 grub shell, 由軟碟機開機, reboot, halt 指令的項目:

title GRUB Command Line
commandline
 
title Floppy (fd0)
chainloader (fd0)+1
rootnoverify (fd0)
 
title Reboot
reboot
 
title Halt
halt

這樣子就完成了. 整個 menu.lst 如下:

color black/cyan yellow/cyan
default 0
 
title DOS
chainloader /io.sys
 
title NoName XPE
chainloader /setupldr.bin
 
title MemTest86 3.4
kernel /memtest86/memtest.bin (fd0)
boot
 
title SystemRescueCd
root (hd0,0)
kernel /sysrcd/rescuecd subdir=sysrcd setkmap=us video=ofonly vga=0 cdroot
initrd /sysrcd/rescuecd.igz
boot
 
title Acronis True Image
root (hd0,0)
kernel /atircd/kernel.dat quiet
initrd /atircd/ramdisk.dat /s
boot
 
title Windows 98 Boot Disk
map --mem (hd0,0)/win98/win98.img (fd0)
map --hook
chainloader (fd0)+1
rootnoverify (fd0)
 
title Windows 98 Boot Disk with USB support
map --mem (hd0,0)/win98/w98usb.img (fd0)
map --hook
chainloader (fd0)+1
rootnoverify (fd0)
 
title GRUB Command Line
commandline
 
title Floppy (fd0)
chainloader (fd0)+1
rootnoverify (fd0)
 
title Reboot
reboot
 
title Halt
halt

經過這樣子的處理, 我們可以把一堆原本開機的軟碟片或光碟片, 都整合在一個小小的隨身碟中, 只要系統有支援 USB 開機 (現在應該沒有機器是不支援的吧), 就可以執行這些程式了. 同樣的方法, 並非只有 USB 隨身碟可以使用, 也可以使用在 USB 的硬碟機上頭. 剛好公司這幾天也發給我一個 WD 2.5" 160G 的 USB 硬碟來備份我的筆記型電腦 (老闆的電腦硬碟壞了一次怕到了, 給每個主管都配一個小硬碟來備份資料), 同樣使用 grub4dos, 把這些軟體都複製過去, 一樣可以拿來開機使用.

2007/12/06:

grub4dos 0.4.3 2007/11 之後的版本, 也支援直接由 .iso 的檔案中開機, 例如我們有個 ftool_203.iso, 可以用下面的方式來開機:

title FTool 2.0.3
map --mem (hd0,0)/ftool/ftool_203.iso (hd32)
map --hook
chainloader (hd32)
boot

只要指定 hd32 或更大的數字, 就表示該 image 是一個 ISO 9660 的光碟檔, 這樣子就可以了 (不過載入動作很慢, 就算是小檔案, 也要等一段不算短的時間, 檔案如果不小... 會有機器不動了的感覺). 不過, 如果你的系統是在光碟開機載入核心之後, 還會用到光碟的內容, 可能就會有問題 (以 NoN XPE 來說, 載入核心後會找不到 OUTTOOL 的檔案, 所以除了內建在核心的軟體外, 在 OUTTOOL 的程式不會出現).