svn commit: r195442 - head/usr.sbin/sysinstall
Colin Percival
cperciva at FreeBSD.org
Wed Jul 8 06:07:52 UTC 2009
Author: cperciva
Date: Wed Jul 8 06:07:51 2009
New Revision: 195442
URL: http://svn.freebsd.org/changeset/base/195442
Log:
Add support for using a livefs from a USB disk.
Submitted by: randi
Approved by: re (kensmith)
Modified:
head/usr.sbin/sysinstall/dispatch.c
head/usr.sbin/sysinstall/install.c
head/usr.sbin/sysinstall/menus.c
head/usr.sbin/sysinstall/sysinstall.h
Modified: head/usr.sbin/sysinstall/dispatch.c
==============================================================================
--- head/usr.sbin/sysinstall/dispatch.c Wed Jul 8 06:07:23 2009 (r195441)
+++ head/usr.sbin/sysinstall/dispatch.c Wed Jul 8 06:07:51 2009 (r195442)
@@ -86,6 +86,7 @@ static struct _word {
{ "installFixupBase", installFixupBase },
{ "installFixitHoloShell", installFixitHoloShell },
{ "installFixitCDROM", installFixitCDROM },
+ { "installFixitUSB", installFixitUSB },
{ "installFixitFloppy", installFixitFloppy },
{ "installFilesystems", installFilesystems },
{ "installVarDefaults", installVarDefaults },
Modified: head/usr.sbin/sysinstall/install.c
==============================================================================
--- head/usr.sbin/sysinstall/install.c Wed Jul 8 06:07:23 2009 (r195441)
+++ head/usr.sbin/sysinstall/install.c Wed Jul 8 06:07:51 2009 (r195442)
@@ -327,6 +327,33 @@ installFixitHoloShell(dialogMenuItem *se
return DITEM_SUCCESS;
}
+/*
+ * Load the live filesystem from USB media.
+ */
+int
+installFixitUSB(dialogMenuItem *self)
+{
+ if (!RunningAsInit)
+ return (DITEM_SUCCESS);
+
+ variable_set2(SYSTEM_STATE, "fixit", 0);
+
+ if (DITEM_STATUS(mediaSetUSB(NULL)) != DITEM_SUCCESS ||
+ !DEVICE_INIT(mediaDevice)) {
+ msgConfirm("No USB devices found!");
+ return (DITEM_FAILURE);
+ } else if (!file_readable("/dist/rescue/ldconfig")) {
+ msgConfirm("Unable to find a FreeBSD live filesystem.");
+ return (DITEM_FAILURE);
+ }
+
+ if (DITEM_STATUS(fixit_livefs_common(self)) == DITEM_FAILURE)
+ return (DITEM_FAILURE);
+
+ mediaClose();
+ return (DITEM_SUCCESS);
+}
+
int
installFixitCDROM(dialogMenuItem *self)
{
Modified: head/usr.sbin/sysinstall/menus.c
==============================================================================
--- head/usr.sbin/sysinstall/menus.c Wed Jul 8 06:07:23 2009 (r195441)
+++ head/usr.sbin/sysinstall/menus.c Wed Jul 8 06:07:51 2009 (r195442)
@@ -2173,8 +2173,9 @@ DMenu MenuFixit = {
"Press F1 for more detailed repair instructions",
"fixit",
{ { "X Exit", "Exit this menu (returning to previous)", NULL, dmenuExit },
- { "2 CDROM/DVD", "Use the \"live\" filesystem CDROM/DVD", NULL, installFixitCDROM },
- { "3 Floppy", "Use a floppy generated from the fixit image", NULL, installFixitFloppy },
- { "4 Shell", "Start an Emergency Holographic Shell", NULL, installFixitHoloShell },
+ { "2 CDROM/DVD", "Use the live filesystem CDROM/DVD", NULL, installFixitCDROM },
+ { "3 USB", "Use the live filesystem from a USB drive", NULL, installFixitUSB },
+ { "4 Floppy", "Use a floppy generated from the fixit image", NULL, installFixitFloppy },
+ { "5 Shell", "Start an Emergency Holographic Shell", NULL, installFixitHoloShell },
{ NULL } },
};
Modified: head/usr.sbin/sysinstall/sysinstall.h
==============================================================================
--- head/usr.sbin/sysinstall/sysinstall.h Wed Jul 8 06:07:23 2009 (r195441)
+++ head/usr.sbin/sysinstall/sysinstall.h Wed Jul 8 06:07:51 2009 (r195442)
@@ -680,6 +680,7 @@ extern int installExpress(dialogMenuItem
extern int installStandard(dialogMenuItem *self);
extern int installFixitHoloShell(dialogMenuItem *self);
extern int installFixitCDROM(dialogMenuItem *self);
+extern int installFixitUSB(dialogMenuItem *self);
extern int installFixitFloppy(dialogMenuItem *self);
extern int installFixupBase(dialogMenuItem *self);
extern int installFixupKernel(dialogMenuItem *self, int dists);
More information about the svn-src-head
mailing list