Hi,
I'm the author of Rufus [1], and I was pleasantly surprised to see it referenced on the ReactOS Live USB creation wiki [2]. So first of all, thanks for that.
Now, considering that the documented method of creating a Live USB using Rufus can't exactly be qualified as very user-friendly, I have just added native support for the ReactOS bootcd/livecd ISOs in Rufus, so that you should just be able to point the app to one of those ISOs, and it will automatically create a complete bootable USB, with no need to download an invoke GRUB4DOS, 7-zip, etc.
If you want to test, you can pick the latest ALPHA from: http://rufus.akeo.ie/downloads/
Currently, the way this works is through installing Syslinux (v4.07) and mboot.c32 so that setupldr.sys can then be invoked (see the /syslinux.cfg created by Rufus on the drive).
Also, for the time being, only setupldr.sys will be referenced (no freeldr.sys) on account that:
1. The Syslinux's menu.c32 file is rather large, and I want to keep Rufus small, so I don't want to embed it in the application (which is also the mais reason why Rufus doesn't include native GRUB support). But this means that user selection from a menu is not available.
2. When testing, I couldn't get freeldr.sys to do much when booted from USB... though that was most likely because I hadn't actually installed ReactOS anywhere.
Also note that, using 61492, even though the process seems to boot OK, I wasn't able to get a live ReactOS actually running from USB. On 2 of the machines I tried, the boot process eventually failed with "Fatal System Error 0x0000007b" in the USB stack. But I also got the exact same error with GRUB4DOS when following the steps from the wiki, so I don't think this has much to do with Rufus. I haven't really had a chance to investigate this issue yet, for lack of time.
Still, I'm hoping that making the creation of a bootable UFD easier for ReactOS will help encourage more people to test it and help the project.
Of course, I'm also open to suggestions to try to improve support for ReactOS in Rufus, if you want something specific. For instance, I should point out that the syslinux.cfg created by Rufus is written before any of the ISO files are copied over. Thus, if the ReactOS ISOs were to include their own syslinux.cfg & menu.c32/vesamenu.c32, it would be very easy to provide menu selection for the user when booting from USB, even as the ISOs are not Syslinux/Isolinux based.
Regards,
/Pete
[1] http://rufus.akeo.ie/ [2] http://www.reactos.org/wiki/LiveUSB#Installing_the_MBR_.28from_64-bit_Window...
Pete Batard schreef op 3-1-2014 3:59:
If you want to test, you can pick the latest ALPHA from: http://rufus.akeo.ie/downloads/
Awesome, will test using USB2 ports.
Currently, the way this works is through installing Syslinux (v4.07) and mboot.c32 so that setupldr.sys can then be invoked (see the /syslinux.cfg created by Rufus on the drive).
Also, for the time being, only setupldr.sys will be referenced (no freeldr.sys) on account that:
FreeLDR as multiboot-kernel only looks at freeldr.ini at C:\ , no idea if your created USB stick counts as C: or A:. Also ReactOS might write freeldr.ini in some special way on FAT drives, I've never been able to open/modify it using a DOS text editor.
- The Syslinux's menu.c32 file is rather large, and I want to keep
Rufus small, so I don't want to embed it in the application (which is also the mais reason why Rufus doesn't include native GRUB support). But this means that user selection from a menu is not available.
- When testing, I couldn't get freeldr.sys to do much when booted from
USB... though that was most likely because I hadn't actually installed ReactOS anywhere.
Smallest I've gotten FreeLDR is through using SYSLINUX -> MEMDISK -> FLOPPY.GZ where floppy.gz is a compressed ReactOS startup diskette image. SYSLINUX -> MBOOT.C32 -> FREELDR.GZ might also work instead.
Still, I'm hoping that making the creation of a bootable UFD easier for ReactOS will help encourage more people to test it and help the project.
I've always hoped for Syslinux -> Memdisk/GRUB -> ReactOS.ISO/IMG simply to overcome lack of mass storage controllers drivers by running from RAM.
Of course, I'm also open to suggestions to try to improve support for ReactOS in Rufus, if you want something specific. For instance, I should point out that the syslinux.cfg created by Rufus is written before any of the ISO files are copied over. Thus, if the ReactOS ISOs were to include their own syslinux.cfg & menu.c32/vesamenu.c32, it would be very easy to provide menu selection for the user when booting from USB, even as the ISOs are not Syslinux/Isolinux based.
So right now the installer ISO works but not the LiveCD/USB? [ https://www.reactos.org/getbuilds ] with rev 61493
Thanks for having implemented the support Pete! :) Have fun with HaikuOS :)
best wishes for 2014,
Bernd
Hi Bernd.
First of all, a very Happy 2014 to you too, and everyone on this list!
On 2014.01.03 11:07, Bernd Blaauw wrote:
FreeLDR as multiboot-kernel only looks at freeldr.ini at C:\ , no idea if your created USB stick counts as C: or A:.
Should count as C:. Rufus has no provisions to fake an A: drive for USB at the moment.
Also ReactOS might write freeldr.ini in some special way on FAT drives, I've never been able to open/modify it using a DOS text editor.
My testing showed that freeldr.ini was read when referencing the freeldr.sys on the bootcd, as I got the "Setup" selection menu. But then pressing Enter on Setup didn't do much, though the F8 options did seem to work. As I said, I haven't really pressed it further with freeldr.sys yet, especially as the current implementation only allows one boot entry.
Smallest I've gotten FreeLDR is through using SYSLINUX -> MEMDISK -> FLOPPY.GZ where floppy.gz is a compressed ReactOS startup diskette image. SYSLINUX -> MBOOT.C32 -> FREELDR.GZ might also work instead.
memdisk is very small, so I'll probably add support for it in Rufus eventually. The part about using compressed images past memdisk or mboot.c32 doesn't really concern me, as these files don't need to be provided by Rufus, so they can be as large as they want. It's really only the parts needed for SYSLINUX -> MEMDISK or SYSLINUX -> MBOOT.C32 that I'm trying to keep small in terms of space.
I've always hoped for Syslinux -> Memdisk/GRUB -> ReactOS.ISO/IMG simply to overcome lack of mass storage controllers drivers by running from RAM.
But then it means less RAM for the system, and losing the ability to edit startup scripts, which can come really handy when testing...
But as I said, I'll probably add memdisk support to Rufus at one stage, for all the "reluctant" ISOs that are still out there.
There might also be some way to use the sta
So right now the installer ISO works but not the LiveCD/USB? [ https://www.reactos.org/getbuilds ] with rev 61493
No, all the ISOs will boot (through setupldr.sys), including the LiveCD ones. They just seem to run into an USB issue later on, at least on the system I tested, during the ReactOS system init. For what is worth, the LiveCD ISOs only have setupldr.sys and no freeldr.sys, which was one more reason I didn't bother too much with freeldr.sys for now.
Have fun with HaikuOS :)
There's always one more OS to support, isn't there... ;)
Regards,
/Pete
I'm the author of Rufus [1], and I was pleasantly surprised to see it referenced on the ReactOS Live USB creation wiki [2]. So first of all, thanks for that.
Now, considering that the documented method of creating a Live USB using Rufus can't exactly be qualified as very user-friendly, I have just added native support for the ReactOS bootcd/livecd ISOs in Rufus, so that you should just be able to point the app to one of those ISOs, and it will automatically create a complete bootable USB, with no need to download an invoke GRUB4DOS, 7-zip, etc.
What I would like to do, and about the only way I can see and test ReactOS, is to build from RosBE from FreeBSD or Linux, or Wine, and install onto a USB stick without having to make an intermediate boot/installation medium.
GPT-partitioned 3 TB hard drive seems to preclude installing ReactOS on hard drive.
There ought to be something like "make install DESTDIR=...".
This looks like it really ought to be on ros-dev?
Tom
On 2014.01.03 18:58, Thomas Mueller wrote:
What I would like to do, and about the only way I can see and test ReactOS, is to build from RosBE from FreeBSD or Linux, or Wine, and install onto a USB stick without having to make an intermediate boot/installation medium.
Then today may be your lucky day... ;)
But first things first (you may skip this part if you're only interested in UNIX, as Rufus is Windows only): Besides ISO support through Syslinux, the new BETA of Rufus [1] also adds the ability to install the ReactOS boot records, so that one can then boot freeldr.sys directly from USB. Unlike what's the case for the ISO, this is a bare install, so you will still need to copy your own freeldr.sys, freeldr.ini and relevant files to the USB. However, the hard part of the install (modifying the boot records) should now be taken care of for you. Now, since this is an advanced feature, it's not made available in the UI by default. To access the bare ReactOS boot record installation, you must first enable Advanced Mode in Rufus, by clicking the white triangle next to "Format Options" and only then will you see "ReactOS" listed in the "Create a bootable disk" dropdown. It's the same way Rufus provides bare installation of Syslinux v4 & v5 boot records.
I tested freeldr.sys boot from USB using this method, after copying the same set of files as the one ReactOS creates for second stage installation, and it seems to work as good as one might expect (boots brilliantly, but then runs into ReactOS 0x7b, due to issues with USB support - at least on the systems I'm testing with). I may eventually use this method to support ISOs, but for now, I'll stick with the syslinux -> mboot.c32 -> setupldr.sys for ISO support, while the direct freeldr.sys for more adventurous people.
Now, what may be of more interest for UNIX-derivative users, is that what Rufus really uses behind the scenes to install boot blocks is its own integrated version of ms-sys [2]. Thus, since I added ReactOS support in my own embedded version of ms-sys, I also went ahead and produced a generic UNIX version that can install the ReactOS bootblocks from the commandline, for freeldr support.
To use it, you'll first need to clone the relevant github repository [3] and then switch to the "rufus" branch of that repo, which is where I added the changes.
I'm also providing a fully detailed example of a run (git clone, branch switch, installation, etc), in the attached log, but basically, what you want to run is:
1. Fetching & compiling the source # git clone https://github.com/pbatard/ms-sys.git # cd ms-sys/ # git checkout rufus # make
2. Installing the ReactOS boot blocks on an USB drive, here /dev/sda, after blanking its first sectors: # dd if=/dev/zero of=/dev/sda bs=8M count=8 # fdisk /dev/sda => create a FAT32 bootable partition # mkdosfs -F 32 /dev/sda1 # ./bin/ms-sys -0 /dev/sda => install the ReactOS MBR # ./bin/ms-sys -O /dev/sda1 => install the ReactOS FAT32 PBR # ./bin/ms-sys -p /dev/sda1 => write partition info [REQUIRED!]
Then you can just copy your files, and boot the drive.
Note that the MBR option is -0 (minus zero) and the second -O (minus uppercase O), and also that your drive _will NOT boot_ unless you also apply the -p option. Oh and if you want to complain about ms-sys (yeah, it would probably be nicer if it used getopt so that you could run multiple options at once), please remember that: 1. I am not the author of ms-sys 2. I use my own non-commandline, non-UNIX compatible version in Rufus This means that, due to time constraints, I have little interest in improving my UNIX/ReactOS version of ms-sys (to add ext2 support for instance). I created it as fast as I could, in the hope that it would be useful for UNIX people (only tested FAT32 - I kind of expect FAT16 to be broken), and I may see with the author (Henrik Carlqvist) if he wants to integrate the ReactOS patches, but that'll be about it.
There ought to be something like "make install DESTDIR=...".
Hopefully, now that you can use ms-sys on Linux/FreeBSD, you should be able to add an install step, that can invoke ms-sys to create a whole Live/USB system from scratch, to install the newly generated development binaries. "All" that remains then, is to fix USB support in ReactOS, so that such a system can run as expected... ;)
Regards,
/Pete
[1] http://rufus.akeo.ie/downloads/ [2] http://ms-sys.sourceforge.net/ [3] https://github.com/pbatard/ms-sys/tree/rufus
root@sheeva:/usr/src# git clone https://github.com/pbatard/ms-sys.git Cloning into ms-sys... remote: Counting objects: 306, done. remote: Compressing objects: 100% (86/86), done. remote: Total 306 (delta 203), reused 302 (delta 199) Receiving objects: 100% (306/306), 84.59 KiB, done. Resolving deltas: 100% (203/203), done. root@sheeva:/usr/src# cd ms-sys/ root@sheeva:/usr/src/ms-sys# git checkout rufus Branch rufus set up to track remote branch rufus from origin. Switched to a new branch 'rufus' root@sheeva:/usr/src/ms-sys# make mkdir -p dep cc -MM -O2 -ansi -pedantic -Wall -c -I inc -D PACKAGE="ms-sys" -D LOCALEDIR="/usr/local/share/locale" -idirafter include-fallback -D_FILE_OFFSET_BITS=64 -MT dep/partition_info.d src/partition_info.c > dep/partition_info.d mkdir -p obj mkdir -p bin cc -O2 -ansi -pedantic -Wall -c -I inc -D PACKAGE="ms-sys" -D LOCALEDIR="/usr/local/share/locale" -idirafter include-fallback -D_FILE_OFFSET_BITS=64 -o obj/partition_info.o src/partition_info.c cc -MM -O2 -ansi -pedantic -Wall -c -I inc -D PACKAGE="ms-sys" -D LOCALEDIR="/usr/local/share/locale" -idirafter include-fallback -D_FILE_OFFSET_BITS=64 -MT dep/ntfs.d src/ntfs.c > dep/ntfs.d cc -O2 -ansi -pedantic -Wall -c -I inc -D PACKAGE="ms-sys" -D LOCALEDIR="/usr/local/share/locale" -idirafter include-fallback -D_FILE_OFFSET_BITS=64 -o obj/ntfs.o src/ntfs.c cc -MM -O2 -ansi -pedantic -Wall -c -I inc -D PACKAGE="ms-sys" -D LOCALEDIR="/usr/local/share/locale" -idirafter include-fallback -D_FILE_OFFSET_BITS=64 -MT dep/fat12.d src/fat12.c > dep/fat12.d cc -O2 -ansi -pedantic -Wall -c -I inc -D PACKAGE="ms-sys" -D LOCALEDIR="/usr/local/share/locale" -idirafter include-fallback -D_FILE_OFFSET_BITS=64 -o obj/fat12.o src/fat12.c cc -MM -O2 -ansi -pedantic -Wall -c -I inc -D PACKAGE="ms-sys" -D LOCALEDIR="/usr/local/share/locale" -idirafter include-fallback -D_FILE_OFFSET_BITS=64 -MT dep/fat16.d src/fat16.c > dep/fat16.d cc -O2 -ansi -pedantic -Wall -c -I inc -D PACKAGE="ms-sys" -D LOCALEDIR="/usr/local/share/locale" -idirafter include-fallback -D_FILE_OFFSET_BITS=64 -o obj/fat16.o src/fat16.c cc -MM -O2 -ansi -pedantic -Wall -c -I inc -D PACKAGE="ms-sys" -D LOCALEDIR="/usr/local/share/locale" -idirafter include-fallback -D_FILE_OFFSET_BITS=64 -MT dep/file.d src/file.c > dep/file.d cc -O2 -ansi -pedantic -Wall -c -I inc -D PACKAGE="ms-sys" -D LOCALEDIR="/usr/local/share/locale" -idirafter include-fallback -D_FILE_OFFSET_BITS=64 -o obj/file.o src/file.c cc -MM -O2 -ansi -pedantic -Wall -c -I inc -D PACKAGE="ms-sys" -D LOCALEDIR="/usr/local/share/locale" -idirafter include-fallback -D_FILE_OFFSET_BITS=64 -MT dep/br.d src/br.c > dep/br.d cc -O2 -ansi -pedantic -Wall -c -I inc -D PACKAGE="ms-sys" -D LOCALEDIR="/usr/local/share/locale" -idirafter include-fallback -D_FILE_OFFSET_BITS=64 -o obj/br.o src/br.c cc -MM -O2 -ansi -pedantic -Wall -c -I inc -D PACKAGE="ms-sys" -D LOCALEDIR="/usr/local/share/locale" -idirafter include-fallback -D_FILE_OFFSET_BITS=64 -MT dep/nls.d src/nls.c > dep/nls.d cc -O2 -ansi -pedantic -Wall -c -I inc -D PACKAGE="ms-sys" -D LOCALEDIR="/usr/local/share/locale" -idirafter include-fallback -D_FILE_OFFSET_BITS=64 -o obj/nls.o src/nls.c cc -MM -O2 -ansi -pedantic -Wall -c -I inc -D PACKAGE="ms-sys" -D LOCALEDIR="/usr/local/share/locale" -idirafter include-fallback -D_FILE_OFFSET_BITS=64 -MT dep/main.d src/main.c > dep/main.d cc -O2 -ansi -pedantic -Wall -c -I inc -D PACKAGE="ms-sys" -D LOCALEDIR="/usr/local/share/locale" -idirafter include-fallback -D_FILE_OFFSET_BITS=64 -o obj/main.o src/main.c cc -MM -O2 -ansi -pedantic -Wall -c -I inc -D PACKAGE="ms-sys" -D LOCALEDIR="/usr/local/share/locale" -idirafter include-fallback -D_FILE_OFFSET_BITS=64 -MT dep/fat32.d src/fat32.c > dep/fat32.d cc -O2 -ansi -pedantic -Wall -c -I inc -D PACKAGE="ms-sys" -D LOCALEDIR="/usr/local/share/locale" -idirafter include-fallback -D_FILE_OFFSET_BITS=64 -o obj/fat32.o src/fat32.c cc -MM -O2 -ansi -pedantic -Wall -c -I inc -D PACKAGE="ms-sys" -D LOCALEDIR="/usr/local/share/locale" -idirafter include-fallback -D_FILE_OFFSET_BITS=64 -MT dep/identify.d src/identify.c > dep/identify.d cc -O2 -ansi -pedantic -Wall -c -I inc -D PACKAGE="ms-sys" -D LOCALEDIR="/usr/local/share/locale" -idirafter include-fallback -D_FILE_OFFSET_BITS=64 -o obj/identify.o src/identify.c cc -o bin/ms-sys obj/partition_info.o obj/ntfs.o obj/fat12.o obj/fat16.o obj/file.o obj/br.o obj/nls.o obj/main.o obj/fat32.o obj/identify.o mkdir -p mo msgfmt -o mo/sv.mo po/sv.po root@sheeva:/usr/src/ms-sys# dd if=/dev/zero of=/dev/sda bs=8M count=8 8+0 records in 8+0 records out 67108864 bytes (67 MB) copied, 2.41523 s, 27.8 MB/s root@sheeva:/usr/src/ms-sys# fdisk /dev/sda Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel Building a new DOS disklabel with disk identifier 0x7759d579. Changes will remain in memory only, until you decide to write them. After that, of course, the previous content won't be recoverable.
Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)
Command (m for help): n Command action e extended p primary partition (1-4) p Partition number (1-4, default 1): 1 First sector (2048-63487999, default 2048): Using default value 2048 Last sector, +sectors or +size{K,M,G} (2048-63487999, default 63487999): Using default value 63487999
Command (m for help): t Selected partition 1 Hex code (type L to list codes): c Changed system type of partition 1 to c (W95 FAT32 (LBA))
Command (m for help): a Partition number (1-4): 1
Command (m for help): w The partition table has been altered!
Calling ioctl() to re-read partition table.
WARNING: If you have created or modified any DOS 6.x partitions, please see the fdisk manual page for additional information. Syncing disks. root@sheeva:/usr/src/ms-sys# mkdosfs -F 32 /dev/sda1 mkdosfs 2.11 (12 Mar 2005) root@sheeva:/usr/src/ms-sys# ./bin/ms-sys -0 /dev/sda ReactOS master boot record successfully written to /dev/sda root@sheeva:/usr/src/ms-sys# ./bin/ms-sys /dev/sda /dev/sda has an x86 boot sector, it is a ReactOS master boot record, like the one this program creates with the switch -r on a hard disk device. root@sheeva:/usr/src/ms-sys# ./bin/ms-sys -O /dev/sda1 FAT32 ReactOS boot record successfully written to /dev/sda1 root@sheeva:/usr/src/ms-sys# ./bin/ms-sys -p /dev/sda1 Start sector 2048 (nr of hidden sectors) successfully written to /dev/sda1 Physical disk drive id 0x80 (C:) successfully written to /dev/sda1 Number of heads (64) successfully written to /dev/sda1 root@sheeva:/usr/src/ms-sys# ./bin/ms-sys /dev/sda1 /dev/sda1 has a FAT32 file system. /dev/sda1 has an x86 boot sector, it is exactly the kind of FAT32 ReactOS boot record this program would create with the switch -O on a FAT32 partition. root@sheeva:/usr/src/ms-sys# mount /dev/sda1 /mnt/usb/ root@sheeva:/usr/src/ms-sys# ls /ext/reactos_files/ ReactOS/ freeldr.ini freeldr.sys root@sheeva:/usr/src/ms-sys# ls /mnt/usb root@sheeva:/usr/src/ms-sys# cp -r /ext/reactos_files/* /mnt/usb root@sheeva:/usr/src/ms-sys# ls /mnt/usb ReactOS/ freeldr.ini* freeldr.sys* root@sheeva:/usr/src/ms-sys# umount /mnt/usb root@sheeva:/usr/src/ms-sys#