Allow boot0cfg to force a PXE boot via boot0 on the next boot.

- Fix boot0 to check for PXE when using the pre-set setting for the
  preferred slice.
- Update boot0cfg to use slice 6 to select PXE.  Accept a 'pxe' argument
  instead of a number for the 's' option as a way to select PXE as well.

Submitted by:	Andrew Boyer  aboyer averesystems
MFC after:	2 weeks
This commit is contained in:
jhb 2011-12-20 15:19:29 +00:00
parent 1eeaa2989f
commit 2fa7cf8a54
3 changed files with 11 additions and 3 deletions

View File

@ -413,6 +413,7 @@ got_key:
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 @@ got_key:
#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.

View File

@ -146,6 +146,9 @@ Set the default boot selection to
.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 .

View File

@ -169,7 +169,10 @@ main(int argc, char *argv[])
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, 6, 's');
break;
case 't':
t_arg = argtoi(optarg, 1, 0xffff, 't');
@ -472,8 +475,10 @@ display_mbr(u_int8_t *mbr)
printf("default_selection=F%d (", mbr[OFF_OPT] + 1);
if (mbr[OFF_OPT] < 4)
printf("Slice %d", mbr[OFF_OPT] + 1);
else
else if (mbr[OFF_OPT] == 4)
printf("Drive 1");
else
printf("PXE");
printf(")\n");
}