Source-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[src/trunk]: src/sys/lib/libsa Add "root" command to provide a BTINFO_ROOTDEV...
details: https://anonhg.NetBSD.org/src/rev/b146c2544c98
branches: trunk
changeset: 379398:b146c2544c98
user: mlelstv <mlelstv%NetBSD.org@localhost>
date: Sun May 30 05:59:22 2021 +0000
description:
Add "root" command to provide a BTINFO_ROOTDEVICE parameter.
diffstat:
sys/arch/i386/stand/boot/boot2.c | 22 +++++++++++++++++++++-
sys/arch/i386/stand/efiboot/boot.c | 24 +++++++++++++++++++++++-
sys/arch/i386/stand/lib/biosdisk.c | 3 ++-
sys/arch/i386/stand/lib/biosdisk.h | 3 ++-
sys/arch/i386/stand/lib/exec.c | 5 ++++-
sys/lib/libsa/bootcfg.c | 5 ++++-
sys/lib/libsa/bootcfg.h | 3 ++-
7 files changed, 58 insertions(+), 7 deletions(-)
diffs (233 lines):
diff -r e9b0bb56efa0 -r b146c2544c98 sys/arch/i386/stand/boot/boot2.c
--- a/sys/arch/i386/stand/boot/boot2.c Sun May 30 05:40:56 2021 +0000
+++ b/sys/arch/i386/stand/boot/boot2.c Sun May 30 05:59:22 2021 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: boot2.c,v 1.74 2020/07/15 12:36:30 kim Exp $ */
+/* $NetBSD: boot2.c,v 1.75 2021/05/30 05:59:22 mlelstv Exp $ */
/*-
* Copyright (c) 2008, 2009 The NetBSD Foundation, Inc.
@@ -83,6 +83,9 @@
#include <vbe.h>
#include "devopen.h"
+#ifdef _STANDALONE
+#include <bootinfo.h>
+#endif
#ifdef SUPPORT_PS2
#include <biosmca.h>
#endif
@@ -130,6 +133,7 @@ void command_boot(char *);
void command_pkboot(char *);
void command_dev(char *);
void command_consdev(char *);
+void command_root(char *);
#ifndef SMALL
void command_menu(char *);
#endif
@@ -147,6 +151,7 @@ const struct bootblk_command commands[]
{ "pkboot", command_pkboot },
{ "dev", command_dev },
{ "consdev", command_consdev },
+ { "root", command_root },
#ifndef SMALL
{ "menu", command_menu },
#endif
@@ -450,6 +455,9 @@ command_help(char *arg)
#endif
"dev [dev:]\n"
"consdev {pc|{com[0123]|com[0123]kbd|auto}[,{speed}]}\n"
+ "root {spec}\n"
+ " spec can be disk, e.g. wd0, sd0\n"
+ " or string like wedge:name\n"
"vesa {modenum|on|off|enabled|disabled|list}\n"
#ifndef SMALL
"menu (reenters boot menu, if defined in boot.cfg)\n"
@@ -610,6 +618,18 @@ error:
printf("invalid console device.\n");
}
+void
+command_root(char *arg)
+{
+ struct btinfo_rootdevice *biv = &bi_root;
+
+ strncpy(biv->devname, arg, sizeof(biv->devname));
+ if (biv->devname[sizeof(biv->devname)-1] != '\0') {
+ biv->devname[sizeof(biv->devname)-1] = '\0';
+ printf("truncated to %s\n",biv->devname);
+ }
+}
+
#ifndef SMALL
/* ARGSUSED */
void
diff -r e9b0bb56efa0 -r b146c2544c98 sys/arch/i386/stand/efiboot/boot.c
--- a/sys/arch/i386/stand/efiboot/boot.c Sun May 30 05:40:56 2021 +0000
+++ b/sys/arch/i386/stand/efiboot/boot.c Sun May 30 05:59:22 2021 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: boot.c,v 1.17 2019/09/26 12:21:03 nonaka Exp $ */
+/* $NetBSD: boot.c,v 1.18 2021/05/30 05:59:22 mlelstv Exp $ */
/*-
* Copyright (c) 2016 Kimihiro Nonaka <nonaka%netbsd.org@localhost>
@@ -38,6 +38,10 @@
#include "biosdisk.h"
#include "devopen.h"
+#ifdef _STANDALONE
+#include <bootinfo.h>
+#endif
+
int errno;
int boot_biosdev;
daddr_t boot_biossector;
@@ -65,6 +69,7 @@ void command_quit(char *);
void command_boot(char *);
void command_pkboot(char *);
void command_consdev(char *);
+void command_root(char *);
void command_dev(char *);
void command_devpath(char *);
void command_efivar(char *);
@@ -88,6 +93,7 @@ const struct bootblk_command commands[]
{ "boot", command_boot },
{ "pkboot", command_pkboot },
{ "consdev", command_consdev },
+ { "root", command_root },
{ "dev", command_dev },
{ "devpath", command_devpath },
{ "efivar", command_efivar },
@@ -396,6 +402,9 @@ command_help(char *arg)
"pkboot [dev:][filename] [-12acdqsvxz]\n"
"dev [dev:]\n"
"consdev {pc|com[0123][,{speed}]|com,{ioport}[,{speed}]}\n"
+ "root {spec}\n"
+ " spec can be disk, e.g. wd0, sd0\n"
+ " or string like wedge:name\n"
"devpath\n"
"efivar\n"
"gop [{modenum|list}]\n"
@@ -590,6 +599,19 @@ error:
printf("invalid console device.\n");
}
+void
+command_root(char *arg)
+{
+ struct btinfo_rootdevice *biv = &bi_root;
+
+ strncpy(biv->devname, arg, sizeof(biv->devname));
+ if (biv->devname[sizeof(biv->devname)-1] != '\0') {
+ biv->devname[sizeof(biv->devname)-1] = '\0';
+ printf("truncated to %s\n",biv->devname);
+ }
+}
+
+
#ifndef SMALL
/* ARGSUSED */
void
diff -r e9b0bb56efa0 -r b146c2544c98 sys/arch/i386/stand/lib/biosdisk.c
--- a/sys/arch/i386/stand/lib/biosdisk.c Sun May 30 05:40:56 2021 +0000
+++ b/sys/arch/i386/stand/lib/biosdisk.c Sun May 30 05:59:22 2021 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: biosdisk.c,v 1.54 2019/12/17 01:37:53 manu Exp $ */
+/* $NetBSD: biosdisk.c,v 1.55 2021/05/30 05:59:23 mlelstv Exp $ */
/*
* Copyright (c) 1996, 1998
@@ -186,6 +186,7 @@ const struct gpt_part gpt_parts[] = {
struct btinfo_bootdisk bi_disk;
struct btinfo_bootwedge bi_wedge;
+struct btinfo_rootdevice bi_root;
#define MBR_PARTS(buf) ((char *)(buf) + offsetof(struct mbr_sector, mbr_parts))
diff -r e9b0bb56efa0 -r b146c2544c98 sys/arch/i386/stand/lib/biosdisk.h
--- a/sys/arch/i386/stand/lib/biosdisk.h Sun May 30 05:40:56 2021 +0000
+++ b/sys/arch/i386/stand/lib/biosdisk.h Sun May 30 05:59:22 2021 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: biosdisk.h,v 1.12 2019/09/13 02:19:46 manu Exp $ */
+/* $NetBSD: biosdisk.h,v 1.13 2021/05/30 05:59:23 mlelstv Exp $ */
/*
* Copyright (c) 1996
@@ -43,6 +43,7 @@ struct biosdisk_partition {
extern struct btinfo_bootdisk bi_disk;
extern struct btinfo_bootwedge bi_wedge;
+extern struct btinfo_rootdevice bi_root;
int biosdisk_strategy(void *, int, daddr_t, size_t, void *, size_t *);
int biosdisk_open(struct open_file *, ...);
diff -r e9b0bb56efa0 -r b146c2544c98 sys/arch/i386/stand/lib/exec.c
--- a/sys/arch/i386/stand/lib/exec.c Sun May 30 05:40:56 2021 +0000
+++ b/sys/arch/i386/stand/lib/exec.c Sun May 30 05:59:22 2021 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: exec.c,v 1.76 2020/04/04 19:50:54 christos Exp $ */
+/* $NetBSD: exec.c,v 1.77 2021/05/30 05:59:23 mlelstv Exp $ */
/*
* Copyright (c) 2008, 2009 The NetBSD Foundation, Inc.
@@ -122,6 +122,7 @@
#define MAXMODNAME 32 /* from <sys/module.h> */
extern struct btinfo_console btinfo_console;
+extern struct btinfo_rootdevice bi_root;
boot_module_t *boot_modules;
bool boot_modules_enabled = true;
@@ -477,6 +478,8 @@ exec_netbsd(const char *file, physaddr_t
BI_ALLOC(BTINFO_MAX);
BI_ADD(&btinfo_console, BTINFO_CONSOLE, sizeof(struct btinfo_console));
+ if (bi_root.devname[0])
+ BI_ADD(&bi_root, BTINFO_ROOTDEVICE, sizeof(struct btinfo_rootdevice));
howto = boothowto;
diff -r e9b0bb56efa0 -r b146c2544c98 sys/lib/libsa/bootcfg.c
--- a/sys/lib/libsa/bootcfg.c Sun May 30 05:40:56 2021 +0000
+++ b/sys/lib/libsa/bootcfg.c Sun May 30 05:59:22 2021 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: bootcfg.c,v 1.5 2020/06/27 17:22:12 jmcneill Exp $ */
+/* $NetBSD: bootcfg.c,v 1.6 2021/05/30 05:59:23 mlelstv Exp $ */
/*-
* Copyright (c) 2008 The NetBSD Foundation, Inc.
@@ -80,6 +80,7 @@ bootcfg_do_noop(const char *cmd, char *a
* timeout: Timeout in seconds (overrides that set by installboot)
* default: the default menu option to use if Return is pressed
* consdev: the console device to use
+ * root: the root device to use
* format: how menu choices are displayed: (a)utomatic, (n)umbers or (l)etters
* clear: whether to clear the screen or not
*
@@ -222,6 +223,8 @@ perform_bootcfg(const char *conf, bootcf
bootcfg_info.def = atoi(value) - 1;
} else if (!strncmp(key, "consdev", 7)) {
bootcfg_info.consdev = value;
+ } else if (!strncmp(key, "root", 4)) {
+ bootcfg_info.root = value;
} else if (!strncmp(key, BOOTCFG_CMD_LOAD, 4)) {
command(BOOTCFG_CMD_LOAD, value);
} else if (!strncmp(key, "format", 6)) {
diff -r e9b0bb56efa0 -r b146c2544c98 sys/lib/libsa/bootcfg.h
--- a/sys/lib/libsa/bootcfg.h Sun May 30 05:40:56 2021 +0000
+++ b/sys/lib/libsa/bootcfg.h Sun May 30 05:59:22 2021 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: bootcfg.h,v 1.3 2019/03/31 20:08:45 christos Exp $ */
+/* $NetBSD: bootcfg.h,v 1.4 2021/05/30 05:59:23 mlelstv Exp $ */
/*-
* Copyright (c) 2008 The NetBSD Foundation, Inc.
@@ -42,6 +42,7 @@ struct bootcfg_def {
char *banner[BOOTCFG_MAXBANNER]; /* Banner text */
char *command[BOOTCFG_MAXMENU]; /* Menu commands per entry*/
char *consdev; /* Console device */
+ char *root; /* Root specification */
int def; /* Default menu option */
char *desc[BOOTCFG_MAXMENU]; /* Menu text per entry */
int nummenu; /* Number of menu items */
Home |
Main Index |
Thread Index |
Old Index