Add support for using a livefs from a USB disk.

Submitted by:	randi
Approved by:	re (kensmith)
This commit is contained in:
Colin Percival 2009-07-08 06:07:51 +00:00
parent e24256e54e
commit 71b38b3c12
4 changed files with 33 additions and 3 deletions

View File

@ -86,6 +86,7 @@ static struct _word {
{ "installFixupBase", installFixupBase },
{ "installFixitHoloShell", installFixitHoloShell },
{ "installFixitCDROM", installFixitCDROM },
{ "installFixitUSB", installFixitUSB },
{ "installFixitFloppy", installFixitFloppy },
{ "installFilesystems", installFilesystems },
{ "installVarDefaults", installVarDefaults },

View File

@ -327,6 +327,33 @@ installFixitHoloShell(dialogMenuItem *self)
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)
{

View File

@ -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 } },
};

View File

@ -680,6 +680,7 @@ extern int installExpress(dialogMenuItem *self);
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);