Rather big update to sysinst, in order to get it working on the prep port.

1) Add an md_post_extract() function.  This function is called after
extracting the sets, and allows the arch to do something at that time.
In the case of prep, it is much easier to install the bootcode after all
the sets are extracted, so we do it in md_post_extract().  Added empty
md_post_extract() functions to all other arches so they compile.

2) Add md_mbr_use_wholedisk() and md_check_mbr().  In edit_mbr() I have
split off the code that uses the whole disk for NetBSD, into the
mbr_use_wholedisk() function.  On most ports that use mbr.c, I made
md_mbr_use_wholedisk() just call that and return.  On prep we create the
magical prep boot partition here.  The md_check_mbr() function allows the
arch to add additional checks after the user had manually edited the MBR
to make sure the choices he made allow NetBSD to function.  Added a dummy
routine to all mbr.c using arches.

3) Added code to bsdlabel.c to create a partition of type boot if
PART_BOOT is defined, but BOOT_SIZE is not defined.  Also added two more
globals "bootsize" and "bootstart" which must be seeded in order to do
so.  This is done on prep in md_check_mbr().

4) Added MBR_PTYPE_PREP to the list of MBR partitions.

5) Made the prep port actually install sanely.  It now creates a prep
boot partition, labels it correctly, installs all the sets, and then runs
mkbootimage and dd's the bootimage into the prep partition.  The result
is a prep installer that creates a bootable NetBSD installation
automatically.

6) Edited the prep menus and messages files to add new labels.  In the
case of the translated files, I just added the words in english for
someone to translate later.

I tried to xcompile a few arches to make sure I didn't break anything,
but I could have missed something.  Please let me know if I have broken
your arch in any way.  I'll watch the autobuilds for the next few days
too. For all ports other than prep there should be no functional changes
at all.
This commit is contained in:
garbled 2006-04-05 16:55:01 +00:00
parent f8b2282138
commit 85af130714
48 changed files with 641 additions and 78 deletions

View File

@ -1,4 +1,4 @@
/* $NetBSD: md.c,v 1.18 2006/02/26 10:25:52 dsl Exp $ */
/* $NetBSD: md.c,v 1.19 2006/04/05 16:55:05 garbled Exp $ */
/*
* Copyright 1997 Piermont Information Systems Inc.
@ -347,3 +347,9 @@ void
md_init()
{
}
int
md_post_extract(void)
{
return 0;
}

View File

@ -1,4 +1,4 @@
/* $NetBSD: md.c,v 1.19 2006/02/26 10:25:52 dsl Exp $ */
/* $NetBSD: md.c,v 1.20 2006/04/05 16:55:05 garbled Exp $ */
/*
* Copyright 1997 Piermont Information Systems Inc.
@ -347,3 +347,9 @@ void
md_init(void)
{
}
int
md_post_extract(void)
{
return 0;
}

View File

@ -1,4 +1,4 @@
/* $NetBSD: md.c,v 1.18 2006/02/26 10:25:52 dsl Exp $ */
/* $NetBSD: md.c,v 1.19 2006/04/05 16:55:05 garbled Exp $ */
/*
* Copyright 1997 Piermont Information Systems Inc.
@ -128,3 +128,9 @@ void
md_init()
{
}
int
md_post_extract(void)
{
return 0;
}

View File

@ -1,4 +1,4 @@
/* $NetBSD: md.c,v 1.26 2006/02/26 10:25:52 dsl Exp $ */
/* $NetBSD: md.c,v 1.27 2006/04/05 16:55:05 garbled Exp $ */
/*
* Copyright 1997 Piermont Information Systems Inc.
@ -172,3 +172,21 @@ void
md_init(void)
{
}
int
md_post_extract(void)
{
return 0;
}
int
md_check_mbr(mbr_info_t *mbri)
{
return 2;
}
int
md_mbr_use_wholedisk(mbr_info_t *mbri)
{
return mbr_use_wholedisk(mbri);
}

View File

@ -1,4 +1,4 @@
/* $NetBSD: md.c,v 1.19 2006/02/26 10:25:52 dsl Exp $ */
/* $NetBSD: md.c,v 1.20 2006/04/05 16:55:05 garbled Exp $ */
/*
* Copyright 1997 Piermont Information Systems Inc.
@ -155,3 +155,9 @@ void
md_init(void)
{
}
int
md_post_extract(void)
{
return 0;
}

View File

@ -1,4 +1,4 @@
/* $NetBSD: md.c,v 1.48 2006/02/26 10:25:52 dsl Exp $ */
/* $NetBSD: md.c,v 1.49 2006/04/05 16:55:05 garbled Exp $ */
/*
* Copyright 1997 Piermont Information Systems Inc.
@ -172,3 +172,21 @@ md_bios_info(char *dev)
set_bios_geom(cyl, head, sec);
return 0;
}
int
md_post_extract(void)
{
return 0;
}
int
md_check_mbr(mbr_info_t *mbri)
{
return 2;
}
int
md_mbr_use_wholedisk(mbr_info_t *mbri)
{
return mbr_use_wholedisk(mbri);
}

View File

@ -1,4 +1,4 @@
/* $NetBSD: md.c,v 1.17 2006/02/26 10:25:52 dsl Exp $ */
/* $NetBSD: md.c,v 1.18 2006/04/05 16:55:05 garbled Exp $ */
/*
* Copyright 1997 Piermont Information Systems Inc.
@ -200,3 +200,9 @@ void
md_init(void)
{
}
int
md_post_extract(void)
{
return 0;
}

View File

@ -1,4 +1,4 @@
/* $NetBSD: md.c,v 1.18 2006/02/26 10:25:53 dsl Exp $ */
/* $NetBSD: md.c,v 1.19 2006/04/05 16:55:05 garbled Exp $ */
/*
* Copyright 1997 Piermont Information Systems Inc.
@ -173,3 +173,9 @@ void
md_init(void)
{
}
int
md_post_extract(void)
{
return 0;
}

View File

@ -1,4 +1,4 @@
/* $NetBSD: md.c,v 1.1 2006/03/30 15:45:42 shige Exp $ */
/* $NetBSD: md.c,v 1.2 2006/04/05 16:55:05 garbled Exp $ */
/*
* Copyright 1997,2002 Piermont Information Systems Inc.
@ -173,3 +173,21 @@ md_bios_info(dev)
return 0;
}
int
md_post_extract(void)
{
return 0;
}
int
md_check_mbr(mbr_info_t *mbri)
{
return 2;
}
int
md_mbr_use_wholedisk(mbr_info_t *mbri)
{
return mbr_use_wholedisk(mbri);
}

View File

@ -1,4 +1,4 @@
/* $NetBSD: md.c,v 1.24 2006/02/26 10:25:53 dsl Exp $ */
/* $NetBSD: md.c,v 1.25 2006/04/05 16:55:05 garbled Exp $ */
/*
* Copyright 1997,2002 Piermont Information Systems Inc.
@ -177,3 +177,21 @@ md_bios_info(dev)
set_bios_geom(cyl, head, sec);
return 0;
}
int
md_post_extract(void)
{
return 0;
}
int
md_check_mbr(mbr_info_t *mbri)
{
return 2;
}
int
md_mbr_use_wholedisk(mbr_info_t *mbri)
{
return mbr_use_wholedisk(mbri);
}

View File

@ -1,4 +1,4 @@
/* $NetBSD: md.c,v 1.2 2006/02/26 10:25:53 dsl Exp $ */
/* $NetBSD: md.c,v 1.3 2006/04/05 16:55:05 garbled Exp $ */
/*
* Copyright 1997 Piermont Information Systems Inc.
@ -232,3 +232,9 @@ ews4800mips_sysvbfs_size(void)
return (8 * 1024 * 1024) / 512; /* 8MB */
}
int
md_post_extract(void)
{
return 0;
}

