Craig Boston wrote:

Attached is the source to a program that I wrote about 4 and a half
years ago.  It performs the function of a dumbed-down boot0cfg for
Windows, only understanding the "-s" option, or giving you an
interactive menu to choose from.  It also is hardcoded to use
PhysicalDrive0, but that's usually what you would boot from.
Thank you, Craig! I've been looking for something like this and found your email in my spam folder where my mail system kindly files messages it doesn't want me to see :-)

A wee problem-ette for me is that I have FreeBSD on a separate disk from Windows so I wanted to be able to set the "Next Disk" option from windows to boot FreeBSD (a.k.a. F5). I've confirmed that this is just stored as 4 in the MBR (partition -1, just like the rest). boot0cfg allows 5 as a legitimate slice.

This patch allows you to set partitions from 1-5 instead of 1-4 from the command line, and also adds an automatic "5: Next disk" option in the in the interactive invocation.

Now to figure out how to shut down/reboot windows from a bat file so I can do one double-click and not faff around with the Start menu...

--Alex

--- nextboot.c.orig     Wed Nov  7 18:06:04 2007
+++ nextboot.c  Thu Nov  8 12:17:25 2007
@@ -414,6 +414,8 @@
                    i + 1, getptype(part[i].dp_typ));
        }
 
+    printf ("%c5. Next disk\n", (mbr[OFF_OPT] == 4) ? '*' : ' ');
+
     printf("\nSelect partition: ");
     fgets(resp, 255, stdin);
 
@@ -421,7 +423,7 @@
        return 0;
 
     pnum = atol(resp) - 1;
-    if (pnum < 0 || pnum > 3 || !part[pnum].dp_typ)
+    if (pnum < 0 || pnum > 4 || (pnum < 4 && !part[pnum].dp_typ))
     {
        fprintf(stderr, "Invalid partition\n");
        return 1;
@@ -434,8 +436,8 @@
 {
     fprintf(stderr, "Usage:\n\n"
                     "          nextboot               (For interactive 
menu)\n\n"
-                   "          nextboot [1-4]         (Set partition to boot 
from)\n"
-                   "          nextboot -s [1-4]\n"
+                   "          nextboot [1-5]         (Set partition to boot 
from)\n"
+                   "          nextboot -s [1-5]\n"
                    "\n");
     return 0;
 }
@@ -448,7 +450,7 @@
        return menuboot();
     else if ((argc == 2) &&
            (strlen(argv[1]) == 1) &&
-           (argv[1][0] >= '1' && argv[1][0] <= '4'))
+           (argv[1][0] >= '1' && argv[1][0] <= '5'))
     {
        act = atol(argv[1]);
        return setnextboot(act - 1);
@@ -456,7 +458,7 @@
     else if ((argc == 3) &&
            !stricmp(argv[1], "-s") &&
            (strlen(argv[2]) == 1) &&
-           (argv[2][0] >= '1' && argv[2][0] <= '4'))
+           (argv[2][0] >= '1' && argv[2][0] <= '5'))
     {
        act = atol(argv[2]);
        return setnextboot(act - 1);
_______________________________________________
freebsd-questions@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-questions
To unsubscribe, send any mail to "[EMAIL PROTECTED]"

Reply via email to