summaryrefslogtreecommitdiffstats
path: root/loader2/loader.c
diff options
context:
space:
mode:
Diffstat (limited to 'loader2/loader.c')
-rw-r--r--loader2/loader.c180
1 files changed, 14 insertions, 166 deletions
diff --git a/loader2/loader.c b/loader2/loader.c
index 5f1db0386..954a69ebf 100644
--- a/loader2/loader.c
+++ b/loader2/loader.c
@@ -57,6 +57,7 @@
#include "driverdisk.h"
/* hardware stuff */
+#include "hardware.h"
#include "firewire.h"
#include "pcmcia.h"
#include "usb.h"
@@ -64,11 +65,15 @@
/* install method stuff */
#include "method.h"
#include "cdinstall.h"
+#include "nfsinstall.h"
+#include "hdinstall.h"
+#include "urlinstall.h"
#include "../isys/imount.h"
#include "../isys/isys.h"
#include "../isys/probe.h"
#include "../isys/stubs.h"
+#include "../isys/lang.h"
/* maximum number of extra arguments that can be passed to the second stage */
#define MAX_EXTRA_ARGS 128
@@ -102,6 +107,14 @@ static int numMethods = sizeof(installMethods) / sizeof(struct installMethod);
struct moduleBallLocation * secondStageModuleLocation;
+#if 0
+#if !defined(__s390__) && !defined(__s390x__)
+#define RAMDISK_DEVICE "/dev/ram"
+#else
+#define RAMDISK_DEVICE "/dev/ram2"
+#endif
+
+
int setupRamdisk(void) {
gzFile f;
static int done = 0;
@@ -133,6 +146,7 @@ int setupRamdisk(void) {
return 0;
}
+#endif
void setupRamfs(void) {
mkdirChain("/tmp/ramfs");
@@ -277,172 +291,6 @@ static void checkForHardDrives(struct knownDevices * kd, int flags) {
return;
}
-static int detectHardware(moduleInfoSet modInfo,
- char *** modules, int flags) {
- struct device ** devices, ** device;
- char ** modList;
- int numMods;
- char *driver;
-
- logMessage("probing buses");
-
- devices = probeDevices(CLASS_UNSPEC,
- BUS_PCI | BUS_SBUS,
- PROBE_ALL);
-
- logMessage("finished bus probing");
-
- if (devices == NULL) {
- *modules = NULL;
- return LOADER_OK;
- }
-
- numMods = 0;
- for (device = devices; *device; device++) numMods++;
-
- if (!numMods) {
- *modules = NULL;
- return LOADER_OK;
- }
-
- modList = malloc(sizeof(*modList) * (numMods + 1));
- numMods = 0;
-
- for (device = devices; *device; device++) {
- driver = (*device)->driver;
- if (strcmp (driver, "ignore") && strcmp (driver, "unknown")
- && strcmp (driver, "disabled")) {
- modList[numMods++] = strdup(driver);
- }
-
- freeDevice (*device);
- }
-
- modList[numMods] = NULL;
- *modules = modList;
-
- free(devices);
-
- return LOADER_OK;
-}
-
-static int agpgartInitialize(moduleList modLoaded, moduleDeps modDeps,
- moduleInfoSet modInfo, int flags) {
- struct device ** devices, *p;
- int i;
-
- if (FL_TESTING(flags)) return 0;
-
- logMessage("looking for video cards requiring agpgart module");
-
- devices = probeDevices(CLASS_VIDEO, BUS_UNSPEC, PROBE_ALL);
-
- if (!devices) {
- logMessage("no video cards found");
- return 0;
- }
-
- /* loop thru cards, see if we need agpgart */
- for (i=0; devices[i]; i++) {
- p = devices[i];
- logMessage("found video card controller %s", p->driver);
-
- /* HACK - need to have list of cards which match!! */
- if (!strcmp(p->driver, "Card:Intel 810") ||
- !strcmp(p->driver, "Card:Intel 815")) {
- logMessage("found %s card requiring agpgart, loading module",
- p->driver+5);
-
- if (mlLoadModuleSetLocation("agpgart", modLoaded, modDeps,
- modInfo, flags,
- secondStageModuleLocation)) {
- logMessage("failed to insert agpgart module");
- return 1;
- } else {
- /* only load it once! */
- return 0;
- }
- }
- }
-
- return 0;
-}
-
-/* This loads the necessary parallel port drivers for printers so that
- kudzu can autodetect and setup printers in post install*/
-static void initializeParallelPort(moduleList modLoaded, moduleDeps modDeps,
- moduleInfoSet modInfo, int flags) {
- /* JKFIXME: this can be used on other arches too... */
-#if !defined (__i386__)
- return;
-#endif
- if (FL_NOPARPORT(flags)) return;
-
- logMessage("loading parallel port drivers...");
- if (mlLoadModuleSetLocation("parport_pc", modLoaded, modDeps,
- modInfo, flags,
- secondStageModuleLocation)) {
- logMessage("failed to load parport_pc module");
- return;
- }
-}
-
-int busProbe(moduleInfoSet modInfo, moduleList modLoaded, moduleDeps modDeps,
- int justProbe, struct knownDevices * kd, int flags) {
- int i;
- char ** modList;
- char modules[1024];
-
- if (FL_NOPROBE(flags)) return 0;
-
- if (!access("/proc/bus/pci/devices", R_OK) ||
- !access("/proc/openprom", R_OK)) {
- /* autodetect whatever we can */
- if (detectHardware(modInfo, &modList, flags)) {
- logMessage("failed to scan pci bus!");
- return 0;
- } else if (modList && justProbe) {
- for (i = 0; modList[i]; i++)
- printf("%s\n", modList[i]);
- } else if (modList) {
- *modules = '\0';
-
- for (i = 0; modList[i]; i++) {
- if (i) strcat(modules, ":");
- strcat(modules, modList[i]);
- }
-
- mlLoadModuleSet(modules, modLoaded, modDeps, modInfo, flags);
-
- kdFindScsiList(kd, 0);
- kdFindNetList(kd, 0);
- } else
- logMessage("found nothing");
- }
-
- return 0;
-}
-
-
-
-/* JKFIXME: move all of this hardware setup stuff to a new file */
-static void scsiSetup(moduleList modLoaded, moduleDeps modDeps,
- moduleInfoSet modInfo, int flags,
- struct knownDevices * kd) {
- mlLoadModuleSet("sd_mod:sr_mod", modLoaded, modDeps, modInfo, flags);
-}
-
-static void ideSetup(moduleList modLoaded, moduleDeps modDeps,
- moduleInfoSet modInfo, int flags,
- struct knownDevices * kd) {
-
- /* This is fast enough that we don't need a screen to pop up */
- mlLoadModuleSet("ide-cd", modLoaded, modDeps, modInfo, flags);
-
- /* JKFIXME: I removed a kdFindIde() call here... it seems bogus */
-}
-
-
/* parses /proc/cmdline for any arguments which are important to us.
* NOTE: in test mode, can specify a cmdline with --cmdline