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:
John Baldwin 2011-12-20 15:19:29 +00:00
parent 89affab00c
commit f9a0145857
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=228738
3 changed files with 11 additions and 3 deletions

View File

@ -413,6 +413,7 @@ got_key:
3: 3:
#endif /* ONLY_F_KEYS */ #endif /* ONLY_F_KEYS */
#endif /* SIO */ #endif /* SIO */
check_selection:
cmpb $0x5,%al # F1..F6 or 1..6 ? cmpb $0x5,%al # F1..F6 or 1..6 ?
#ifdef PXE /* enable PXE/INT18 using F6 */ #ifdef PXE /* enable PXE/INT18 using F6 */
jne 1f; jne 1f;
@ -421,7 +422,6 @@ got_key:
#endif /* PXE */ #endif /* PXE */
jae beep # Not in F1..F5, beep jae beep # Not in F1..F5, beep
check_selection:
/* /*
* We have a selection. If it's a bad selection go back to complain. * 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. * 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 . .Ar slice .
Values between 1 and 4 refer to slices; a value of 5 refers to the Values between 1 and 4 refer to slices; a value of 5 refers to the
option of booting from a second disk. 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 .It Fl t Ar ticks
Set the timeout value to Set the timeout value to
.Ar ticks . .Ar ticks .

View File

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