anaconda: try to use installation disk directly, before searching for ISO images (#440)
This commit is contained in:
parent
ba1ff47849
commit
5fd3c8b151
@ -1232,9 +1232,75 @@ static char *doLoaderMain(struct loaderData_s *loaderData,
|
|||||||
* That will also then bypass any method selection UI in loader.
|
* That will also then bypass any method selection UI in loader.
|
||||||
*/
|
*/
|
||||||
if (!FL_ASKMETHOD(flags)) {
|
if (!FL_ASKMETHOD(flags)) {
|
||||||
url = findAnacondaCD("/mnt/stage2");
|
int stage2ok = 0;
|
||||||
|
// marmarek hack for USB install
|
||||||
|
if (loaderData->method == METHOD_HD) {
|
||||||
|
char *location = "/mnt/stage2";
|
||||||
|
char *device = ((struct hdInstallData *)loaderData->stage2Data)->partition;
|
||||||
|
char *stage2loc = "/mnt/stage2/images/install.img";
|
||||||
|
char *stage2img;
|
||||||
|
int stage2inram;
|
||||||
|
|
||||||
|
if (!(rc=doPwMount(device, location, "auto", "ro", NULL))) {
|
||||||
|
if (!access(stage2loc, R_OK)) {
|
||||||
|
char *updpath;
|
||||||
|
|
||||||
|
//TODO? queryCDMediaCheck(device, location);
|
||||||
|
|
||||||
|
/* if in rescue mode lets copy stage 2 into RAM so we can */
|
||||||
|
/* free up the CD drive and user can have it avaiable to */
|
||||||
|
/* aid system recovery. */
|
||||||
|
if (FL_RESCUE(flags) && !FL_TEXT(flags) &&
|
||||||
|
totalMemory() > MIN_GUI_RAM ) {
|
||||||
|
rc = copyFile(stage2loc, "/tmp/install.img");
|
||||||
|
stage2img = strdup("/tmp/install.img");
|
||||||
|
stage2inram = 1;
|
||||||
|
} else {
|
||||||
|
stage2img = strdup(stage2loc);
|
||||||
|
stage2inram = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
rc = mountStage2(stage2img);
|
||||||
|
free(stage2img);
|
||||||
|
|
||||||
|
if (!rc) {
|
||||||
|
checked_asprintf(&updpath, "%s/images/updates.img", location);
|
||||||
|
|
||||||
|
logMessage(INFO, "Looking for updates in %s", updpath);
|
||||||
|
copyUpdatesImg(updpath);
|
||||||
|
free(updpath);
|
||||||
|
|
||||||
|
checked_asprintf(&updpath, "%s/images/product.img", location);
|
||||||
|
|
||||||
|
logMessage(INFO, "Looking for product in %s", updpath);
|
||||||
|
copyProductImg(updpath);
|
||||||
|
free(updpath);
|
||||||
|
|
||||||
|
/* if in rescue mode and we copied stage2 to RAM */
|
||||||
|
/* we can now unmount the CD */
|
||||||
|
if (FL_RESCUE(flags) && stage2inram) {
|
||||||
|
umount(location);
|
||||||
|
}
|
||||||
|
stage2ok = 1;
|
||||||
|
checked_asprintf(&url, "file://%s", location);
|
||||||
|
} else {
|
||||||
|
logMessage(INFO, "mounting stage2 failed");
|
||||||
|
umount(location);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
/* this wasnt the CD we were looking for, clean up and */
|
||||||
|
/* try the next CD drive */
|
||||||
|
umount(location);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
logMessage(WARNING, "Mount failed for %s at %s", device, location);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!url)
|
||||||
|
url = findAnacondaCD("/mnt/stage2");
|
||||||
if (url) {
|
if (url) {
|
||||||
setStage2LocFromCmdline(url, loaderData);
|
if (!stage2ok)
|
||||||
|
setStage2LocFromCmdline(url, loaderData);
|
||||||
skipMethodDialog = 1;
|
skipMethodDialog = 1;
|
||||||
|
|
||||||
logMessage(INFO, "Detected stage 2 image on CD (url: %s)", url);
|
logMessage(INFO, "Detected stage 2 image on CD (url: %s)", url);
|
||||||
|
Loading…
Reference in New Issue
Block a user