Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 16 Dec 2011 08:57:16 -0500
From:      John Baldwin <jhb@freebsd.org>
To:        freebsd-current@freebsd.org
Cc:        Andrew Boyer <aboyer@averesystems.com>
Subject:   Re: Idea for change to boot0
Message-ID:  <201112160857.16464.jhb@freebsd.org>
In-Reply-To: <94847CD1-4361-424C-A2F6-75CAE918E2A9@averesystems.com>
References:  <94847CD1-4361-424C-A2F6-75CAE918E2A9@averesystems.com>

next in thread | previous in thread | raw e-mail | index | archive | help
On Thursday, December 15, 2011 4:21:51 pm Andrew Boyer wrote:
> These two changes allow you to set PXE as the default MBR boot selection, 
which enables you to write a 'reboot to the network' script.  We've found it 
to be very useful.  What do people think?

I think these are good.  One suggestion might be to let the you do
'boot0cfg -s pxe' (or PXE, just use strcasecmp) so it is more explicit
and less of a magic number.  I.e. something like:

	case 's':
		if (strcasecmp(optarg, "pxe") == 0)
			s_arg = 6;
		else
			s_arg = argtoi(optarg, 1, 6, 's');
		break;

I think that is less confusing as some folks might thing '-s 6' means
booting from /dev/fooXs6 (which it doesn't).

Also, the manpage for boot0cfg will need to be updated.  Other than that I 
think this looks great.  I have a slightly updated version below (I also
wanted to keep the output of the default setting in "order" so the logic
is slightly different):

Index: sys/boot/i386/boot0/boot0.S
===================================================================
--- sys/boot/i386/boot0/boot0.S (revision 228534)
+++ sys/boot/i386/boot0/boot0.S (working copy)
@@ -413,6 +413,7 @@
        3:
 #endif /* ONLY_F_KEYS */
 #endif /* SIO */
+check_selection:
                cmpb $0x5,%al                   # F1..F6 or 1..6 ?
 #ifdef PXE /* enable PXE/INT18 using F6 */
                jne 1f;
@@ -421,7 +422,6 @@
 #endif /* PXE */
                jae beep                        # Not in F1..F5, beep
 
-check_selection:
        /*
         * We have a selection.  If it's a bad selection go back to complain.
         * The bits in MNUOPT were set when the options were printed.
Index: usr.sbin/boot0cfg/boot0cfg.c
===================================================================
--- usr.sbin/boot0cfg/boot0cfg.c        (revision 228534)
+++ usr.sbin/boot0cfg/boot0cfg.c        (working copy)
@@ -169,7 +169,10 @@
             o_flag = 1;
             break;
         case 's':
-            s_arg = argtoi(optarg, 1, 5, 's');
+           if (strcasecmp(optarg, "pxe") == 0)
+               s_arg = 6;
+           else
+               s_arg = argtoi(optarg, 1, 5, 's');
             break;
         case 't':
             t_arg = argtoi(optarg, 1, 0xffff, 't');
@@ -472,8 +475,10 @@
     printf("default_selection=F%d (", mbr[OFF_OPT] + 1);
     if (mbr[OFF_OPT] < 4)
        printf("Slice %d", mbr[OFF_OPT] + 1);
+    else if (mbr[OFF_OPT] == 4)
+       printf("Drive 1");
     else
-       printf("Drive 1");
+       printf("PXE");
     printf(")\n");
 }
 
Index: usr.sbin/boot0cfg/boot0cfg.8
===================================================================
--- usr.sbin/boot0cfg/boot0cfg.8        (revision 228534)
+++ usr.sbin/boot0cfg/boot0cfg.8        (working copy)
@@ -146,6 +146,9 @@
 .Ar slice .
 Values between 1 and 4 refer to slices; a value of 5 refers to the
 option of booting from a second disk.
+The special string
+.Dq PXE
+or a value of 6 can be used to boot via PXE.
 .It Fl t Ar ticks
 Set the timeout value to
 .Ar ticks .


-- 
John Baldwin



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201112160857.16464.jhb>