View File

@ -1,4 +1,4 @@
/* $NetBSD: md.c,v 1.23 2006/03/21 06:18:29 tsutsui Exp $ */
/* $NetBSD: md.c,v 1.24 2006/04/05 16:55:05 garbled Exp $ */
/*
* Copyright 1997 Piermont Information Systems Inc.
@ -260,3 +260,9 @@ hp300_boot_size(void)
return i;
}
int
md_post_extract(void)
{
return 0;
}

View File

@ -1,4 +1,4 @@
/* $NetBSD: md.c,v 1.3 2006/02/26 10:25:53 dsl Exp $ */
/* $NetBSD: md.c,v 1.4 2006/04/05 16:55:05 garbled Exp $ */
/*
* Copyright 1997 Piermont Information Systems Inc.
@ -203,3 +203,9 @@ void
md_init()
{
}
int
md_post_extract(void)
{
return 0;
}

View File

@ -1,4 +1,4 @@
/* $NetBSD: md.c,v 1.2 2006/02/26 10:25:53 dsl Exp $ */
/* $NetBSD: md.c,v 1.3 2006/04/05 16:55:05 garbled Exp $ */
/*
* Copyright 1997 Piermont Information Systems Inc.
@ -162,3 +162,21 @@ void
md_init(void)
{
}
int
md_post_extract(void)
{
return 0;
}
int
md_check_mbr(mbr_info_t *mbri)
{
return 2;
}
int
md_mbr_use_wholedisk(mbr_info_t *mbri)
{
return mbr_use_wholedisk(mbri);
}

View File

@ -1,4 +1,4 @@
/* $NetBSD: md.c,v 1.40 2006/02/26 10:25:53 dsl Exp $ */
/* $NetBSD: md.c,v 1.41 2006/04/05 16:55:05 garbled Exp $ */
/*
* Copyright 1997 Piermont Information Systems Inc.
@ -161,3 +161,21 @@ void
md_init(void)
{
}
int
md_post_extract(void)
{
return 0;
}
int
md_check_mbr(mbr_info_t *mbri)
{
return 2;
}
int
md_mbr_use_wholedisk(mbr_info_t *mbri)
{
return mbr_use_wholedisk(mbri);
}

View File

@ -1,4 +1,4 @@
/* $NetBSD: md.c,v 1.110 2006/02/26 10:25:53 dsl Exp $ */
/* $NetBSD: md.c,v 1.111 2006/04/05 16:55:05 garbled Exp $ */
/*
* Copyright 1997 Piermont Information Systems Inc.
@ -630,3 +630,21 @@ md_bootxx_name(void)
asprintf(&bootxx, "/usr/mdec/bootxx_%s", bootfs);
return bootxx;
}
int
md_post_extract(void)
{
return 0;
}
int
md_check_mbr(mbr_info_t *mbri)
{
return 2;
}
int
md_mbr_use_wholedisk(mbr_info_t *mbri)
{
return mbr_use_wholedisk(mbri);
}

View File

@ -1,4 +1,4 @@
/* $NetBSD: md.c,v 1.46 2006/02/26 10:25:53 dsl Exp $ */
/* $NetBSD: md.c,v 1.47 2006/04/05 16:55:06 garbled Exp $ */
/*
* Copyright 1997 Piermont Information Systems Inc.
@ -1155,3 +1155,9 @@ md_init()
*/
set_kernel_set(SET_KERNEL_1);
}
int
md_post_extract(void)
{
return 0;
}

