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); _______________________________________________ svn-src-all@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/svn-src-all To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"