static void bootit(const char *filename, int howto) { if (howto & AB_VERBOSE) printf("booting %s (howto 0x%x)\n", sprint_bootsel(filename), howto); if (exec_netbsd(filename, 0, howto, boot_biosdev < 0x80, clearit) < 0) printf("boot: %s: %s\n", sprint_bootsel(filename), strerror(errno)); else printf("boot returned\n"); }
void bootit(const char *filename, int howto, int tell) { if (tell) { printf("booting %s", sprint_bootsel(filename)); if (howto) printf(" (howto 0x%x)", howto); printf("\n"); } if (exec_netbsd(filename, 0, howto, boot_biosdev < 0x80, clearit) < 0) printf("boot: %s: %s\n", sprint_bootsel(filename), strerror(errno)); else printf("boot returned\n"); }
void bootit(const char *filename, int howto, int tell) { if (tell) { printf("booting %s", sprint_bootsel(filename)); if (howto) printf(" (howto 0x%x)", howto); printf("\n"); } if (exec_netbsd(filename, howto) < 0) { printf("boot: %s: %s\n", sprint_bootsel(filename), strerror(errno)); } else { printf("boot returned\n"); } }
void command_multiboot(char *arg) { char *filename; filename = arg; if (exec_multiboot(filename, gettrailer(arg)) < 0) printf("multiboot: %s: %s\n", sprint_bootsel(filename), strerror(errno)); else printf("boot returned\n"); }
void boot2(uint32_t boot_biossector) { int currname; int c; /* Initialize hardware */ tick_init(); /* Initialize console */ cninit(boot_params.bp_consdev); print_banner(); /* try to set default device to what BIOS tells us */ bios2dev(0x40, &default_devname, &default_unit, boot_biossector, &default_partition); /* if the user types "boot" without filename */ default_filename = DEFFILENAME; printf("Press return to boot now, any other key for boot menu\n"); currname = 0; for (;;) { printf("booting %s - starting in ", sprint_bootsel(names[currname][0])); c = awaitkey(boot_params.bp_timeout, 1); if ((c != '\r') && (c != '\n') && (c != '\0')) { printf("type \"?\" or \"help\" for help.\n"); bootmenu(); /* does not return */ } /* * try pairs of names[] entries, foo and foo.gz */ /* don't print "booting..." again */ bootit(names[currname][0], 0, 0); /* since it failed, try compressed bootfile. */ bootit(names[currname][1], 0, 1); /* since it failed, try switching bootfile. */ currname = (currname + 1) % NUMNAMES; } }
/* * Called from the initial entry point boot_start in biosboot.S * * biosdev: BIOS drive number the system booted from * biossector: Sector number of the NetBSD partition */ void boot2(int biosdev, uint64_t biossector) { extern char twiddle_toggle; int currname; char c; twiddle_toggle = 1; /* no twiddling until we're ready */ initio(boot_params.bp_consdev); #ifdef SUPPORT_PS2 biosmca(); #endif gateA20(); boot_modules_enabled = !(boot_params.bp_flags & X86_BP_FLAGS_NOMODULES); if (boot_params.bp_flags & X86_BP_FLAGS_RESET_VIDEO) biosvideomode(); vbe_init(); /* need to remember these */ boot_biosdev = biosdev; boot_biossector = biossector; /* try to set default device to what BIOS tells us */ bios2dev(biosdev, biossector, &default_devname, &default_unit, &default_partition); /* if the user types "boot" without filename */ default_filename = DEFFILENAME; #ifndef SMALL if (!(boot_params.bp_flags & X86_BP_FLAGS_NOBOOTCONF)) { parsebootconf(BOOTCONF); } else { bootconf.timeout = boot_params.bp_timeout; } /* * If console set in boot.cfg, switch to it. * This will print the banner, so we don't need to explicitly do it */ if (bootconf.consdev) command_consdev(bootconf.consdev); else print_banner(); /* Display the menu, if applicable */ twiddle_toggle = 0; if (bootconf.nummenu > 0) { /* Does not return */ doboottypemenu(); } #else twiddle_toggle = 0; print_banner(); #endif printf("Press return to boot now, any other key for boot menu\n"); for (currname = 0; currname < NUMNAMES; currname++) { printf("booting %s - starting in ", sprint_bootsel(names[currname][0])); #ifdef SMALL c = awaitkey(boot_params.bp_timeout, 1); #else c = awaitkey((bootconf.timeout < 0) ? 0 : bootconf.timeout, 1); #endif if ((c != '\r') && (c != '\n') && (c != '\0')) { if ((boot_params.bp_flags & X86_BP_FLAGS_PASSWORD) == 0) { /* do NOT ask for password */ bootmenu(); /* does not return */ } else { /* DO ask for password */ if (check_password((char *)boot_params.bp_password)) { /* password ok */ printf("type \"?\" or \"help\" for help.\n"); bootmenu(); /* does not return */ } else { /* bad password */ printf("Wrong password.\n"); currname = 0; continue; } } } /* * try pairs of names[] entries, foo and foo.gz */ /* don't print "booting..." again */ bootit(names[currname][0], 0, 0); /* since it failed, try compressed bootfile. */ bootit(names[currname][1], 0, 1); } bootmenu(); /* does not return */ }
void boot(dev_t bootdev) { extern char twiddle_toggle; int currname; int c; consinit(CONSDEV_GLASS, -1); twiddle_toggle = 1; /* no twiddling until we're ready */ /* set default value: hd0a:netbsd */ default_devname = "hd"; default_unit = 0; default_partition = 0; default_filename = names[0][0]; diskprobe(probed_disks, sizeof(probed_disks)); snprintf(bootconfpath, sizeof(bootconfpath), "%s%d%c:%s", default_devname, default_unit, 'a' + default_partition, BOOTCFG_FILENAME); parsebootconf(bootconfpath); #ifdef SUPPORT_CONSDEV /* * If console set in boot.cfg, switch to it. * This will print the banner, so we don't need to explicitly do it */ if (bootcfg_info.consdev) bootcmd_consdev(bootcfg_info.consdev); else #endif print_banner(); printf("\ndisks: %s\n", probed_disks); /* Display the menu, if applicable */ twiddle_toggle = 0; if (bootcfg_info.nummenu > 0) { /* Does not return */ doboottypemenu(); } printf("Press return to boot now, any other key for boot menu\n"); currname = 0; for (currname = 0; currname < __arraycount(names); currname++) { printf("booting %s - starting in ", sprint_bootsel(names[currname][0])); c = awaitkey((bootcfg_info.timeout < 0) ? 0 : bootcfg_info.timeout, 1); if ((c != '\r') && (c != '\n') && (c != '\0')) { printf("type \"?\" or \"help\" for help.\n"); bootmenu(); /* does not return */ } /* * try pairs of names[] entries, foo and foo.gz */ /* don't print "booting..." again */ bootit(names[currname][0], 0, 0); /* since it failed, try compressed bootfile. */ bootit(names[currname][1], 0, 1); } bootmenu(); /* does not return */ }