Changeset 2850 in MondoRescue for branches/2.2.10/mondo/src/common


Ignore:
Timestamp:
Jul 24, 2011, 4:12:44 AM (13 years ago)
Author:
Bruno Cornec
Message:

svn merge -r 2773:2849 2.2.9 in 2.2.10

  • Adds 3 binaries called potentially by udev o support USB key mount at restore time (Victor Gattegno)
  • Really support both mkisofs and genisoimage everywhere
  • Try to handle netfs_user better in all cases (NFS and SSHFS)
    • Improve logging in init script
    • Format improvement
    • Removes a warning when trying to launch udevadm and it doesn't exist (RHEL 5 e.g.)
    • Fix syntax description in mondoarchive man page for -E & -I with |
  • Adds download entries for new distro supported (Mageia, Fedora 15, Ubuntu 11.04)

-Fix mindi-get-perl-modules when perl dirs in @INC are symlinks (case on Ubuntu 11.04)

  • Fix option --findkernel in case of Xen kernel so that mondoarchive get a correct answer instead of an empty one.
  • Fix multi-media restore by umounting it before looping to ask for the next (as if already mounted, will not pass to the next alone)
  • Fix 485 by replacing a wrong call to mr_asprintf which was provoking core dumped.
  • Fix -E and -I example in man page which were lacking the '|' as separator
  • Fix #484 by adding support for the arcmsr driver (to support the Areca ARC-1220 RAID Controller)
    • Avoids error msgs if no mondo-restore.cfg file exists (when mindi used stdalone)
    • Adds the swapon feature to mindi-busybox
    • Attempt to fix Xen kernel support by avoiding to remove xen kernel fro; the possible_kernels list too early, whereas it's used afterwards to get them.
    • Fix #481 by supporting the new kbd file in latest Ubuntu 10.10+ (victor.gattegno_at_hp.com)
  • Update from Lester Wade on P2V doc including RHEL6 validation and some minor additions
  • removes telinit call in busybox o try to fix problems whn reboot at end of restore.
  • if -E option for mondoarchive was not specified, variable excp points to NULL, so string exclude_pathes contained '(null)' instead of being avoided (derived from a patch from taguchi_at_ff.iij4u.or.jp)
  • fix -maxdepth option for find command. it sould be '-maxdepth .. -name ..', not '-name .. -maxdepth ..' (patch from taguchi_at_ff.iij4u.or.jp)
  • Adds an extraversion for revision support
  • Adds support for ifconfig and ping for PXE+NFS boot for this version of mindi-busybox
  • Example of MINDI_ADDITIONAL_BOOT_PARAMS in mindi.conf added
  • fix a compilation error
  • Remove an absolute ref in the docs web page
