X-Git-Url: http://git.ipfire.org/?a=blobdiff_plain;f=src%2Finstall%2Bsetup%2Finstall%2Fmain.c;h=8525e535502764e2e78b187a25b5ea2c56031333;hb=a606377ea89d5aa4d8e01022778dae5ad929d800;hp=0172f8b7b0c73de481bf3b4885ef2d39d5d89cd2;hpb=215bd18d84536111e8f44067d4ce96df705af522;p=people%2Fteissler%2Fipfire-2.x.git diff --git a/src/install+setup/install/main.c b/src/install+setup/install/main.c index 0172f8b7b..8525e5355 100644 --- a/src/install+setup/install/main.c +++ b/src/install+setup/install/main.c @@ -1,3 +1,4 @@ + /* SmoothWall install program. * * This program is distributed under the terms of the GNU General Public @@ -11,8 +12,9 @@ #include "install.h" #define _GNU_SOURCE -#define INST_FILECOUNT 8400 +#define INST_FILECOUNT 14400 #define UNATTENDED_CONF "/cdrom/boot/unattended.conf" +#define LICENSE_FILE "/cdrom/COPYING" #define EXT2 0 #define EXT3 1 @@ -33,17 +35,22 @@ extern char *en_tr[]; extern char *es_tr[]; extern char *de_tr[]; extern char *fr_tr[]; +extern char *nl_tr[]; +extern char *pl_tr[]; +extern char *ru_tr[]; +extern char *tr_tr[]; int main(int argc, char *argv[]) { char discl_msg[40000] = "Disclaimer\n"; - char *langnames[] = { "Deutsch", "English", "Français", "Español", NULL }; - char *shortlangnames[] = { "de", "en", "fr", "es", NULL }; - char **langtrs[] = { de_tr, en_tr, fr_tr, es_tr, NULL }; + char *langnames[] = { "Deutsch", "English", "Français", "Español", "Nederlands", "Polski", "Русский", "Türkçe", NULL }; + char *shortlangnames[] = { "de", "en", "fr", "es", "nl", "pl", "ru", "tr", NULL }; + char **langtrs[] = { de_tr, en_tr, fr_tr, es_tr, nl_tr, pl_tr, ru_tr, tr_tr, NULL }; char hdletter; char harddrive[30], sourcedrive[5]; /* Device holder. */ + char harddrive_info[STRING_SIZE]; /* Additional infos about target */ struct devparams hdparams, cdromparams; /* Params for CDROM and HD */ int rc = 0; char commandstring[STRING_SIZE]; @@ -53,7 +60,6 @@ int main(int argc, char *argv[]) int choice; int i; int found = 0; - int firstrun = 0; char shortlangname[10]; char message[1000]; char title[STRING_SIZE]; @@ -117,19 +123,9 @@ int main(int argc, char *argv[]) } } - // Read gpl ... - if (! (copying = fopen("/COPYING", "r"))) - { - fprintf(flog, "Couldn't open gpl (/COPYING)\n"); - sprintf(discl_msg, "Couldn't open gpl (/COPYING)\n"); - } else { - fread(discl_msg, 1, 40000, copying); - fclose(copying); - } - // Load common modules mysystem("/sbin/modprobe iso9660"); // CDROM - mysystem("/sbin/modprobe ext2"); // Boot patition +// mysystem("/sbin/modprobe ext2"); // Boot patition mysystem("/sbin/modprobe vfat"); // USB key /* German is the default */ @@ -154,11 +150,6 @@ int main(int argc, char *argv[]) if (!unattended) { sprintf(message, ctr[TR_WELCOME], NAME); newtWinMessage(title, ctr[TR_OK], message); - - if (disclaimerbox(discl_msg)==0) { - errorbox(ctr[TR_LICENSE_NOT_ACCEPTED]); - goto EXIT; - } } mysystem("/bin/mountsource.sh"); @@ -175,7 +166,23 @@ int main(int argc, char *argv[]) fgets(sourcedrive, 5, handle); fprintf(flog, "Source drive: %s\n", sourcedrive); fclose(handle); - + + if (!unattended) { + // Read the license file. + if (!(copying = fopen(LICENSE_FILE, "r"))) { + sprintf(discl_msg, "Could not open license file: %s\n", LICENSE_FILE); + fprintf(flog, discl_msg); + } else { + fread(discl_msg, 1, 40000, copying); + fclose(copying); + + if (disclaimerbox(discl_msg)==0) { + errorbox(ctr[TR_LICENSE_NOT_ACCEPTED]); + goto EXIT; + } + } + } + i = 0; while (found == 0) { i++; @@ -198,13 +205,8 @@ int main(int argc, char *argv[]) found = 1; break; case 10: // No harddisk found - if (firstrun == 1) { - errorbox(ctr[TR_NO_HARDDISK]); - goto EXIT; - } - // Do this if the kudzu-scan fails... - runcommandwithstatus("/bin/probehw.sh deep-scan", ctr[TR_PROBING_HARDWARE]); - firstrun = 1; + errorbox(ctr[TR_NO_HARDDISK]); + goto EXIT; } } @@ -214,6 +216,12 @@ int main(int argc, char *argv[]) } fgets(harddrive, 30, handle); fclose(handle); + if ((handle = fopen("/tmp/dest_device_info", "r")) == NULL) { + sprintf(harddrive_info, "%s", harddrive); + } + fgets(harddrive_info, 70, handle); + fclose(handle); + /* load unattended configuration */ if (unattended) { @@ -237,7 +245,7 @@ int main(int argc, char *argv[]) fprintf(flog, "Destination drive: %s\n", hdparams.devnode_disk); - sprintf(message, ctr[TR_PREPARE_HARDDISK], hdparams.devnode_disk); + sprintf(message, ctr[TR_PREPARE_HARDDISK], harddrive_info); if (unattended) { hardyn = 1; } else { @@ -270,7 +278,7 @@ int main(int argc, char *argv[]) ctr[TR_CANCEL], NULL); } else { rc = 1; - fstype = EXT3; + fstype = EXT4; } if (rc == 2) goto EXIT; @@ -324,7 +332,7 @@ int main(int argc, char *argv[]) /* Calculating the amount of free space */ - boot_partition = 20; /* in MB */ + boot_partition = 64; /* in MB */ system_partition = disk - ( root_partition + swap_file + boot_partition ); fprintf(flog, ", boot = %ld, swap = %ld, mylog = %ld, root = %ld\n", @@ -370,18 +378,18 @@ int main(int argc, char *argv[]) errorbox(ctr[TR_UNABLE_TO_PARTITION]); goto EXIT; } - + if (fstype == EXT2) { - mysystem("/sbin/modprobe ext2"); +// mysystem("/sbin/modprobe ext2"); sprintf(mkfscommand, "/sbin/mke2fs -T ext2"); } else if (fstype == REISERFS) { mysystem("/sbin/modprobe reiserfs"); sprintf(mkfscommand, "/sbin/mkreiserfs -f"); } else if (fstype == EXT3) { - mysystem("/sbin/modprobe ext3"); +// mysystem("/sbin/modprobe ext3"); sprintf(mkfscommand, "/sbin/mke2fs -T ext3"); } else if (fstype == EXT4) { - mysystem("/sbin/modprobe ext4"); +// mysystem("/sbin/modprobe ext4"); sprintf(mkfscommand, "/sbin/mke2fs -T ext4"); } @@ -460,9 +468,6 @@ int main(int argc, char *argv[]) /* Save language und local settings */ write_lang_configs(shortlangname); - /* Rename uname */ - rename ("/harddisk/bin/uname.bak", "/harddisk/bin/uname"); - /* mount proc filesystem */ mysystem("mkdir /harddisk/proc"); mysystem("/bin/mount --bind /proc /harddisk/proc"); @@ -510,6 +515,15 @@ int main(int argc, char *argv[]) system("/bin/sed -e 's#/harddisk#/#g' -e 's#//#/#g' < /proc/mounts > /harddisk/etc/mtab"); + /* + * Generate device.map to help grub finding the device to install itself on. + */ + FILE *f = NULL; + if (f = fopen("/harddisk/boot/grub/device.map", "w")) { + fprintf(f, "(hd0) %s\n", hdparams.devnode_disk); + fclose(f); + } + snprintf(commandstring, STRING_SIZE, "/usr/sbin/chroot /harddisk /usr/sbin/grub-install --no-floppy %s", hdparams.devnode_disk); if (runcommandwithstatus(commandstring, ctr[TR_INSTALLING_GRUB])) { @@ -583,12 +597,6 @@ EXIT: fclose(flog); newtFinished(); - if (unattended) { - // Remove Setup autorun after boot - if (system("rm -f /harddisk/etc/rc.d/rcsysinit.d/S75firstsetup")) - printf("Unable to disable setup autorun.\n"); - } - if (system("/bin/umount /harddisk/proc")) printf("Unable to umount /harddisk/proc.\n"); } else {