View File

@ -1,4 +1,4 @@
/* $NetBSD: md.c,v 1.35 2006/02/26 10:25:53 dsl Exp $ */
/* $NetBSD: md.c,v 1.36 2006/04/05 16:55:06 garbled Exp $ */
/*
* Copyright 1997 Piermont Information Systems Inc.
@ -188,3 +188,9 @@ void
md_init(void)
{
}
int
md_post_extract(void)
{
return 0;
}

View File

@ -1,4 +1,4 @@
/* $NetBSD: md.c,v 1.12 2006/02/26 10:25:53 dsl Exp $ */
/* $NetBSD: md.c,v 1.13 2006/04/05 16:55:06 garbled Exp $ */
/*
* Copyright 1997 Piermont Information Systems Inc.
@ -219,3 +219,9 @@ void
md_init()
{
}
int
md_post_extract(void)
{
return 0;
}

View File

@ -1,4 +1,4 @@
/* $NetBSD: md.c,v 1.17 2006/02/26 10:25:53 dsl Exp $ */
/* $NetBSD: md.c,v 1.18 2006/04/05 16:55:06 garbled Exp $ */
/*
* Copyright 1997 Piermont Information Systems Inc.
@ -247,3 +247,9 @@ void
md_init()
{
}
int
md_post_extract(void)
{
return 0;
}

View File

@ -1,4 +1,4 @@
/* $NetBSD: md.c,v 1.25 2006/03/21 02:06:31 tsutsui Exp $ */
/* $NetBSD: md.c,v 1.26 2006/04/05 16:55:06 garbled Exp $ */
/*
* Copyright 1997 Piermont Information Systems Inc.
@ -215,3 +215,9 @@ void
md_init(void)
{
}
int
md_post_extract(void)
{
return 0;
}

View File

@ -1,4 +1,4 @@
/* $NetBSD: md.c,v 1.13 2006/02/26 10:25:54 dsl Exp $ */
/* $NetBSD: md.c,v 1.14 2006/04/05 16:55:06 garbled Exp $ */
/*
* Copyright 1997 Piermont Information Systems Inc.
@ -210,3 +210,9 @@ void
md_init()
{
}
int
md_post_extract(void)
{
return 0;
}

View File

@ -1,4 +1,4 @@
/* $NetBSD: md.c,v 1.32 2006/02/26 10:25:54 dsl Exp $ */
/* $NetBSD: md.c,v 1.33 2006/04/05 16:55:06 garbled Exp $ */
/*
* Copyright 1997 Piermont Information Systems Inc.
@ -129,3 +129,9 @@ void
md_init()
{
}
int
md_post_extract(void)
{
return 0;
}

View File

@ -1,4 +1,4 @@
/* $NetBSD: md.c,v 1.19 2006/02/26 10:25:54 dsl Exp $ */
/* $NetBSD: md.c,v 1.20 2006/04/05 16:55:06 garbled Exp $ */
/*
* Copyright 1997 Piermont Information Systems Inc.
@ -162,3 +162,21 @@ md_check_partitions()
return (1);
}
int
md_post_extract(void)
{
return 0;
}
int
md_check_mbr(mbr_info_t *mbri)
{
return 2;
}
int
md_mbr_use_wholedisk(mbr_info_t *mbri)
{
return mbr_use_wholedisk(mbri);
}

View File

@ -1,4 +1,4 @@
/* $NetBSD: md.c,v 1.58 2006/02/26 10:25:54 dsl Exp $ */
/* $NetBSD: md.c,v 1.59 2006/04/05 16:55:06 garbled Exp $ */
/*
* Copyright 1997 Piermont Information Systems Inc.
@ -218,3 +218,9 @@ void
md_init()
{
}
int
md_post_extract(void)
{
return 0;
}

View File

@ -1,4 +1,4 @@
/* $NetBSD: md.c,v 1.5 2006/02/26 10:25:54 dsl Exp $ */
/* $NetBSD: md.c,v 1.6 2006/04/05 16:55:06 garbled Exp $ */
/*
* Copyright 1997,2002 Piermont Information Systems Inc.
@ -177,3 +177,21 @@ md_bios_info(dev)
set_bios_geom(cyl, head, sec);
return 0;
}
int
md_post_extract(void)
{
return 0;
}
int
md_check_mbr(mbr_info_t *mbri)
{
return 2;
}
int
md_mbr_use_wholedisk(mbr_info_t *mbri)
{
return mbr_use_wholedisk(mbri);
}

View File

@ -1,4 +1,4 @@
/* $NetBSD: md.c,v 1.22 2006/02/26 10:25:54 dsl Exp $ */
/* $NetBSD: md.c,v 1.23 2006/04/05 16:55:06 garbled Exp $ */
/*
* Copyright 1997 Piermont Information Systems Inc.
@ -47,20 +47,89 @@
#include <machine/cpu.h>
#include "defs.h"
#include "md.h"
#include "msg_defs.h"
#include "menu_defs.h"
#include "md.h"
#include "endian.h"
int prep_nobootfix = 0, prep_rawdevfix = 0, prep_bootpart = PART_BOOT;
int md_check_mbr(mbr_info_t *mbri)
{
mbr_info_t *ext;
struct mbr_partition *part;
int i;
for (ext = mbri; ext; ext = ext->extended) {
part = ext->mbr.mbr_parts;
for (i = 0; i < MBR_PART_COUNT; part++, i++) {
if (part->mbrp_type != MBR_PTYPE_PREP)
continue;
bootstart = part->mbrp_start;
bootsize = part->mbrp_size;
break;
}
}
if (bootsize < (MIN_PREP_BOOT/512)) {
msg_display(MSG_preptoosmall);
msg_display_add(MSG_reeditpart, 0);
process_menu(MENU_yesno, NULL);
if (!yesno)
return 0;
return 1;
}
if (bootstart == 0 || bootsize == 0) {
msg_display(MSG_nopreppart);
msg_display_add(MSG_reeditpart, 0);
process_menu(MENU_yesno, NULL);
if (!yesno)
return 0;
return 1;
}
return 2;
}
int
md_mbr_use_wholedisk(mbr_info_t *mbri)
{
struct mbr_sector *mbrs = &mbri->mbr;
mbr_info_t *ext;
struct mbr_partition *part;
part = &mbrs->mbr_parts[0];
/* Set the partition information for full disk usage. */
while ((ext = mbri->extended)) {
mbri->extended = ext->extended;
free(ext);
}
memset(part, 0, MBR_PART_COUNT * sizeof *part);
#ifdef BOOTSEL
memset(&mbri->mbrb, 0, sizeof mbri->mbrb);
#endif
part[0].mbrp_type = MBR_PTYPE_PREP;
part[0].mbrp_size = PREP_BOOT_SIZE/512;
part[0].mbrp_start = bsec;
part[0].mbrp_flag = MBR_PFLAG_ACTIVE;
part[1].mbrp_type = MBR_PTYPE_NETBSD;
part[1].mbrp_size = dlsize - (bsec + PREP_BOOT_SIZE/512);
part[1].mbrp_start = bsec + PREP_BOOT_SIZE/512;
part[1].mbrp_flag = 0;
ptstart = part[1].mbrp_start;
ptsize = part[1].mbrp_size;
bootstart = part[0].mbrp_start;
bootsize = part[0].mbrp_size;
return 1;
}
int
md_get_info(void)
{
read_mbr(diskdev, &mbr);
edit_mbr(&mbr);
return 1;
md_bios_info(diskdev);
return edit_mbr(&mbr);
}
int
@ -116,7 +185,21 @@ md_make_bsd_partitions(void)
int
md_check_partitions(void)
{
return 1;
int part;
/* we need to find a boot partition, otherwise we can't write our
* "bootblock". We make the assumption that the user hasn't done
* something stupid, like move it away from the MBR partition.
*/
for (part = PART_A; part < MAXPARTITIONS; part++)
if (bsdlabel[part].pi_fstype == FS_BOOT) {
prep_bootpart = part;
return 1;
}
msg_display(MSG_prepnobootpart);
process_menu(MENU_ok, NULL);
return 0;
}
/* Upgrade support */
@ -143,15 +226,83 @@ md_cleanup_install(void)
run_program(0, "rm -f %s", target_expand("/sysinst"));
run_program(0, "rm -f %s", target_expand("/.termcap"));
run_program(0, "rm -f %s", target_expand("/.profile"));
run_program(0, "rm -f %s", target_expand("/.bootimage"));
}
int
md_pre_update(void)
{
struct mbr_partition *part;
mbr_info_t *ext;
int i;
read_mbr(diskdev, &mbr);
/* do a sanity check of the partition table */
for (ext = &mbr; ext; ext = ext->extended) {
part = ext->mbr.mbr_parts;
for (i = 0; i < MBR_PART_COUNT; part++, i++) {
if (part->mbrp_type != MBR_PTYPE_PREP)
continue;
if (part->mbrp_size < (MIN_PREP_BOOT/512)) {
msg_display(MSG_preptoosmall);
msg_display_add(MSG_prepnobootpart, 0);
process_menu(MENU_yesno, NULL);
if (!yesno)
return 0;
prep_nobootfix = 1;
}
if (part->mbrp_start == 0)
prep_rawdevfix = 1;
}
}
if (md_check_partitions() == 0)
prep_nobootfix = 1;
return 1;
}
int
md_bios_info(char *dev)
{
int cyl, head, sec;
msg_display(MSG_nobiosgeom, dlcyl, dlhead, dlsec);
if (guess_biosgeom_from_mbr(&mbr, &cyl, &head, &sec) >= 0)
msg_display_add(MSG_biosguess, cyl, head, sec);
set_bios_geom(cyl, head, sec);
return 0;
}
int
md_post_extract(void)
{
char rawdev[100], bootpart[100], bootloader[100];
/* if we can't make it bootable, just punt */
if (prep_nobootfix)
return 0;
process_menu(MENU_prepconsole, NULL);
if (yesno == 1)
snprintf(bootloader, 100, "/usr/mdec/boot_com0");
else
snprintf(bootloader, 100, "/usr/mdec/boot");
snprintf(rawdev, 100, "/dev/r%s%c", diskdev, 'a' + getrawpartition());
snprintf(bootpart, 100, "/dev/r%s%c", diskdev, 'a' + prep_bootpart);
if (prep_rawdevfix)
run_program(RUN_DISPLAY|RUN_CHROOT,
"/usr/mdec/mkbootimage -b %s -k /netbsd "
"-r %s /.bootimage", bootloader, rawdev);
else
run_program(RUN_DISPLAY|RUN_CHROOT,
"/usr/mdec/mkbootimage -s -b %s -k /netbsd /.bootimage",
bootloader);
run_program(RUN_DISPLAY|RUN_CHROOT, "/bin/dd if=/.bootimage of=%s "
"bs=512", bootpart);
return 0;
}
void
md_init(void)
{

View File

@ -1,4 +1,4 @@
/* $NetBSD: md.h,v 1.14 2006/02/26 10:25:54 dsl Exp $ */
/* $NetBSD: md.h,v 1.15 2006/04/05 16:55:06 garbled Exp $ */
/*
* Copyright 1997 Piermont Information Systems Inc.
@ -49,14 +49,18 @@
#include "mbr.h"
/* constants and defines */
#define PREP_BOOT_SIZE 5017600 /* 5MB boot partition */
#define MIN_PREP_BOOT 2097152 /* 2MB absoule minimum */
#define PART_ROOT PART_A
#define PART_SWAP PART_B
#define PART_RAW PART_C
#define PART_USR PART_D /* Can be after PART_FIRST_FREE */
#define PART_FIRST_FREE PART_E
#define PART_BSD PART_D
#define PART_BOOT PART_E
#define PART_USR PART_F /* Can be after PART_FIRST_FREE */
#define PART_FIRST_FREE PART_G
#define DEFSWAPRAM 32 /* Assume at least this RAM for swap calc */
#define DEFROOTSIZE 24 /* Default root size */
#define DEFROOTSIZE 32 /* Default root size */
#define DEFVARSIZE 32 /* Default /var size, if created */
#define DEFUSRSIZE 128 /* Default /usr size, if /home */
#define XNEEDMB 39 /* Extra megs for full X installation */

View File

@ -1,4 +1,4 @@
/* $NetBSD: menus.md.en,v 1.10 2003/06/12 10:51:42 dsl Exp $ */
/* $NetBSD: menus.md.en,v 1.11 2006/04/05 16:55:06 garbled Exp $ */
/*
* Copyright 1997 Piermont Information Systems Inc.
@ -38,3 +38,6 @@
/* Menu definitions for sysinst. prep version, machine dependent. */
menu prepconsole, title "Select console device", y=-10;
option "com0 (S1)", exit, action { yesno = 1; };
option "VGA", exit, action { yesno = 0; };

View File

@ -1,4 +1,4 @@
/* $NetBSD: menus.md.es,v 1.1 2005/08/26 15:44:44 xtraeme Exp $ */
/* $NetBSD: menus.md.es,v 1.2 2006/04/05 16:55:06 garbled Exp $ */
/*
* Copyright 1997 Piermont Information Systems Inc.
@ -38,3 +38,6 @@
/* Menu definitions for sysinst. prep version, machine dependent. */
menu prepconsole, title "Select console device", y=-10;
option "COM0 (S1)", exit, action { yesno = 1; };
option "VGA", exit, action { yesno = 0; };

View File

@ -1,6 +1,4 @@
/* $NetBSD: menus.md.pl,v 1.9 2003/06/12 10:51:42 dsl Exp $ */
/* Based on english version: */
/* NetBSD: menus.md.en,v 1.2 2001/11/29 23:21:01 thorpej Exp */
/* $NetBSD: menus.md.pl,v 1.10 2006/04/05 16:55:06 garbled Exp $ */
/*
* Copyright 1997 Piermont Information Systems Inc.
@ -40,3 +38,6 @@
/* Menu definitions for sysinst. prep version, machine dependent. */
menu prepconsole, title "Select console device", y=-10;
option "COM0 (S1)", exit, action { yesno = 1; };
option "VGA", exit, action { yesno = 0; };

View File

@ -1,4 +1,4 @@
/* $NetBSD: msg.md.de,v 1.3 2004/10/21 12:14:22 martin Exp $ */
/* $NetBSD: msg.md.de,v 1.4 2006/04/05 16:55:06 garbled Exp $ */
/*
* Copyright 1997 Piermont Information Systems Inc.
@ -62,3 +62,14 @@ booten. Sind Sie sicher, da
message set_kernel_1
{Kernel (GENERIC)}
message nopreppart
{There is no PReP boot partition in the MBR partition table.}
message preptoosmall
{The PReP boot partition is too small. It needs to be at least 2MB in size,
however a size of at least 5MB is reccomended.}
message prepnobootpart
{There is no boot partition in the disklabel. The boot partition should
match the PReP boot partition you set up in the MBR partition table.}

View File

@ -1,4 +1,4 @@
/* $NetBSD: msg.md.en,v 1.8 2003/06/12 10:51:42 dsl Exp $ */
/* $NetBSD: msg.md.en,v 1.9 2006/04/05 16:55:06 garbled Exp $ */
/*
* Copyright 1997 Piermont Information Systems Inc.
@ -62,3 +62,14 @@ sure you that you want to do this?
message set_kernel_1
{Kernel (GENERIC)}
message nopreppart
{There is no PReP boot partition in the MBR partition table.}
message preptoosmall
{The PReP boot partition is too small. It needs to be at least 2MB in size,
however a size of at least 5MB is reccomended.}
message prepnobootpart
{There is no boot partition in the disklabel. The boot partition should
match the PReP boot partition you set up in the MBR partition table.}

View File

@ -1,4 +1,4 @@
/* $NetBSD: msg.md.es,v 1.2 2005/08/26 16:32:32 xtraeme Exp $ */
/* $NetBSD: msg.md.es,v 1.3 2006/04/05 16:55:06 garbled Exp $ */
/*
* Copyright 1997 Piermont Information Systems Inc.
@ -63,3 +63,14 @@ Puede que no sea posible iniciar desde ahi.
message set_kernel_1
{Núcleo (GENERIC)}
message nopreppart
{There is no PReP boot partition in the MBR partition table.}
message preptoosmall
{The PReP boot partition is too small. It needs to be at least 2MB in size,
however a size of at least 5MB is reccomended.}
message prepnobootpart
{There is no boot partition in the disklabel. The boot partition should
match the PReP boot partition you set up in the MBR partition table.}

View File

@ -1,4 +1,4 @@
/* $NetBSD: msg.md.pl,v 1.8 2003/06/12 10:51:42 dsl Exp $ */
/* $NetBSD: msg.md.pl,v 1.9 2006/04/05 16:55:06 garbled Exp $ */
/* Based on english version: */
/* NetBSD: msg.md.en,v 1.1 2001/01/16 16:54:01 nonaka Exp */
@ -65,3 +65,13 @@ chcesz to zrobic?
message set_kernel_1
{Kernel (GENERIC)}
message nopreppart
{There is no PReP boot partition in the MBR partition table.}
message preptoosmall
{The PReP boot partition is too small. It needs to be at least 2MB in size,
however a size of at least 5MB is reccomended.}
message prepnobootpart
{There is no boot partition in the disklabel. The boot partition should
match the PReP boot partition you set up in the MBR partition table.}

View File

@ -1,4 +1,4 @@
/* $NetBSD: md.c,v 1.25 2006/02/26 10:25:54 dsl Exp $ */
/* $NetBSD: md.c,v 1.26 2006/04/05 16:55:06 garbled Exp $ */
/*
* Copyright 1997 Piermont Information Systems Inc.
@ -176,3 +176,21 @@ md_bios_info(char *dev)
set_bios_geom(cyl, head, sec);
return 0;
}
int
md_post_extract(void)
{
return 0;
}
int
md_check_mbr(mbr_info_t *mbri)
{
return 2;
}
int
md_mbr_use_wholedisk(mbr_info_t *mbri)
{
return mbr_use_wholedisk(mbri);
}

View File

@ -1,4 +1,4 @@
/* $NetBSD: md.c,v 1.20 2006/02/26 10:25:54 dsl Exp $ */
/* $NetBSD: md.c,v 1.21 2006/04/05 16:55:07 garbled Exp $ */
/*
* Copyright 1997 Piermont Information Systems Inc.
@ -208,3 +208,9 @@ md_init()
else if (strstr(instsys.version, "(GENERIC32_IP12)"))
set_kernel_set(SET_KERNEL_3);
}
int
md_post_extract(void)
{
return 0;
}

View File

@ -1,4 +1,4 @@
/* $NetBSD: md.c,v 1.18 2006/02/26 10:25:54 dsl Exp $ */
/* $NetBSD: md.c,v 1.19 2006/04/05 16:55:07 garbled Exp $ */
/*
* Copyright 1997 Piermont Information Systems Inc.
@ -174,3 +174,9 @@ void
md_init(void)
{
}
int
md_post_extract(void)
{
return 0;
}

View File

@ -1,4 +1,4 @@
/* $NetBSD: md.c,v 1.44 2006/02/26 10:25:54 dsl Exp $ */
/* $NetBSD: md.c,v 1.45 2006/04/05 16:55:07 garbled Exp $ */
/*
* Copyright 1997 Piermont Information Systems Inc.
@ -206,3 +206,9 @@ void
md_init()
{
}
int
md_post_extract(void)
{
return 0;
}

View File

@ -1,4 +1,4 @@
/* $NetBSD: md.c,v 1.19 2006/02/26 10:25:54 dsl Exp $ */
/* $NetBSD: md.c,v 1.20 2006/04/05 16:55:07 garbled Exp $ */
/*
* Copyright 1997 Piermont Information Systems Inc.
@ -205,3 +205,9 @@ void
md_init()
{
}
int
md_post_extract(void)
{
return 0;
}

View File

@ -1,4 +1,4 @@
/* $NetBSD: md.c,v 1.30 2006/02/26 10:25:54 dsl Exp $ */
/* $NetBSD: md.c,v 1.31 2006/04/05 16:55:07 garbled Exp $ */
/*
* Copyright 1997 Piermont Information Systems Inc.
@ -203,3 +203,9 @@ void
md_init()
{
}
int
md_post_extract(void)
{
return 0;
}

View File

@ -1,4 +1,4 @@
/* $NetBSD: md.c,v 1.32 2006/02/26 10:25:54 dsl Exp $ */
/* $NetBSD: md.c,v 1.33 2006/04/05 16:55:07 garbled Exp $ */
/*
* Copyright 1997 Piermont Information Systems Inc.
@ -337,3 +337,9 @@ void
md_init()
{
}
int
md_post_extract(void)
{
return 0;
}

View File

@ -1,4 +1,4 @@
/* $NetBSD: bsddisklabel.c,v 1.39 2006/01/12 22:02:44 dsl Exp $ */
/* $NetBSD: bsddisklabel.c,v 1.40 2006/04/05 16:55:01 garbled Exp $ */
/*
* Copyright 1997 Piermont Information Systems Inc.
@ -600,7 +600,13 @@ make_bsd_partitions(void)
bsdlabel[PART_BOOT].pi_offset = ptstart;
partstart += i;
#endif
#endif
#elif defined(PART_BOOT)
if (bootsize != 0) {
bsdlabel[PART_BOOT].pi_fstype = FS_BOOT;
bsdlabel[PART_BOOT].pi_size = bootsize;
bsdlabel[PART_BOOT].pi_offset = bootstart;
}
#endif /* PART_BOOT w/o BOOT_SIZE */
#if defined(PART_SYSVBFS) && defined(SYSVBFS_SIZE)
bsdlabel[PART_SYSVBFS].pi_offset = partstart;

View File

@ -1,4 +1,4 @@
/* $NetBSD: defs.h,v 1.128 2006/02/26 10:25:52 dsl Exp $ */
/* $NetBSD: defs.h,v 1.129 2006/04/05 16:55:01 garbled Exp $ */
/*
* Copyright 1997 Piermont Information Systems Inc.
@ -222,6 +222,8 @@ const char *disktype; /* ST506, SCSI, ... */
/* Area of disk we can allocate, start and size in disk sectors. */
int ptstart, ptsize;
/* If we have an MBR boot partition, start and size in sectors */
int bootstart, bootsize;
/* Actual values for current disk - set by find_disks() or md_get_info() */
int sectorsize;
@ -300,6 +302,7 @@ int md_post_newfs(void);
int md_pre_disklabel(void);
int md_pre_update(void);
int md_update(void);
int md_post_extract(void);
void md_init(void);
void md_set_no_x(void);

View File

@ -1,4 +1,4 @@
/* $NetBSD: install.c,v 1.41 2005/07/09 14:56:23 xtraeme Exp $ */
/* $NetBSD: install.c,v 1.42 2006/04/05 16:55:01 garbled Exp $ */
/*
* Copyright 1997 Piermont Information Systems Inc.
@ -121,6 +121,9 @@ do_install(void)
MSG_extractcomplete, MSG_abortinst) != 0)
return;
if (md_post_extract() != 0)
return;
set_timezone();
set_crypt_type();

View File

@ -1,4 +1,4 @@
/* $NetBSD: mbr.c,v 1.71 2005/11/05 09:58:32 dsl Exp $ */
/* $NetBSD: mbr.c,v 1.72 2006/04/05 16:55:01 garbled Exp $ */
/*
* Copyright 1997 Piermont Information Systems Inc.
@ -106,6 +106,7 @@ struct part_id {
{MBR_PTYPE_FAT32L, "Windows FAT32, LBA"},
{MBR_PTYPE_NTFSVOL, "NTFS volume set"},
{MBR_PTYPE_NTFS, "NTFS"},
{MBR_PTYPE_PREP, "PReP Boot"},
#ifdef MBR_PTYPE_SOLARIS
{MBR_PTYPE_SOLARIS, "Solaris"},
#endif
@ -1205,6 +1206,33 @@ set_mbr_header(menudesc *m, void *arg)
m->numopts = op - opts;
}
int
mbr_use_wholedisk(mbr_info_t *mbri)
{
struct mbr_sector *mbrs = &mbri->mbr;
mbr_info_t *ext;
struct mbr_partition *part;
part = &mbrs->mbr_parts[0];
/* Set the partition information for full disk usage. */
while ((ext = mbri->extended)) {
mbri->extended = ext->extended;
free(ext);
}
memset(part, 0, MBR_PART_COUNT * sizeof *part);
#ifdef BOOTSEL
memset(&mbri->mbrb, 0, sizeof mbri->mbrb);
#endif
part[0].mbrp_type = MBR_PTYPE_NETBSD;
part[0].mbrp_size = dlsize - bsec;
part[0].mbrp_start = bsec;
part[0].mbrp_flag = MBR_PFLAG_ACTIVE;
ptstart = bsec;
ptsize = dlsize - bsec;
return 1;
}
/*
* Let user change incore Master Boot Record partitions via menu.
*/
@ -1251,24 +1279,7 @@ edit_mbr(mbr_info_t *mbri)
return 0;
}
}
/* Set the partition information for full disk usage. */
while ((ext = mbri->extended)) {
mbri->extended = ext->extended;
free(ext);
}
memset(part, 0, MBR_PART_COUNT * sizeof *part);
#ifdef BOOTSEL
memset(&mbri->mbrb, 0, sizeof mbri->mbrb);
#endif
part[0].mbrp_type = MBR_PTYPE_NETBSD;
part[0].mbrp_size = dlsize - bsec;
part[0].mbrp_start = bsec;
part[0].mbrp_flag = MBR_PFLAG_ACTIVE;
ptstart = bsec;
ptsize = dlsize - bsec;
return 1;
return(md_mbr_use_wholedisk(mbri));
}
mbr_menu = new_menu(NULL, NULL, 16, 0, -1, 15, 70,
@ -1335,6 +1346,15 @@ edit_mbr(mbr_info_t *mbri)
if (yesno)
continue;
}
/* the md_check_mbr function has 3 ret codes to deal with
* the different possible states. 0, 1, >1
*/
j = md_check_mbr(mbri);
if (j == 0)
return 0;
if (j == 1)
continue;
break;
}

