From owner-svn-src-head@FreeBSD.ORG Wed Jul 8 06:07:51 2009 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id CBEF91065680; Wed, 8 Jul 2009 06:07:51 +0000 (UTC) (envelope-from cperciva@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id B96D18FC24; Wed, 8 Jul 2009 06:07:51 +0000 (UTC) (envelope-from cperciva@FreeBSD.org) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id n6867phm040514; Wed, 8 Jul 2009 06:07:51 GMT (envelope-from cperciva@svn.freebsd.org) Received: (from cperciva@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id n6867pZ6040509; Wed, 8 Jul 2009 06:07:51 GMT (envelope-from cperciva@svn.freebsd.org) Message-Id: <200907080607.n6867pZ6040509@svn.freebsd.org> From: Colin Percival Date: Wed, 8 Jul 2009 06:07:51 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r195442 - head/usr.sbin/sysinstall X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 08 Jul 2009 06:07:52 -0000 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);