Changeset 576 in MondoRescue for branches


Ignore:
Timestamp:
May 25, 2006, 2:00:37 PM (18 years ago)
Author:
bcornec
Message:

2.08 synced with stable as of r575
VERSION files updated

Location:
branches/2.0.8
Files:
13 deleted
101 edited
11 copied

Legend:

Unmodified
Added
Removed
  • branches/2.0.8/mindi-kernel/VERSION

    r575 r576  
    1 stable
     12.0.8
  • branches/2.0.8/mindi/ChangeLog

    r438 r576  
    22
    33MINDI CHANGES
     4
     51.0.8 (2006-05-25)
     6- new build process (Bruno Cornec)
     7- Fix a bug when a disk less than 2.8 MB can be built, to
     8  include enough modules to support SCSI cds
     9  (Bruno Cornec)
     10- Fix a bug in .spec for RPM build (%attr now unused)
     11  (Bruno Cornec)
     12- Add support for LABEL on swap partitions
     13  (Michel Loiseleur + Julien Pinon)
     14- Attempt to fix bug 6827 (addition of a script for
     15  busybox udhcpc to support pxe/dhcp restore)
     16  (Bruno Cornec)
     17- support of dm and LVM v2 (Andree Leidenfrost)
     18- analyze-my-lvm is under $MINDI_LIB (Andree Leidenfrost)
     19- Fix a bug introduced by trying to avoid an error
     20  message when modprobe.d doesn't exist
     21  (Johannes Franken)
     22- Fix for Bug #6975 (/net is now excluded from kernel search location)
     23  (Bruno Cornec)
     24- Allow 5670 MB fllopy disks for lilo as well (Bruno Cornec)
     25- Add missing net modules (Klaus Ade Johnstad)
    426
    5271.0.7 (2006-03-10)
  • branches/2.0.8/mindi/README.ia64

    r196 r576  
    1919Note that parted2fdisk.pl supports currently only the -l and -s options as well as the commands p,n,d,w,t,a,q
    2020
    21 Please report any problem around that tool to bcornec@users.berlios.de
     21Please report any problem around that tool to bruno@mondorescue.org
    2222Bruno.
    2323
  • branches/2.0.8/mindi/README.pxe

    r256 r576  
    2727During boot mondorestore will start your NFS configuration and mount mondo's content from the network rather than from a physical media. You may alter the IP configuration stored from the original machine by passing the ipconf option describing respectively the IP address, netmask, broadcast and default gateway you want to setup for the machine, separated by ':'. Or alternatively, you may specify the dhcp keyword so that a DhCP request is made to get those information. On some configurations, you may also want to increase the number of ping queries made before the NFS mount, which is of 3 by default, using the ping option and give the number you want.
    2828
    29 Please report any problem around that tool to bcornec@users.berlios.de
     29Please report any problem around that tool to bruno@mondorescue.org
    3030
    31312005-12-18 new ipconf and ping option
  • branches/2.0.8/mindi/aux-tools/sbin

    • Property svn:unix-mode set to mindi/aux-tools/
  • branches/2.0.8/mindi/aux-tools/usr

    • Property svn:unix-mode set to mindi/aux-tools/
  • branches/2.0.8/mindi/aux-tools/usr/share

    • Property svn:unix-mode set to mindi/aux-tools/
  • branches/2.0.8/mindi/aux-tools/usr/share/terminfo

    • Property svn:unix-mode set to mindi/aux-tools/
  • branches/2.0.8/mindi/aux-tools/usr/share/terminfo/l

    • Property svn:unix-mode set to mindi/aux-tools/
  • branches/2.0.8/mindi/distributions/gentoo/mindi.ebuild

    r535 r576  
    1 # Copyright 1999-2005 Gentoo Foundation
     1# Copyright 1999-2004 Gentoo Foundation
    22# Distributed under the terms of the GNU General Public License v2
     3# $Header: $
     4
    35# $Id$
    46
    57DESCRIPTION="A program that creates emergency boot disks/CDs using your kernel, tools and modules."
    68HOMEPAGE="http://www.mondorescue.org"
    7 SRC_URI="ftp://ftp.mondorescue.org/src/${P}.tgz"
     9SRC_URI="ftp://ftp.mondorescue.org/src/${PVR}.tar.gz"
    810
    911LICENSE="GPL-2"
     
    1416DEPEND="virtual/libc"
    1517RDEPEND=">=app-arch/bzip2-0.9
    16         >=sys-apps/mindi-kernel-1.0-r1
    1718        sys-libs/ncurses
    1819        sys-devel/binutils
     
    2728    export PREFIX="/usr"
    2829    export CONFDIR="/etc"
     30    export DONT_RELINK=1
    2931    export RPMBUILDMINDI="true"
    3032    ./install.sh
  • branches/2.0.8/mindi/distributions/mandriva/spec.m4

    r388 r576  
    22dnl
    33dnl SSS is replaced by the source package format
    4 define(`SSS', `%{name}-%{version}.tar.bz2')dnl
     4define(`SSS', `ftp://ftp.mondorescue.org/src/%{name}-%{version}-%{tag}.tar.bz2')dnl
    55dnl DDD is replaced by the list of dependencies specific to that distro
    6 define(`DDD', `%{addreqb}, which, grep >= 2.5')dnl
     6define(`DDD', `, which, grep >= 2.5')dnl
    77dnl GRP is replaced by the RPM group of apps
    88define(`GRP', `Archiving/Backup')dnl
  • branches/2.0.8/mindi/distributions/redhat/spec.m4

    r495 r576  
    22dnl
    33dnl SSS is replaced by the source package format
    4 define(`SSS', ftp://ftp.mondorescue.org/src/%{name}-%{version}.tgz)dnl
     4define(`SSS', `ftp://ftp.mondorescue.org/src/%{name}-%{version}-%{tag}.tar.gz')dnl
    55dnl DDD is replaced by the list of dependencies specific to that distro
    6 define(`DDD', %{addreqb}, which, grep >= 2.5)dnl
     6define(`DDD', `, which, grep >= 2.5')dnl
    77dnl GRP is replaced by the RPM group of apps
    8 define(`GRP', Applications/Archiving)dnl
     8define(`GRP', `Applications/Archiving')dnl
  • branches/2.0.8/mindi/distributions/rpm/mindi.spec

    r495 r576  
    22# $Id$
    33#
    4 %define name    mindi
    5 %define version VVV
    64%define mrel    RRR
    7 %define src     SSS
    8 %define grp     GRP
    9 %define addreqb bzip2 >= 0.9, mkisofs, ncurses, binutils, gawk, dosfstools
    10 %define addreq  DDD
    11 %define rel     %{mrel}
     5%define tag     TTT
    126
    137Summary:    Mindi creates emergency boot disks/CDs using your kernel, tools and modules
    14 Name:       %name
    15 Version:    %version
    16 Release:    %rel
     8Name:       mindi
     9Version:    VVV
     10Release:    %mrel
    1711License:    GPL
    18 Group:      %{grp}
     12Group:      GRP
    1913Url:        http://www.mondorescue.org
    20 Source:     %{src}
     14Source:     SSS
    2115BuildRoot:  %{_tmppath}/%{name}-%{version}-%{release}-root-%(id -u -n)
    22 Requires:   %{addreq}
    23 Epoch:      %(echo EEE | cut -d- -f1 | sed "s~M~~")
     16Requires:   bzip2 >= 0.9, mkisofs, ncurses, binutils, gawk, dosfstools DDD
    2417# Not on all systems
    2518#Conflicts: bonnie++
     
    3225
    3326%prep
    34 %setup -n %name-%{version}
     27%setup -n %name-%{version}-%{tag}
    3528
    3629%build
     
    5952
    6053%files
    61 %defattr(644,root,root,755)
    6254%config(noreplace) %{_sysconfdir}/mindi
    6355%config(noreplace) %{_sysconfdir}/mindi/deplist.txt
     
    6557%{_mandir}/man8/*
    6658%{_libdir}/mindi
    67 %attr(755,root,root) %{_sbindir}/*
    68 %attr(755,root,root) %{_libdir}/mindi/aux-tools/sbin/*
    69 %attr(755,root,root) %{_libdir}/mindi/rootfs/bin/*
    70 %attr(755,root,root) %{_libdir}/mindi/rootfs/sbin/*
     59%{_sbindir}/*
    7160
    7261%changelog
  • branches/2.0.8/mindi/distributions/suse/spec.m4

    r401 r576  
    22dnl
    33dnl SSS is replaced by the source package format
    4 define(`SSS', %{name}-%{version}.tgz)dnl
     4define(`SSS', `ftp://ftp.mondorescue.org/src/%{name}-%{version}-%{tag}.tar.gz')dnl
    55dnl DDD is replaced by the list of dependencies specific to that distro
    6 define(`DDD', %{addreqb}, syslinux)dnl
     6define(`DDD', `, syslinux')dnl
    77dnl GRP is replaced by the RPM group of apps
    8 define(`GRP', Productivity/Archiving/Backup)dnl
     8define(`GRP', `Productivity/Archiving/Backup')dnl
  • branches/2.0.8/mindi/mindi

    r528 r576  
    702702    pwd=`pwd`
    703703    if [ "$YOUR_KERNEL_SUCKS" ] ; then
    704     cd $TMP_ROOT
    705     else
    706     cd /
     704        cd $TMP_ROOT
     705    else
     706        cd /
    707707    fi
    708708    if [ ! -e "$1" ] ; then
    709     LogIt "Warning - cannot search specific path '$1'\n"
    710     return 1
     709        LogIt "Warning - cannot search specific path '$1'\n"
     710        return 1
    711711    fi
    712712    modpaths=`find $1 -name $2.*o -type f`
     
    12221222    echo "echo -en \"Loading your modules...\"" >> $outfile
    12231223    if [ "$YOUR_KERNEL_SUCKS" ] ; then
    1224     kver=$FAILSAFE_KVER
    1225     cd $TMP_ROOT
    1226     searchpath=lib/modules/$kver
     1224        kver=$FAILSAFE_KVER
     1225        cd $TMP_ROOT
     1226        searchpath=lib/modules/$kver
    12271227    else
    12281228###
     
    12391239### Sq-Modification end
    12401240###
    1241     searchpath=/lib/modules/$kver
     1241        searchpath=/lib/modules/$kver
    12421242    fi
    12431243   
     
    27802780    old_pwd=`pwd`
    27812781    if [ "$YOUR_KERNEL_SUCKS" ] ; then
    2782     cd $TMP_ROOT
    2783     floppy_modules_path=lib/modules/$FAILSAFE_KVER
    2784     else
    2785     cd /
     2782        cd $TMP_ROOT
     2783        floppy_modules_path=lib/modules/$FAILSAFE_KVER
     2784    else
     2785        cd /
    27862786###
    27872787### Sq-Modification... Use kernel name in module path if specified.
     
    27902790        if [ "${kernelname}" != "" ]
    27912791        then
    2792           floppy_modules_path=lib/modules/${kernelname}
     2792            floppy_modules_path=lib/modules/${kernelname}
    27932793        else
    2794           floppy_modules_path=lib/modules/`uname -r`
     2794            floppy_modules_path=lib/modules/`uname -r`
    27952795        fi
    27962796###
     
    28002800    floppy_modules=""
    28012801    if [ "$disksize" -lt "2880" ] ; then
    2802         list_of_groovy_mods="$FLOPPY_MODS `WhichOfTheseModulesAreLoaded "$SCSI_MODS"`"
     2802        list_of_groovy_mods="$FLOPPY_MODS $IDE_MODS ide-scsi sr_mod `WhichOfTheseModulesAreLoaded "$SCSI_MODS"`"
    28032803    else
    28042804        list_of_groovy_mods="$CDROM_MODS `WhichOfTheseModulesAreLoaded "$SCSI_MODS"`"
     
    28152815    [ -e "$floppy_modules_path" ] || LogIt "path $floppy_modules_path does not exist.\n If you're not using a modular kernel then you're NUTS.\n"
    28162816    for i in $list_of_groovy_mods ; do
    2817     floppy_modules="$floppy_modules `FindSpecificModuleInPath $floppy_modules_path $i`"
     2817        floppy_modules="$floppy_modules `FindSpecificModuleInPath $floppy_modules_path $i`"
    28182818    done
    28192819    for i in $floppy_modules ; do
    28202820        [ -e "$i" ] && s=`du -sk $i | cut -f1` || s=""
    2821     [ "$YOUR_KERNEL_SUCKS" ] && i=$TMP_ROOT/$i
    2822     echo "Adding $i ($s KB) to the rootfs" >> $LOGFILE
    2823     cp -df $i $mountpoint/ || LogIt "Unable to copy $i to $mountpoint\n"
    2824     [ "`echo "$i" | fgrep ".gz"`" ] && gunzip -f $mountpoint/`basename $i`
     2821        [ "$YOUR_KERNEL_SUCKS" ] && i=$TMP_ROOT/$i
     2822        echo "Adding $i ($s KB) to the rootfs" >> $LOGFILE
     2823        cp -df $i $mountpoint/ || LogIt "Unable to copy $i to $mountpoint\n"
     2824        [ "`echo "$i" | fgrep ".gz"`" ] && gunzip -f $mountpoint/`basename $i`
    28252825    done
    28262826#    if [ -e "/dev/.devfsd" ] ; then
  • branches/2.0.8/mindi/parted2fdisk.pl

    r221 r576  
    44#
    55# parted2fdisk: fdisk like interface for parted
    6 # [developped for mindi/mondo http://mondorescue.berlios.de]
     6# [developped for mindi/mondo http://www.mondorescue.org]
    77#
    88# Aims to be architecture independant (i386/ia64)
  • branches/2.0.8/mindi/rootfs/bin

    • Property svn:unix-mode set to mindi/rootfs/
  • branches/2.0.8/mindi/rootfs/dev

    • Property svn:unix-mode set to mindi/rootfs/
  • branches/2.0.8/mindi/rootfs/etc

    • Property svn:unix-mode set to mindi/rootfs/
  • branches/2.0.8/mindi/rootfs/lib

    • Property svn:unix-mode set to mindi/rootfs/
  • branches/2.0.8/mindi/rootfs/proc

    • Property svn:unix-mode set to mindi/rootfs/
  • branches/2.0.8/mindi/rootfs/root

    • Property svn:unix-mode set to mindi/rootfs/
  • branches/2.0.8/mindi/rootfs/sbin

    • Property svn:unix-mode set to mindi/rootfs/
  • branches/2.0.8/mindi/rootfs/tmp

    • Property svn:unix-mode set to mindi/rootfs/
  • branches/2.0.8/mindi/rootfs/usr

    • Property svn:unix-mode set to mindi/rootfs/
  • branches/2.0.8/mindi/rootfs/usr/X11R6

    • Property svn:unix-mode set to mindi/rootfs/
  • branches/2.0.8/mindi/rootfs/usr/X11R6/bin

    • Property svn:unix-mode set to mindi/rootfs/
  • branches/2.0.8/mindi/rootfs/usr/X11R6/lib

    • Property svn:unix-mode set to mindi/rootfs/
  • branches/2.0.8/mindi/rootfs/usr/bin

    • Property svn:unix-mode set to mindi/rootfs/
  • branches/2.0.8/mindi/rootfs/usr/lib

    • Property svn:unix-mode set to mindi/rootfs/
  • branches/2.0.8/mindi/rootfs/usr/local

    • Property svn:unix-mode set to mindi/rootfs/
  • branches/2.0.8/mindi/rootfs/usr/local/bin

    • Property svn:unix-mode set to mindi/rootfs/
  • branches/2.0.8/mindi/rootfs/usr/local/sbin

    • Property svn:unix-mode set to mindi/rootfs/
  • branches/2.0.8/mindi/rootfs/usr/sbin

    • Property svn:unix-mode set to mindi/rootfs/
  • branches/2.0.8/mindi/rootfs/usr/share

    • Property svn:unix-mode set to mindi/rootfs/
  • branches/2.0.8/mindi/rootfs/usr/share/udhcpc

    • Property svn:unix-mode set to mindi/rootfs/
  • branches/2.0.8/mindi/rootfs/var

    • Property svn:unix-mode set to mindi/rootfs/
  • branches/2.0.8/mindi/rootfs/var/log

    • Property svn:unix-mode set to mindi/rootfs/
  • branches/2.0.8/mindi/rootfs/var/run

    • Property svn:unix-mode set to mindi/rootfs/
  • branches/2.0.8/mondo-doc/VERSION

    r547 r576  
    1 stable
     12.0.8
  • branches/2.0.8/mondo/ChangeLog

    r438 r576  
    22
    33MONDO CHANGES
     4
     52.0.8 (2006-05-25)
     6- new build process (Bruno Cornec)
     7- Fix a bug in .spec for RPM build (%attr now unused)
     8  (Bruno Cornec)
     9- Support of dm and LVM v2 (Andree Leidenfrost)
     10- New mr_strtok functionn added and used for dm support (Andree Leidenfrost)
     11- Complete doc is now a separate package. mondo still contains the
     12  man pages and howto in minimal useful formats
     13  (Bruno Cornec)
     14- HOWTO now contains a new chapter on unattended support for mondo
     15- Increase size (4 times) of include|exclude variables
     16- Fix a bug on -I and -E not working with multiple parameters
     17- Fix a bug in verify for NFS by swapping nfs_remote_dir and isodir when
     18  assembling name for image file to verify
     19  (Andree Leidenfrost)
     20- Fix mondo when restoring filenames containing blanks
     21  (still a problem for filenames with ')
     22  (Bruno Cornec)
     23- Fix a RPM generation bug for rh7.3 (i386-redhat-linux prefix for binaries)
     24  (Bruno Cornec)
    425
    5262.0.7 (2006-03-10)
  • branches/2.0.8/mondo/configure.in

    r519 r576  
    11dnl Autoconfigure file for Mondo Rescue v2.0x
    2 dnl Mondo by Hugo Rabson
     2dnl Mondo by Mondo dev team
    33dnl This script by Joshua Oreman
    44dnl
  • branches/2.0.8/mondo/distributions/gentoo/mondo.ebuild

    r535 r576  
    1 # Copyright 1999-2005 Gentoo Foundation
     1# Copyright 1999-2004 Gentoo Foundation
    22# Distributed under the terms of the GNU General Public License v2
     3# $Header: $
     4
    35# $Id$
    46
     
    79DESCRIPTION="The premier GPL disaster recovery solution."
    810HOMEPAGE="http://www.mondorescue.org"
    9 SRC_URI="ftp://ftp.mondorecue.org/src/${PN/-rescue/}-${PV}.tgz"
     11SRC_URI="ftp://ftp.mondorecue.org/src/${PN/-rescue/}-${PV}-${PR}.tgz"
    1012
    1113LICENSE="GPL-2"
     
    2729    >=sys-boot/syslinux-1.52"
    2830
    29 S=${WORKDIR}/${PN/-rescue/}-${PV}
     31S=${WORKDIR}/${PN/-rescue/}-${PV}-${PR}
    3032
    3133src_unpack() {
     
    3840    elibtoolize
    3941    econf || die "Configuration failed"
    40     emake || die "Make failed"
    41     #make VERSION=VVV CFLAGS="-D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_REENTRANT"
     42    emake VERSION=VVV || die "Make failed"
    4243}
    4344
    4445src_install() {
    45     #make install DESTDIR=${D} || die "make install failed"
    46     einstall || die "Install failed"
     46    make install DESTDIR=${D} || die "make install failed"
     47    #einstall || die "Install failed"
    4748    exeinto /usr/share/mondo
    4849    doexe mondo/autorun
     
    5455    einfo "Or visit the website @ ${HOMEPAGE}"
    5556    echo
    56     ewarn "This package is still in unstable."
     57    ewarn "This package is a new version after a long gap."
    5758    ewarn "Please report bugs to http://bugs.gentoo.org/"
    5859    ewarn "However, please do an advanced query to search for bugs"
  • branches/2.0.8/mondo/distributions/mandriva/changelog

    r424 r576  
    99- Add -p option
    1010
    11 * Tue May 03 2005 Hugo Rabson <hugorabson@msn.com> 2.04_cvs_20050503
    12 
    13 - made mondo more clever about finding its home. Avoids mondo considering
    14   directories like '/usr/share/doc/momdo' as its home.
    15 
    16 * Wed Aug 04 2004 Hugo Rabson <hugorabson@msn.com> 2.03
    17 
    18 - test sanity of user-specified tempdir
    19 - better SLES8 support
    20 
    21 * Mon Jun 28 2004 Hugo Rabson <hugorabson@msn.com> 2.02
    22 
    23 - instead of using 'dd' to erase partition table, delete existing
    24   partitions w/ the same call to fdisk that is used to create the
    25   new partitions; this should avoids locking up the partition table
    26 - set bootable partition in the above same call to fdisk, for
    27   the same reason (avoids locking up the partition table)
    28 - better software RAID support
    29 - mount ext3 partitions as ext2 when restoring - better for Debian
    30 - better star, ACL support
    31 - added ACL, xattr support for afio users
    32 
    33 * Sat Jun 26 2004 Hugo Rabson <hugorabson@msn.com> 2.01
    34 
    35 - fixed cvs for SuSE systems
    36 - fixed NTFS backup/restore bug relating to partimagehack
    37   log file overflow and NTFS v non-NTFS differentiation
    38 - more reliable extraction of config info from CDs, floppies
    39 - better support of ISO dirs at restore-time (Conor Daly)
    40 - fixed spec file for SuSE users
    41 - added ldconfig to install section
    42 
    43 * Sat Jun 19 2004 Hugo Rabson <hugorabson@msn.com> 2.00
    44 
    45 - first 2.0 release
    46 - updated grub-install.patched to support SuSE and Red Hat
    47 - call 'mt' to set block size to 32K before opening in/out tape
    48 - updated mondo-prep.c to create each disk's partitions all at once
    49   (one call per drive) instead of one call to fdisk per partition
    50 - when extracting cfg file and mountlist from all.tar.gz (tape copy),
    51   use block size of INTERNAL_TAPE_BLK_SIZE, not TAPE_BLOCK_SIZE
    52 - added star and rudimentary SELinux support
    53 - fixed lots of bugs
    54 - all logging now goes to /var/log/mondo-archive.log, with symlink
    55   to /tmp/mondo-restore.log for restore-time log-tracking
    56 - added grub-install.patched
    57 - removed embleer & other binaries
    58 - added '-b' to specify block size
    59 - added '-R' for star support
    60 
    61 * Thu Mar 25 2004 Bruno Cornec <Bruno.Cornec@hp.com> 1.7_cvs-20040325
    62 
    63 - ia64 fixes
    64 
    65 * Fri Nov 07 2003 Joshua Oreman <oremanj@get-linux.org> 1.7_cvs-20031107
    66 
    67 - fixed symbolic links for libraries
    68 - added support for boot/root multi floppies
    69 
    70 - added kdelibs as xmondo dependency
    71 - added xmondo pixmap installation
    72 - better find_cdrom_device(), to cope w/ multiple CD writers
    73 - fixed -m and -Vc flags
    74 - fixed NTFS support!
    75 - bootable CD uses native, not El Torito, support now
    76 - removed mondo-makefilelist
    77 - added 2.6 kernel support
    78 - if 2.6 kernel, insist that the user specify CD device
    79 - drop Embleer; insist on ms-sys and parted if Windows partition
    80 
    81 * Wed Nov 05 2003 Jesse Keating <jkeating@j2solutions.net> 1.7_cvs-20031105.1
    82 
    83 - added -devel package
    84 
    85 * Tue Nov 04 2003 Jesse Keating <jkeating@j2solutions.net> 1.7_cvs-20031104.1
    86 
    87 - made xmondo a second package
    88 - added ability to specify --without xmondo at build time
    89 
    90 * Sun Nov 02 2003 Jesse Keating <jkeating@j2solutions.net> 1.7_cvs-20031102.1
    91 
    92 - Clean up, added spanish translation
    93 - Set prefix to be /usr
    94 - added/fixed Requires
    95 - remove CVS directories prior to building
    96 
    97 * Thu Oct 23 2003 Hugo Rabson <hugorabson@msn.com> 1.75_cvs_20031023
    98 
    99 - nothing yet
    100 
    101 * Wed Oct 22 2003 Hugo Rabson <hugorabson@msn.com> 1.75
    102 
    103 - fixed chmod/chown bug (Jens Richter)
    104 - ask user to confirm NFS mountpoint in Interactive Mode
    105 - rewritten format_everything() to make sure LVMs, RAIDs and
    106   regular partitions are prepped in the correct order
    107 - better magicdev support
    108 - rewritten external binary caller subroutine
    109 - DVD support added
    110 - better backup-time control gui; offer to exclude nfs if appl.
    111 - fixed multi-tape support
    112 - re-implemented -D and -J
    113 - fixed bug in extract_config_file_from_ramdisk() which
    114   affected tape+floppy users
    115 - updated is_incoming_block_valid() to make it
    116   return end-of-tape if >300 flotsam blocks
    117 - unmount CD-ROM before burning (necessary for RH8/9)
    118 - fixed some stray assert()'s
    119 - fixed bug in grub-MR (Christian)
    120 - make user remove floppy/CD before restoring interactively from tape
    121 - fixed bug in am_I_in_disaster_recovery_mode()
    122 - added code to nuke_mode() to make sure NFS
    123   (backup) share is mounted in Nuke Mode
    124 - improved tape device detection code
    125 - better GRUB support
    126 - better logging of changed bigfiles at compare-time
    127 - better NTFS support, thanks to partimagehack-static
    128 - better logging
    129 - rewrote tape-handling code, breaking compatibility w/ previous versions
    130 - fixed ISO/CD biggiefile verification bug in mondoarchive
    131 - fixed bug which stopped boot/compare-time changelist from popping up
    132 - replaced mondo-makefilelist with C code - faster, cleaner
    133 - tweaked GUI - better feedback
    134 
    135 * Wed May 28 2003 Anonymous <root@rohan> 1.74
    136 
    137 - misc fixes (Michael Hanscho's friend)
    138 - added rudimentary support for SME
    139 - added better label support
    140 - fixed biggietime atime/ctime restoration bug 73
    141 - fixed 'default boot loader' detection bug (Joshua Oreman)
    142 - use single-threaded make_afioballs_and_images() if FreeBSD
    143 - fixed mondoarchive -Vi multi-CD verify bug (Tom Mortell)
    144 - superior get_phys_size_of_drive() (Joshua Oreman)
    145 - fixed RAID-related bug in where_is_root_mounted()
    146 - ISO tweaks
    147 - fixed silly bug in load_filelist() which stopped
    148   funny German filenames from being handled properly
    149 - fixed various calls to popup_and_get_string()
    150 - fixed spec file
    151 - reject -E /
    152 - added partimagehack to the mix
    153 
    154 * Tue May 20 2003 Anonymous <root@rohan> 1.73
    155 
    156 - mark devices as bootable _after_ unmounting them
    157 - resolve boot device (-f) if softlink
    158 - post_param_configuration() --- store iso-dev and isodir
    159 - added post-nuke-sample.tgz to package
    160 - Nuke Mode now checks mountlist against hardware; offer user
    161   opportunity to edit mountlist if insane; if user declines, abort
    162 - added lots of assert()'s and other checks
    163 - ran code thru Valgrind to catch & fix some memory leaks
    164 - made mondo-restore.c smaller by moving some subroutines to
    165   common/libmondo-raid.c and mondorestore/mondo-rstr-compare.c
    166 - added '-Q' to let user test mondoarchive's ability to find
    167   their boot loader and type
    168 - improved which_boot_loader()
    169 - when burning or comparing to a CD, defeat autorun if it is
    170   running, to avoid confusing mondoarchive and the user
    171 - if original backup media no longer available at boot-time
    172   then offer user chance to choose another media source
    173 - when booting, type 'nuke noresize' to nuke w/o resizing
    174   mountlist to fill your drives
    175 - add 'textonly' when booting, to avoid using Newt gui
    176 - run nice(20) to prioritize mondoarchive at start
    177 - don't pause and wait for next blank CD at backup-time
    178   unless necessary (e.g. previous CD has not been removed)
    179 - get_phys_size_of_drive() --- better support of older drives
    180 - don't eject if "donteject" is in kernel's command line
    181 - cleaned up segfault-handling
    182 - added Conor's strip_path() to improve file list display
    183 - added Herman Kuster's multi-level bkp patch
    184 - better boot-time screen/message
    185 - added Joshua Oreman's FreeBSD patches x3
    186 - fixed interactive/textonly support
    187 - fixed support for subdir-within-NFS-mount
    188 - fixed "Can't backup if ramdisk not mounted" bug
    189 - try to work around eccentricities of multi-CD drive PCs
    190 - misc clean-ups (Steve Hindle)
    191 
    192 * Tue Apr 08 2003 Hugo Rabson <hugorabson@msn.com> 1.72
    193 
    194 - LVM/RAID bugs fixed (Brian Borgeson)
    195 - major clean-up of code (Stan Benoit)
    196 - make-me-bootable fix (Juraj Ziegler)
    197 - fixed problem w/ multi-ISO verify cycle (Tom Mortell)
    198 - removed duplicate entry from makefile
    199 - if root is /dev/root then assume not a ramdisk
    200 - reject relative paths if -d flag (Alessandro Polverini)
    201 - fixed potentially infinite loop in log_to_screen (Tom Mortell)
    202 - add '/' to custom filelist as workaround for obscure bug
    203 - ask user speed of CDRW if writing to CD
    204 - find_cdrom_device() --- if nonexistent/not found then
    205   make sure to return '' as dev str and 1 as res
    206 - tweaked restore scripts tgz
    207 - cleaned up find_cdrom_device()
    208 - if user creates /usr/share/mondo/payload.tgz then untar
    209   payload to CD at backup-time
    210 - fixed insist_on_this_cd_number()
    211 - fixed am_i_in_disaster_recovery_mode()
    212 - misc clean-up (Tom Mortell)
    213 - made code more legible
    214 - fixed post-nuke support
    215 - added -e support
    216 - fixed nfs support
    217 - fixed iso support
    218 - at restore-time, only sort mountlist internally,
    219   in mount_all_devices() and unmount_all_devices()
    220 - fixed cosmetic bug in label-partitions-as-necessary
    221 - updated documentation
    222 - fixed fstab-hacking scripts
    223 
    224 * Wed Feb 12 2003 Hugo Rabson <hugorabson@msn.com> 1.71
    225 
    226 - log newt, slang, ncurses info
    227 - updated man page
    228 - handle % chars in issue.net properly (Heiko Schlittermann)
    229 - fixed serious NFS restore bug
    230 - cleaned up spec file; it should cause fewer problems now (Jesse Keating)
    231 - changed various strcpy() calls to strncpy() calls
    232 - added mondo-makefilelist to makefile (Mikael Hultgren)
    233 - mount_cdrom() better at handling multiple CD drives
    234 - exclude /media/cdrom,cdrecorder,floppy
    235 - sensibly_set_tmpdir_and_scratchdir() --- exclude smb and smbfs
    236 - better logging by eval_call_to_make_ISO()
    237 - accept -J <fname> to let user provide their own fs catalog
    238   instead of -I <paths> to backup
    239 - if dir excluded with -E or included with -I and dir is actually
    240   a softlink then exclude/include the dir pointed to, as well
    241 - better location for manpage
    242 - adjusted block size of tarball at start of tape, to help
    243   users w/ broken tape driver firmware
    244 - sort -u fstab after modifying it
    245 - if backup type is nfs then don't estimate noof media
    246 - fixed Makefile (Mikael Hultgren)
    247 - updated manpage
    248 
    249 * Sat Dec 07 2002 Hugo Rabson <hugo@firstlinux.net> 1.70
    250 
    251 - new devel branch opened
    252 
    253 * Mon Dec 02 2002 Hugo Rabson <hugo@firstlinux.net> 1.52
    254 
    255 - fixed bug in multithreading
    256 - use new grub-MR instead of grub-install
    257 - wipe only the partition table (not the MBR) when partitioning drives
    258 - ignore lilo.conf.anaconda when looking for lilo.conf file
    259 - accepts '-l RAW' to backup/restore original boot sector instead
    260   of running grub or lilo to init it after restoring
    261 - fixed&updated stabgrub-me script; software RAID + GRUB work now
    262 - mount/unmount /boot partition for Gentoo 1.2 users
    263 - re-enabled extra tape checksums
    264 - disabled spurious warnings
    265 - unmount/remount supermounts at start/end of live restore, if nec.
    266 - cleaned up mondo's tape block handling (now, TAPE_BLOCK_SIZE=128K
    267   and I've added INTERNAL_TAPE_BLK_SIZE=32K variable for buffering)
    268 - added Makefile
    269 - added -l RAW, to backup and restore original MBR
    270 - cleaned up iso_mode() and nfs restoring
    271 - create /mnt/RESTORING/mnt/.boot.d for Gentoo users
    272 - made mondorestore CD bootable for ArkLinux users
    273 - if user runs as 'su' not 'su -' then work around
    274 
    275 * Sun Nov 17 2002 Hugo Rabson <hugo@firstlinux.net> 1.51
    276 
    277 - pop-up list of changed files, at end of verification phase
    278 - better handling of changed.files list at restore-time
    279 - lots of CD-related fixes
    280 - added '-N' flag --- to let user exclude all NFS-related mounts&devices
    281 - better handling of 'kill'
    282 - restructuring of code to ease integration of mondo w/XMondo
    283 - fixed obscure bug in find_and_mount_actual_cd()
    284 - if / or /root has <50MB free then abort & complain
    285 - fixed install.sh
    286 - fixed .spec file
    287 - updated documentation
    288 - commented code
    289 - updated man page
    290 - added -v / --version flag
    291 - replace convoluted grep with wc (KP)
    292 - fixed bug affecting restoration of bigfiles from CD's created w/0 compression
    293 - fixed BurnProof-related bug
    294 - better at figuring out which is the best partition for temp/scratchdir
    295 - added do-not-compress-these (text file) to RPM
    296 - do not compress files of types listed in do-not-compress-these
    297 - dropped -U from call to afio - saves 20-30% runtime (Cosgrove)
    298 - added Cosgrove's do-not-compress-these list
    299 - included various patches from KP
    300 - chmod tmpdir, scratchdir to 700 before using
    301 - restore from specified backup device, even if its own cfg file disagrees
    302 - fixed multi-tape bug
    303 - fixed "Can't find first ISO when verifying nonbootable ISO" bug
    304 - multithreaded make_afioballs_and_images()
    305 - tmpdir and scratchdir are set sensibly whether mondoarchive is called with
    306   command-line parameters or not
    307 - fixed bug in strip_spaces() which stopped it from handling
    308   small strings correctly - affected mountlist editor
    309 - create a repaired copy of grub-install which is RAID-friendly;
    310   use it when initializing boot sector with run_grub()
    311 - fixed bug in mondo-makefilelist
    312 
    313 * Sun Sep 08 2002 Hugo Rabson <hugo@firstlinux.net> 1.50
    314 
    315 - if restoring, don't try to find SCSI node of CD-ROM drive; find /dev entry
    316 - during selective restore, skip filesets which don't contain relevant archives
    317 - set /dev/null's perms to 777, just in case devfs-enabled kernel mangles it
    318 - remove /var/run/*.pid after restoring
    319 - move spurious lockfiles from /home/* to /home/*/.disabled
    320 - ask user to confirm the tape/CD device name
    321 - lots of multitape-related fixes
    322 - added code to autodetect the hardware of the user, if possible
    323 - if isodir does not exist then abort
    324 - more sanity-checking for -d flag
    325 - doubled 'biggiefile' threshold... to 32MB
    326 - exclude /root/images/mindi
    327 - fixed multi-imagedev bug (Emmanuel Druon)
    328 - unmount/remount /mnt/floppy before/after backing up, if Mandrake
    329 - restructured the source files
    330 - fixed serious bug in line 1546 - should have been !=, not ==; stopped
    331   mondorestore from correctly restoring big files
    332 - added '#include <signal.h>' to my-stuff.h
    333 - exclude "incheckentry xwait()" from changed.files
    334 - fixed minor bug in find_cdrom_device()
    335 - fixed bug in friendly_sizestr...
    336 - insist on tape #1 when start verifying
    337 - added internal buffering, replacing the external 'buffer' exe
    338 - if differential backup then don't permit formatting or fdisking,
    339   whether Interactive or Nuke mode
    340 - if mondorestore is run on live filesystem (or from ramdisk) without
    341   parameters then mondorestore will ask which backup media (tape, CD, etc.)
    342   was used; it will read the config file from the media and proceed from there
    343 - if tape streamer is softlink then resolve it first
    344 - incorporate post-nuke tarball
    345 - if user doesn't specify tape size, proceed anyway; behave intelligently
    346   in the event of end-of-tape
    347 - prefix bkpinfo->restore_path to biggiefile fname before generating
    348   checksum & comparing to archived biggiefile
    349 - if /etc/lilo.conf not found not /etc/lilo.conf.anaconda found
    350   then create a softlink from the former to the latter, to work
    351   around RH7.3's b0rken LILO support
    352 - LFS support (mharris, michele, hugo)
    353 - fixed verify bug --- CD#1 was being verified again & again & ...
    354 - differential mode fixed; supported again
    355 - ask user for boot loader + device if not detectible
    356 - list up to 512 files in file selection window at once (was 128)
    357 - better handling of bigfiles' checksums, perms and owns
    358 - delete final filelist if <=2 bytes long
    359 - if kernel not found and mondo in graphics mode then popup and ask
    360   for kernel path+filename
    361 
    362 * Sun Jul 14 2002 Hugo Rabson <hugo@firstlinux.net> 1.45-1
    363 
    364 - 1.5x branch forked off from 1.4x branch
    365 
  • branches/2.0.8/mondo/distributions/mandriva/spec.m4

    r519 r576  
    22dnl
    33dnl SSS is replaced by the source package format
    4 define(`SSS', `%{name}-%{version}.tar.bz2')dnl
     4define(`SSS', `ftp://ftp.mondorescue.org/src/%{name}-%{version}-%{tag}.tar.bz2')dnl
    55dnl DDD is replaced by the list of dependencies specific to that distro
    6 define(`DDD', `%{addreqb}')dnl
     6define(`DDD', )dnl
    77dnl GRP is replaced by the RPM group of apps
    88define(`GRP', `Archiving/Backup')dnl
    9 dnl OBS is replaced vy what is being obsoleted
     9dnl OBS is replaced with what is being obsoleted
    1010define(`OBS', `Obsoletes:   libmondo <= 2.04
    1111Provides:   libmondo')dnl
  • branches/2.0.8/mondo/distributions/redhat/changelog

    r535 r576  
    1 * Fri Feb 17 2006 Bruno Cornec <bruno@mondorescue.org> VVV
     1* Fri Feb 17 2006 Bruno Cornec <bruno@mondorescue.org> 2.0.7-1
    22- Updated to 2.0.7
    33- RPM sepc files are now generated
  • branches/2.0.8/mondo/distributions/redhat/spec.m4

    r535 r576  
    22dnl
    33dnl SSS is replaced by the source package format
    4 define(`SSS', ftp://ftp.mondorescue.org/src/%{name}-%{version}.tgz)dnl
     4define(`SSS', `ftp://ftp.mondorescue.org/src/%{name}-%{version}-%{tag}.tar.gz')dnl
    55dnl DDD is replaced by the list of dependencies specific to that distro
    6 define(`DDD', %{addreqb})dnl
     6define(`DDD', )dnl
    77dnl GRP is replaced by the RPM group of apps
    8 define(`GRP', Applications/Archiving)dnl
     8define(`GRP', `Applications/Archiving')dnl
    99dnl OBS is replaced vy what is being obsoleted
    1010define(`OBS', )dnl
  • branches/2.0.8/mondo/distributions/rpm/mondo.spec

    r535 r576  
    33#
    44
    5 %define name    mondo
    6 %define version VVV
    75%define mrel    RRR
     6%define tag     TTT
    87# if mandriva official build (rpm --with is_official)
    98%{?is_official:%define rel %{mkrel} %{mrel}}%{!?is_official:%define rel %{mrel}}
    10 %define src     SSS
    11 %define grp     GRP
    12 %define addreqb mindi >= 1.0.7, bzip2 >= 0.9, afio, mkisofs, binutils, newt >= 0.50, slang >= 1.4.1
    13 %define addreq  DDD
    14 %define rel     %{mrel}
     9%define addreq  mindi >= 1.0.7, bzip2 >= 0.9, afio, mkisofs, binutils, newt >= 0.50, slang >= 1.4.1 DDD
    1510
    1611Summary:    A program which a Linux user can utilize to create a rescue/restore CD/tape
     
    1914Summary(sp):    Un programa para los usuarios de Linux por crear una CD/cinta de restoracion/rescate
    2015
    21 Name:       %{name}
    22 Version:    %{version}
    23 Release:    %{rel}
     16Name:       mondo
     17Version:    VVV
     18Release:    %{mrel}
    2419License:    GPL
    25 Group:      %{grp}
     20Group:      GRP
    2621Url:        http://www.mondorescue.org
    27 Source:     %{src}
     22Source:     SSS
    2823BuildRoot:  %{_tmppath}/%{name}-%{version}-%{release}-root-%(id -u -n)
    2924BuildRequires:  newt-devel >= 0.50, slang-devel >= 1.4.1, gcc
    30 Epoch:      %(echo EEE | cut -d- -f1 | sed "s~M~~")
    3125OBS
    3226%ifarch ia64
     
    6559
    6660%prep
    67 %setup -q -n %name-%{version}
     61%setup -q -n %name-%{version}-%{tag}
    6862
    6963%build
     
    7973
    8074%files
    81 %defattr(644,root,root,755)
    8275%doc ChangeLog svn.log
    8376%doc INSTALL COPYING README TODO AUTHORS NEWS
    8477%doc docs/en/mondorescue-howto.html docs/en/mondorescue-howto.pdf
    8578
     79<<<<<<< .working
    8680%attr(755,root,root) %{_sbindir}/*
    8781%attr(755,root,root) %{_datadir}/%{name}/restore-scripts/%{name}/*
     
    8983%attr(755,root,root) %{_datadir}/%{name}/post-nuke.sample/usr/bin/post-nuke
    9084%{_datadir}/%{name}/*
     85=======
     86%{_sbindir}/*
     87%{_datadir}/%{name}
     88>>>>>>> .merge-right.r575
    9189%{_mandir}/man8/*
    9290
  • branches/2.0.8/mondo/distributions/suse/spec.m4

    r455 r576  
    22dnl
    33dnl SSS is replaced by the source package format
    4 define(`SSS', %{name}-%{version}.tgz)dnl
     4define(`SSS', `ftp://ftp.mondorescue.org/src/%{name}-%{version}-%{tag}.tar.gz')dnl
    55dnl DDD is replaced by the list of dependencies specific to that distro
    6 define(`DDD', %{addreqb}, buffer, cdrecord)dnl
     6define(`DDD', `, buffer, cdrecord')dnl
    77dnl GRP is replaced by the RPM group of apps
    8 define(`GRP', Productivity/Archiving/Backup)dnl
     8define(`GRP', `Productivity/Archiving/Backup')dnl
    99dnl OBS is replaced vy what is being obsoleted
    1010define(`OBS', )dnl
  • branches/2.0.8/mondo/mondo/autorun

    • Property svn:unix-mode set to 755
  • branches/2.0.8/mondo/mondo/common/libmondo-raid-EXT.h

    r128 r576  
    5353#endif
    5454
    55 extern int create_raidtab_from_mdstat(char *, char *);
    56 extern int read_mdstat(struct s_mdstat *mdstat, char *mdstat_file);
    57 
    58 extern int create_raidtab_from_mdstat(char *raidtab_fname,
    59                                       char *mdstat_fname);
     55extern int parse_mdstat(struct raidlist_itself *raidlist, char *device_prefix);
     56extern int create_raidtab_from_mdstat(char *raidtab_fname);
  • branches/2.0.8/mondo/mondo/common/libmondo-raid.c

    r273 r576  
    395395
    396396    fprintf(fout, "raiddev %s\n", raidrec->raid_device);
    397     if (raidrec->raid_level == -1) {
     397    if (raidrec->raid_level == -2) {
     398        fprintf(fout, "    raid-level            multipath\n");
     399    } else if (raidrec->raid_level == -1) {
    398400        fprintf(fout, "    raid-level            linear\n");
    399401    } else {
     
    401403                raidrec->raid_level);
    402404    }
    403     fprintf(fout, "    chunk-size            %d\n", raidrec->chunk_size);
    404405    fprintf(fout, "    nr-raid-disks         %d\n",
    405406            raidrec->data_disks.entries);
    406     fprintf(fout, "    nr-spare-disks        %d\n",
    407             raidrec->spare_disks.entries);
     407    if (raidrec->spare_disks.entries > 0) {
     408        fprintf(fout, "    nr-spare-disks        %d\n",
     409                raidrec->spare_disks.entries);
     410    }
    408411    if (raidrec->parity_disks.entries > 0) {
    409412        fprintf(fout, "    nr-parity-disks       %d\n",
    410413                raidrec->parity_disks.entries);
    411414    }
    412 
    413415    fprintf(fout, "    persistent-superblock %d\n",
    414416            raidrec->persistent_superblock);
     417    if (raidrec->chunk_size > -1) {
     418      fprintf(fout, "    chunk-size            %d\n", raidrec->chunk_size);
     419    }
     420    if (raidrec->parity > -1) {
     421      switch(raidrec->parity) {
     422      case 0:
     423        fprintf(fout, "    parity-algorithm      left-asymmetric\n");
     424        break;
     425      case 1:
     426        fprintf(fout, "    parity-algorithm      right-asymmetric\n");
     427        break;
     428      case 2:
     429        fprintf(fout, "    parity-algorithm      left-symmetric\n");
     430        break;
     431      case 3:
     432        fprintf(fout, "    parity-algorithm      right-symmetric\n");
     433        break;
     434      default:
     435        fatal_error("Unknown RAID parity algorithm.");
     436        break;
     437      }
     438    }
    415439    save_additional_vars_to_file(&raidrec->additional_vars, fout);
    416440    fprintf(fout, "\n");
     
    713737
    714738    if (!strcmp(label, "raid-level")) {
    715         if (!strcmp(value, "linear")) {
     739        if (!strcmp(value, "multipath")) {
     740            raidrec->raid_level = -2;
     741        } else if (!strcmp(value, "linear")) {
    716742            raidrec->raid_level = -1;
    717743        } else {
     
    726752    } else if (!strcmp(label, "chunk-size")) {
    727753        raidrec->chunk_size = atoi(value);
     754    } else if (!strcmp(label, "parity-algorithm")) {
     755        if (!strcmp(value, "left-asymmetric")) {
     756            raidrec->parity = 0;
     757        } else if (!strcmp(value, "right-asymmetric")) {
     758            raidrec->parity = 1;
     759        } else if (!strcmp(value, "left-symmetric")) {
     760            raidrec->parity = 2;
     761        } else if (!strcmp(value, "right-symmetric")) {
     762            raidrec->parity = 3;
     763        } else {
     764            log_msg(1, "Unknown RAID parity algorithm '%s'\n.", value);
     765        }
    728766    } else if (!strcmp(label, "device")) {
    729767        get_next_raidtab_line(fin, labelB, valueB);
     
    9721010
    9731011
    974 int read_mdstat(struct s_mdstat *mdstat, char *mdstat_file)
    975 {
    976     FILE *fin;
    977     char *tmp;
    978     char *stub;
    979     char *incoming;
    980     char *raid_devname;
    981     char *p, *q, *r;
    982     int diskno;
    983 
    984     malloc_string(tmp);
    985     malloc_string(stub);
    986     malloc_string(incoming);
    987     malloc_string(raid_devname);
    988     if (!(fin = fopen(mdstat_file, "r"))) {
    989         log_msg(1, "%s not found", mdstat_file);
     1012int parse_mdstat(struct raidlist_itself *raidlist, char *device_prefix) {
     1013
     1014  const char delims[] = " ";
     1015
     1016  FILE   *fin;
     1017  int    res = 0, row, i, index_min;
     1018  int lastpos = 0;
     1019  size_t len = 0;
     1020  char   *token;
     1021  char *string = NULL;
     1022  char *pos;
     1023  char type;
     1024  char *strtmp;
     1025
     1026  // open file
     1027  if (!(fin = fopen(MDSTAT_FILE, "r"))) {
     1028    log_msg(1, "Could not open %s.\n", MDSTAT_FILE);
     1029    return 1;
     1030  }
     1031  // initialise record, build progress and row counters
     1032  raidlist->entries = 0;
     1033  raidlist->el[raidlist->entries].progress = 999;
     1034  row = 1;
     1035  // skip first output row - contains registered RAID levels
     1036  res = getline(&string, &len, fin);
     1037  // parse the rest
     1038  while ( !feof_unlocked(fin) ) {
     1039    res = getline(&string, &len, fin);
     1040    if (res <= 0) break;
     1041    // trim leading spaces
     1042    pos = string;
     1043    while (*pos == ' ') *pos++;
     1044    asprintf(&string, pos);
     1045    //
     1046    // if we have newline after only spaces, this is a blank line, update
     1047    // counters, otherwise do normal parsing
     1048    if (*string == '\n') {
     1049      row = 1;
     1050      raidlist->entries++;
     1051      raidlist->el[raidlist->entries].progress = 999;
     1052    } else {
     1053      switch (row) {
     1054      case 1:  // device information
     1055    // check whether last line of record and if so skip
     1056    pos = strcasestr(string, "unused devices: ");
     1057    if (pos == string) {
     1058      //raidlist->entries--;
     1059      break;
     1060    }
     1061    // tokenise string
     1062    token = mr_strtok (string, delims, &lastpos);
     1063    // get RAID device name
     1064    asprintf(&strtmp,"%s%s", device_prefix, token);
     1065    strcpy(raidlist->el[raidlist->entries].raid_device, strtmp);
     1066    paranoid_free(strtmp);
     1067    paranoid_free(token);
     1068    // skip ':' and status
     1069    token = mr_strtok (string, delims, &lastpos);
     1070    paranoid_free(token);
     1071    token = mr_strtok (string, delims, &lastpos);
     1072    if (!strcmp(token, "inactive")) {
     1073      log_msg(1, "RAID device '%s' inactive.\n",
     1074         raidlist->el[raidlist->entries].raid_device);
     1075      paranoid_free(string);
     1076      paranoid_free(token);
     1077      return 1;
     1078    }
     1079    paranoid_free(token);
     1080
     1081    // get RAID level
     1082    token = mr_strtok (string, delims, &lastpos);
     1083    if (!strcmp(token, "multipath")) {
     1084      raidlist->el[raidlist->entries].raid_level = -2;
     1085    } else if (!strcmp(token, "linear")) {
     1086      raidlist->el[raidlist->entries].raid_level = -1;
     1087    } else if (!strcmp(token, "raid0")) {
     1088      raidlist->el[raidlist->entries].raid_level = 0;
     1089    } else if (!strcmp(token, "raid1")) {
     1090      raidlist->el[raidlist->entries].raid_level = 1;
     1091    } else if (!strcmp(token, "raid4")) {
     1092      raidlist->el[raidlist->entries].raid_level = 4;
     1093    } else if (!strcmp(token, "raid5")) {
     1094      raidlist->el[raidlist->entries].raid_level = 5;
     1095    } else if (!strcmp(token, "raid6")) {
     1096      raidlist->el[raidlist->entries].raid_level = 6;
     1097    } else if (!strcmp(token, "raid10")) {
     1098      raidlist->el[raidlist->entries].raid_level = 10;
     1099    } else {
     1100      log_msg(1, "Unknown RAID level '%s'.\n", token);
     1101      paranoid_free(string);
     1102      paranoid_free(token);
     1103      return 1;
     1104    }
     1105    paranoid_free(token);
     1106
     1107    // get RAID devices (type, index, device)
     1108    // Note: parity disk for RAID4 is last normal disk, there is no '(P)'
     1109    raidlist->el[raidlist->entries].data_disks.entries = 0;
     1110    raidlist->el[raidlist->entries].spare_disks.entries = 0;
     1111    raidlist->el[raidlist->entries].failed_disks.entries = 0;
     1112    while((token = mr_strtok (string, delims, &lastpos))) {
     1113      if ((pos = strstr(token, "("))) {
     1114        type = *(pos+1);
     1115      } else {
     1116        type = ' ';
     1117      }
     1118      pos = strstr(token, "[");
     1119      *pos = '\0';
     1120      switch(type) {
     1121      case ' ': // normal data disks
     1122        raidlist->el[raidlist->entries].data_disks.el[raidlist->el[raidlist->entries].data_disks.entries].index = atoi(pos + 1);
     1123        asprintf(&strtmp,"%s%s", device_prefix, token);
     1124        strcpy(raidlist->el[raidlist->entries].data_disks.el[raidlist->el[raidlist->entries].data_disks.entries].device, strtmp);
     1125        paranoid_free(strtmp);
     1126        raidlist->el[raidlist->entries].data_disks.entries++;
     1127        break;
     1128      case 'S': // spare disks
     1129        raidlist->el[raidlist->entries].spare_disks.el[raidlist->el[raidlist->entries].spare_disks.entries].index = atoi(pos + 1);
     1130        asprintf(&strtmp,"%s%s", device_prefix, token);
     1131        strcpy(raidlist->el[raidlist->entries].spare_disks.el[raidlist->el[raidlist->entries].spare_disks.entries].device, strtmp);
     1132        paranoid_free(strtmp);
     1133        raidlist->el[raidlist->entries].spare_disks.entries++;
     1134        break;
     1135      case 'F': // failed disks
     1136        raidlist->el[raidlist->entries].failed_disks.el[raidlist->el[raidlist->entries].failed_disks.entries].index = atoi(pos + 1);
     1137        asprintf(&strtmp,"%s%s", device_prefix, token);
     1138        strcpy(raidlist->el[raidlist->entries].failed_disks.el[raidlist->el[raidlist->entries].failed_disks.entries].device, strtmp);
     1139        paranoid_free(strtmp);
     1140        raidlist->el[raidlist->entries].failed_disks.entries++;
     1141        log_it("At least one failed disk found in RAID array.\n");
     1142        break;
     1143      default: // error
     1144        log_msg(1, "Unknown device type '%c'\n", type);
     1145        paranoid_free(string);
     1146        paranoid_free(token);
     1147        return 1;
     1148        break;
     1149      }
     1150      paranoid_free(token);
     1151    }
     1152
     1153    // adjust index for each device so that it starts with 0 for every type
     1154    index_min = 99;
     1155    for (i=0; i<raidlist->el[raidlist->entries].data_disks.entries;i++) {
     1156      if (raidlist->el[raidlist->entries].data_disks.el[i].index < index_min) {
     1157        index_min = raidlist->el[raidlist->entries].data_disks.el[i].index;
     1158      }
     1159    }
     1160    if (index_min > 0) {
     1161      for (i=0; i<raidlist->el[raidlist->entries].data_disks.entries;i++) {
     1162        raidlist->el[raidlist->entries].data_disks.el[i].index = raidlist->el[raidlist->entries].data_disks.el[i].index - index_min;   
     1163      }
     1164    }
     1165    index_min = 99;
     1166    for (i=0; i<raidlist->el[raidlist->entries].spare_disks.entries;i++) {
     1167      if (raidlist->el[raidlist->entries].spare_disks.el[i].index < index_min) {
     1168        index_min = raidlist->el[raidlist->entries].spare_disks.el[i].index;
     1169      }
     1170    }
     1171    if (index_min > 0) {
     1172      for (i=0; i<raidlist->el[raidlist->entries].spare_disks.entries;i++) {
     1173        raidlist->el[raidlist->entries].spare_disks.el[i].index = raidlist->el[raidlist->entries].spare_disks.el[i].index - index_min; 
     1174      }
     1175    }
     1176    index_min = 99;
     1177    for (i=0; i<raidlist->el[raidlist->entries].failed_disks.entries;i++) {
     1178      if (raidlist->el[raidlist->entries].failed_disks.el[i].index < index_min) {
     1179        index_min = raidlist->el[raidlist->entries].failed_disks.el[i].index;
     1180      }
     1181    }
     1182    if (index_min > 0) {
     1183      for (i=0; i<raidlist->el[raidlist->entries].failed_disks.entries;i++) {
     1184        raidlist->el[raidlist->entries].failed_disks.el[i].index = raidlist->el[raidlist->entries].failed_disks.el[i].index - index_min;   
     1185      }
     1186    }
     1187    break;
     1188      case 2:  // config information
     1189    // check for persistent super block
     1190    if (strcasestr(string, "super non-persistent")) {
     1191      raidlist->el[raidlist->entries].persistent_superblock = 0;
     1192    } else {
     1193      raidlist->el[raidlist->entries].persistent_superblock = 1;
     1194    }
     1195    // extract chunk size
     1196    if (!(pos = strcasestr(string, "k chunk"))) {
     1197      raidlist->el[raidlist->entries].chunk_size = -1;
     1198    } else {
     1199      while (*pos != ' ') {
     1200        *pos--;
     1201        if (pos < string) {
     1202          log_it("String underflow!\n");
     1203          paranoid_free(string);
     1204          return 1;
     1205        }
     1206      }
     1207      raidlist->el[raidlist->entries].chunk_size = atoi(pos + 1);
     1208    }
     1209    // extract parity if present
     1210    if ((pos = strcasestr(string, "algorithm"))) {
     1211      raidlist->el[raidlist->entries].parity = atoi(pos + 9);
     1212    } else {
     1213      raidlist->el[raidlist->entries].parity = -1;
     1214    }
     1215    break;
     1216      case 3:  // optional build status information
     1217    if (!(pos = strchr(string, '\%'))) {
     1218      if (strcasestr(string, "delayed")) {
     1219        raidlist->el[raidlist->entries].progress = -1;  // delayed (therefore, stuck at 0%)
     1220      } else {
     1221        raidlist->el[raidlist->entries].progress = 999; // not found
     1222      }
     1223    } else {
     1224      while (*pos != ' ') {
     1225        *pos--;
     1226        if (pos < string) {
     1227          printf("ERROR: String underflow!\n");
     1228          paranoid_free(string);
     1229          return 1;
     1230        }
     1231      }
     1232      raidlist->el[raidlist->entries].progress = atoi(pos);
     1233    }
     1234    break;
     1235      default: // error
     1236    log_msg(1, "Row %d should not occur in record!\n", row);
     1237    break;
     1238      }
     1239      row++;
     1240    }
     1241  }
     1242  // close file
     1243  fclose(fin);
     1244  // free string
     1245  paranoid_free(string);
     1246  // return success
     1247  return 0;
     1248
     1249}
     1250
     1251
     1252
     1253
     1254int create_raidtab_from_mdstat(char *raidtab_fname)
     1255{
     1256    struct raidlist_itself *raidlist;
     1257    int retval = 0;
     1258
     1259    raidlist = malloc(sizeof(struct raidlist_itself));
     1260
     1261    // FIXME: Prefix '/dev/' should really be dynamic!
     1262    if (parse_mdstat(raidlist, "/dev/")) {
     1263        log_to_screen("Sorry, cannot read %s", MDSTAT_FILE);
    9901264        return (1);
    9911265    }
    992     mdstat->entries = 0;
    993     for (fgets(incoming, MAX_STR_LEN - 1, fin); !feof(fin);
    994          fgets(incoming, MAX_STR_LEN - 1, fin)) {
    995         p = incoming;
    996         if (*p != 'm' && *(p + 1) == 'm') {
    997             p++;
    998         }
    999         if (strncmp(p, "md", 2)) {
    1000             continue;
    1001         }
    1002 // read first line --- mdN : active raidX ............
    1003         mdstat->el[mdstat->entries].md = atoi(p + 2);
    1004         log_msg(8, "Storing /dev/md%d's info", atoi(p + 2));
    1005         while (*p != ':' && *p) {
    1006             p++;
    1007         }
    1008         while ((*p != 'r' || *(p + 1) != 'a') && *p) {
    1009             p++;
    1010         }
    1011         if (!strncmp(p, "raid", 4)) {
    1012             mdstat->el[mdstat->entries].raidlevel = *(p + 4) - '0';
    1013         }
    1014         p += 4;
    1015         while (*p != ' ' && *p) {
    1016             p++;
    1017         }
    1018         while (*p == ' ' && *p) {
    1019             p++;
    1020         }
    1021         for (diskno = 0; *p; diskno++) {
    1022             strcpy(stub, p);
    1023 //      log_msg(1, "diskno=%d; tmp=%s", diskno, tmp);
    1024             q = strchr(stub, '[');
    1025             if (q) {
    1026                 *q = '\0';
    1027                 q++;
    1028                 r = strchr(q, ']');
    1029                 if (r) {
    1030                     *r = '\0';
    1031                 }
    1032                 mdstat->el[mdstat->entries].disks.el[diskno].index =
    1033                     atoi(q);
    1034             } else {
    1035                 mdstat->el[mdstat->entries].disks.el[diskno].index = -1;
    1036                 q = strchr(stub, ' ');
    1037                 if (q) {
    1038                     *q = '\0';
    1039                 }
    1040             }
    1041             sprintf(tmp, "/dev/%s", stub);
    1042             log_msg(8, "/dev/md%d : disk#%d : %s (%d)",
    1043                     mdstat->el[mdstat->entries].md, diskno, tmp,
    1044                     mdstat->el[mdstat->entries].disks.el[diskno].index);
    1045             strcpy(mdstat->el[mdstat->entries].disks.el[diskno].device,
    1046                    tmp);
    1047             while (*p != ' ' && *p) {
    1048                 p++;
    1049             }
    1050             while (*p == ' ' && *p) {
    1051                 p++;
    1052             }
    1053         }
    1054         mdstat->el[mdstat->entries].disks.entries = diskno;
    1055 // next line --- skip it
    1056         if (!feof(fin)) {
    1057             fgets(incoming, MAX_STR_LEN - 1, fin);
    1058         } else {
    1059             continue;
    1060         }
    1061 // next line --- the 'progress' line
    1062         if (!feof(fin)) {
    1063             fgets(incoming, MAX_STR_LEN - 1, fin);
    1064         } else {
    1065             continue;
    1066         }
    1067 //  log_msg(1, "Percentage line = '%s'", incoming);
    1068         if (!(p = strchr(incoming, '\%'))) {
    1069             mdstat->el[mdstat->entries].progress = 999; // not found
    1070         } else if (strstr(incoming, "DELAYED")) {
    1071             mdstat->el[mdstat->entries].progress = -1;  // delayed (therefore, stuck at 0%)
    1072         } else {
    1073             for (*p = '\0'; *p != ' '; p--);
    1074             mdstat->el[mdstat->entries].progress = atoi(p);
    1075         }
    1076         log_msg(8, "progress =%d", mdstat->el[mdstat->entries].progress);
    1077         mdstat->entries++;
    1078     }
    1079     fclose(fin);
    1080     paranoid_free(tmp);
    1081     paranoid_free(stub);
    1082     paranoid_free(incoming);
    1083     paranoid_free(raid_devname);
    1084     return (0);
    1085 }
    1086 
    1087 
    1088 
    1089 int create_raidtab_from_mdstat(char *raidtab_fname, char *mdstat_fname)
    1090 {
    1091     struct raidlist_itself *raidlist;
    1092     struct s_mdstat *mdstat;
    1093     int retval = 0;
    1094     int i;
    1095 
    1096     raidlist = malloc(sizeof(struct raidlist_itself));
    1097     mdstat = malloc(sizeof(struct s_mdstat));
    1098 
    1099     if (read_mdstat(mdstat, mdstat_fname)) {
    1100         log_to_screen("Sorry, cannot read %s", mdstat_fname);
    1101         return (1);
    1102     }
    1103 
    1104     for (i = 0; i < mdstat->entries; i++) {
    1105         sprintf(raidlist->el[i].raid_device, "/dev/md%d",
    1106                 mdstat->el[i].md);
    1107         raidlist->el[i].raid_level = mdstat->el[i].raidlevel;
    1108         raidlist->el[i].persistent_superblock = 1;
    1109         raidlist->el[i].chunk_size = 4;
    1110         memcpy((void *) &raidlist->el[i].data_disks,
    1111                (void *) &mdstat->el[i].disks,
    1112                sizeof(struct list_of_disks));
    1113         // FIXME --- the above line does not allow for spare disks
    1114         log_to_screen
    1115             ("FIXME - create_raidtab_from_mdstat does not allow for spare disks");
    1116     }
    1117     raidlist->entries = i;
     1266
    11181267    retval += save_raidlist_to_raidtab(raidlist, raidtab_fname);
    11191268    return (retval);
  • branches/2.0.8/mondo/mondo/common/libmondo-raid.h

    r128 r576  
    4343#endif
    4444
    45 
    46 int create_raidtab_from_mdstat(char *, char *);
    47 int read_mdstat(struct s_mdstat *mdstat, char *mdstat_file);
    48 
    49 int create_raidtab_from_mdstat(char *raidtab_fname, char *mdstat_fname);
     45int create_raidtab_from_mdstat(char *raidtab_fname);
     46int parse_mdstat(struct raidlist_itself *raidlist, char *device_prefix);
  • branches/2.0.8/mondo/mondo/common/libmondo-string-EXT.h

    r128 r576  
    4444extern inline void turn_wildcard_chars_into_literal_chars(char *out,
    4545                                                          char *in);
     46/* Valid external functions */
     47extern char *mr_strtok(char *instr, const char *delims, int *lastpos);
  • branches/2.0.8/mondo/mondo/common/libmondo-string.c

    r128 r576  
    1 /* libmondo-string.c
    2    $Id$
    3 
    4 - string manipulation
    5 
    6 
    7 08/02
    8 - added function turn_wildcard_chars_into_literal_chars()
    9 
    10 03/10/2004?
    11 - make percent_media_full_comment() use media_descriptor_string():
    12   "DVD %d" or "ISO %d" (if that's what it is) rather than "CD %d"
    13 - fix build_partition_name() to use 'adXsY' rather than 'adXpY' on FreeBSD
    14 
    15 10/08/2003
    16 - changed 'CD %d' to '<media> %d' (msg)
    17 
    18 10/01
    19 - fixing strip_spaces() to handle /r properly
    20 
    21 09/26
    22 - added char *media_descriptor_string(t_bkptype);
    23 
    24 05/06
    25 - cleaned up severity_of_difference() a bit
    26 
    27 05/05
    28 - added Joshua Oreman's FreeBSD patches
    29 
    30 04/24
    31 - added lots of assert()'s and log_OS_error()'s
    32 - severity_of_difference() skips "/mnt/RESTORING" at start
    33   of filename if it's there
    34 
    35 04/04/2003
    36 - misc clean-up (Tom Mortell)
    37 
    38 11/17/2002
    39 - strip_spaces() now accommodates _smaller_ strings auto'y
    40 
    41 11/08
    42 - if decimal point in string sent to friendly_sizestr_to_sizelong()
    43   then fatal error: we expect integers only
    44 
    45 10/01 - 10/31
    46 - commented subroutines
    47 - strip_spaces() allows up to MAX_STR_LEN-len input string
    48 
    49 08/01 - 08/31
    50 - fixed bug in friendly_sizestr_to_sizelong() which stopped
    51   it from working with capital G's and K's
    52 - fixed bug in build_partition_name()
    53 
    54 07/24
    55 - created
    56 */
     1/* $Id$ */
    572
    583
     
    12121157}
    12131158
     1159
     1160/* New functions safe from a memory manageemnt point of view */
     1161/* Developped by Andree Leidenfrost */
     1162
     1163char *mr_strtok(char *instr, const char *delims, int *lastpos) {
     1164
     1165char *token = NULL;
     1166char *strptr = NULL;
     1167size_t pos1 = 0;
     1168size_t pos2 = 0;
     1169
     1170if (strlen(instr) <= *lastpos) {
     1171    *lastpos = 0;
     1172    return token;
     1173}
     1174
     1175strptr = instr + *lastpos;
     1176pos2 = strspn(strptr, delims);
     1177strptr += pos2;
     1178pos1 = strcspn(strptr, delims);
     1179token = malloc(sizeof(*token)*(pos1+1));
     1180strncpy(token, strptr, pos1);
     1181*lastpos = *lastpos + pos1 + pos2 + 1;
     1182
     1183return token;
     1184}
    12141185/* @} - end of stringGroup */
  • branches/2.0.8/mondo/mondo/common/libmondo-string.h

    r128 r576  
    3434char *media_descriptor_string(t_bkptype);
    3535inline void turn_wildcard_chars_into_literal_chars(char *out, char *in);
     36
     37/* Valid external functions */
     38char *mr_strtok(char *instr, const char *delims, int *lastpos);
  • branches/2.0.8/mondo/mondo/common/libmondo-tools.c

    r424 r576  
    442442    assert(raidrec != NULL);
    443443    raidrec->raid_device[0] = '\0';
    444     raidrec->raid_level = 0;
    445     raidrec->chunk_size = 4;
     444    raidrec->raid_level = -9;
    446445    raidrec->persistent_superblock = 1;
     446    raidrec->chunk_size = 64;
     447    raidrec->parity = -1;
    447448    raidrec->data_disks.entries = 0;
    448449    raidrec->spare_disks.entries = 0;
     
    12241225        log_to_screen
    12251226            ("You have RAID partitions but no /etc/raidtab - creating one from /proc/mdstat");
    1226         create_raidtab_from_mdstat("/etc/raidtab", "/proc/mdstat");
     1227        create_raidtab_from_mdstat("/etc/raidtab");
    12271228    }
    12281229
  • branches/2.0.8/mondo/mondo/common/mondostructures.h

    r519 r576  
    150150   */
    151151    int index;
     152   
     153  /**
     154   * Type of disk.
     155   */
     156    char type;  // ' ' = data (default), S = spare, F = faulty
     157   
    152158};
    153159
     
    241247       */
    242248    int chunk_size;
     249   
     250      /**
     251       * The parity algorithm of this RAID device. (RAID5 only)
     252       */
     253    int parity; // 0=left-asymmetric, 1=right-asymmetric, 2=left-symmetric, 3=right-symmetric
    243254
    244255      /**
     
    266277       */
    267278    struct additional_raid_variables additional_vars;
     279
     280      /**
     281       * Resync progress for this device.
     282       */
     283    int progress;
    268284};
    269285
     
    787803    struct s_tapecat_entry el[MAX_TAPECATALOG_ENTRIES];
    788804};
    789 
    790 
    791 
    792 struct s_mdrec {
    793     int md;                     // /dev/mdN
    794     int raidlevel;              // 0, 1, 5
    795     struct list_of_disks disks;
    796     int progress;
    797 };
    798 
    799 struct s_mdstat {
    800     int entries;
    801     struct s_mdrec el[MAXIMUM_RAID_DEVS];
    802 };
  • branches/2.0.8/mondo/mondo/common/my-stuff.h

    r459 r576  
    231231 */
    232232#define MONDO_CFG_FILE_STUB "tmp/mondo-restore.cfg"
     233
     234/**
     235 * The RAID kernel proc file
     236 */
     237#define MDSTAT_FILE "/proc/mdstat"
    233238
    234239/**
  • branches/2.0.8/mondo/mondo/mondorestore/mondo-prep.c

    r196 r576  
    695695
    696696/**
     697 * Create @p RAID device using information from @p structure.
     698 * This will create the specified RAID devive using information provided in
     699 * raidlist by means of the mdadm tool.
     700 * @param raidlist The structure containing all RAID information
     701 * @param device The RAID device to create.
     702 * @return 0 for success, nonzero for failure.
     703 */
     704int create_raid_device_via_mdadm(struct raidlist_itself *raidlist, char *device)
     705{
     706  /** int **************************************************************/
     707  int i   = 0;
     708  int j   = 0;
     709  int res = 0;
     710 
     711  /** buffers ***********************************************************/
     712  char *devices = NULL;
     713  char *strtmp  = NULL;
     714  char *level   = NULL;
     715  char *program = NULL;
     716 
     717  // leave straight away if raidlist is initial or has no entries
     718  if (!raidlist || raidlist->entries == 0) {
     719    log_msg(1, "No RAID arrays found.");
     720    return 1;
     721  } else {
     722    log_msg(1, "%d RAID arrays found.", raidlist->entries);
     723  }
     724  // find raidlist entry for requested device
     725  for (i = 0; i < raidlist->entries; i++) {
     726    if (!strcmp(raidlist->el[i].raid_device, device)) break;
     727  }
     728  // check whether RAID device was found in raidlist
     729  if (i == raidlist->entries) {
     730    log_msg(1, "RAID device %s not found in list.", device);
     731    return 1;
     732  }
     733  // create device list from normal disks followed by spare ones
     734  asprintf(&devices, raidlist->el[i].data_disks.el[0].device);
     735  for (j = 1; j < raidlist->el[i].data_disks.entries; j++) {
     736    asprintf(&strtmp, "%s", devices);
     737    paranoid_free(devices);
     738    asprintf(&devices, "%s %s", strtmp,
     739         raidlist->el[i].data_disks.el[j].device);
     740    paranoid_free(strtmp);
     741  }
     742  for (j = 0; j < raidlist->el[i].spare_disks.entries; j++) {
     743    asprintf(&strtmp, "%s", devices);
     744    paranoid_free(devices);
     745    asprintf(&devices, "%s %s", strtmp,
     746         raidlist->el[i].spare_disks.el[j].device);
     747    paranoid_free(strtmp);
     748  }
     749  // translate RAID level
     750  if (raidlist->el[i].raid_level == -2) {
     751    asprintf(&level, "multipath");
     752  } else if (raidlist->el[i].raid_level == -1) {
     753    asprintf(&level, "linear");
     754  } else {
     755    asprintf(&level, "raid%d", raidlist->el[i].raid_level);
     756  }
     757  // create RAID device:
     758  // - RAID device, number of devices and devices mandatory
     759  // - parity algorithm, chunk size and spare devices optional
     760  // - faulty devices ignored
     761  // - persistent superblock always used as this is recommended
     762  asprintf(&program,
     763       "mdadm --create --force --run --auto=yes %s --level=%s --raid-devices=%d",
     764       raidlist->el[i].raid_device, level,
     765       raidlist->el[i].data_disks.entries);
     766  if (raidlist->el[i].parity != -1) {
     767    asprintf(&strtmp, "%s", program);
     768    paranoid_free(program);
     769    switch(raidlist->el[i].parity) {
     770    case 0:
     771      asprintf(&program, "%s --parity=%s", strtmp, "la");
     772      break;
     773    case 1:
     774      asprintf(&program, "%s --parity=%s", strtmp, "ra");
     775      break;
     776    case 2:
     777      asprintf(&program, "%s --parity=%s", strtmp, "ls");
     778      break;
     779    case 3:
     780      asprintf(&program, "%s --parity=%s", strtmp, "rs");
     781      break;
     782    default:
     783      fatal_error("Unknown RAID parity algorithm.");
     784      break;
     785    }
     786    paranoid_free(strtmp);
     787  }
     788  if (raidlist->el[i].chunk_size != -1) {
     789    asprintf(&strtmp, "%s", program);
     790    paranoid_free(program);
     791    asprintf(&program, "%s --chunk=%d", strtmp, raidlist->el[i].chunk_size);
     792    paranoid_free(strtmp);
     793  }
     794  if (raidlist->el[i].spare_disks.entries > 0) {
     795    asprintf(&strtmp, "%s", program);
     796    paranoid_free(program);
     797    asprintf(&program, "%s --spare-devices=%d", strtmp,
     798         raidlist->el[i].spare_disks.entries);
     799    paranoid_free(strtmp);
     800  }
     801  asprintf(&strtmp, "%s", program);
     802  paranoid_free(program);
     803  asprintf(&program, "%s %s", strtmp, devices);
     804  paranoid_free(strtmp);
     805  res = run_program_and_log_output(program, 1);
     806  // free memory
     807  paranoid_free(devices);
     808  paranoid_free(level);
     809  paranoid_free(program);
     810  // return to calling instance
     811  return res;
     812}
     813
     814
     815/**
    697816 * Format @p device as a @p format filesystem.
    698817 * This will use the format command returned by which_format_command_do_i_need().
     
    704823 * @return 0 for success, nonzero for failure.
    705824 */
    706 int format_device(char *device, char *format)
     825int format_device(char *device, char *format, struct raidlist_itself *raidlist)
    707826{
    708827    /** int **************************************************************/
     
    836955
    837956        log_msg(1, "Making %s", device);
    838         sprintf(program, "mkraid --really-force %s", device);
    839         res = run_program_and_log_output(program, 1);
    840         log_msg(1, "%s returned %d", program, res);
    841         system("sync");
    842         sleep(3);
    843         start_raid_device(device);
    844         if (g_fprep) {
    845             fprintf(g_fprep, "%s\n", program);
     957        // use mkraid if it exists, otherwise use mdadm
     958        if (run_program_and_log_output("which mkraid", FALSE)) {
     959            res = create_raid_device_via_mdadm(raidlist, device);
     960            log_msg(1, "Creating RAID device %s via mdadm returned %d", device, res);
     961        } else {
     962            sprintf(program, "mkraid --really-force %s", device);
     963            res = run_program_and_log_output(program, 1);
     964            log_msg(1, "%s returned %d", program, res);
     965            system("sync");
     966            sleep(3);
     967            start_raid_device(device);
     968            if (g_fprep) {
     969                fprintf(g_fprep, "%s\n", program);
     970            }
    846971        }
    847972        system("sync");
    848973        sleep(2);
    849 
    850974//      log_to_screen("Starting %s", device);
    851975//      sprintf(program, "raidstart %s", device);
     
    853977//      log_msg(1, "%s returned %d", program, res);
    854978//      system("sync"); sleep(1);
    855         if (g_fprep) {
    856             fprintf(g_fprep, "%s\n", program);
    857         }
    858979#endif
    859980        system("sync");
     
    9231044 * @return The number of errors encountered (0 for success).
    9241045 */
    925 int format_everything(struct mountlist_itself *mountlist,
    926                       bool interactively)
     1046int format_everything(struct mountlist_itself *mountlist, bool interactively,
     1047                          struct raidlist_itself *raidlist)
    9271048{
    9281049    /** int **************************************************************/
     
    9831104            if (do_it) {
    9841105                // NB: format_device() also stops/starts RAID device if necessary
    985                 retval += format_device(me->device, me->format);
     1106                retval += format_device(me->device, me->format, raidlist);
    9861107            }
    9871108            g_current_progress += progress_step;
     
    10001121    log_msg(1, "Creating LVMs");
    10011122    if (does_file_exist("/tmp/i-want-my-lvm")) {
    1002         wait_until_software_raids_are_prepped("/proc/mdstat", 10);
     1123        wait_until_software_raids_are_prepped("/proc/mdstat", 100);
    10031124        log_to_screen("Configuring LVM");
    10041125        if (!g_text_mode) {
     
    10761197
    10771198            if (do_it)
    1078                 retval += format_device(me->device, me->format);
     1199                retval += format_device(me->device, me->format, raidlist);
    10791200        }
    10801201
     
    22472368    sprintf(program, "vinum stop -f %s", raid_device);
    22482369#else
    2249     sprintf(program, "raidstop %s", raid_device);
    2250 //      sprintf (program, "raidstop " RAID_DEVICE_STUB "*");
     2370    // use raidstop if it exists, otherwise use mdadm
     2371    if (run_program_and_log_output("which raidstop", FALSE)) {
     2372        sprintf(program, "mdadm -S %s", raid_device);
     2373    } else {
     2374        sprintf(program, "raidstop %s", raid_device);
     2375    }
    22512376#endif
    22522377    log_msg(1, "program = %s", program);
  • branches/2.0.8/mondo/mondo/mondorestore/mondo-restore.c

    r519 r576  
    837837                    }
    838838
    839                     fmt_errs = format_everything(mountlist, FALSE);
     839                    fmt_errs = format_everything(mountlist, FALSE, raidlist);
    840840                    if (!fmt_errs) {
    841841                        log_to_screen
     
    855855                if (ask_me_yes_or_no
    856856                    ("Do you want to format your hard drives?")) {
    857                     fmt_errs = format_everything(mountlist, TRUE);
     857                    fmt_errs = format_everything(mountlist, TRUE, raidlist);
    858858                    if (!fmt_errs) {
    859859                        done = TRUE;
     
    11621162                system("sync");
    11631163                log_to_screen("Please wait. This may take a few minutes.");
    1164                 res += format_everything(mountlist, FALSE);
     1164                res += format_everything(mountlist, FALSE, raidlist);
    11651165            }
    11661166            paranoid_fclose(g_fprep);
     
    34153415    }
    34163416
    3417     if (argc == 4 && strcmp(argv[1], "--mdconv") == 0) {
    3418         finish(create_raidtab_from_mdstat(argv[2], argv[3]));
     3417    if (argc == 3 && strcmp(argv[1], "--mdconv") == 0) {
     3418        finish(create_raidtab_from_mdstat(argv[2]));
    34193419    }
    34203420
     
    35153515            strcpy(g_mountlist_fname, "/tmp/mountlist.txt");
    35163516            load_mountlist(mountlist, g_mountlist_fname);
    3517             res = format_everything(mountlist, FALSE);
     3517            res = format_everything(mountlist, FALSE, raidlist);
    35183518            finish(res);
    35193519        }
  • branches/2.0.8/mondo/mondo/mondorestore/mondo-rstr-tools.c

    r425 r576  
    25852585                                           int wait_for_percentage)
    25862586{
    2587     struct s_mdstat *mdstat;
     2587    struct raidlist_itself *raidlist;
    25882588    int unfinished_mdstat_devices = 9999, i;
    25892589    char *screen_message;
    25902590
    25912591    malloc_string(screen_message);
    2592     mdstat = malloc(sizeof(struct s_mdstat));
     2592    raidlist = malloc(sizeof(struct raidlist_itself));
    25932593
    25942594    assert(wait_for_percentage <= 100);
    25952595    iamhere("Help, my boat is sync'ing. (Get it? Urp! Urp!)");
    25962596    while (unfinished_mdstat_devices > 0) {
    2597         if (read_mdstat(mdstat, mdstat_file)) {
    2598             log_to_screen("Sorry, cannot read %s", mdstat_file);
     2597            // FIXME: Prefix '/dev/' should really be dynamic!
     2598        if (parse_mdstat(raidlist, "/dev/")) {
     2599            log_to_screen("Sorry, cannot read %s", MDSTAT_FILE);
     2600            log_msg(1,"Sorry, cannot read %s", MDSTAT_FILE);
    25992601            return;
    26002602        }
    2601         for (unfinished_mdstat_devices = i = 0; i < mdstat->entries; i++) {
    2602             if (mdstat->el[i].progress < wait_for_percentage) {
     2603        for (unfinished_mdstat_devices = i = 0; i <= raidlist->entries; i++) {
     2604            if (raidlist->el[i].progress < wait_for_percentage) {
    26032605                unfinished_mdstat_devices++;
    2604                 sprintf(screen_message, "Sync'ing /dev/md%d",
    2605                         mdstat->el[i].md);
     2606                log_msg(1,"Sync'ing %s (i=%d)", raidlist->el[i].raid_device, i);
     2607                sprintf(screen_message, "Sync'ing %s",
     2608                        raidlist->el[i].raid_device);
    26062609                open_evalcall_form(screen_message);
    2607                 if (mdstat->el[i].progress == -1)   // delayed while another partition inits
     2610                if (raidlist->el[i].progress == -1) // delayed while another partition inits
    26082611                {
    26092612                    continue;
    26102613                }
    2611                 while (mdstat->el[i].progress < wait_for_percentage) {
    2612                     update_evalcall_form(mdstat->el[i].progress);
     2614                while (raidlist->el[i].progress < wait_for_percentage) {
     2615                    log_msg(1,"Percentage sync'ed: %d", raidlist->el[i].progress);
     2616                    update_evalcall_form(raidlist->el[i].progress);
    26132617                    sleep(2);
    2614                     if (read_mdstat(mdstat, mdstat_file)) {
     2618                    // FIXME: Prefix '/dev/' should really be dynamic!
     2619                    if (parse_mdstat(raidlist, "/dev/")) {
    26152620                        break;
    26162621                    }
     
    26212626    }
    26222627    paranoid_free(screen_message);
    2623     paranoid_free(mdstat);
    2624 }
     2628    paranoid_free(raidlist);
     2629}
  • branches/2.0.8/mondo/mondo/mondorestore/mondoprep.h

    r128 r576  
    5858int start_all_raid_devices(struct mountlist_itself *);
    5959int stop_all_raid_devices(struct mountlist_itself *);
    60 int format_everything(struct mountlist_itself *, bool);
     60int format_everything(struct mountlist_itself *, bool, struct raidlist_itself *);
    6161int partition_device(FILE *, const char *, int, int, const char *,
    6262                     long long);
     
    6565int partition_device_with_fdisk(FILE *, const char *, int, int,
    6666                                const char *, long long);
    67 int format_device(char *, char *);
     67int format_device(char *, char *, struct raidlist_itself *);
    6868int partition_drive(struct mountlist_itself *, char *);
    6969int partition_everything(struct mountlist_itself *);
  • branches/2.0.8/mondo/mondo/mondorestore/mr-externs.h

    r128 r576  
    2727extern int edit_mountlist(char *mountlist_fname, struct mountlist_itself *,
    2828                          struct raidlist_itself *);
    29 extern int format_everything(struct mountlist_itself *, bool);
    30 extern int format_device(char *, char *);
     29extern int format_everything(struct mountlist_itself *, bool, struct raidlist_itself *);
     30extern int format_device(char *, char *, struct raidlist_itself *);
    3131extern void finish(int);
    3232extern void free_filelist(struct s_node *);
  • branches/2.0.8/mondo/mondo/post-nuke.sample/usr/bin/post-nuke

    • Property svn:unix-mode set to 755
  • branches/2.0.8/mondo/mondo/restore-scripts/etc

    • Property svn:unix-mode set to restore-scripts/
  • branches/2.0.8/mondo/mondo/restore-scripts/mondo

    • Property svn:unix-mode set to restore-scripts/
  • branches/2.0.8/mondo/mondo/restore-scripts/mondo/ask-me-a-question

    • Property svn:unix-mode set to 755
  • branches/2.0.8/mondo/mondo/restore-scripts/mondo/compare-me

    • Property svn:unix-mode set to 755
  • branches/2.0.8/mondo/mondo/restore-scripts/mondo/compare-subroutine-me

    • Property svn:unix-mode set to 755
  • branches/2.0.8/mondo/mondo/restore-scripts/mondo/edit-mountlist

    • Property svn:unix-mode set to 755
  • branches/2.0.8/mondo/mondo/restore-scripts/mondo/grub-MR

    • Property svn:unix-mode set to 755
  • branches/2.0.8/mondo/mondo/restore-scripts/mondo/grub-install.patched

    • Property svn:unix-mode set to 755
  • branches/2.0.8/mondo/mondo/restore-scripts/mondo/hack-elilo

    • Property svn:unix-mode set to 755
  • branches/2.0.8/mondo/mondo/restore-scripts/mondo/hack-fstab

    • Property svn:unix-mode set to 755
  • branches/2.0.8/mondo/mondo/restore-scripts/mondo/hack-grub

    • Property svn:unix-mode set to 755
  • branches/2.0.8/mondo/mondo/restore-scripts/mondo/hack-lilo

    • Property svn:unix-mode set to 755
  • branches/2.0.8/mondo/mondo/restore-scripts/mondo/ide-opt

    • Property svn:unix-mode set to 755
  • branches/2.0.8/mondo/mondo/restore-scripts/mondo/ide-opt-off

    • Property svn:unix-mode set to 755
  • branches/2.0.8/mondo/mondo/restore-scripts/mondo/label-partitions-as-necessary

    • Property svn:unix-mode set to 755
  • branches/2.0.8/mondo/mondo/restore-scripts/mondo/make-me-bootable

    • Property svn:unix-mode set to 755
  • branches/2.0.8/mondo/mondo/restore-scripts/mondo/mount-me

    • Property svn:unix-mode set to 755
  • branches/2.0.8/mondo/mondo/restore-scripts/mondo/mount-subroutine-me

    • Property svn:unix-mode set to 755
  • branches/2.0.8/mondo/mondo/restore-scripts/mondo/raw-MR

    • Property svn:unix-mode set to 755
  • branches/2.0.8/mondo/mondo/restore-scripts/mondo/restore-bigfiles-from-iso

    • Property svn:unix-mode set to 755
  • branches/2.0.8/mondo/mondo/restore-scripts/mondo/stabelilo-me

    • Property svn:unix-mode set to 755
  • branches/2.0.8/mondo/mondo/restore-scripts/mondo/stabgrub-me

    • Property svn:unix-mode set to 755
  • branches/2.0.8/mondo/mondo/restore-scripts/mondo/stablilo-me

    • Property svn:unix-mode set to 755
  • branches/2.0.8/mondo/mondo/restore-scripts/mondo/stabraw-me

    • Property svn:unix-mode set to 755
  • branches/2.0.8/mondo/mondo/restore-scripts/mondo/unmount-me

    • Property svn:unix-mode set to 755
  • branches/2.0.8/mondo/mondo/restore-scripts/mondo/unmount-subroutine-me

    • Property svn:unix-mode set to 755
  • branches/2.0.8/mondo/mondo/restore-scripts/usr

    • Property svn:unix-mode set to restore-scripts/
  • branches/2.0.8/mondo/mondo/restore-scripts/usr.bin

    • Property svn:unix-mode set to restore-scripts/
  • branches/2.0.8/mondo/mondo/restore-scripts/usr/bin

    • Property svn:unix-mode set to restore-scripts/
  • branches/2.0.8/tools/common-env

    r319 r576  
    11#!/bin/bash
    22#
    3 # Creates common environment from SVN repository
     3# Creates common environment
    44#
    55# $Id$
     
    88# Adapt to your needs
    99export BASE=${HOME}/mondo
    10 
    11 # Should not be modified below
    12 dname=`dirname $0`
    13 export VER="branches/`cat $dname/../mondo/VERSION`"
    14 export TMP=${BASE}/tmp
    15 mkdir -p ${TMP}
    16 
    17 export MINDI_VER=`cat ${BASE}/svn/${VER}/mindi/VERSION`
    18 export MONDO_VER=`cat ${BASE}/svn/${VER}/mondo/VERSION`
    19 
    20 # To be safe for SVN commands
    21 cd $TOOLHOME/..
    22 export REVISION=`$TOOLHOME/mksvnversion`
     10export TOPDIR=${BASE}/build
     11mkdir -p ${TOPDIR}
     12export TMPDIR=
     13export TMP=`mktemp -d -p /tmp`
  • branches/2.0.8/tools/livwww

    r519 r576  
    4747
    4848. $TOOLHOME/common-env
     49. $TOOLHOME/svn-env
    4950
    5051cd ${BASE}/svn
     
    5556fi
    5657
    57 svn export $optsvn ${VER}/website $LOCALDIR
     58svn export $optsvn ${SVNBRANCH}/website $LOCALDIR
    5859
    5960if [ $force -eq 1 ]; then
     
    6263fi
    6364
    64 svn export $optsvn ${VER}/documentation $LOCALDOC
     65svn export $optsvn ${SVNBRANCH}/mondo-doc $LOCALDOC
    6566
    6667#
  • branches/2.0.8/tools/mkdeliv

    r535 r576  
    2020fi
    2121
     22. $TOOLHOME/common-env
     23. $TOOLHOME/svn-env
    2224. $TOOLHOME/rpm-env
    2325
  • branches/2.0.8/tools/mkqemu

    r535 r576  
    33# $Id$
    44#
    5 # Script allowing mondo packages production on various distributions with qemu
     5# Call virtual machine with qemu
    66#
    77
    88if [ _"$1" == _"" ]; then
    9     echo "Syntax: mkqemu [mondo version] ([vm].. )"
     9    echo "Syntax: qemu vm"
    1010    exit -1
     11else
     12    m=$1
    1113fi
    1214
    13 if [ _"$2" == _"" ]; then
    14     export SVN_VM="mdk101 mdk102 mdv2006 rh73 rh9 fc4 fc5 rhel3 rhel4 suse10 sles9 debian31 slackware102 gentoo"
    15 else
    16     export SVN_VM="$2"
    17 fi
     15ipvm=10.0.2.15
    1816
    19 cat > /tmp/mkmondo << EOF
    20 #!/bin/bash
    21 
    22 export SVN_HOME=\$HOME/mondo/svn/branches
    23 export SVN_SSH="ssh -l bcornec"
    24 export SVN_EDITOR=vim
    25 export LANG="C"
    26 export LANGUAGE="C"
    27 export LC_ALL="C"
    28 
    29 if [ -d \$SVN_HOME/$1 ]; then
    30     cd \$SVN_HOME/$1
    31     svn up
    32     if [ \$? != 0 ]; then
    33             echo "Verify SVN installation"
    34             exit -1
    35     fi
    36 else
    37     mkdir -p \$SVN_HOME
    38     cd \$SVN_HOME
    39     svn co svn+ssh://bcornec@svn.berlios.de/svnroot/repos/mondorescue/branches/$1 $1
    40     if [ \$? != 0 ]; then
    41             echo "Verify SVN installation"
    42             exit -1
    43     fi
    44 fi
    45 echo \$SVN_VM | grep -q "debian"
    46 if [ \$? -eq 0 ]; then
    47     \$SVN_HOME/$1/tools/mkdeb < /dev/null
    48 else
    49     echo \$SVN_VM | grep -q "slack"
    50     if [ \$? -eq 0 ]; then
    51         \$SVN_HOME/$1/tools/mkslack < /dev/null
    52     else
    53         echo \$SVN_VM | grep -q "gentoo"
    54         if [ \$? -eq 0 ]; then
    55             \$SVN_HOME/$1/tools/mkemerge < /dev/null
    56         else
    57             \$SVN_HOME/$1/tools/mkrpm < /dev/null
    58         fi
    59     fi
    60 fi
    61 \$SVN_HOME/$1/tools/mkdeliv
    62 EOF
    63 
    64 ipvm=10.0.2.15
    65 sp=2222
    66 
    67 for m in $SVN_VM; do
    68     vmp=0
    69     if [ ! -f /users/vmplayer/$m.qemu ]; then
    70             echo "VM unaccessible. Verify NFS mount"
    71             exit -1
    72     fi
    73     ps auxww | grep qemu | grep -v grep | grep -q /users/vmplayer/$m.qemu
    74     if [ $? -ne 0 ]; then
    75         # Virtual machine alreday started
    76         vmp=1
    77         qemu -m 256 $QEMUOPT -redir tcp:${sp}:${ipvm}:22 /users/vmplayer/$m.qemu &
    78         sleep 300
    79     fi
    80     scp -P $sp /tmp/mkmondo bruno@localhost:
    81     ssh -p $sp bruno@localhost "chmod 755 ./mkmondo ; ./mkmondo" | tee /tmp/mkvm.log
    82     if [ $vmp -eq 1 ]; then
    83         ssh -p $sp root@localhost "halt -p"
    84         sleep 300
    85         proces=`ps auxww | grep qemu | grep -v grep | grep -q /users/vmplayer/$m.qemu | awk '{print $2}'`
    86         if [ "$proces" != "" ]; then
    87             kill $proces
    88         fi
    89     fi
    90 done
     17qemu -m 256 $QEMUOPT -redir tcp:${sp}:${ipvm}:22 /users/qemu/$m.qemu
  • branches/2.0.8/tools/qemu-vm.txt

    r535 r576  
    4444
    4545su - bruno
    46 mkdir -p mondo/tmp RPMS/BUILD RPMS/RPMS/i386 RPMS/RPMS/noarch RPMS/SOURCES RPMS/SPECS RPMS/SRPMS RPMS/tmp SRPMS tmp
     46mkdir -p mondo/tmp build
    4747cat > ~bruno/.rpmmacros << EOF
    48 %_topdir    /home/bruno/RPMS
     48%_topdir    /home/bruno/build
    4949%_tmppath   %{_topdir}/tmp
    50 %packager   Bruno Cornec <bruno@HyPer-Linux.org>
     50%packager   Bruno Cornec <bruno@mondorescue.org>
    5151EOF
    5252cat > ~bruno/.rpmrc << EOF
     
    6666svn.berlios.de,195.37.77.137 ssh-dss AAAAB3NzaC1kc3MAAACBAKouB77l1f4FgdP6DjLOgq5RKuGYm3zMJlM4WHcKzWnPuErZW4Omxk1CO0JojDNj/bjxz/95blWbdonEcAo0v71GcZbECFDsJdgVbZM+yxLHKOF4S5uHkiJ+LMawFcRoCGAochowoP9jUfLVAzyT1q3dbvmL43YO3FDvD+mCKTbZAAAAFQCWs/2nOqvitE/CyOCa81sadnzsPQAAAIBrgWRs2VN6jAtX1eUxPwtkJWX886DkiBwdEgtUwDW8RJJCFU6+zjNwFZ8VcjeA7OCFKmZqoD8ABojMMtB53VoXXRzp5PtWgJEMpCLOhHbAA6nLR+Zu9zV8rFHsrjvR17ZgmA8q1dZRqqvZSyzsoP4KdW7f9nD2SjFEVhjHfIsQmwAAAIEAoDlEoGO/lc8XkvNW7G8/rybzETG0cepONVKThYufP5Z2FdGj9a1TYc2Gaw2DygM20Ohwj1RW8aeRE/jYbEm4unM6IFYeLvCbDeeCCHCiCJmw/Pj2ityB5uPTat4Yn28FCd4eP5LyQq2EHz6bPA0LzpNJKwto4naIMsDpET1GNH0=
    6767EOF
    68 cat >> ~/.bash_profile << EOF
    69 export SVN_SSH="ssh -l bcornec"
    70 export SVN_M=svn+ssh://bcornec@svn.berlios.de/svnroot/repos/mondorescue/
    71 export SVN_EDITOR=vim
    72 EOF
    73 source ~/.bash_profile
    7468
    7569rebuild paquets necessaires mondo:
     
    8579root:
    8680rpm -ivh ~bruno/RPMS/RPMS/i386/afio-[0-9]* ~bruno/RPMS/RPMS/i386/buffer-[0-9]*
     81
     82pour gentoo
     83chown bruno /etc/make.conf
     84bruno in portage group
  • branches/2.0.8/website/download.shtml

    r423 r576  
    33       burn it to a CD, and boot from it. It lets you test your RAM (with
    44       memtest86) and your CPU (with cpuburn and lucifer). Feedback is welcome.</P>
    5       <P ALIGN=JUSTIFY>
    6        <B>Debian users</B> - click to download <A HREF="http://packages.debian.org/cgi-bin/search_packages2.pl?keywords=mondo&amp;searchon=names&amp;version=all&amp;release=all">Mondo</A>
    7        and <A HREF="http://packages.debian.org/cgi-bin/search_packages2.pl?keywords=mindi&amp;searchon=names&amp;version=all&amp;release=all">Mindi</A>...
    8         and <A HREF="other/mindi-kernel-1.0.tgz">mindi-kernel</A> if your
    9        kernel blows. Much <A HREF="http://www.dictionary.com/search?q=kudos">kudos</A>
    10        is due to H&eacute;ctor Garc&iacute;a &Aacute;lvarez for rolling the
    11        DEBs. I am trying to create my own snapshot DEBs but I have not yet
    12        succeeded. Please be gentle with your criticism. :) My thanks go to
    13        Steve Hindle and Dagfinn Bakken for helping me with Debian.</P>
    14            <A HREF="daily/unstable/changes">Monitas</A> (alpha-quality)</TD>
    15          <TD WIDTH="25%" VALIGN=CENTER>
    16           <P ALIGN=CENTER>
    17            August/September</TD>
    18          <TD WIDTH="15%" VALIGN=CENTER>
    19           <P ALIGN=CENTER>
    20            <A HREF="monitas/stefan/html/monitasconcepts.html">HTML docs</A></TD>
    21          <TD WIDTH="15%" VALIGN=CENTER>
    22           <P ALIGN=CENTER>
    23            <A HREF="monitas/monitas.html">Download</A></TD>
    24          <TD WIDTH="15%" VALIGN=CENTER>
    25           <P ALIGN=CENTER>
    26            <A HREF="monitas/stefan/monitasconcepts.pdf">PDF docs</A></TD>
    27         </TR>
    28        </TABLE></P>
    29       </CENTER>
  • branches/2.0.8/website/downloads.shtml

    r519 r576  
    2222    </div>
    2323    <p>We are interested in up to date mirrors for both the Web and FTP sites. Please contact us on the <a href="/support.shtml">mailing list</a>.
     24    <ul>
     25        <li><b>Europe</b>:
     26        <ul>
     27            <li><i>France</i>:</li>
     28            <ul>
     29                <li>HP/Intel Solution Center :
     30                    <a href="http://www.mondorescue.org">Web site</a>,
     31                    <a href="ftp://ftp.mondorescue.org">Ftp site</a>
     32                </li>
     33            </ul>
     34            <li><i>Germany</i>:</li>
     35            <ul>
     36                <li>Linjection.org :
     37                    <a href="http://mondorescue.linjection.org">Web site</a>,
     38                    <a href="http://mondorescue.linjection.org/ftp">Ftp site (http)</a>
     39                </li>
     40            </ul>
     41        </ul>
     42    </ul>
    2443
    2544    <div class="h2-3">
  • branches/2.0.8/website/news.shtml

    r519 r576  
    6262Release :-)
    6363</p><p>
    64 Now available at ftp://ftp.berlios.de/pub/mondorescue :<br>
     64Now available at ftp://ftp.mondorescue.org :<br>
    6565<br>
    6666mandrake/10.1/mindi-1.06-266.10.1mdk.i386.rpm<br>
     
    171171version numbers of mondo and mindi to avoid confusion.
    172172</p><p>
    173 So I can now annouce the availability of the latest mondo and mindi
     173So I can now announce the availability of the latest mondo and mindi
    174174which can be downloadable from http://mondorescue.berlios.de
    175175</p><p>
Note: See TracChangeset for help on using the changeset viewer.