Date: Thu, 13 Aug 1998 23:30:37 -0500 (CDT) From: Joel Ray Holveck <joelh@gnu.org> To: freebsd-hackers@FreeBSD.ORG Subject: Patch: Booting with -v Message-ID: <199808140430.XAA00473@detlev.UUCP>
next in thread | raw e-mail | index | archive | help
Okay, I've finally found my round tuit (it was in the square hole,
natch). This means that I finally wrote the patch to allow -v (and
other flags) to be in the /boot.config (yay!).
In the process of saving a few bytes, I did change the boot message
bit that says "internal", "internal/dual", "serial", or "serial/dual"
to read just "internal", "serial", or "dual". Is the distinction
between serial/dual and internal/dual in that message a useful one?
Enclosed is the patch to /sys/i386/boot/biosboot/boot.c (against
-current sources); I've tested it a total of once. Caveat emptor, and
vivat hacker, and all that.
If nobody has any objections, I'll submit a pr on this (after a little
stylistic cleanup and a manpage change). But I would appreciate
people looking over it and trying it out before I submit a patch that
will leave every third system unbootable. Send results-- good, bad or
indifferent-- to me personally.
Again: This has been tested only once. Although I don't see any
reason it should fail, be sure that you have a boot and fixit floppy
and your old boot2 handy.
Happy hacking,
joelh
-----cut here-----
*** boot.c-orig Thu Aug 13 23:18:19 1998
--- boot.c Thu Aug 13 22:23:49 1998
***************
*** 86,91 ****
--- 86,92 ----
boot(int drive)
{
int ret;
+ int cfg_loadflags = 0;
/* Pick up the story from the Bios on geometry of disks */
***************
*** 142,177 ****
name = "kernel";
if (boot_config[0] != '\0') {
printf("boot.config: %s", boot_config);
! getbootdev(boot_config, &loadflags);
if (openrd() != 0)
name = "kernel";
}
loadstart:
/* print this all each time.. (saves space to do so) */
/* If we have looped, use the previous entries as defaults */
! printf("\r \n>> FreeBSD BOOT @ 0x%x: %d/%d k of memory, %s%s console\n"
! "Boot default: %d:%s(%d,%c)%s\n"
"%s\n"
"boot: ",
ouraddr, bootinfo.bi_basemem, bootinfo.bi_extmem,
(loadflags & RB_SERIAL) ? "serial" : "internal",
- (loadflags & RB_DUAL) ? "/dual" : "",
dosdev & 0x7f, devs[maj], unit, 'a' + part,
name ? name : "*specify_a_kernel_name*",
boot_help);
! /*
! * Ignore flags from previous attempted boot, if any.
! * XXX this is now too strict. Settings given in boot.config should
! * not be changed.
! */
! loadflags &= (RB_DUAL | RB_SERIAL);
!
/*
* Be paranoid and make doubly sure that the input buffer is empty.
*/
if (loadflags & (RB_DUAL | RB_SERIAL))
init_serial();
if (!gets(linebuf))
putchar('\n');
--- 143,177 ----
name = "kernel";
if (boot_config[0] != '\0') {
printf("boot.config: %s", boot_config);
! getbootdev(boot_config, &cfg_loadflags);
if (openrd() != 0)
name = "kernel";
}
loadstart:
+ /* Ignore flags from previous attempted boot, if any. */
+ loadflags = cfg_loadflags;
+
/* print this all each time.. (saves space to do so) */
/* If we have looped, use the previous entries as defaults */
! printf("\r \n>> FreeBSD BOOT @ 0x%x: %d/%d k of memory, %s console\n"
! "Boot default: %d:%s(%d,%c)%s (flags 0x%x)\n"
"%s\n"
"boot: ",
ouraddr, bootinfo.bi_basemem, bootinfo.bi_extmem,
+ (loadflags & RB_DUAL) ? "dual" :
(loadflags & RB_SERIAL) ? "serial" : "internal",
dosdev & 0x7f, devs[maj], unit, 'a' + part,
name ? name : "*specify_a_kernel_name*",
+ loadflags,
boot_help);
! #if 0
/*
* Be paranoid and make doubly sure that the input buffer is empty.
*/
if (loadflags & (RB_DUAL | RB_SERIAL))
init_serial();
+ #endif
if (!gets(linebuf))
putchar('\n');
***************
*** 376,382 ****
char *p;
/* Copy the flags to save some bytes. */
! f = *howto;
c = *ptr;
for (;;) {
--- 376,382 ----
char *p;
/* Copy the flags to save some bytes. */
! f = *howto & (RB_DUAL | RB_SERIAL | RB_PROBEKBD);
c = *ptr;
for (;;) {
-----cut here-----
--
Joel Ray Holveck - joelh@gnu.org - http://www.wp.com/piquan
Fourth law of programming:
Anything that can go wrong wi
sendmail: segmentation violation - core dumped
To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-hackers" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199808140430.XAA00473>
