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-all mailing list