summaryrefslogtreecommitdiffstats
path: root/loader2/urlinstall.c
diff options
context:
space:
mode:
authorJeremy Katz <katzj@redhat.com>2003-07-08 03:00:53 +0000
committerJeremy Katz <katzj@redhat.com>2003-07-08 03:00:53 +0000
commit459119c94529602d08de465b7ebfa4871d328081 (patch)
tree369a7eb643938d6d51ef6f2d0c46561e61dcc0ae /loader2/urlinstall.c
parent390977d3ee0ebc010168ce04573f63ae15458718 (diff)
downloadanaconda-459119c94529602d08de465b7ebfa4871d328081.tar.gz
anaconda-459119c94529602d08de465b7ebfa4871d328081.tar.xz
anaconda-459119c94529602d08de465b7ebfa4871d328081.zip
massive merge from taroon branch. changes are all over the place, but a
summary of looking through the diff is * clean up warnings, we build with -Wall -Werror here too * product.img stuff * max logical partitions enforcement * 1 TB max fs size * ethtool stuff * autopart in kickstart * driver disk fixes * RHEL upgrade stuff * network driver disks * variant pkgorder/tree splitting
Diffstat (limited to 'loader2/urlinstall.c')
-rw-r--r--loader2/urlinstall.c33
1 files changed, 25 insertions, 8 deletions
diff --git a/loader2/urlinstall.c b/loader2/urlinstall.c
index fcfe7c5e4..e372e3377 100644
--- a/loader2/urlinstall.c
+++ b/loader2/urlinstall.c
@@ -99,6 +99,16 @@ static int loadUrlImages(struct iurlinfo * ui, int flags) {
unlink("/tmp/ramfs/updates-disk.img");
}
+ /* grab the product.img before netstg1.img so that we minimize our
+ * ramdisk usage */
+ if (!loadSingleUrlImage(ui, "RedHat/base/product.img", flags,
+ "/tmp/ramfs/product-disk.img", "/tmp/product-disk",
+ "loop7", 1)) {
+ copyDirectory("/tmp/product-disk", "/tmp/product");
+ umountLoopback("/tmp/product-disk", "loop7");
+ unlink("/tmp/ramfs/product-disk.img");
+ }
+
/* require 128MB for use of graphical stage 2 due to size of image */
if (FL_TEXT(flags) || totalMemory() < 128000) {
stage2img = "netstg2.img";
@@ -297,16 +307,15 @@ char * mountUrlImage(struct installMethod * method,
return url;
}
-/* pull kickstart configuration file via http */
-int kickstartFromUrl(char * url, struct knownDevices * kd,
- struct loaderData_s * loaderData, int flags) {
+int getFileFromUrl(char * url, char * dest, struct knownDevices * kd,
+ struct loaderData_s * loaderData, int flags) {
struct iurlinfo ui;
enum urlprotocol_t proto =
!strncmp(url, "ftp://", 6) ? URL_METHOD_FTP : URL_METHOD_HTTP;
char * host = NULL, * file = NULL, * chptr = NULL;
int fd, rc;
struct networkDeviceConfig netCfg;
- char *ehdrs;
+ char * ehdrs;
if (kickstartNetworkUp(kd, loaderData, &netCfg, flags)) {
logMessage("unable to bring up network");
@@ -367,15 +376,16 @@ int kickstartFromUrl(char * url, struct knownDevices * kd,
}
fd = urlinstStartTransfer(&ui, file, ehdrs, 1);
+
if (fd < 0) {
logMessage("failed to retrieve http://%s/%s/%s", ui.address, ui.prefix, file);
return 1;
}
- rc = copyFileFd(fd, "/tmp/ks.cfg");
+ rc = copyFileFd(fd, dest);
if (rc) {
- unlink ("/tmp/ks.cfg");
- logMessage("failed to copy ks.cfg to /tmp/ks.cfg");
+ unlink (dest);
+ logMessage("failed to copy file to %s", dest);
return 1;
}
@@ -384,7 +394,14 @@ int kickstartFromUrl(char * url, struct knownDevices * kd,
return 0;
}
-void setKickstartUrl(struct loaderData_s * loaderData, int argc,
+/* pull kickstart configuration file via http */
+int kickstartFromUrl(char * url, struct knownDevices * kd,
+ struct loaderData_s * loaderData, int flags) {
+ return getFileFromUrl(url, "/tmp/ks.cfg", kd, loaderData, flags);
+}
+
+void setKickstartUrl(struct knownDevices * kd,
+ struct loaderData_s * loaderData, int argc,
char ** argv, int * flagsPtr) {
char *url;