View File

@ -1,4 +1,4 @@
/* $NetBSD: mbr.h,v 1.21 2004/07/17 19:36:59 dsl Exp $ */
/* $NetBSD: mbr.h,v 1.22 2006/04/05 16:55:05 garbled Exp $ */
/*
* Copyright 1997, 1988 Piermont Information Systems Inc.
@ -105,6 +105,7 @@ int check_geom(void); /* primitive geometry sanity-check */
void disp_cur_part(struct mbr_partition *, int, int);
int edit_mbr(mbr_info_t *);
int mbr_use_wholedisk(mbr_info_t *);
int partsoverlap(struct mbr_partition *, int, int);
/* from mbr.c */
@ -128,4 +129,8 @@ void edit_bootsel_default_disk(int);
void configure_bootsel(void);
#endif
/* Machine dependant mbr functions */
int md_mbr_use_wholedisk(mbr_info_t *mbri);
int md_check_mbr(mbr_info_t *mbri);
#endif

View File

@ -1,4 +1,4 @@
/* $NetBSD: upgrade.c,v 1.48 2004/06/05 21:19:00 dsl Exp $ */
/* $NetBSD: upgrade.c,v 1.49 2006/04/05 16:55:05 garbled Exp $ */
/*
* Copyright 1997 Piermont Information Systems Inc.
@ -93,6 +93,9 @@ do_upgrade(void)
MSG_upgrcomplete, MSG_abortupgr) != 0)
return;
if (!md_post_extract() == 0)
return;
merge_X();
sanity_check();