Multiboot USB-Flash-Drive (UFD)
#1
Posted 22 September 2010 - 12:21 PM
• MS DOS 6.22
• Microsoft Windows PE SP2 (Windows Preinstallation Environment, WinPE) or ERD Commander, Microsoft Windows XP Professional, Service Pack 2
• Damn Small Linux (DSL) or Parted Magic Linux
Of course there is also any other combination possible, e.g. DOS Win98, Bart PE, etc. The procedure is always the same. Prerequisite for booting from an Flash Drive is, that the BIOS supports it and that the Flash Drive itself is bootable.
These are the steps I did to make it work. I used the Lexar Flash Drive "JD Firefly 16GB".
1. Make partitions on the USB Flash Drive (if you like it): see here
2. Make the USB Flash Drive bootable
You need the HP USB Disk Storage Format Tool and a bootable Floppy Disc, e.g. DOS 6.22, DOS Win98. I used a MS DOS 6.22 Boot Disc.
Take the USB Disk Storage Format Tool (only for Removable Medias), use the option "Create Dos Start Disc" and format the UFD with FAT16. The HP Tool makes a DOS Boot Sector on the UFD and copies the Start Files from the floppy to the UFD.
Now the UFD is bootable under DOS. If the UFD is partout not bootable, please check, if the Boot Flag is set (gparted).
If the UFD is recogniced as Fixed Disc, the HP Tool does not work. In this case you have to install DOS on the UFD analog to a HDD.
3. Extracting the Boot Sector
To extract the Boot Sector from an UFD (Removable Media, Fixed Disc) you simply use a tool called "Mkbt".
With "Mkbt" you are able to copy the Boot Sector of an UFD to a temporary folder of you local fixed disc. Open a command prompt and enter: "mkbt –x –c g: c:\temp\bootsect.dos". g is the letter of the UFD and "c:\temp\bootsect.dos" is the path, where the file should be stored. Then copy the file "bootsect.dos" to the root of the UFD.
4. Make a NT Boot Sector on the UFD (Removable Media, Fixed Drive)
Take the Windows XP SP3 Setup CD, boot from it and take the option "R" (Repair Recovery Console). You can write the NT Boot Sector with the command "Fixboot g:" to the UFD. g is again the letter of the UFD.
Then you have to extract the Boot Sector and to save it in a file again: "mkbt –x –c g: c:\temp\bootsect.nt"
5. Installation of WinPE or ERD Commander on the UFD (Removable Media, Fixed Disc)
First of all you need three files from the Windows XP Professional SP3 installed on you HDD. Take the files "Boot.ini", "ntldr" and "ntdetect.com" and copy them into the root of the UFD. Then copy all files of the WinPE or ERD Commander CD to the UFD. Copy from the folder "i386" the file "Setupldr.bin" into the root of the UFD and rename the file into "peldr". Then rename the folder "i386" to "minint". The tool "nt2peldr" prepares the in step 3 extracted Boot Sector for WinPE. Open a command prompt and enter "nt2peldr bootsect.nt". Then copy the changed file "bootsect.nt" to the root of the UFD.
Now you have to adapt the file "boot.ini":
[boot loader]
timeout=30
default=c:\bootsect.dos
[operating systems]
c:\bootsect.dos="MS-DOS 6.22"
c:\bootsect.nt="Microsoft Windows XP PE"
Important: You have to use c: and no other letter!
If you boot from the UFD now, you can select in a menu between these two operating systems.
6. Installation from Damn Small Linux or Parted Magic onto the UFD (Removable Media, Fixed Disc)
First of all copy all files from the ISO File of DSL or Parted Magic into the root of the UFD. Then open a command prompt and enter "syslinux –a -f -d \boot\syslinux g: g:\bootsect.lnx" (http://syslinux.zytor.com/, Version 4.02). With this command you save the root of the Linux Boot Sectors into a file. (Important: Do NOT write the MBR into the file!). g is again the letter of the UFD. Now you can find in the root of the UFD the file "bootsect.lnx" and in the folder \boot\syslinux the file "ldlinux.sys".
If you install DSL, you have to rename the folder boot\isolinux to boot\syslinux and the file boot\isolinux\isolinux.cfg to boot\isolinux\syslinux.cfg.
By default DSL starts with the Englisch keyboard. If you want, that a another keyboard is reloaded automatically, you have to adapt the file syslinux.cfg. For instance: Change lang=us to lang=de, if you want to have the German keyboard.
Finally you have to adapt the file "boot.ini". Complete in the section [operating systems] in the file "boot.ini" with c:\bootsect.lnx="Parted Magic Linux" or "Damn Small Linux".
Voila! Now you UFD is multiboot and you can select three operating systems via the Windows Boot Loader ntldr.
#2
Posted 22 September 2010 - 12:45 PM
And using/suggesting "obsolete" tools.
The HP USB Format utility is not anymore suggested, as we have better tools (that fix or avaoid the problems that the HP thingy may create):
http://www.boot-land...?showtopic=9460
By using grub4dos:
http://www.boot-land...hp?showforum=66
you can avoid any and all bootsector creating/fixing/copying. (with the exception of the MS-DOS 6.22 which direct IO.SYS chainloading is not available - but it works for 7.x/8.x - i.e. Win9x/Me)
Anyway for DOS 6.22 using an image is more handy. (and possibly also for DSL)
For the record:
Mkbt can be found online here: http://www.nu2.nu/mkbt/
nt2peldr can only be found (together with Mkbt) inside Bart's pebuilder:
(pebuilder3110a.zip in the \plugin\peinst\ folder )
http://www.nu2.nu/pebuilder/
To sum up, IMHO VERY GOOD work , but unfortunately a few years late.
Wonko
#3
Posted 22 September 2010 - 01:49 PM
I know that this instruction is a little bit out of date, but worked for me with pleasure ...
But know I have another challange and I don't know, if I should follow my old way or use a new way (grub4dos).
mhh: the problem is, I want to add a second or third WIN PE (based on NTLDR), one or two WIN PE (based on BOOTMGR - Windows 7, e.g. GHOST SRD, BOOT.WIM) and more Linux distrubutions.
So the question is, is it possible with my old way to add another WIN PE (based on NTLDR) or a WIN PE (based on BOOTMGR) or a Linux distribution, because all my folders are in the root of the UFD ... that means I had to make sub-folders ... and have to adapt the path of the ntldr, peldr, etc.
Do you know, what I mean?
Thank you!
#4
Posted 22 September 2010 - 04:17 PM
Yes/no.Do you know, what I mean?
A PE 1.x is NOT "NTLDR based", but rather SETUPLDR.BIN based.
You can add as many PE 1.x's you want by having any number of:
SETUPLDR.BIN <-the original one that points to /minint/
SETUPLD1.BIN <- a copy of the above hex-edited to use, say, /minin1/
....
SETUPLD1.BIN <- a copy of the above hex-edited to use, say, /mininn/
as long as you use a "flat" directory structure (i.e. you DO NOT need a WINNT.SIF in root)
ONLY seemingly unrelated :
http://www.911cd.net...showtopic=17504
You can use this:
http://www.boot-land...?showtopic=2362
to create the n bootsectors you will need.
To load the the BOOTMGR based builds, you can use the fixboot /nt60 to change the bootsector and go on like that, and manually edit the bootsector.
You will need the BOOTMGR from Vista SP0, unless I am mistaken, check this:
http://www.boot-land...?...c=8043&st=0
and this:
http://sites.google....and-server-2008
For the various Linux distro's you can add the entries to your existing Syslinux.cfg.
However, I don't see why you wouldn't use grub4dos and it's direct chainloading features, you don't have to modify ANYTHING if you use NTLDR/BOOT.INI as your "primary" bootloader, you just add a line to BOOT.INI:
http://diddy.boot-la...ws.htm#windows1
once you access the grub4dos you can boot:
- *ANY* DOS (directly DOS 7.x/8.x and freeDOS - as an image ANY other one)
- *ANY* PE 1.x (with "flat" structure or as .iso image or as HD .img with firadisk or winvblock)
- *ANY* PE 2.x (with "flat" structure or as .iso image or as HD .img)
- *ANY* PE 3.x (with "flat" structure or as .iso image or as HD .img)
- *ANY* Linux
Without the need of creating/editing bootsectors.
If you want to go in the "subfolder" direction, you will need VERY SHORT folder names, JFYI:
http://www.911cd.net...showtopic=20123
http://www.boot-land...?showtopic=4950
Wonko
#5
Posted 23 September 2010 - 07:26 AM
I have understood how to add NTLDR based builts, but have a problem to add BOOTMGR based builts. I tried the following:
1. I downloaded the Symantec Recovery Disk (SRD) here:
2. I burnt the Image to a CD and booted from it. --> Works fine! The Built of this Version ist 6.0.6001.
3. I formatted a 1 GB UFD mit FAT16 and copied the boot sector from Windows 7 (Built 6.1.7600) on it (bootsect g: /nt60 /force). g is the drive-letter of my UFD.
4. Then I copied the entire content of the CD to the UFD.
5. I booted from the UFD. Voila: It works fine!
6. I extracted the boot-sector of the UFD with mkbt to a file and copied the boot.ini, ntldr and ntdetect.com from my existing Windows XP installation to the root of my UFD. I adapted the boot.ini like in my instruction (loading the Boot-sector, ...).
7. I booted from the UFD --> It did NOT work! There is an error: \windows\system32\hal.dll is missing ...
mhh: What did I wrong?
#6
Posted 23 September 2010 - 11:22 AM
Cannot say.mhh: What did I wrong?
It should work (on a FAT filesystem).
Maybe for some reason the bootsector cannot be found by NTLDR?
Try:
make somewhere else a copy of:
- the bootsector invoking BOOTMGR
- NTLDR
- modified BOOT.INI
Copy to it the files in this order:
- NTLDR
- modified BOOT.INI
- the bootsector invoking BOOTMGR
- BOOTMGR (from the Symantec thingy)
- the /boot/ directory (from the Symantec thingy)
What happens?
If the error is different, copy the rest of the files from the Symanted thingy.
OR:
re-format the UFD (with a bootsector invoking NTLDR).
make a copy of the bootsector.
modify it to invoke instead of NTLDR, BOOTMGR (makeBS or hex editor)
Copy to the UFD the files in this order:
- NTLDR
- modified BOOT.INI
- the NTLDR bootsector modified to invok BOOTMGR
- BOOTMGR (from the Symantec thingy)
- the /boot/ directory (from the Symantec thingy)
The alternative being "shifting" the "main" bootloader from NTLDR to BOOTMGR, i.e. keep the win 7 bootsector and add an entry for NTLDR to the /boot/BCD.
Wonko
#7
Posted 23 September 2010 - 06:14 PM
re-format the UFD (with a bootsector invoking NTLDR).
Copy to it the files in this order:
- NTLDR
- modified BOOT.INI
- the bootsector invoking BOOTMGR
- BOOTMGR (from the Symantec thingy)
- the /boot/ directory (from the Symantec thingy)
OR:
re-format the UFD (with a bootsector invoking NTLDR).
make a copy of the bootsector.
modify it to invoke instead of NTLDR, BOOTMGR (makeBS or hex editor)
Copy to the UFD the files in this order:
- NTLDR
- modified BOOT.INI
- the NTLDR bootsector modified to invok BOOTMGR
- BOOTMGR (from the Symantec thingy)
- the /boot/ directory (from the Symantec thingy)
@Wonko the Sane: First thank you again for your feedback!
I have solved my error:\windows\system32\hal.dll is missing ...
--> had a problem with formatting and making a right bootsector of my UFD
I tried both possibilities above from you with the same result: I get a menu from boot.ini where I can select my entries (that is o.k. so). One entry shows to the bootsector invoking bootmgr. When I select this item, the menu of bootmgr comes up and shows all entries of boot.ini again. When I select these entries I am in loop. But if I select the first item, Ghost is starting ...
But I want to have that Ghost starts, when I select the Ghost entry of boot.ini ...
So, that's the challenge ... Do you have any ideas?
#8
Posted 23 September 2010 - 07:14 PM
Are you saying that the BCD is "automagically" listing the entries in BOOT.INI?
Can you post the contents of your BOOT.INI (copy and paste) and a screenshot of what you see when the BCD is loaded? (or list the items EXACTLY as you see them)
Wonko
#9
Posted 23 September 2010 - 07:38 PM
These are the entries of my boot.ini (for testing issues):
[boot loader]
timeout=30
default=c:\bootsect.dos
[operating systems]
c:\bootsect.dos="MS-DOS 6.22"
c:\bootsect.w7="Symantec Recovery Disk"
When booting from the UFD these entries of the boot.ini are shown.
When I select MS-DOS 6.22, DOS starts (that works fine).
When I select "Symantec Recovery Disk" the bootmgr loads BCD, and you can see:
1. Windows Setup [EMS activated]
2. MS-DOS 6.22
3. Symantec Recovery Disk
If you select entry 2 or 3, you are in a loop. I mean you always see this screen.
When you select entry 1, Ghost Recovery Disk ist starting ...
The question is, if there is an entry in BCD that skips the boot menu. I found it in EasyBCD, but it doesn't work. I think there is a bug in that programm.
Any ideas?
#10
Posted 24 September 2010 - 08:05 AM
I.e. remove the default "legacy" entry:
http://technet.micro...886(WS.10).aspx
or, if you prefer the {ntldr} one:
http://www.sevenforu...-dual-boot.html
Direct BCDEDIT usage:
http://www.sevenforu...it-how-use.html
jianliulin's excellent BCDEditor :
http://www.boot-land...showtopic=10003
Just in case, quick and dirty workaround to try:
- open NTLDR in a hex editor
- find string "boot.ini" (NOT "BOOT.INI" - you should find two occurrences of it, near to each other )
- change both from "boot.ini" to "booo.ini"
- rename BOOT.INI on the stick to BOOO.INI
Wonko
#11
Posted 24 September 2010 - 05:02 PM
It will download various iso's & linux distro's then install them to your UFD with a grubloader. Once you have several projects loaded, you can manually copy more to the UFD & modify the menu.lst file (use notepad/ text editor) to include them on boot. When I add LiveXP iso, then I copy/paste another existing iso chainloader in notepad then modify it for LiveXP.iso. You can do something similar for various Linux distro's.
Multibootiso.exe formats the UFD as a Fat32, which some bios won't let you boot from. One work around is to change format to NTFS, but some Linux distro's won't run on that.
Another option is to copy your project off the UFD, multipartition it (I use the Hitachi filter) & copy back (I had to add "grldr" file from grub4dos).
#12
Posted 26 September 2010 - 06:44 PM
It tested all your suggestions and googled ... and googled ... but till now I didn't get it to work properly ...
It it is not possible to remove the legacy enty from the BCD-file, because there is non legacy entry in the Ghost BCD file.
I made another test. I installed Windows 7 and copied the boot.ini to the root of the system-partition. Same result: When Windows 7 starts, the Boot-Manager shows all entries of boot.ini. And there is also no legacy entry in the original BCD Windows 7 file ... mhh. That means, if a bootmgr based os recognices a boot.ini it automatically shows the entries of the boot.ini in the boot-manager...
I found out that there is the following option to be set in the BCD: bootmenudisplay = no. But it also doesn't work, seems to be a bug in the bootmgr. The entries of boot.ini are continuely shown ...
It seams, that this strange behaviour is also recogniced by others:
http://neosmart.net/...read.php?t=6570
http://neosmart.net/...read.php?t=4243
I made another test: I set the time in the BCD, till the default entry is selected to 0 seconds. This is the only way I get it to work till now. But it works not fine, because you also can see a flare up boot-menu ...
I also tried your workaround. But this also doesn't work, I get an error, that a file is missing. It seems, that there is a check, if the ntldr is changed ...
Here you can find the Ghost BCD-File: http://www.mediafire...89712b4xvl52cmx
Any other ideas?
Edited by triplexxx, 26 September 2010 - 06:49 PM.
#13
Posted 29 September 2010 - 10:42 AM
I assume that NTLDR "goes in pairs" with SETUPLDR.BIN.
XP 32 bit ones have NOT a check.
Server 2003 and XP 64 do.
See here:
http://www.msfn.org/...sp1-winpe-2004/
What EXACT error are you getting?
After having made WHICH EXACT change to NTLDR?
Wonko
#14
Posted 29 September 2010 - 06:29 PM
After having made WHICH EXACT change to NTLDR?
I followed you instruction:
* opened NTLDR in a hex editor
* found string "boot.ini" (NOT "BOOT.INI" - found two occurrences of it, near to each other)
* changeed both from "boot.ini" to "booo.ini"
* rename BOOT.INI on the stick to BOOO.INI
When I boot from my UDF now, I get the following error: Error in File Boot.ini ...
I found out, that this error is INDEPENDENT of a right or wrong patched ntldr. I also get this error with an unmodified (unpatched) ntldr. As soon I change the name of boot.ini. , I get this error ...
Edited by triplexxx, 29 September 2010 - 06:30 PM.
#15
Posted 29 September 2010 - 06:48 PM
Strange.I followed you instruction:
* opened NTLDR in a hex editor
* found string "boot.ini" (NOT "BOOT.INI" - found two occurrences of it, near to each other)
* changeed both from "boot.ini" to "booo.ini"
* rename BOOT.INI on the stick to BOOO.INI
When I boot from my UDF now, I get the following error: Error in File Boot.ini ...
I found out, that this error is INDEPENDENT of a right or wrong patched ntldr. I also get this error with an unmodified (unpatched) ntldr. As soon I change the name of boot.ini. , I get this error ...
I'll have to recheck my notes, maybe there is another occurrence that needs be patched that I don't remember out of the top of my head
It will take a few days since I'm out of town.
Why don't you go back to the "right" way i.e. not using NTLDR as your primary loader?
Wonko
#16
Posted 29 September 2010 - 07:09 PM
Why don't you go back to the "right" way i.e. not using NTLDR as your primary loader?
Wonko
I have already considered NOT using NTLDR as my primary loader ... in the interim I also think that I do not get to work it with NTLDR ...
But I will wait for you till you have rechecked your notes, if you have any other idea ... thank you very much!
#17
Posted 30 September 2010 - 11:58 AM
#18
Posted 01 October 2010 - 06:10 AM
#19
Posted 01 October 2010 - 06:46 AM
How do i BOOT ENNA GEEXBOX alpha2 & GEEXBOX 1.2.4 ISO FROM THE MULTIBOOT USB USING GRUB4DOS ENTRIES
A good start would be if you behaved like everyone else:
- use "normal" characters, and NOT bold, and NOT CAPITAL letters
- post a new thread, and DO NOT hijack this one (or any other UNRELATED to your question thread)
- make sure to post your thread in the proper place, i.e.:
http://www.boot-land...hp?showforum=66 - ONLY post it AFTER you have searched the board and did not found an answer to your question
Wonko
#20
Posted 01 October 2010 - 10:06 PM
I switched to the Windows 7 bootmgr and customized the BCD-File from the Symantec Ghost Recovery Disk with the exellent jianliulin BCD Editor. Now I have an UFD, from which I can boot MS-DOS, Erd-Commander based on Windows XP PE, Symantec Ghost Recovery Disk based on Windows 7 PE and a Linux distribution ...
Thank you again Wonko the Sane for your help!!
#21
Posted 02 October 2010 - 02:19 PM
Problem solved!!
I switched to the Windows 7 bootmgr and customized the BCD-File from the Symantec Ghost Recovery Disk with the exellent jianliulin BCD Editor. Now I have an UFD, from which I can boot MS-DOS, Erd-Commander based on Windows XP PE, Symantec Ghost Recovery Disk based on Windows 7 PE and a Linux distribution ...
Thank you again Wonko the Sane for your help!!
Only too happy having contributed to another happy bunny in the basket:
http://www.msfn.org/...o...28727&st=10
So it was a problem with the BCD or with the version of bootmgr?
I will check anyway as soon as I am back the BOOT.INI renaming....
Wonko
#22
Posted 02 October 2010 - 04:50 PM
So it was a problem with the BCD or with the version of bootmgr?
Wonko
Neither nor! It was a problem of boot.ini. As soon as bootmgr detects the presence of boot.ini, the bootmenu of bootmgr shows the entries of boot.ini when started. I have done it now with bootmgr (from Ghost - but it also works with bootmgr of my Windows 7 installation) and bcd (I customized the Ghost one, with a legacy entry for Erd Commander), therefore I don't need boot.ini and ntldr (is part of bootmgr) anymore.
The content of my UFD looks like in this way now: http://de.tinypic.com/r/nwknz5/7
(MS-DOS, Erd Commander based on Windows XP, Linux, Ghost Recovery Disk based on Windows 7). When you boot from the UFD, bootmgr shows the bootmenu with 4 os's, you can select.
You see, it looks a littel bit disordered. Therefore I want to make Sub-folders for the Windows XP based, for the Linux based and for the Windows 7 based os's, in the follwing way (till now all folders are in the root), also to get the possibility to add more than os (e.g. two os's based on Windows XP or two based on Windows 7)
ERD\minint
ERD\Documents and Settings
LNX\boot
LNX\pmagic
W7\boot
W7\DOCS
W7\Driver Validation
W7\Manager
W7\Sources
W7\Updatelocator
The question is, is that possible? E.g, Windows 7 must have a folder called boot in the root (I think it's hardcoded in bootmgr), otherwise it doesn't boot.
I tried it with ERD Commander. I get an error, that txtsetup.sif is missing ... mhh
Any ideas?
#23
Posted 02 October 2010 - 06:42 PM
If that is the question, the answers are YES/NO.The question is, is that possible?
http://homepage.ntlw...no-answers.html
YES, it is maybe possible (with SEVERAL limitations) for 2K/XP/2003.
YES, it is possible for Vista :mellow:/7 (with OTHER limitations).
NO, it is NOT possible the way (and with the directory structure) you have imagined.
Lot's of them, rest assured.Any ideas?
Previous discussion on the matter that includes steve6375's method for multiple Vista <_</7:
http://www.boot-land...?...ic=8043&hl=
A couple threads that may give a hint for XP based PE's and similar:
http://www.msfn.org/...ther-directory/
http://www.boot-land...?showtopic=4950
http://www.911cd.net...showtopic=20123
Wonko
#24
Posted 03 October 2010 - 04:09 PM
I am considering taking GRUB4DOS, because it's to complex to make sub-folders using bootmgr ... mhh
Is bootmgr able to load different images (Windows XP based ones, Windows 7 based ones, Linux based ones, ... analog GRUB4DOS)?
Edited by triplexxx, 03 October 2010 - 04:13 PM.
#25
Posted 10 October 2010 - 12:53 PM
I can confirm that:
000373F0h: 72 74 69 74 69 6F 6E 3D 00 00 00 00 5C 53 79 73 rtition=....\Sys
00037400h: 74 65 6D 33 32 5C 4E 54 4C 44 52 00 6F 73 6C 6F tem32\NTLDR.oslo
00037410h: 61 64 65 72 3D 00 00 00 5C 62 6F 6F 74 2E 69 6E ader=...\boot.in
00037420h: 69 00 00 00 62 6F 6F 74 2E 69 6E 69 00 00 00 00 i...boot.ini....
00037430h: 2F 66 61 73 74 64 65 74 65 63 74 00 73 63 73 69 /fastdetect.scsi
000373F0h: 72 74 69 74 69 6F 6E 3D 00 00 00 00 5C 53 79 73 rtition=....\Sys
00037400h: 74 65 6D 33 32 5C 4E 54 4C 44 52 00 6F 73 6C 6F tem32\NTLDR.oslo
00037410h: 61 64 65 72 3D 00 00 00 5C 62 6F 6F 6F 2E 69 6E ader=...\booo.in
00037420h: 69 00 00 00 62 6F 6F 6F 2E 69 6E 69 00 00 00 00 i...booo.ini....
00037430h: 2F 66 61 73 74 64 65 74 65 63 74 00 73 63 73 69 /fastdetect.scsi
Works for me allright.
Wonko
0 user(s) are reading this topic
0 members, 0 guests, 0 anonymous users