diff options
Diffstat (limited to 'mdk-stage1/stage1.c')
| -rw-r--r-- | mdk-stage1/stage1.c | 49 | 
1 files changed, 9 insertions, 40 deletions
| diff --git a/mdk-stage1/stage1.c b/mdk-stage1/stage1.c index 4493f35ea..94bb1e0df 100644 --- a/mdk-stage1/stage1.c +++ b/mdk-stage1/stage1.c @@ -121,7 +121,7 @@ static pid_t shell_pid = 0;  static void spawn_shell(void)  {  	int fd; -	char * shell_name[] = { "/sbin/sh", NULL }; +	char * shell_name[] = { "/bin/sh", NULL };  	log_message("spawning a shell"); @@ -225,12 +225,12 @@ static void handle_pcmcia(void)  		log_message("no pcmcia adapter found");  		return;  	} -	my_insmod("pcmcia_core", ANY_DRIVER_TYPE, NULL, 0); -	my_insmod(pcmcia_adapter, ANY_DRIVER_TYPE, NULL, 0); +	my_modprobe("pcmcia_core", ANY_DRIVER_TYPE, NULL); +	my_modprobe(pcmcia_adapter, ANY_DRIVER_TYPE, NULL);  	/* ds is an alias for pcmcia in recent 2.6 kernels             but we don't have modules.alias in install, so try to load both */ -	my_insmod("ds", ANY_DRIVER_TYPE, NULL, 0); -	my_insmod("pcmcia", ANY_DRIVER_TYPE, NULL, 0); +	my_modprobe("ds", ANY_DRIVER_TYPE, NULL); +	my_modprobe("pcmcia", ANY_DRIVER_TYPE, NULL);          /* setup a dynamic resource database for non statically mapped PCMCIA sockets */  	pcmcia_socket_startup(-1); @@ -248,8 +248,9 @@ static void handle_hid(void)  	entry_list = hid_probe();  	for (i = 0; i < entry_list.nb; i++) {  		if (entry_list.entries[i].module != NULL) -			my_insmod(entry_list.entries[i].module, ANY_DRIVER_TYPE, NULL, 0); +			my_modprobe(entry_list.entries[i].module, ANY_DRIVER_TYPE, NULL);  	} +	my_modprobe("hid_generic", ANY_DRIVER_TYPE, NULL);  } @@ -343,39 +344,8 @@ static void method_select_and_prepare(void)  }  #endif -static enum return_type create_initial_fs_symlinks(char* symlinks) -{ -        FILE *f; -        char buf[5000]; - -        if (scall(!(f = fopen(symlinks, "rb")), "fopen")) -                return RETURN_ERROR; -        while (fgets(buf, sizeof(buf), f)) { -                char oldpath[500], newpath[500]; -                buf[strlen(buf)-1] = '\0';  // trim \n -                if (sscanf(buf, "%s %s", oldpath, newpath) != 2) { -                        sprintf(oldpath, "%s%s", STAGE2_LOCATION, buf); -			sprintf(newpath, "%s", buf); -                } -		recursiveRemove_if_it_exists(newpath); -                log_message("creating symlink %s -> %s", oldpath, newpath); -                if (scall(symlink(oldpath, newpath), "symlink")) -                        return RETURN_ERROR; -        } -        fclose(f); -        return RETURN_OK; -} -  void finish_preparing(void)  { -	recursiveRemove("/init"); - -	if (create_initial_fs_symlinks(STAGE2_LOCATION "/usr/share/symlinks") != RETURN_OK) -		stg1_fatal_message("Fatal error finishing initialization."); - -	/* /tmp/syslog is used by the second init, so it must be copied now, not in stage2 */ -	/* we remove it to ensure the old one is not copied over it in stage2 */ -  #ifdef SPAWN_SHELL  	if (shell_pid != 0) {  		int fd; @@ -419,7 +389,6 @@ int main(int argc __attribute__ ((unused)), char **argv __attribute__ ((unused))  	spawn_shell();  #endif  	init_modules_insmoding(); -	init_firmware_loader();  	init_frontend("Welcome to " DISTRIB_DESCR ", " __DATE__ " " __TIME__);  	probe_that_type(VIRTIO_DEVICES, BUS_ANY); @@ -468,7 +437,7 @@ int main(int argc __attribute__ ((unused)), char **argv __attribute__ ((unused))  	if (IS_RESCUE)  		return 66; /* ask init to exec new init */ -	else -		return 0x35; /* ask init to run stage2 binary */ + +	return 0;  #endif  } | 