Location:
branches/2.2.10/mondo/src/common
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • branches/2.2.10/mondo/src/common/libmondo-archive.c

    r2704 r2850  
    15751575    char *message_to_screen = NULL;
    15761576    char *sz_blank_disk = NULL;
     1577    char *isofs_cmd = NULL;
     1578    char *full_isofs_cmd = NULL;
    15771579    char *mds = NULL;
    15781580    bool cd_is_mountable;
     
    17091711        mr_asprintf(result_sz, "Call to mkisofs to make ISO (%s #%d) ", mds,  g_current_media_number);
    17101712        mr_free(mds);
     1713        if (find_home_of_exe("genisoimage")) {
     1714            mr_asprintf(&isofs_cmd, "%s", MONDO_GENISOIMAGE_CMD);
     1715        } else {
     1716            mr_asprintf(&isofs_cmd, "%s", MONDO_MKISOFS_CMD);
     1717        }
    17111718        if (bkpinfo->nonbootable_backup) {
    17121719            log_msg(1, "Making nonbootable backup");
    1713             res = eval_call_to_make_ISO(MONDO_MKISOFS"-o '_ISO_' -V _CD#_ .", destfile, g_current_media_number, message_to_screen);
     1720            mr_asprintf(full_isofs_cmd, "%s%s-o '_ISO_' -V _CD#_ .",isofs_cmd,MONDO_MKISOFS);
     1721            res = eval_call_to_make_ISO(full_isofs_cmd, destfile, g_current_media_number, MONDO_LOGFILE, message_to_screen);
     1722            mr_free(full_isofs_cmd);
    17141723        } else {
    17151724            log_msg(1, "Making bootable backup");
     
    17201729
    17211730
    1722             log_msg(1, "make_cd_use_lilo is actually %d",
    1723                     bkpinfo->make_cd_use_lilo);
     1731            log_msg(1, "make_cd_use_lilo is actually %d", bkpinfo->make_cd_use_lilo);
    17241732            if (bkpinfo->make_cd_use_lilo) {
    17251733                log_msg(1, "make_cd_use_lilo = TRUE");
    17261734#ifdef __IA64__
    17271735                log_msg(1, "IA64 --> elilo");
    1728                 res = eval_call_to_make_ISO(MONDO_MKISOFS_REGULAR_ELILO"-o '_ISO_' -V _CD#_ .", destfile, g_current_media_number, message_to_screen);
     1736                mr_asprintf(full_isofs_cmd, "%s%s-o '_ISO_' -V _CD#_ .",isofs_cmd,MONDO_MKISOFS_REGULAR_ELILO);
     1737                res = eval_call_to_make_ISO(full_isofs_cmd, destfile, g_current_media_number, MONDO_LOGFILE, message_to_screen);
     1738                mr_free(full_isofs_cmd);
    17291739#else
    17301740                log_msg(1, "Non-ia64 --> lilo");
     1741                mr_asprintf(full_isofs_cmd, "%s%s-b images/mindi-bootroot.2880.img -c boot.cat -o '_ISO_' -J -V _CD#_ .",isofs_cmd,MONDO_MKISOFS);
    17311742                    // FIXME: fixed boot size probably wrong. lilo to be removed
    1732                 res = eval_call_to_make_ISO(MONDO_MKISOFS"-b images/mindi-bootroot.2880.img -c boot.cat -o '_ISO_' -J -V _CD#_ .", destfile, g_current_media_number, message_to_screen);
     1743                res = eval_call_to_make_ISO(full_isofs_cmd, destfile, g_current_media_number, MONDO_LOGFILE, message_to_screen);
    17331744#endif
    17341745            } else {
    17351746                log_msg(1, "make_cd_use_lilo = FALSE");
    17361747                log_msg(1, "Isolinux");
    1737                 res = eval_call_to_make_ISO(MONDO_MKISOFS_REGULAR_SYSLINUX"-o '_ISO_' -V _CD#_ .", destfile, g_current_media_number, message_to_screen);
     1748                mr_asprintf(full_isofs_cmd, "%s%s-o '_ISO_' -V _CD#_ .",isofs_cmd,MONDO_MKISOFS_REGULAR_SYSLINUX);
     1749                res = eval_call_to_make_ISO(full_isofs_cmd, destfile, g_current_media_number, MONDO_LOGFILE, message_to_screen);
    17381750            }
    1739         }
     1751            mr_free(full_isofs_cmd);
     1752        }
     1753        mr_free(isofs_cmd);
    17401754        paranoid_free(message_to_screen);
    17411755
     
    30053019 * - @c manual_cd_tray
    30063020 * - @c media_size
    3007  * - @c netfs_mount
    30083021 * - @c netfs_remote_dir
    30093022 * - @c scratchdir
  • branches/2.2.10/mondo/src/common/libmondo-cli.c

    r2816 r2850  
    495495        if (strlen(bkpinfo->isodir) < 3) {
    496496            log_to_screen("Network share is not mounted. Trying to mount it for you.\n");
    497             if (strstr(bkpinfo->netfs_proto, "sshfs")) {
    498                 mr_asprintf(tmp1, "sshfs %s", bkpinfo->netfs_mount);
    499             } else if (strstr(bkpinfo->netfs_proto, "nfs")) {
    500                 mr_asprintf(tmp1, "mount %s", bkpinfo->netfs_mount);
     497            if (bkpinfo->netfs_user) {
     498                if (strstr(bkpinfo->netfs_proto, "sshfs")) {
     499                    mr_asprintf(tmp1, "sshfs %s@%s", bkpinfo->netfs_user, bkpinfo->netfs_mount);
     500                } else if (strstr(bkpinfo->netfs_proto, "nfs")) {
     501                    mr_asprintf(tmp1, "mount %s@%s", bkpinfo->netfs_user, bkpinfo->netfs_mount);
     502                } else {
     503                    log_to_screen("Protocol %s not supported yet for network backups.\n", bkpinfo->netfs_proto);
     504                    fatal_error("Bad Protocol\n");
     505                }
    501506            } else {
    502                 log_to_screen("Protocol %s not supported yet for network backups.\n", bkpinfo->netfs_proto);
    503                 fatal_error("Bad Protocol\n");
     507                if (strstr(bkpinfo->netfs_proto, "sshfs")) {
     508                    mr_asprintf(tmp1, "sshfs %s", bkpinfo->netfs_mount);
     509                } else if (strstr(bkpinfo->netfs_proto, "nfs")) {
     510                    mr_asprintf(tmp1, "mount %s", bkpinfo->netfs_mount);
     511                } else {
     512                    log_to_screen("Protocol %s not supported yet for network backups.\n", bkpinfo->netfs_proto);
     513                    fatal_error("Bad Protocol\n");
     514                }
    504515            }
    505516            i = system(tmp1);
    506517            mr_free(tmp1);
     518
    507519            if (i) {
    508520                log_to_screen("Unable to mount Network share %s. Please mount manually.\n", bkpinfo->netfs_mount);
    509521                retval++;
    510522            } else {
    511                 mr_asprintf(tmp1, "mount | grep -E \"^[%s@]*%s[/]* .*\" | cut -d' ' -f3", bkpinfo->netfs_user, bkpinfo->netfs_mount);
     523                if (bkpinfo->netfs_user) {
     524                    mr_asprintf(tmp1, "mount | grep -E \"^[%s@]*%s[/]* .*\" | cut -d' ' -f3", bkpinfo->netfs_user, bkpinfo->netfs_mount);
     525                } else {
     526                    mr_asprintf(tmp1, "mount | grep -E \"^%s[/]* .*\" | cut -d' ' -f3", bkpinfo->netfs_mount);
     527                }
    512528                mr_free(bkpinfo->isodir);
    513529                bkpinfo->isodir = call_program_and_get_last_line_of_output(tmp1,TRUE);
  • branches/2.2.10/mondo/src/common/libmondo-devices.c

    r2816 r2850  
    20192019                    mr_strcat(bkpinfo->exclude_paths,"|%s",mounted_on_dsf);
    20202020                } else {
    2021                     mr_asprintf(bkpinfo->exclude_paths,"%s",mounted_on_dsf);
     2021                    mr_asprintf(&(bkpinfo->exclude_paths),"%s",mounted_on_dsf);
    20222022                }
    20232023                if (bkpinfo->exclude_devs) {
    20242024                    mr_strcat(bkpinfo->exclude_devs,"|%s",token);
    20252025                } else {
    2026                     mr_asprintf(bkpinfo->exclude_devs,"%s",token);
     2026                    mr_asprintf(&(bkpinfo->exclude_devs),"%s",token);
    20272027                }
    20282028            }
     
    20392039                    mr_strcat(bkpinfo->exclude_paths, "|%s",not_mounted_on_dsf);
    20402040                } else {
    2041                     mr_asprintf(bkpinfo->exclude_paths,"%s",not_mounted_on_dsf);
     2041                    mr_asprintf(&(bkpinfo->exclude_paths),"%s",not_mounted_on_dsf);
    20422042                }
    20432043            }
     
    26252625    char *tmp = NULL;
    26262626    char *p = NULL;
     2627    char *q = NULL;
    26272628    char *mds = NULL;
    26282629    char *sz_size = NULL;
     
    29152916            if (bkpinfo->netfs_mount[strlen(bkpinfo->netfs_mount) - 1] == '/')
    29162917                bkpinfo->netfs_mount[strlen(bkpinfo->netfs_mount) - 1] = '\0';
    2917             mr_asprintf(command, "mount | grep \"%s \" | cut -d' ' -f3", bkpinfo->netfs_mount);
     2918            q = strchr(bkpinfo->netfs_mount, '@');
     2919            if (q != NULL) {
     2920                /* User found. Store the 2 values */
     2921                q++;
     2922                /* new netfs mount */
     2923                mr_asprintf(tmp,"%s",q);
     2924            } else {
     2925                mr_asprintf(tmp,"%s",bkpinfo->netfs_mount);
     2926            }
     2927            mr_asprintf(command, "mount | grep \"%s \" | cut -d' ' -f3", tmp);
     2928            mr_free(tmp);
     2929
    29182930            mr_free(bkpinfo->isodir);
    29192931            bkpinfo->isodir = call_program_and_get_last_line_of_output(command,TRUE);
     
    29642976        bkpinfo->netfs_mount = p;
    29652977
     2978        if (bkpinfo->netfs_user) {
     2979            strcpy(tmp1, bkpinfo->netfs_user);
     2980        } else {
     2981            strcpy(tmp1, "");
     2982        }
     2983        if (!popup_and_get_string
     2984            ("Network user", "Which user should I use if any ?",
     2985             tmp1, MAX_STR_LEN)) {
     2986            log_to_screen("User has chosen not to backup the PC");
     2987            finish(1);
     2988        }
     2989        mr_free(bkpinfo->netfs_user);
     2990        if (strcmp(tmp1, "") != 0) {
     2991            mr_asprintf(&(bkpinfo->netfs_user), "%s", tmp1);
     2992        }
     2993   
    29662994        /* Initiate bkpinfo isodir path from running environment if mount already done */
    29672995        mr_free(bkpinfo->isodir);
     
    29773005            if (bkpinfo->restore_data) {
    29783006                if (strstr(bkpinfo->netfs_proto, "sshfs")) {
    2979                     mr_asprintf(tmp, "sshfs -o ro %s %s", bkpinfo->netfs_mount, bkpinfo->isodir);
     3007                    mr_asprintf(tmp, "sshfs -o ro");
    29803008                } else {
    2981                     mr_asprintf(tmp, "mount -t %s -o nolock,ro %s %s", bkpinfo->netfs_proto, bkpinfo->netfs_mount, bkpinfo->isodir);
     3009                    mr_asprintf(tmp, "mount -t %s -o nolock,ro", bkpinfo->netfs_proto);
    29823010                }
    29833011            } else {
    29843012                if (strstr(bkpinfo->netfs_proto, "sshfs")) {
    2985                     mr_asprintf(tmp, "sshfs %s %s", bkpinfo->netfs_mount, bkpinfo->isodir);
     3013                    mr_asprintf(tmp, "sshfs");
    29863014                } else {
    2987                     mr_asprintf(tmp, "mount -t %s -o nolock %s %s", bkpinfo->netfs_proto, bkpinfo->netfs_mount, bkpinfo->isodir);
     3015                    mr_asprintf(tmp, "mount -t %s -o nolock", bkpinfo->netfs_proto);
    29883016                }
    29893017            }
     3018            if (bkpinfo->netfs_user) {
     3019                mr_strcat(tmp, "%s@", bkpinfo->netfs_user);
     3020            }
     3021            mr_strcat(tmp, "%s %s", bkpinfo->netfs_mount, bkpinfo->isodir);
    29903022            run_program_and_log_output(tmp, 3);
    29913023            mr_free(tmp);
     
    32123244            bkpinfo->zip_suffix = NULL;
    32133245        }
     3246
    32143247        bkpinfo->verify_data =
    32153248            ask_me_yes_or_no
  • branches/2.2.10/mondo/src/common/libmondo-filelist.c

    r2816 r2850  
    15831583        mr_free(tmp1);
    15841584
    1585         mr_asprintf(exclude_paths, MONDO_CACHE"|%s|%s|%s|%s|.|..|"MNT_CDROM"|"MNT_FLOPPY"|/media|/tmp|/proc|/sys|/dev/shm|"MINDI_CACHE,(excp == NULL) ? "" : excp, tmp2, (bkpinfo->tmpdir[0] == '/' && bkpinfo->tmpdir[1] == '/') ? (bkpinfo->tmpdir + 1) : bkpinfo->tmpdir, (bkpinfo->scratchdir[0] == '/' && bkpinfo->scratchdir[1] == '/') ? (bkpinfo->scratchdir + 1) : bkpinfo->scratchdir);
     1585        mr_asprintf(exclude_paths, MONDO_CACHE"|%s|%s|%s|.|..|"MNT_CDROM"|"MNT_FLOPPY"|/media|/tmp|/proc|/sys|/dev/shm|"MINDI_CACHE, tmp2, (bkpinfo->tmpdir[0] == '/' && bkpinfo->tmpdir[1] == '/') ? (bkpinfo->tmpdir + 1) : bkpinfo->tmpdir, (bkpinfo->scratchdir[0] == '/' && bkpinfo->scratchdir[1] == '/') ? (bkpinfo->scratchdir + 1) : bkpinfo->scratchdir);
     1586        if (excp != NULL) {
     1587            mr_strcat(exclude_paths,"|%s",excp);
     1588        }
     1589        mr_free(tmp2);
    15861590
    15871591        log_msg(2, "Excluding paths = '%s'", exclude_paths);
  • branches/2.2.10/mondo/src/common/libmondo-files.c

    r2705 r2850  
    11711171    mr_free(tmp);
    11721172
     1173    mr_asprintf(tmp, "%s/NETFS-SERVER-IPADDR", bkpinfo->tmpdir);
     1174    write_one_liner_data_file(tmp, netfs_server_ipaddr);
     1175    mr_free(tmp);
     1176
     1177    mr_asprintf(tmp, "%s/NETFS-SERVER-MOUNT", bkpinfo->tmpdir);
     1178    write_one_liner_data_file(tmp, bkpinfo->netfs_mount);
     1179    mr_free(tmp);
     1180
     1181    if (bkpinfo->netfs_user) {
     1182        mr_asprintf(tmp, "%s/NETFS-SERVER-USER", bkpinfo->tmpdir);
     1183        write_one_liner_data_file(tmp, bkpinfo->netfs_user);
     1184        mr_free(tmp);
     1185    }
     1186    mr_asprintf(tmp, "%s/NETFS-SERVER-PATH", bkpinfo->tmpdir);
     1187    write_one_liner_data_file(tmp, bkpinfo->netfs_remote_dir);
     1188    mr_free(tmp);
     1189
     1190    mr_asprintf(tmp, "%s/ISO-PREFIX", bkpinfo->tmpdir);
     1191    write_one_liner_data_file(tmp, bkpinfo->prefix);
     1192    mr_free(tmp);
     1193
    11731194    log_it("Finished storing Network configuration");
    11741195}
  • branches/2.2.10/mondo/src/common/libmondo-tools.c

    r2816 r2850  
    168168    char *tmp = NULL;
    169169
    170     mr_asprintf(tmp, "for i in `find /root /home -type d -name Desktop -maxdepth 2`; do file=$i/.directory; if [ -f \"$file\" ] ; then mv -f $file $file.old ; awk '{if (index($0, \"rootimagesmindi\")) { while (length($0)>2) { getline;} ; } else { print $0;};}' $file.old  > $file ; fi ; done");
     170    mr_asprintf(tmp, "for i in `find /root /home -maxdepth 2 -type d -name Desktop -maxdepth 2`; do file=$i/.directory; if [ -f \"$file\" ] ; then mv -f $file $file.old ; awk '{if (index($0, \"rootimagesmindi\")) { while (length($0)>2) { getline;} ; } else { print $0;};}' $file.old  > $file ; fi ; done");
    171171    run_program_and_log_output(tmp, 5);
    172172    mr_free(tmp);
     
    310310#endif
    311311}
    312 
    313312
    314313/**
     
    349348    char *command = NULL;
    350349    char *hostname = NULL;
     350    char *isofs_cmd = NULL;
    351351    char *ip_address = NULL;
    352352    int retval = 0;
     
    518518        mr_free(tmp);
    519519
     520        if (find_home_of_exe("genisoimage")) {
     521            mr_asprintf(isofs_cmd, "%s", MONDO_GENISOIMAGE_CMD);
     522        } else {
     523            mr_asprintf(isofs_cmd, "%s", MONDO_MKISOFS_CMD);
     524        }
    520525        if (bkpinfo->nonbootable_backup) {
    521             mr_asprintf(mondo_mkisofs_sz, MONDO_MKISOFS);
     526            mr_asprintf(mondo_mkisofs_sz, "%s%s", isofs_cmd, MONDO_MKISOFS);
    522527        } else if
    523528#ifdef __FreeBSD__
     
    528533#ifdef __IA64__
    529534    {
    530         mr_asprintf(mondo_mkisofs_sz, "%s -V _CD#_", MONDO_MKISOFS_REGULAR_ELILO);
     535        mr_asprintf(mondo_mkisofs_sz, "%s%s -V _CD#_", isofs_cmd, MONDO_MKISOFS_REGULAR_ELILO);
    531536    }
    532537#else
    533538    {
    534         mr_asprintf(mondo_mkisofs_sz, "%s -V _CD#_", MONDO_MKISOFS_REGULAR_LILO);
     539        mr_asprintf(mondo_mkisofs_sz, "%s%s -V _CD#_", isofs_cmd, MONDO_MKISOFS_REGULAR_LILO);
    535540    }
    536541#endif
    537542        else
    538543        {
    539             mr_asprintf(mondo_mkisofs_sz, "%s -V _CD#_", MONDO_MKISOFS_REGULAR_SYSLINUX);
     544            mr_asprintf(mondo_mkisofs_sz, "%s%s -V _CD#_", isofs_cmd, MONDO_MKISOFS_REGULAR_SYSLINUX);
    540545        }
    541546
    542547        mr_free(bkpinfo->call_make_iso);
     548        mr_free(isofs_cmd);
     549
    543550        if (bkpinfo->manual_cd_tray) {
    544551            if (bkpinfo->call_before_iso == NULL) {
     
    628635
    629636            *colon = '\0';
    630             hent = gethostbyname(hostname);
     637            colon = strchr(hostname, '@');
     638            if (colon) {
     639                *colon = '\0';
     640                colon++;
     641                hent = gethostbyname(colon);
     642                mr_asprintf(bkpinfo->netfs_user,"%s", hostname);
     643            } else {
     644                hent = gethostbyname(hostname);
     645            }
    631646            if (!hent) {
    632647                log_it("Can't resolve Network mount (%s): %s", hostname, hstrerror(h_errno));
Note: See TracChangeset for help on using the changeset viewer.