]> git.ipfire.org Git - people/teissler/ipfire-2.x.git/blobdiff - src/install+setup/install/main.c
glibc: fix image, updater and filecount in installer.
[people/teissler/ipfire-2.x.git] / src / install+setup / install / main.c
index ea47593cd30e36a8f6baa75a6221ba32de1667b6..b503c8bb1747f38706517a4043255457811c85b0 100644 (file)
@@ -12,7 +12,7 @@
 #include "install.h"
 #define _GNU_SOURCE
  
-#define INST_FILECOUNT 10700
+#define INST_FILECOUNT 21000
 #define UNATTENDED_CONF "/cdrom/boot/unattended.conf"
 #define LICENSE_FILE   "/cdrom/COPYING"
 
@@ -35,19 +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", "Polski", "Русский", NULL };
-       char *shortlangnames[] = { "de", "en", "fr", "es", "pl", "ru", NULL };
-       char **langtrs[] = { de_tr, en_tr, fr_tr, es_tr, pl_tr, ru_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];
@@ -57,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];
@@ -203,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;
                }
        }
 
@@ -219,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) {
@@ -242,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 {
@@ -275,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;
@@ -329,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",
@@ -369,13 +372,20 @@ int main(int argc, char *argv[])
 
        fclose(handle);
 
-       snprintf(commandstring, STRING_SIZE, "/sbin/sfdisk -L -uM %s < /tmp/partitiontable", hdparams.devnode_disk);
+       if (disk < 2097150) {
+               // <2TB use sfdisk and normal mbr
+               snprintf(commandstring, STRING_SIZE, "/sbin/sfdisk -L -uM %s < /tmp/partitiontable", hdparams.devnode_disk);
+       } else {
+               // >2TB use parted with gpt
+               snprintf(commandstring, STRING_SIZE, "/usr/sbin/parted -s %s mklabel gpt mkpart boot ext2 1M 64M mkpart swap linux-swap 64M 1000M mkpart root ext4 1000M 5000M mkpart var ext4 5000M 100%% disk_set pmbr_boot on", hdparams.devnode_disk);
+       }
+
        if (runcommandwithstatus(commandstring, ctr[TR_PARTITIONING_DISK]))
        {
                errorbox(ctr[TR_UNABLE_TO_PARTITION]);
                goto EXIT;
        }
-       
+
        if (fstype == EXT2) {
 //             mysystem("/sbin/modprobe ext2");
                sprintf(mkfscommand, "/sbin/mke2fs -T ext2");
@@ -430,7 +440,7 @@ int main(int argc, char *argv[])
        mkdir("/harddisk/boot", S_IRWXU|S_IRWXG|S_IRWXO);
        mkdir("/harddisk/var", S_IRWXU|S_IRWXG|S_IRWXO);
        mkdir("/harddisk/var/log", S_IRWXU|S_IRWXG|S_IRWXO);
-       
+
        snprintf(commandstring, STRING_SIZE, "/bin/mount %s1 /harddisk/boot", hdparams.devnode_part);
        if (runcommandwithstatus(commandstring, ctr[TR_MOUNTING_BOOT_FILESYSTEM]))
        {
@@ -517,7 +527,7 @@ int main(int argc, char *argv[])
         */
        FILE *f = NULL;
        if (f = fopen("/harddisk/boot/grub/device.map", "w")) {
-               fprintf(f, "(hd0) %s\n", hdparams.devnode_part);
+               fprintf(f, "(hd0) %s\n", hdparams.devnode_disk);
                fclose(f);
        }
 
@@ -594,12 +604,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 {