summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitattributes1
-rw-r--r--debian/.gitignore10
-rw-r--r--debian/FAQ586
-rw-r--r--debian/NEWS109
-rw-r--r--debian/README.Debian151
-rw-r--r--debian/README.checkarray33
-rw-r--r--debian/README.recipes149
-rw-r--r--debian/TESTING84
-rw-r--r--debian/TODO29
-rwxr-xr-xdebian/bugscript.in222
-rw-r--r--debian/changelog1733
-rw-r--r--debian/checkarray219
-rw-r--r--debian/compat1
-rw-r--r--debian/control34
-rw-r--r--debian/copyright21
-rw-r--r--debian/docs/RAID5_versus_RAID10.txt177
-rw-r--r--debian/docs/rebuilding-raid.html561
-rw-r--r--debian/initramfs/hook275
-rw-r--r--debian/initramfs/script.local-top104
-rw-r--r--debian/mdadd.sh375
-rw-r--r--debian/mdadm-raid266
-rw-r--r--debian/mdadm-startall31
-rw-r--r--debian/mdadm-startall.sgml115
-rw-r--r--debian/mdadm-udeb.dirs2
-rw-r--r--debian/mdadm-waitidle55
-rw-r--r--debian/mdadm.config199
-rw-r--r--debian/mdadm.cron.d12
-rw-r--r--debian/mdadm.cron.daily18
-rw-r--r--debian/mdadm.dirs8
-rw-r--r--debian/mdadm.doc-base.faq9
-rw-r--r--debian/mdadm.doc-base.jd-rebuild-raid9
-rw-r--r--debian/mdadm.doc-base.raid5-vs-1011
-rw-r--r--debian/mdadm.doc-base.recipes9
-rw-r--r--debian/mdadm.docs8
-rw-r--r--debian/mdadm.examples2
-rw-r--r--debian/mdadm.init93
-rw-r--r--debian/mdadm.links1
-rw-r--r--debian/mdadm.lintian-overrides1
-rw-r--r--debian/mdadm.logcheck.ignore.server23
-rw-r--r--debian/mdadm.logcheck.violations3
-rw-r--r--debian/mdadm.manpages1
-rw-r--r--debian/mdadm.postinst183
-rw-r--r--debian/mdadm.postrm33
-rw-r--r--debian/mdadm.preinst56
-rw-r--r--debian/mdadm.templates110
-rw-r--r--debian/mkconf.in114
-rw-r--r--debian/patches/debian-conffile-location.diff115
-rw-r--r--debian/patches/debian-no-Werror.diff24
-rw-r--r--debian/patches/remove-bashism-from-makefile.patch22
-rw-r--r--debian/patches/series5
-rw-r--r--debian/patches/sha1-includes.diff40
-rw-r--r--debian/patches/use-external-blkid.diff16
-rw-r--r--debian/po/POTFILES.in1
-rw-r--r--debian/po/ca.po250
-rw-r--r--debian/po/cs.po294
-rw-r--r--debian/po/da.po240
-rw-r--r--debian/po/de.po317
-rw-r--r--debian/po/es.po288
-rw-r--r--debian/po/eu.po241
-rw-r--r--debian/po/fi.po236
-rw-r--r--debian/po/fr.po252
-rw-r--r--debian/po/gl.po243
-rw-r--r--debian/po/it.po243
-rw-r--r--debian/po/ja.po297
-rw-r--r--debian/po/nl.po253
-rw-r--r--debian/po/pt.po247
-rw-r--r--debian/po/pt_BR.po381
-rw-r--r--debian/po/ru.po253
-rw-r--r--debian/po/sk.po241
-rw-r--r--debian/po/sv.po248
-rw-r--r--debian/po/templates.pot193
-rw-r--r--debian/po/vi.po245
-rw-r--r--debian/presubj32
-rwxr-xr-xdebian/rules117
-rw-r--r--debian/source/format1
-rw-r--r--debian/watch2
76 files changed, 11583 insertions, 0 deletions
diff --git a/.gitattributes b/.gitattributes
new file mode 100644
index 00000000..5d425843
--- /dev/null
+++ b/.gitattributes
@@ -0,0 +1 @@
+debian/changelog merge=dpkg-mergechangelogs
diff --git a/debian/.gitignore b/debian/.gitignore
new file mode 100644
index 00000000..bb62f98a
--- /dev/null
+++ b/debian/.gitignore
@@ -0,0 +1,10 @@
+/mdadm-startall.8
+.*.sw?
+/*.substvars
+/files
+/mdadm
+/mdadm-udeb
+/*.debhelper
+/*.log
+/mkconf
+/bugscript
diff --git a/debian/FAQ b/debian/FAQ
new file mode 100644
index 00000000..6ec1c11c
--- /dev/null
+++ b/debian/FAQ
@@ -0,0 +1,586 @@
+Frequently asked questions -- Debian mdadm
+==========================================
+
+Also see /usr/share/doc/mdadm/README.recipes.gz .
+
+The latest version of this FAQ is available here:
+ http://git.debian.org/?p=pkg-mdadm/mdadm.git;a=blob;f=debian/FAQ;hb=HEAD
+
+0. What does MD stand for?
+~~~~~~~~~~~~~~~~~~~~~~~~~~
+ MD is an abbreviation for "multiple device" (also often called "multi-
+ disk"). The Linux MD implementation implements various strategies for
+ combining multiple physical devices into single logical ones. The most
+ common use case is commonly known as "Software RAID". Linux supports RAID
+ levels 1, 4, 5, 6, and 10, as well as the "pseudo-redundant" RAID level 0.
+ In addition, the MD implementation covers linear and multipath
+ configurations.
+
+ Most people refer to MD as RAID. Since the original name of the RAID
+ configuration software is "md"adm, I chose to use MD consistently instead.
+
+1. How do I overwrite ("zero") the superblock?
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ mdadm --zero-superblock /dev/mdX
+
+ Note that this is a destructive operation. It does not actually delete any
+ data, but the device will have lost its "authority". You cannot assemble the
+ array with it anymore, and if you add the device to another array, the
+ synchronisation process *will* *overwrite* all data on the device.
+
+ Nevertheless, sometimes it is necessary to zero the superblock:
+
+ - If you are reusing a disk that has been part of an array with an different
+ superblock version and/or location. In this case you zero the superblock
+ before you assemble the array, or add the device to an array.
+
+ - If you are trying to prevent a device from being recognised as part of an
+ array. Say for instance you are trying to change an array spanning sd[ab]1
+ to sd[bc]1 (maybe because sda is failing or too slow), then automatic
+ (scan) assembly will still recognise sda1 as a valid device. You can limit
+ the devices to scan with the DEVICE keyword in the configuration file, but
+ this may not be what you want. Instead, zeroing the superblock will
+ (permanently) prevent a device from being considered as part of an array.
+
+2. How do I change the preferred minor of an MD array (RAID)?
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ See item 12 in /usr/share/doc/mdadm/README.recipes.gz and read the mdadm
+ manpage (search for 'preferred').
+
+3. How does mdadm determine which /dev/mdX or /dev/md/X to use?
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ The logic used by mdadm to determine the device node name in the mdadm
+ --examine output (which is used to generate mdadm.conf) depends on several
+ factors. Here's how mdadm determines it:
+
+ It first checks the superblock version of a given array (or each array in
+ turn when iterating all of them). Run
+
+ mdadm --detail /dev/mdX | sed -ne 's,.*Version : ,,p'
+
+ to determine the superblock version of a running array, or
+
+ mdadm --examine /dev/sdXY | sed -ne 's,.*Version : ,,p'
+
+ to determine the superblock version from a component device of an array.
+
+ Version 0 superblocks (00.90.XX)
+ ''''''''''''''''''''''''''''''''
+ You need to know the preferred minor number stored in the superblock,
+ so run either of
+
+ mdadm --detail /dev/mdX | sed -ne 's,.*Preferred Minor : ,,p'
+ mdadm --examine /dev/sdXY | sed -ne 's,.*Preferred Minor : ,,p'
+
+ Let's call the resulting number MINOR. Also see FAQ 2 further up.
+
+ Given MINOR, mdadm will output /dev/md<MINOR> if the device node
+ /dev/md<MINOR> exists.
+ Otherwise, it outputs /dev/md/<MINOR>
+
+ Version 1 superblocks (01.XX.XX)
+ ''''''''''''''''''''''''''''''''
+ Version 1 superblocks actually seem to ignore preferred minors and instead
+ use the value of the name field in the superblock. Unless specified
+ explicitly during creation (-N|--name) the name is determined from the
+ device name used, using the following regexp: 's,/dev/md/?(.*),$1,', thus:
+
+ /dev/md0 -> 0
+ /dev/md/0 -> 0
+ /dev/md_d0 -> _d0 (d0 in later versions)
+ /dev/md/d0 -> d0
+ /dev/md/name -> name
+ (/dev/name does not seem to work)
+
+ mdadm will append the name to '/dev/md/', so it will always output device
+ names under the /dev/md/ directory. Newer versions can create a symlink
+ from /dev/mdX. See the symlinks option in mdadm.con(5) and mdadm(8).
+
+ If you want to change the name, you can do so during assembly:
+
+ mdadm -A -U name -N newname /dev/mdX /dev/sd[abc]X
+
+ I know this all sounds inconsistent and upstream has some work to do.
+ We're on it.
+
+4. Which RAID level should I use?
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Please read /usr/share/doc/mdadm/RAID5_versus_RAID10.txt.gz .
+
+ Many people seem to prefer RAID4/5/6 because it makes more efficient use of
+ space. For example, if you have disks of size X, then in order to get 2X
+ storage, you need 3 disks for RAID5, but 4 if you use RAID10 or RAID1+0 (or
+ RAID6).
+
+ This gain in usable space comes at a price: performance; RAID1/10 can be up
+ to four times faster than RAID4/5/6.
+
+ At the same time, however, RAID4/5/6 provide somewhat better redundancy in
+ the event of two failing disks. In a RAID10 configuration, if one disk is
+ already dead, the RAID can only survive if any of the two disks in the other
+ RAID1 array fails, but not if the second disk in the degraded RAID1 array
+ fails (see next item, 4b). A RAID6 across four disks can cope with any two
+ disks failing. However, RAID6 is noticeably slower than RAID5. RAID5 and
+ RAID4 do not differ much, but can only handle single-disk failures.
+
+ If you can afford the extra disks (storage *is* cheap these days), I suggest
+ RAID1/10 over RAID4/5/6. If you don't care about performance but need as
+ much space as possible, go with RAID4/5/6, but make sure to have backups.
+ Heck, make sure to have backups whatever you do.
+
+ Let it be said, however, that I thoroughly regret putting my primary
+ workstation on RAID5. Anything disk-intensive brings the system to its
+ knees; I will have to migrate to RAID10 at one point.
+
+4b. Can a 4-disk RAID10 survive two disk failures?
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ I am assuming that you are talking about a setup with two copies of each
+ block, so --layout=near2/far2/offset2:
+
+ In two thirds of the cases, yes[0], and it does not matter which layout you
+ use. When you assemble 4 disks into a RAID10, you essentially stripe a RAID0
+ across two RAID1, so the four disks A,B,C,D become two pairs: A,B and C,D.
+ If A fails, the RAID10 can only survive if the second failing disk is either
+ C or D; If B fails, your array is dead.
+
+ Thus, if you see a disk failing, replace it as soon as possible!
+
+ If you need to handle two failing disks out of a set of four, you have to
+ use RAID6, or store more than two copies of each block (see the --layout
+ option in the mdadm(8) manpage).
+
+ See also question 18 further down.
+
+ 0. it's actually (n-2)/(n-1), where n is the number of disks. I am not
+ a mathematician, see http://aput.net/~jheiss/raid10/, which gives the
+ chance of *failure* as 1/(n-1), so the chance of success is 1-1/(n-1), or
+ (n-2)/(n-1), or 2/3 in the four disk example.
+ (Thanks to Per Olofsson for clarifying this in #493577).
+
+5. How to convert RAID5 to RAID10?
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ To convert RAID5 to RAID10, you need a spare disk (either a spare, forth
+ disk in the array, or a new one). Then you remove the spare and one of the
+ three disks from the RAID5, create a degraded RAID10 across them, create
+ the filesystem and copy the data (or do a raw copy), then add the other two
+ disks to the new RAID10. However, mdadm cannot assemble a RAID10 with 50%
+ missing devices the way you might like it:
+
+ mdadm --create -l 10 -n4 -pn2 /dev/md1 /dev/sd[cd] missing missing
+
+ For reasons that may be answered by question 20 further down, mdadm actually
+ cares about the order of devices you give it. If you intersperse the missing
+ keywords with the physical drives, it should work:
+
+ mdadm --create -l 10 -n4 -pn2 /dev/md1 /dev/sdc missing /dev/sdd missing
+
+ or even
+
+ mdadm --create -l 10 -n4 -pn2 /dev/md1 missing /dev/sd[cd] missing
+
+ Also see item (4b) further up, and this thread:
+ http://marc.theaimsgroup.com/?l=linux-raid&m=116004333406395&w=2
+
+6. What is the difference between RAID1+0 and RAID10?
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ RAID1+0 is a form of RAID in which a RAID0 is striped across two RAID1
+ arrays. To assemble it, you create two RAID1 arrays and then create a RAID0
+ array with the two md arrays.
+
+ The Linux kernel provides the RAID10 level to do pretty much exactly the
+ same for you, but with greater flexibility (and somewhat improved
+ performance). While RAID1+0 makes sense with 4 disks, RAID10 can be
+ configured to work with only 3 disks. Also, RAID10 has a little less
+ overhead than RAID1+0, which has data pass the md layer twice.
+
+ I prefer RAID10 over RAID1+0.
+
+6b. What's the difference between RAID1+0 and RAID0+1?
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ In short: RAID1+0 concatenates two mirrored arrays while RAID0+1 mirrors two
+ concatenated arrays. However, the two are also often switched.
+
+ The linux MD driver supports RAID10, which is equivalent to the above
+ RAID1+0 definition.
+
+ RAID1+0/10 has a greater chance to survive two disk failures, its
+ performance suffers less when in degraded state, and it resyncs faster after
+ replacing a failed disk.
+
+ See http://aput.net/~jheiss/raid10/ for more details.
+
+7. Which RAID10 layout scheme should I use
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ RAID10 gives you the choice between three ways of laying out the blocks on
+ the disk. Assuming a simple 4 drive setup with 2 copies of each block, then
+ if A,B,C are data blocks, a,b their parts, and 1,2 denote their copies, the
+ following would be a classic RAID1+0 where 1,2 and 3,4 are RAID0 pairs
+ combined into a RAID1:
+
+ near=2 would be (this is the classic RAID1+0)
+
+ hdd1 Aa1 Ba1 Ca1
+ hdd2 Aa2 Ba2 Ca2
+ hdd3 Ab1 Bb1 Cb1
+ hdd4 Ab2 Bb2 Cb2
+
+ offset=2 would be
+
+ hdd1 Aa1 Bb2 Ca1 Db2
+ hdd2 Ab1 Aa2 Cb1 Ca2
+ hdd3 Ba1 Ab2 Da1 Cb2
+ hdd4 Bb1 Ba2 Db1 Da2
+
+ far=2 would be
+
+ hdd1 Aa1 Ca1 .... Bb2 Db2
+ hdd2 Ab1 Cb1 .... Aa2 Ca2
+ hdd3 Ba1 Da1 .... Ab2 Cb2
+ hdd4 Bb1 Db1 .... Ba2 Da2
+
+ Where the second set start half-way through the drives.
+
+ The advantage of far= is that you can easily spread a long sequential read
+ across the drives. The cost is more seeking for writes. offset= can
+ possibly get similar benefits with large enough chunk size. Neither upstream
+ nor the package maintainer have tried to understand all the implications of
+ that layout. It was added simply because it is a supported layout in DDF and
+ DDF support is a goal.
+
+8. (One of) my RAID arrays is busy and cannot be stopped. What gives?
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ It is perfectly normal for mdadm to report the array with the root
+ filesystem to be busy on shutdown. The reason for this is that the root
+ filesystem must be mounted to be able to stop the array (or otherwise
+ /sbin/mdadm does not exist), but to stop the array, the root filesystem
+ cannot be mounted. Catch 22. The kernel actually stops the array just before
+ halting, so it's all well.
+
+ If mdadm cannot stop other arrays on your system, check that these arrays
+ aren't used anymore. Common causes for busy/locked arrays are:
+
+ * The array contains a mounted filesystem (check the `mount' output)
+ * The array is used as a swap backend (check /proc/swaps)
+ * The array is used by the device-mapper (check with `dmsetup')
+ * LVM
+ * dm-crypt
+ * EVMS
+ * The array contains a swap partition used for suspend-to-ram
+ (check /etc/initramfs-tools/conf.d/resume)
+ * The array is used by a process (check with `lsof')
+
+9. Should I use RAID0 (or linear)?
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ No. Unless you know what you're doing and keep backups, or use it for data
+ that can be lost.
+
+9b. Why not?
+~~~~~~~~~~~~
+ RAID0 has zero redundancy. If you stripe a RAID0 across X disks, you
+ increase the likelyhood of complete loss of the filesystem by a factor of X.
+
+ The same applies to LVM by the way.
+
+ If you want/must used LVM or RAID0, stripe it across RAID1 arrays
+ (RAID10/RAID1+0, or LVM on RAID1), and keep backups!
+
+10. Can I cancel a running array check (checkarray)?
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ See the -x option in the `/usr/share/mdadm/checkarray --help` output.
+
+11. mdadm warns about duplicate/similar superblocks; what gives?
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ In certain configurations, especially if your last partition extends all the
+ way to the end of the disk, mdadm may display a warning like:
+
+ mdadm: WARNING /dev/hdc3 and /dev/hdc appear to have very similar
+ superblocks. If they are really different, please --zero the superblock on
+ one. If they are the same or overlap, please remove one from the DEVICE
+ list in mdadm.conf.
+
+ There are two ways to solve this:
+
+ (a) recreate the arrays with version-1 superblocks, which is not always an
+ option -- you cannot yet upgrade version-0 to version-1 superblocks for
+ existing arrays.
+
+ (b) instead of 'DEVICE partitions', list exactly those devices that are
+ components of MD arrays on your system. So in the above example:
+
+ - DEVICE partitions
+ + DEVICE /dev/hd[ab]* /dev/hdc[123]
+
+12. mdadm -E / mkconf report different arrays with the same device
+ name / minor number. What gives?
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ In almost all cases, mdadm updates the super-minor field in an array's
+ superblock when assembling the array. It does *not* do this for RAID0
+ arrays. Thus, you may end up seeing something like this when you run
+ mdadm -E or mkconf:
+
+ ARRAY /dev/md0 level=raid0 num-devices=2 UUID=abcd...
+ ARRAY /dev/md0 level=raid1 num-devices=2 UUID=dcba...
+
+ Note how the two arrays have different UUIDs but both appear as /dev/md0.
+
+ The solution in this case is to explicitly tell mdadm to update the
+ superblock of the RAID0 array. Assuming that the RAID0 array in the above
+ example should really be /dev/md1:
+
+ mdadm --stop /dev/md1
+ mdadm --assemble --update=super-minor --uuid=abcd... /dev/md1
+
+ See question 2 of this FAQ, and also http://bugs.debian.org/386315 and
+ recipe #12 in README.recipes .
+
+13. Can a MD array be partitioned?
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Since kernel 2.6.28, MD arrays can be partitioned like any other block
+ device.
+
+ Prior to 2.6.28, for a MD array to be able to hold partitions, it must be
+ created as a "partitionable array", using the configuration auto=part on the
+ command line or in the configuration file, or by using the standard naming
+ scheme (md_d* or md/d*) for partitionable arrays:
+
+ mdadm --create --auto=yes ... /dev/md_d0 ...
+ # see mdadm(8) manpage about the values of the --auto keyword
+
+14. When would I partition an array?
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ This answer by Doug Ledford is shamelessly adapted from [0] (with
+ permission):
+
+ First, not all MD types make sense to be split up, e.g. multipath. For
+ those types, when a disk fails, the *entire* disk is considered to have
+ failed, but with different arrays you won't switch over to the next path
+ until each MD array has attempted to access the bad path. This can have
+ obvious bad consequences for certain array types that do automatic
+ failover from one port to another (you can end up getting the array in
+ a loop of switching ports repeatedly to satisfy the fact that one array
+ failed over during a path down, then the path came back up, and another
+ array stayed on the old path because it didn't send any commands during
+ the path down time period).
+
+ Second, convenience. Assume you have a 6 disk RAID5 array. If a disk
+ fails and you are using a partitioned MD array, then all the partitions on
+ the disk will already be handled without using that disk. No need to
+ manually fail any still active array members from other arrays.
+
+ Third, safety. Again with the raid5 array. If you use multiple arrays on
+ a single disk, and that disk fails, but it only failed on one array, then
+ you now need to manually fail that disk from the other arrays before
+ shutting down or hot swapping the disk. Generally speaking, that's not
+ a big deal, but people do occasionally have fat finger syndrome and this
+ is a good opportunity for someone to accidentally fail the wrong disk, and
+ when you then go to remove the disk you create a two disk failure instead
+ of one and now you are in real trouble.
+
+ Forth, to respond to what you wrote about independent of each other --
+ part of the reason why you partition. I would argue that's not true. If
+ your goal is to salvage as much use from a failing disk as possible, then
+ OK. But, generally speaking, people that have something of value on their
+ disks don't want to salvage any part of a failing disk, they want that
+ disk gone and replaced immediately. There simply is little to no value in
+ an already malfunctioning disk. They're too cheap and the data stored on
+ them too valuable to risk loosing something in an effort to further
+ utilize broken hardware. This of course is written with the understanding
+ that the latest MD RAID code will do read error rewrites to compensate for
+ minor disk issues, so anything that will throw a disk out of an array is
+ more than just a minor sector glitch.
+
+ 0. http://marc.theaimsgroup.com/?l=linux-raid&m=116117813315590&w=2
+
+15. How can I start a dirty degraded array?
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ A degraded array (e.g. a RAID5 with only two disks) that has not been
+ properly stopped cannot be assembled just like that; mdadm will refuse and
+ complain about a "dirty degraded array", for good reasons.
+
+ The solution might be to force-assemble it, and then to start it. Please see
+ recipes 4 and 4b of /usr/share/doc/mdadm/README.recipes.gz and make sure you
+ know what you're doing.
+
+16. How can I influence the speed with which an array is resynchronised?
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ For each array, the MD subsystem exports parameters governing the
+ synchronisation speed via sysfs. The values are in kB/sec.
+
+ /sys/block/mdX/md/sync_speed -- the current speed
+ /sys/block/mdX/md/sync_speed_max -- the maximum speed
+ /sys/block/mdX/md/sync_speed_min -- the guaranteed minimum speed
+
+17. When I create a new array, why does it resynchronise at first?
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ See the mdadm(8) manpage:
+ When creating a RAID5 array, mdadm will automatically create a degraded
+ array with an extra spare drive. This is because building the spare into
+ a degraded array is in general faster than resyncing the parity on
+ a non-degraded, but not clean, array. This feature can be over-ridden with
+ the --force option.
+
+ This also applies to RAID levels 4 and 6.
+
+ It does not make much sense for RAID levels 1 and 10 and can thus be
+ overridden with the --force and --assume-clean options, but it is not
+ recommended. Read the manpage.
+
+18. How many failed disks can a RAID10 handle?
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ (see also question 4b)
+
+ The following table shows how many disks you can lose and still have an
+ operational array. In some cases, you *can* lose more than the given number
+ of disks, but there is no guarantee that the array survives. Thus, the
+ following is the guaranteed number of failed disks a RAID10 array survives
+ and the maximum number of failed disks the array can (but is not guaranteed
+ to) handle, given the number of disks used and the number of data block
+ copies. Note that 2 copies means original + 1 copy. Thus, if you only have
+ one copy (the original), you cannot handle any failures.
+
+ 1 2 3 4 (# of copies)
+ 1 0/0 0/0 0/0 0/0
+ 2 0/0 1/1 1/1 1/1
+ 3 0/0 1/1 2/2 2/2
+ 4 0/0 1/2 2/2 3/3
+ 5 0/0 1/2 2/2 3/3
+ 6 0/0 1/3 2/3 3/3
+ 7 0/0 1/3 2/3 3/3
+ 8 0/0 1/4 2/3 3/4
+ (# of disks)
+
+ Note: I have not really verified the above information. Please don't count
+ on it. If a disk fails, replace it as soon as possible. Corrections welcome.
+
+19. What should I do if a disk fails?
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Replace it as soon as possible:
+
+ mdadm --remove /dev/md0 /dev/sda1
+ halt
+ <replace disk and start the machine>
+ mdadm --add /dev/md0 /dev/sda1
+
+20. So how do I find out which other disk(s) can fail without killing the
+ array?
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Did you read the previous question and its answer?
+
+ For cases when you have two copies of each block, the question is easily
+ answered by looking at the output of /proc/mdstat. For instance on a four
+ disk array:
+
+ md3 : active raid10 sdg7[3] sde7[0] sdh7[2] sdf7[1]
+
+ you know that sde7/sdf7 form one pair and sdg7/sgh7 the other.
+
+ If sdh now fails, this will become
+
+ md3 : active raid10 sdg7[3] sde7[0] sdh7[4](F) sdf7[1]
+
+ So now the second pair is broken; the array could take another failure in
+ the first pair, but if sdg now also fails, you're history.
+
+ Now go and read question 19.
+
+ For cases with more copies per block, it becomes more complicated. Let's
+ think of a seven disk array with three copies:
+
+ md5 : active raid10 sdg7[6] sde7[4] sdb7[5] sdf7[2] sda7[3] sdc7[1] sdd7[0]
+
+ Each mirror now has 7/3 = 2.33 disks to it, so in order to determine groups,
+ you need to round up. Note how the disks are arranged in increasing order of
+ their indices (the number in brackes in /proc/mdstat):
+
+ disk: -sdd7- -sdc7- -sdf7- -sda7- -sde7- -sdb7- -sdg7-
+ group: [ one ][ two ][ three ]
+
+ Basically this means that after two disk failed, you need to make sure that
+ the third failed disk doesn't destroy all copies of any given block. And
+ that's not always easy as it depends on the layout chosen: whether the
+ blocks are near (same offset within each group), far (spread apart in a way
+ to maximise the mean distance), or offset (offset by size/n within each
+ block).
+
+ I'll leave it up to you to figure things out. Now go read question 19.
+
+21. Why does the kernel speak of 'resync' when using checkarray?
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Please see README.checkarray and
+ http://www.mail-archive.com/linux-raid@vger.kernel.org/msg04835.html .
+
+ In short: it's a bug. checkarray is actually not a resync, but the kernel
+ does not distinguish between them.
+
+22. Can I prioritise the sync process and sync certain arrays before others?
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Upon start, md will resynchronise any unclean arrays, starting in somewhat
+ random order. Sometimes it's desirable to sync e.g. /dev/md3 first (because
+ it's the most important), but while /dev/md1 is synchronising, /dev/md3 will
+ be DELAYED (see /proc/mdstat; only if they share the same physical
+ components.
+
+ It is possible to delay the synchronisation via /sys:
+
+ echo idle >/sys/block/md1/md/sync_action
+
+ This will cause md1 to go idle and md to synchronise md3 (or whatever is
+ queued next; repeat the above for other devices if necessary). md will also
+ realise that md1 is still not in sync and queue it for resynchronisation,
+ so it will sync automatically when its turn has come.
+
+23. mdadm's init script fails because it cannot find any arrays. What gives?
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ If you don't have any arrays on your system, then mdadm's init script will
+ fail to assemble them and print a warning. If you don't like that, disable
+ AUTOSTART in /etc/default/mdadm.
+
+24. What happened to mdrun? How do I replace it?
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ mdrun used to be the sledgehammer approach to assembling arrays. It has
+ accumulated several problems over the years (e.g. #354705) and thus has been
+ deprecated and removed with the 2.6.7-2 version of this package.
+
+ If you are still using mdrun, please ensure that you have a valid
+ /etc/mdadm/mdadm.conf file (run /usr/share/mdadm/mkconf --generate to get
+ one), and run
+
+ mdadm --assemble --scan --auto=yes
+
+ instead of mdrun.
+
+ Or make use of /usr/share/mdadm/startall .
+
+25. Why are my arrays marked auto-read-only in /proc/mdstat?
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Arrays are kept read-only until the first write occurs. This allows md to
+ skip lengthy resynchronisation for arrays that have not been properly shut
+ down, but which also not have changed.
+
+26. Why doesn't mdadm find arrays specified in the config file and causes the
+ boot to fail?
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ My boot process dies at an early stage and drops me into the busybox shell.
+ The last relevant output seems to be from mdadm and is something like
+
+ "/dev/md2 does not exist"
+
+ or
+
+ "No devices listed in conf file found"
+
+ Why does mdadm break my system?
+
+ Short answer: It doesn't, the underlying devices aren't yet available yet
+ when mdadm runs during the early boot process.
+
+ Long answer: It doesn't. but the drivers of those devices incorrectly
+ communicate to the kernel that the devices are ready, when in fact they are
+ not. I consider this a bug in those drivers. Please consider reporting it.
+
+ Workaround: there is nothing mdadm can or will do against this. Fortunately
+ though, initramfs provides a method, documented at
+ http://wiki.debian.org/InitramfsDebug. Please append rootdelay=10 to the
+ kernel command line and try if the boot now works.
+
+ -- martin f. krafft <madduck@debian.org> Wed, 13 May 2009 09:59:53 +0200
diff --git a/debian/NEWS b/debian/NEWS
new file mode 100644
index 00000000..f0c0e93f
--- /dev/null
+++ b/debian/NEWS
@@ -0,0 +1,109 @@
+mdadm (3.2.2-1) unstable; urgency=low
+
+ Metadata format change requires recent Grub
+ The following only applies to users who want to let the grub-pc bootloader
+ load the kernel directly off a RAID device created with mdadm 3.x and
+ default values, or when the metadata version is explicitly set using -e.
+
+ Specifically, this includes all arrays created during or after the
+ installation of Debian squeeze (mdadm-3.1.4+8efb9d1). Arrays created with
+ older mdadm versions, and RAIDs created with the command-line option
+ -e 0.9 are not affected.
+
+ Versions of grub-pc older than 1.98+20100720-1 will not be able to boot
+ directly off a RAID with the 1.x metadata formats (the new default is 1.2).
+ To ensure a bootable system, please make sure to use grub-pc 1.98+20100720-1
+ or later, which is provided by Debian squeeze. An unbootable system may be
+ rescued with Super Grub2 Disk (http://www.supergrubdisk.org/super-grub2-disk/)
+ or grml (http://grml.org/).
+
+ -- Scott Schaefer <saschaefer@neurodiverse.org> Wed, 27 Jul 2011 20:21:50 -0400
+
+mdadm (3.1.4-1+8efb9d1) unstable; urgency=low
+
+ Default metadata format for newly created arrays has changed from
+ 0.90 to 1.2. Location of the superblock is now 4Kb from the start
+ of the device, instead of at the end of the device for 0.90.
+ The change from 0.9 to 1.x lifted many restrictions of the old
+ metadata format, and change in location (from end to 4k after
+ start for 1.2) reduced chances to confuse a raid array with
+ filesystem inside it. It is now less easy to mount a component
+ device as separate filesystem by incident, thus destroying the
+ array.
+
+ Also, chunk size by default is 512K (was 64K) and bitmap chunk size
+ is 64Mb.
+
+ -- Michael Tokarev <mjt@tls.msk.ru> Sat, 10 Sep 2011 13:35:12 +0400
+
+mdadm (2.6.7-2) unstable; urgency=low
+
+ /dev/disk symlinks:
+ mdadm now creates symlinks in /dev/disk/by-id, using the template
+ md-uuid-* for the array UUIDs and md-name-* for any names assigned to
+ arrays (version-1 superblocks only). Thanks to Suse for the udev rules
+ file.
+
+ mdrun removed:
+ This version also removes mdrun once and for all. If you are still using
+ mdrun, please ensure that you have a valid /etc/mdadm/mdadm.conf file (run
+ /usr/share/mdadm/mkconf --generate to get one), and run
+
+ mdadm --assemble --scan --auto=yes
+
+ instead of mdrun. Or make use of /usr/share/mdadm/startall .
+
+ -- martin f. krafft <madduck@debian.org> Wed, 02 Jul 2008 10:57:32 +0200
+
+mdadm (2.5.3.git200608201206-1) unstable; urgency=low
+
+ This version makes mdadm.conf mandatory. If you do not have such a file, it
+ will be created for you.
+
+ You must verify the contents of this file and ensure that it represents your
+ local configuration. See /usr/share/doc/mdadm/README.upgrading-2.5.3.gz for
+ more information.
+
+ -- martin f. krafft <madduck@debian.org> Sun, 20 Aug 2006 21:58:43 +0100
+
+mdadm (2.5-1) unstable; urgency=low
+
+ mdrun has been (finally) obsoleted, and an appropriate warning message is
+ written to the console if you (or a script) attempts to run it. If you
+ cannot live without mdrun, you can disable the warning by setting
+ USE_DEPRECATED_MDRUN=1 in /etc/default/mdadm. Note that mdrun will *not* be
+ supported. Please also see /usr/share/doc/mdadm/README.mdrun .
+
+ -- martin f. krafft <madduck@debian.org> Tue, 30 May 2006 23:25:13 +0200
+
+mdadm (2.4.1-5) unstable; urgency=low
+
+ This version drops the automatic generation of the /etc/mdadm/mdadm.conf
+ file on every boot (if it was missing). This means that you need to ensure
+ that you have a valid configuration file. If none is present during package
+ configuration, mdadm *will* try to generate one, but it will only contain
+ information about arrays that were running at the time of package
+ configuration. Arrays not listed in the configuration file will *not* be
+ started automatically after boot (with the exception of the root partition).
+
+ If you want to recreate your configuration file, either figure out what it
+ should contain from the mdadm.conf(5) manpage, or simply assemble and run
+ all the arrays the way you like it, then run
+ /usr/share/mdadm/mkconf force-generate /etc/mdadm/mdadm.conf
+
+ -- martin f. krafft <madduck@debian.org> Sat, 03 Jun 2006 17:45:47 +0200
+
+mdadm (2.4.1-1) unstable; urgency=low
+
+ As of version 2.3, mdadm uses /etc/mdadm.conf as its main configuration
+ file, and falls back to /etc/mdadm/mdadm.conf if the former is not found.
+ Since Debian uses /etc/mdadm/mdadm.conf as the configuration file path, this
+ order was reverted: Debian's mdadm reads /etc/mdadm/mdadm.conf as its main
+ file and falls back to /etc/mdadm.conf if the former is not found.
+
+ An incompatible change in the reshaping of RAID 5 arrays was made in this
+ upstream release. If you want to reshape a RAID 5 array with a version-1
+ superblock, please make sure to use mdadm 2.4.1 and at least a 2.6.17-rc2
+ kernel.
+
+ -- martin f. krafft <madduck@debian.org> Tue, 16 May 2006 13:07:49 -0500
diff --git a/debian/README.Debian b/debian/README.Debian
new file mode 100644
index 00000000..d4ce6cdf
--- /dev/null
+++ b/debian/README.Debian
@@ -0,0 +1,151 @@
+mdadm for Debian
+================
+
+Please make sure you read into /usr/share/doc/mdadm/NEWS.Debian.gz and the
+documents listed under "further reading" a little later in this file.
+
+The latest version of this document is available here:
+ http://git.debian.org/?p=pkg-mdadm/mdadm.gita=blob;f=debian/README.Debian;hb=HEAD
+
+Autostarting devices
+~~~~~~~~~~~~~~~~~~~~
+The mdadm.conf file controls which devices are to be started automatically by
+mdadm during boot (assuming AUTOSTART is set to true in /etc/default/mdadm),
+and various other parameters about how they are to be started. The file can
+also contain some control parameters for the mdadm monitor daemon. See
+mdadm.conf(5) for more information.
+
+Note: this only applies to modular kernels. If you use a monolithic kernel,
+you can control which devices are started automatically by changing the
+partition type: 0xfd for autostart, 0x83 to prevent autostart. mdadm does not
+actually care about the partition type, only the kernel does.
+
+Common recipes
+~~~~~~~~~~~~~~
+Check /usr/share/doc/mdadm/README.recipes.gz for some simple examples of how
+to do the most common stuff with mdadm.
+
+To RAID5 or not to RAID5
+~~~~~~~~~~~~~~~~~~~~~~~~
+See http://www.miracleas.com/BAARF/BAARF2.html . The package maintainer could
+not possibly come up with so much emotion over such a technical topic.
+
+See also the RAID5_versus_RAID10.txt.gz document included with this package.
+
+Further reading
+~~~~~~~~~~~~~~~
+The documentation for the kernel md driver is included in
+/usr/share/doc/mdadm/md.txt.gz. In addition, the md(4) manpage provides
+valuable information about the applicable concepts. Do read those!
+
+Further documents of interest:
+ - Linux-RAID reference Wiki:
+ http://linux-raid.osdl.org
+ - Linux software RAID HOWTO:
+ http://tldp.org/HOWTO/Software-RAID-HOWTO.html
+ - linux-raid mailing list info:
+ http://vger.kernel.org/vger-lists.html#linux-raid
+ - linux-raid mailing list FAQ:
+ http://www.faqs.org/contrib/linux-raid/
+
+Upstream
+~~~~~~~~
+For completeness: The upstream repository is available from
+ git clone git://neil.brown.name/mdadm
+
+You can browse Neil's repository here:
+ http://neil.brown.name/git?p=mdadm
+
+You can also clone from Debian's Git repository, where upstream's code is in
+the 'upstream' branch:
+ git://git.debian.org/git/pkg-mdadm/mdadm
+
+Reporting bugs
+~~~~~~~~~~~~~~
+For reporting bugs, please use the reportbug tool, as it collects useful
+information about the system where you're experiencing the problem.
+
+If the system is another, please include the output of
+/usr/share/bug/mdadm/scripts with your report.
+
+If you are turning to the linux-raid@vger.kernel.org mailing list because you
+already know that the issue is with the md kernel driver and certainly not
+Debian-specific, please also include the output of
+/usr/share/bug/mdadm/scripts.
+
+In general, report bugs against the mdadm Debian package, using reportbug.
+I am happy to route reports to where they belong.
+
+Debian package maintenance
+~~~~~~~~~~~~~~~~~~~~~~~~~~
+The package is maintained with Git and published on git.debian.org. To obtain
+the source:
+
+ git clone git://git.debian.org/git/pkg-mdadm/mdadm
+
+You can browse the repository here:
+ http://git.debian.org/?p=pkg-mdadm/mdadm
+
+If you want to join the mdadm effort, please send me an email. I'll be very
+glad for any help I get.
+
+There are things to do listed in debian/TODO.
+
+You might also be interested in the following document, which explains how
+package maintenance of mdadm was migrated from SVN to Git:
+ http://blog.madduck.net/debian/2007.10.07_converting-a-package-to-git
+
+Patches
+~~~~~~~
+The best way to submit patches is with git-format-patch, as outlined in the
+following. If this is too complicated for you, please feel free to make
+normal diffs, or contact me for assistance if you'd like to learn how to use
+Git.
+
+Please try to follow the guidelines outlined in
+ http://repo.or.cz/w/git.git?a=blob;f=Documentation/SubmittingPatches;hb=HEAD
+
+First, the setup, which you only have to do once on each machine you work with:
+
+# leave out --global if you want to set your identity only for mdadm
+git config --global user.name 'your name'
+git config --global user.email 'your@email.address'
+git clone git://git.debian.org/git/pkg-mdadm/mdadm.git
+
+To prepare the actual patch, do the following:
+
+git pull
+git checkout -b some-name-identifying-my-work
+while not finished:
+ // if resuming after a while, maybe update your branch:
+ git rebase master
+ // edit files
+ git add files
+ git commit
+ ...
+end
+
+After you've brought your change to a state where you want to submit it, please
+squash it into logical single commits. If you only made one change, then this
+will do:
+
+git checkout -b temp-squash master
+git merge --squash some-name-identifying-my-work
+git commit // ... remove the "Squashed commit of the following:" leader
+git format-patch -M -s master
+// now inspect the files this created in $PWD
+// when you're ready to submit, do:
+git send-email --to your@email.address
+// check that it's okay when it arrives
+git send-email --to pkg-mdadm-devel@lists.alioth.debian.org
+
+For multiple logical changes, cherry-pick or squash-merge every commit
+belonging to a change to the integration branch and then commit it.
+
+Also, read the git-send-email manpage in case you're submitting multiple
+logical changes, in case you want to thread them.
+
+The manpage also includes information about adding a prologue message explaining your patch, or how to insert it into an existing
+thread (in-reply-to).
+
+ -- martin f. krafft <madduck@debian.org> Tue, 16 Oct 2007 18:12:13 +0100
diff --git a/debian/README.checkarray b/debian/README.checkarray
new file mode 100644
index 00000000..8071a4d6
--- /dev/null
+++ b/debian/README.checkarray
@@ -0,0 +1,33 @@
+checkarray notes
+================
+
+checkarray will run parity checks across all your redundant arrays. By
+default, it is configured to run on the first Sunday of each month, at 01:06
+in the morning. This is realised by asking cron to wake up every Sunday with
+/etc/cron.d/mdadm, but then only running the script when the day of the month
+is less than or equal to 7. See #380425.
+
+Cron will try to run the check at "idle I/O priority" (see ionice(1)), so that
+the check does not overload the system too much. Note that this will only
+work if all the component devices of the array employ the (default) "cfq" I/O
+scheduler. See the kernel documentation[0] for information on how to verify
+and modify the scheduler. checkarray does not verify this for you.
+
+ 0. http://www.kernel.org/doc/Documentation/block/switching-sched.txt
+
+If you manually invoke checkarray, it runs with default I/O priority. Should
+you need to run a check at a higher (or lower) I/O priority, then have a look
+at the --idle, --slow, --fast, and --realtime options.
+
+'check' is a read-only operation, even though the kernel logs may suggest
+otherwise (e.g. /proc/mdstat and several kernel messages will mention
+"resync"). Please also see question 21 of the FAQ.
+
+If, however, while reading, a read error occurs, the check will trigger the
+normal response to read errors which is to generate the 'correct' data and try
+to write that out - so it is possible that a 'check' will trigger a write.
+However in the absence of read errors it is read-only.
+
+You can cancel a running array check with the -x option to checkarray.
+
+ -- martin f. krafft <madduck@debian.org> Thu, 02 Sep 2010 10:27:29 +0200
diff --git a/debian/README.recipes b/debian/README.recipes
new file mode 100644
index 00000000..2b1891e0
--- /dev/null
+++ b/debian/README.recipes
@@ -0,0 +1,149 @@
+mdadm recipes
+=============
+
+The following examples/recipes may help you with your mdadm experience. I'll
+leave it as an exercise to use the correct device names and parameters in each
+case. You can find pointers to additional documentation in the README.Debian
+file.
+
+Enjoy. Submissions welcome.
+
+The latest version of this document is available here:
+ http://git.debian.org/?p=pkg-mdadm/mdadm.git;a=blob;f=debian/README.recipes;hb=HEAD
+
+0. create a new array
+~~~~~~~~~~~~~~~~~~~~~
+ mdadm --create -l1 -n2 -x1 /dev/md0 /dev/sd[abc]1 # RAID 1, 1 spare
+ mdadm --create -l5 -n3 -x1 /dev/md0 /dev/sd[abcd]1 # RAID 5, 1 spare
+ mdadm --create -l6 -n4 -x1 /dev/md0 /dev/sd[abcde]1 # RAID 6, 1 spare
+
+1. create a degraded array
+~~~~~~~~~~~~~~~~~~~~~~~~~~
+ mdadm --create -l5 -n3 /dev/md0 /dev/sda1 missing /dev/sdb1
+ mdadm --create -l6 -n4 /dev/md0 /dev/sda1 missing /dev/sdb1 missing
+
+2. assemble an existing array
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ mdadm --assemble --auto=yes /dev/md0 /dev/sd[abc]1
+
+ # if the array is degraded, it won't be started. use --run:
+ mdadm --assemble --auto=yes --run /dev/md0 /dev/sd[ab]1
+
+ # or start it by hand:
+ mdadm --run /dev/md0
+
+3. assemble all arrays in /etc/mdadm/mdadm.conf
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ mdadm --assemble --auto=yes --scan
+
+4. assemble a dirty degraded array
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ mdadm --assemble --auto=yes --force /dev/md0 /dev/sd[ab]1
+ mdadm --run /dev/md0
+
+4b. assemble a dirty degraded array at boot-time
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ If the array is started at boot time by the kernel (partition type 0xfd),
+ you can force-assemble it by passing the kernel boot parameter
+
+ md-mod.start_dirty_degraded=1
+
+5. stop arrays
+~~~~~~~~~~~~~~
+ mdadm --stop /dev/md0
+
+ # to stop all arrays in /etc/mdadm/mdadm.conf
+ mdadm --stop --scan
+
+6. hot-add components
+~~~~~~~~~~~~~~~~~~~~~
+ # on the running array:
+ mdadm --add /dev/md0 /dev/sdc1
+ # if you add more components than the array was setup with, additional
+ # components will be spares
+
+7. hot-remove components
+~~~~~~~~~~~~~~~~~~~~~~~~
+ # on the running array:
+ mdadm --fail /dev/md0 /dev/sdb1
+ # if you have configured spares, watch /proc/mdstat how it fills in
+ mdadm --remove /dev/md0 /dev/sdb1
+
+8. hot-grow a RAID1 by adding new components
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ # on the running array, in either order:
+ mdadm --grow -n3 /dev/md0
+ mdadm --add /dev/md0 /dev/sdc1
+ # note: without growing first, additional devices become spares and are
+ # *not* synchronised after the add.
+
+9. hot-shrink a RAID1 by removing components
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ mdadm --fail /dev/md0 /dev/sdc1
+ mdadm --remove /dev/md0 /dev/sdc1
+ mdadm --grow -n2 /dev/md0
+
+10. convert existing filesystem to RAID 1
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ # The idea is to create a degraded RAID 1 on the second partition, move
+ # data, then hot add the first. This seems safer to me than simply to
+ # force-add a superblock to the existing filesystem.
+ #
+ # Assume /dev/sda1 holds the data (and let's assume it's mounted on
+ # /home) and /dev/sdb1 is empty and of the same size...
+ #
+ mdadm --create /dev/md0 -l1 -n2 /dev/sdb1 missing
+ mkfs -t <type> /dev/md0
+ mount /dev/md0 /mnt
+ tar -cf- -C /home . | tar -xf- -C /mnt -p
+ # consider verifying the data
+ umount /home
+ umount /mnt
+ mount /dev/md0 /home # also change /etc/fstab
+ mdadm --add /dev/md0 /dev/sda1
+
+ Warren Togami has a document explaining how to convert a filesystem on
+ a remote system via SSH: http://togami.com/~warren/guides/remoteraidcrazies/
+
+10b. convert existing filesystem to RAID 1 in-place
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ In-place conversion of /dev/sda1 to /dev/md0 is effectively
+ mdadm --create /dev/md0 -l1 -n2 /dev/sda1 missing
+ however, do NOT do this, as you risk filesystem corruption.
+
+ If you need to do this, first unmount and shrink the filesystem by
+ a megabyte (if supported). Then run the above command, then (optionally)
+ again grow the filesystem as much as possible.
+
+ Do make sure you have backups. If you do not yet, consider method (10)
+ instead (and make backups anyway!).
+
+11. convert existing filesystem to RAID 5/6
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ # See (10) for the basics.
+ mdadm --create /dev/md0 -l5 -n3 /dev/sdb1 /dev/sdc1 missing
+ #mdadm --create /dev/md0 -l6 -n4 /dev/sdb1 /dev/sdc1 /dev/sdd1 missing
+ mkfs -t <type> /dev/md0
+ mount /dev/md0 /mnt
+ tar -cf- -C /home . | tar -xf- -C /mnt -p
+ # consider verifying the data
+ umount /home
+ umount /mnt
+ mount /dev/md0 /home # also change /etc/fstab
+ mdadm --add /dev/md0 /dev/sda1
+
+12. change the preferred minor of an MD array (RAID)
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ # you need to manually assemble the array to change the preferred minor
+ # if you manually assemble, the superblock will be updated to reflect
+ # the preferred minor as you indicate with the assembly.
+ # for example, to set the preferred minor to 4:
+ mdadm --assemble /dev/md4 /dev/sd[abc]1
+
+ # this only works on 2.6 kernels, and only for RAID levels of 1 and above.
+ # for other MD arrays, you need to specify --update explicitly:
+ mdadm --assemble --update=super-minor /dev/md4 /dev/sd[abc]1
+
+ # see also item 12 in the FAQ contained with the Debian package.
+
+ -- martin f. krafft <madduck@debian.org> Fri, 06 Oct 2006 15:39:58 +0200
diff --git a/debian/TESTING b/debian/TESTING
new file mode 100644
index 00000000..22b01967
--- /dev/null
+++ b/debian/TESTING
@@ -0,0 +1,84 @@
+Call for help testing new versions of mdadm
+===========================================
+
+The problem with being the mdadm maintainer is that it doesn't make any
+friends but potentially quite a lot of enemies. Even though it's actually very
+unlikely that a new mdadm version causes data loss (mdadm is only the remote
+control into the kernel), people seem to exhibit unexpected reactions when
+their MD arrays with important data don't want to start anymore. In such
+a case, don't panic, don't do anything without understanding the implications,
+and consider asking for help.
+
+That said, I would appreciate if you guys helped me test the latest mdadm
+releases a bit more thoroughly. I do extensive tests myself, but as Murphy
+would be able to predict, the problem only ever occur on other people's
+machines, and I'd much rather fix them sooner than later.
+
+The easiest way to test new mdadm packages is by adding my package repository
+(i386/amd64) to your sources.list file, and configuring the APT pins
+appropriately:
+
+---8<---
+# cat <<_eof >> /etc/apt/sources.list
+deb http://debian.madduck.net/repo sid main
+_eof
+# cat <<_eof >> /etc/apt/preferences
+Package: *
+Pin: release a=unstable,o=madduck
+Pin-Priority: 50
+
+Package: mdadm
+Pin: release a=unstable,o=madduck
+Pin-Priority: 600
+_eof
+# apt-get update; apt-get upgrade
+---8<---
+
+Alternatively, you can just download the packages from the pool[0].
+
+ 0. http://debian.madduck.net/repo/pool/main/m/mdadm
+
+If you're running etch and are willing to test, that would be great! I've
+prepared backports, which you can use like so:
+
+---8<---
+# cat <<_eof >> /etc/apt/sources.list
+deb http://debian.madduck.net/repo etch-backports main
+## unless you have backports already enabled:
+deb http://www.backports.org/debian etch-backports main
+_eof
+# cat <<_eof >> /etc/apt/preferences
+Package: *
+Pin: release a=etch-backports,o=madduck
+Pin-Priority: 50
+
+Package: mdadm
+Pin: release a=etch-backports,o=madduck
+Pin-Priority: 600
+
+#Package: debconf
+#Pin: release a=sarge-backports
+#Pin-Priority: 600
+#
+#Package: lsb-base
+#Pin: release a=sarge-backports
+#Pin-Priority: 600
+_eof
+# apt-get update; apt-get upgrade
+---8<---
+
+For sarge, just replace each occurrence of etch with sarge (s/etch/sarge/g),
+and add the debconf and lsb-base backports from backports.org[1]; see also
+further down for direct links):
+
+ 1. http://backports.org/dokuwiki/doku.php?id=instructions
+
+The mdadm backport can also be directly downloaded from the above pool[0]
+the needed debconf[2] and lsb-base[3] reside in the backports.org archive.
+
+ 2. http://backports.org/debian/pool/main/d/debconf/
+ 3. http://backports.org/debian/pool/main/l/lsb/
+
+Much appreciated!
+
+ -- martin f. krafft <madduck@debian.org> Wed, 02 Jul 2008 11:10:02 +0200
diff --git a/debian/TODO b/debian/TODO
new file mode 100644
index 00000000..eb3299e0
--- /dev/null
+++ b/debian/TODO
@@ -0,0 +1,29 @@
+debian mdadm TODO list
+======================
+
+- version-1 is a nightmare. E.g. on partitionable arrays, with / on
+ /dev/md_d0p3, mdadm -Es ignores /dev/md_d0 and just uses the name, so
+ /dev/md/<arrayname>.
+- figure out something about device names.
+- (better) udev integration
+
+- check whether mdadm.conf and system are consistent during initramfs creation
+ and fail otherwise (#381303).
+- add code to compare existing and expected configuration, after standardising
+ the files. In most cases, we'll have to answer DUNNO as to whether the
+ existing configuration file is okay, but I guess in some cases we can
+ determine that the configuration is okay. A conservative approach would be
+ beneficial to the user. Not sure if it's worth the effort though.
+- one nice^W important thing would be to check device names and UUIDs at least.
+
+- verify operation without udev
+ - udev removed before mdadm installed
+ - udev removed after mdadm installed
+
+- more granular handling of init.d starts/stops, don't force all arrays to be
+ started.
+- let user specify when to start/stop which array (#398310).
+- also only stop those array we started; this can be easily done with
+ sentinels in $STATEDIR
+
+- manage DAEMON_OPTIONS with debconf
diff --git a/debian/bugscript.in b/debian/bugscript.in
new file mode 100755
index 00000000..9ab3823e
--- /dev/null
+++ b/debian/bugscript.in
@@ -0,0 +1,222 @@
+#!/bin/bash
+#
+# mdadm bug submission control script
+#
+# allows Debian's bug tools to include relevant information in bug reports.
+#
+# Copyright © martin f. krafft <madduck@debian.org>
+# distributed under the terms of the Artistic Licence 2.0
+#
+# we need /bin/bash for readline and -n capabalities in the prompt(s)
+#
+
+# maximise information output even in the case of errors
+set +eu
+
+VERSION=%VERSION%
+
+if ! command -v yesno >/dev/null; then
+ if [ -r /usr/share/reportbug/handle_bugscript ]; then
+ exec /usr/share/reportbug/handle_bugscript ". $0" /dev/stdout
+ fi
+ yesno() {
+ read -n1 -p"$1" REPLY
+ case "$REPLY" in
+ [yY]) REPLY=yep;;
+ [nN]) REPLY=nop;;
+ ('') REPLY="$2";;
+ esac
+ }
+ exec 3>&1
+fi
+
+# do not let people ctrl-c out of the bugscript
+trap : INT
+
+if [ $(id -u) != 0 ]; then
+ if [ -x "$(command -v sudo)" ]; then
+ yesno "Gather system information as root using sudo? (Y/n) " yep
+ if [ "$REPLY" = yep ]; then
+ echo running sudo "$0" "$@"...
+ sudo "$0" "$@" >&3 && exit 0
+ echo "sudo invocation failed, trying /bin/su..."
+ fi
+ fi
+
+ yesno "Gather system information as root using su? (Y/n) " yep
+ if [ "$REPLY" = yep ]; then
+ ARGS=
+ for i in "$@"; do ARGS="${ARGS:+$ARGS }'$1'"; shift; done
+ echo "running su root -s '/bin/sh -c $0${ARGS:+ $ARGS}'..."
+ su root -s /bin/sh -c "$0 $ARGS" >&3 && exit 0
+ unset ARGS
+ echo "su invocation failed."
+ fi
+
+ # arrive here only if neither sudo nor su worked:
+ yesno "Will you provide system information in the bug report yourself? (N/y) " nop
+ if [ "$REPLY" = yep ]; then
+ cat <<_eof >&3
+
+IMPORTANT:
+ please do not forget to include all relevant system information with this
+ bug report. You could run
+ /usr/share/bug/mdadm/script 3>&1
+ as root and attach or include the output.
+
+_eof
+ exit 0
+ fi
+
+ # try our best
+ cat <<_eof >&3
+
+WARNING:
+ the following output was not generated by the root user. If you can, please
+ replace the following up until "-- System Information:" with the output of
+ /usr/share/bug/mdadm/script 3>&1
+ run as root. Thanks!
+
+_eof
+fi
+
+if [ ! -r /proc/mdstat ]; then
+ echo "The local system does not have MD (RAID) support: no drivers loaded."
+ echo "Without MD support, I cannot collect as much information as I'd like."
+
+ #yesno "Are you sure you want to report a bug at this time? " yep
+ yesno "Hit any key to continue..." yep
+ #[ "$REPLY" = yep ] || exit 1
+fi
+
+echo "--- mdadm.conf" >&3
+if [ -r /etc/mdadm/mdadm.conf ]; then
+ grep '^[^#]' /etc/mdadm/mdadm.conf >&3
+elif [ -r /etc/mdadm.conf ]; then
+ grep '^[^#]' /etc/mdadm.conf >&3
+else
+ echo no mdadm.conf file. >&3
+fi
+echo >&3
+
+echo "--- /etc/default/mdadm" >&3
+if [ -r /etc/default/mdadm ]; then
+ grep '^[^#]' /etc/default/mdadm >&3
+else
+ echo no /etc/default/mdadm file. >&3
+fi
+echo >&3
+
+echo "--- /proc/mdstat:" >&3
+cat /proc/mdstat >&3 2>&3 || :
+echo >&3
+
+echo "--- /proc/partitions:" >&3
+cat /proc/partitions >&3 2>&3 || :
+echo >&3
+
+echo "--- LVM physical volumes:" >&3
+if [ -x "$(command -v pvs)" ]; then
+ pvs >&3
+else
+ echo "LVM does not seem to be used." >&3
+fi
+
+echo "--- mount output" >&3
+mount >&3
+echo >&3
+
+echo "--- initrd.img-$(uname -r):" >&3
+if [ -r /boot/initrd.img-$(uname -r) ]; then
+ TEMPDIR=$(mktemp -d)
+ OLDPWD="$PWD"
+ cd "$TEMPDIR"
+ zcat /boot/initrd.img-$(uname -r) 2>&3 | cpio -i 2>&3
+ find -regex '.*/md[a/].+' -type f -exec md5sum {} \; >&3
+
+ echo >&3
+ echo "--- initrd's /conf/conf.d/md:" >&3
+ if [ -r conf/conf.d/md ]; then
+ cat conf/conf.d/md >&3
+ else
+ echo "no conf/md file." >&3
+ fi
+
+ cd "$OLDPWD"
+ rm -rf "$TEMPDIR"
+ unset TEMPDIR
+else
+ echo "no initrd.img-$(uname -r) found." >&3
+fi
+echo >&3
+
+if [ -r /proc/modules ]; then
+ echo "--- /proc/modules:" >&3
+ egrep '(dm_|raid|linear|multipath|faulty)' < /proc/modules >&3 || :
+ echo >&3
+fi
+
+if [ -f /var/log/syslog ]; then
+ if [ -r /var/log/syslog ]; then
+ echo "--- /var/log/syslog:" >&3
+ egrep "^\w{3} [ :[:digit:]]{11} ($(hostname)|localhost) (kernel: md|mdadm): " /var/log/syslog >&3 || :
+ echo >&3
+ else
+ echo "syslog not readable by user." >&3
+ fi
+fi
+
+echo "--- volume detail:" >&3
+for dev in /dev/[hsv]d[a-z]*; do
+ [ ! -r $dev ] && echo "$dev not readable by user." && continue
+ mdadm -E $dev 2>/dev/null && echo -- || echo "$dev is not recognised by mdadm."
+done >&3
+echo >&3
+
+if [ -r /proc/cmdline ]; then
+ echo "--- /proc/cmdline" >&3
+ cat /proc/cmdline >&3
+ echo >&3
+fi
+
+if [ -f /boot/grub/grub.cfg ]; then
+ echo "--- grub2:" >&3
+ if [ -r /boot/grub/grub.cfg ]; then
+ egrep '^[^#].*\<(root=|raid)' /boot/grub/grub.cfg >&3 || :
+ else
+ echo grub.cfg file not readable. >&3
+ fi
+ echo >&3
+fi
+
+if [ -f /boot/grub/menu.lst ]; then
+ echo "--- grub legacy:" >&3
+ if [ -r /boot/grub/menu.lst ]; then
+ grep '^[^#].*\<root=' /boot/grub/menu.lst >&3 || :
+ else
+ echo menu.lst file not readable. >&3
+ fi
+ echo >&3
+fi
+
+if [ -f /etc/lilo.conf ]; then
+ echo "--- lilo:" >&3
+ if [ -r /etc/lilo.conf ]; then
+ egrep '^([^#].*)?root=' /etc/lilo.conf >&3 || :
+ else
+ echo lilo.conf file not readable. >&3
+ fi
+ echo >&3
+fi
+
+echo "--- udev:" >&3
+COLUMNS=70 dpkg -l udev | grep '\<udev\>' >&3
+md5sum /etc/udev/rules.d/*md* /lib/udev/rules.d/*md* >&3 2>/dev/null
+echo >&3
+
+echo "--- /dev:" >&3
+ls -l /dev/md* /dev/disk/by-* >&3
+echo >&3
+
+echo "Auto-generated on $(date -R)" >&3
+echo "by mdadm bugscript $VERSION" >&3
diff --git a/debian/changelog b/debian/changelog
new file mode 100644
index 00000000..7caf758e
--- /dev/null
+++ b/debian/changelog
@@ -0,0 +1,1733 @@
+mdadm (3.3-2) unstable; urgency=low
+
+ * use 63-md-raid-arrays.rules instead of old 64-md-raid.rules
+ (Closes: #726237)
+ * do not use builtin blkid in udev rules, as our udev (at least
+ on wheezy) does not have it (use-external-blkid.diff)
+
+ -- Michael Tokarev <mjt@tls.msk.ru> Mon, 14 Oct 2013 15:49:54 +0400
+
+mdadm (3.3-1) unstable; urgency=low
+
+ [ Michael Tokarev ]
+ * new upstream 3.3 release (Closes: #718896)
+ See ANNOUNCE-3.3 for details.
+ Patches:
+ - refreshed debian-conffile-location.diff
+ (added .conf.d)
+ - removed debian-disable-udev-incr-assembly.diff
+ (do not ship udev-md-raid-assembly.rules for now)
+ - refreshed debian-no-Werror.diff
+ - refreshed sha1-includes.diff
+ - removed patches (included upstream)A:
+ spelling-and-manpages.patch
+ fix-enough-function-for-RAID10.patch
+ fix-segfaults-in-detail.patch
+ super0-do-not-override-uuid-with-homehost.patch
+ mdmon-allow-takeover-when-original-was-started-with-.patch
+ mdmon-fix-arg-parsing.patch
+ mdmon-fix-arg-processing-for-a.path
+ Install udev-md-raid-arrays.rules instead of udev-md-raid.rules,
+ don't install new udev-md-raid-assembly.rules for now.
+ * remove Martin F. Krafft from uploaders per his request.
+ Thank you for your contributions!
+ * added remove-bashism-from-makefile.patch patch to work around
+ newly introduced bashism
+ * remove debian/source/options, there's no need to set compression
+ options for debian.tar.gz.
+ * remove outdated debian/docs/md_superblock_formats.txt and
+ debian/docs/md.txt (Closes: #714977, #714978)
+ * ship ANNOUNCE-*, external-reshape-design.txt, mdmon-design.txt
+ files as documentation (Closes: #715324)
+
+ [ Dmitrijs Ledkovs ]
+ * Properly remove 65-mdadm.vol_id.rules, instead of trying to remove a
+ never-existed 65_mdadm.vol_id.rules (note the 65- vs 65_).
+
+ -- Michael Tokarev <mjt@tls.msk.ru> Fri, 11 Oct 2013 10:12:47 +0400
+
+mdadm (3.2.5-6) unstable; urgency=low
+
+ * replace home-grown and not-working-since-etch udevsettle call
+ in initramfs script with proper wait_for_udev function (from
+ common initramfs functions). This unbreaks situations when
+ the underlying device needs some udev magic to happen before
+ being available, which includes stacked devices (md on lvm)
+ and other cases. Thanks to Thomas Parmelan and Dave Whitla
+ for finding the root cause of breakage and for providing
+ the fix. (Closes: #644876)
+
+ -- Michael Tokarev <mjt@tls.msk.ru> Tue, 05 Mar 2013 13:32:21 +0400
+
+mdadm (3.2.5-5) unstable; urgency=low
+
+ * add (empty) restart and force-reload actions to mdadm-waitidle
+ script -- this script is used only when the system needs to be
+ shut down or rebooted, there's nothing to start or restart.
+
+ -- Michael Tokarev <mjt@tls.msk.ru> Thu, 24 Jan 2013 17:04:49 +0400
+
+mdadm (3.2.5-4+mdmon) experimental; urgency=low
+
+ * fix `/etc/init.d/mdadm-raid status' inverse logic (Closes: #686100)
+ * /etc/init.d/mdadm: change RUNDIR to /run instead of /var/run.
+ Mdadm itself uses /run internally, we properly depend on initscripts
+ version which creates /run, and the initscript itself is started
+ after local_fs is processed, so this is merely a no-op, but let's
+ do it for consistency.
+ * Fix 'enough' function for RAID10, to prevent starting of a RAID10
+ array which does not have required minimum of component devices.
+ (Closes: #691668).
+ * fix segfaults in Detail() - mdadm --detail may segfault if a drive
+ has been removed from the array (Closes: #691670)
+ * super0: do not override uuid with homehost. The bug prevented
+ re-creating an array with v0.90 superblock with the specified uuid
+ when homehost is also specified. (Closes: #686703)
+ * several fixes for mdmon argument processing (Closes: #691671):
+ - allow --takeover when original was started with --offroot
+ - fix arg parsing.
+ - fix arg processing for -a
+ * Changes based on a patch by Miquel van Smoorenburg (Closes: #684708):
+ - install mdmon in udeb and initramfs, so imsm arrays can work.
+ mdadm runs mdmon automatically when needed (currently for imsm
+ arrays), and mdmon is required to make such arrays read-write
+ (they're read-only by default) so merely presence of mdmon is
+ enough to be able to use imsm arrays.
+ - /etc/init.d/mdadm start: if a mdmon pidfile is found in /run/mdadm,
+ restart mdmon (--takeover --all)
+ - /etc/init.d/mdadm stop: link pidfiles of mdmon processes into
+ /run/sendsigs.omit.d, and make sure that happens before sendsigs runs.
+ - stop mdadm before sendsigs, so that the above code works
+ - add script mdadm-waitidle that runs just before reboot/halt.
+ For each array that is still running, it sets sync_action to idle,
+ and uses mdadm --wait-clean to wait for all arrays to go idle
+ (it has a short timeout).
+
+ -- Michael Tokarev <mjt@tls.msk.ru> Sat, 20 Oct 2012 19:20:12 +0400
+
+mdadm (3.2.5-3) unstable; urgency=low
+
+ * revert "Drop unused debconf templates" change -- the templates
+ are actually being (indirectly) used in debian/mdadm.config
+ * fix initramfs-script config name (slipped in the initramfs fixes)
+
+ -- Michael Tokarev <mjt@tls.msk.ru> Sat, 25 Aug 2012 23:12:50 +0400
+
+mdadm (3.2.5-2) unstable; urgency=low
+
+ [ Sergey B Kirpichev ]
+ * Fix mdadm.lintian-overrides
+ * Fix spelling in binaries, fix lintian warnings
+ manpage-has-errors-from-man and hyphen-used-as-minus-sign
+ * Drop unused debconf templates
+ * Implement status option for mdadm-raid init.d script
+ * Fix lintian info's conflicts-with-version: Conflicts -> Breaks
+
+ [ Michael Tokarev ]
+ * fix spelling mistakes in previous changelog entry
+ * some cleanups for checkarray:
+ - change --help printing and shorten/simplify the text
+ - make --quiet cumulative and stop documenting --real-quiet
+ - do not produce help in case of incorrect usage, and exit with 1
+ * fixes for initramfs integration (Closes: #644389, #678262, #685161):
+ - check INITRDSTART=none early
+ - do not explicitly load raid level modules (modprobe/kmod does this)
+ - do not collect needed raid levels (we include all modules anyway)
+ - load md_mod explicitly since we need to change global parameter
+
+ [ Dmitrijs Ledkovs ]
+ * Use dh_installinit with --no-restart-on-upgrade, which will start
+ arrays, but will not stop them during upgrade. (Closes: 678971)
+ * Copy local administrator's modified udev rules as well as the system
+ one. (Closes: #678973)
+
+ -- Michael Tokarev <mjt@tls.msk.ru> Sat, 25 Aug 2012 16:25:37 +0400
+
+mdadm (3.2.5-1) unstable; urgency=low
+
+ [ Michael Tokarev ]
+ * new upstream (bugfix) release, fixing regression when --add'ing
+ device to an array, introduced in 3.2.4, plus other minor fixes
+ (Closes: #673104, #673344)
+ * new patch: sha1-includes.diff to fix #include mess in new sha1.h
+ * added a check into debian/checkarray to skip checking arrays created
+ less than 2 weeks ago (Closes: #624273)
+
+ [ Dmitrijs Ledkovs ]
+ * Remove obsolete documentation dating back to ~etch release
+ * Remove reference to obsolete documention from debconf templates
+ * Update debconf templates translations
+ * Remove compatibility with ancient initramfs-tools
+ * Remove debian-specific mdadm-startall.8 in clean target
+
+ -- Michael Tokarev <mjt@tls.msk.ru> Fri, 25 May 2012 20:23:52 +0400
+
+mdadm (3.2.4-1) unstable; urgency=low
+
+ * new upstream (bugfix) release (Closes: #664088, #661552)
+ * removed debian-run-udev.diff (applied upstream), and
+ all RUNDIR handling from debian/rules (it is the default now)
+ * add build-arch and build-indep targets to debian/rules, and
+ bump Standards-Version to 3.9.3
+
+ -- Michael Tokarev <mjt@tls.msk.ru> Thu, 10 May 2012 17:51:41 +0400
+
+mdadm (3.2.3-3) unstable; urgency=low
+
+ * switch from topgit to plain 3.0 (quilt) layout, creating
+ debian/patches. Don't build-depend on quilt as patching
+ is done automatically by dpkg-source.
+ * debian/patches/debian-run-udev.diff by Roger Leigh (Closes: #644319, #627774)
+ * update debian/mdadm.logcheck.ignore.server to recognize "k" in
+ addition of "blocks" in kernel messages. Thanks to Frédéric Brière
+ for the patch (Closes: #656038)
+
+ -- Michael Tokarev <mjt@tls.msk.ru> Mon, 30 Apr 2012 14:12:38 +0400
+
+mdadm (3.2.3-2) unstable; urgency=low
+
+ [ Michael Tokarev ]
+ * new upstream bugfix/stable version, with lots of fixes all over.
+ Closes: #641886, #628667, #645563, #651880, #607375, #633880
+ * update Neil's email (Closes: #650630)
+ * update mdadd.sh to version 1.52 (Closes: #655212)
+ * fixed a typo (RAID6 vs RAID10) in FAQ (Closes: #637068)
+ * declare ordering dependency for multipath-tools-boot in
+ mdadm-raid init script (Closes: #641584)
+ While at it, remove mention of devfsd
+ * added Slovak (sk.po) po-debconf translation from Slavko <linux@slavino.sk>
+ (Closes: #641972)
+ * set nice value of the check/resync thread too, together with I/O
+ scheduling class, based on patch by Sergey B Kirpichev (Closes: #652547)
+ * small changes for debian/checkarray
+ * (internal) move files from contrib/* topgit branches into debian directory
+ * remove dh_testroot from clean target
+ * add myself to uploaders
+
+ [ Peter Eisentraut ]
+ * Added support for "status" action to mdadm init script (Closes: #651737)
+
+ -- Michael Tokarev <mjt@tls.msk.ru> Wed, 18 Jan 2012 22:33:01 +0400
+
+mdadm (3.2.2-1) unstable; urgency=low
+
+ [ martin f. krafft ]
+ * New upstream version (closes: #615494), which addresses:
+ - --grow option aware of size change of underlying device (closes: #618463)
+ - builds with -Werror on gcc-4.6 (closes: #625392).
+ - new features/functionality:
+ + Policy framework.
+ + Improved management of reshaping arrays.
+ + Support for Intel Matrix Storage Manager (IMSM)
+ Thanks to Scott Schaefer for his help in preparing this release!
+ * Do not print io rescheduling info message when run by cron
+ (closes: #598957).
+ * Fix checkarray script so that it does not die after scheduling the first
+ device when there is no scheduling class specified; thanks to Mario
+ 'BitKoenig' Holbe (closes: #611627).
+ * Do not include DEVICE line in generated configs but use the built-in value
+ by default (closes: #604702).
+ * Make mdadm-raid init script depend on hostname; thanks to Mario
+ 'BitKoenig' Holbe (closes: #610421).
+ * Schedule start/stop of mdadm-raid before/after filesystems are
+ checked&mounted/unmounted; thanks to Mario 'BitKoenig' Holbe
+ (closes: #611632).
+ * Work around a shell coding bug for cases when there are zero active
+ devices (closes: #618561).
+ * Add NEWS entry about metadata change and requirement on new Grub version
+ (closes: #595516).
+ * Update mdadd.sh script from Arno's webpage.
+ * Update md.txt from latest kernel source.
+ * Updated debconf translations:
+ - Catalan by Innocent De Marchi (closes: #628371)
+ - Danish by Joe Dalton (closes: #621346)
+ * Small typo fix in RAID5_versus_RAID10.txt
+ * Bump Standards-Version to 3.9.2; no changes required.
+
+ [ Michael Tokarev ]
+ * don't print W: auto-read-only in checkarray in quiet mode,
+ thanks to Bernd Hanisch for the patch (Closes: #605722)
+ * move initscript metadata from /lib/init/rw/.mdadm to /run/mdadm,
+ and depend on initscripts (>= 2.88dsf-13.3) for /run (Closes: #633054)
+ * move runtime stuff from /dev/.mdadm to /run/mdadm
+ * document defaults change in debian/NEWS (it was forgotten to be
+ done for squeeze) - metadata & chunk size (Closes: #595516)
+
+ -- martin f. krafft <madduck@debian.org> Mon, 01 Aug 2011 10:41:41 +0200
+
+mdadm (3.1.4-1+8efb9d1) unstable; urgency=low
+
+ * Added patch with Makefile fix from upstream (commit 8efb9d1) to fix
+ compiler/linker problem on non-x86 architectures (closes: #595290).
+
+ -- martin f. krafft <madduck@debian.org> Fri, 03 Sep 2010 10:45:01 +0200
+
+mdadm (3.1.4-1) unstable; urgency=low
+
+ * New upstream release, which closes:#595039 and addresses the following
+ issues too:
+ - reverts move of incremental map (closes: #585015).
+ - fixes mdadm monitor in the case of an inactive (or start-failed) raid0
+ or linear array (closes: #539154).
+ - prevent --remove faulty from skipping renumbered devices
+ (closes: #587550).
+ - fixed overflow when growing a RAID6 (closes: #589493).
+ * However, disable the incremental assembly upstream turned on in 3.1.3 for
+ now, this will have to wait until after the squeeze release.
+ * initramfs/hook: make sure configuration file exists before accessing it;
+ thanks to Michael Prokop for the fix and NMU (closes: #589836).
+ * initramfs/hook: Match UUID case-insensitive while checking for running
+ arrays not listed in mdadm.conf; thanks to Mario 'BitKoenig' Holbe for the
+ patch (closes: #583545).
+ * Fix URL in the bug reporting preamble (presubj) (closes: #589833).
+ * Add I/O rescheduling functionality to the checkarray script and make the
+ cronjob use the idle priority; this should now minimise the impact of the
+ monthly re-check on the running system; Florian Heigl had the idea
+ (closes: #592149, #508123).
+
+ -- martin f. krafft <madduck@debian.org> Sun, 29 Aug 2010 13:44:59 +0200
+
+mdadm (3.1.2-2) unstable; urgency=low
+
+ * Fix logcheck regexp to cure "egrep: Unmatched [ or [^" message
+ (closes: #583376).
+ * Cherry-pick 94fcb80 from upstream to fix compiler error due to argument
+ type error (at least on ia64, sparc, powerpc) (closes: #583495).
+
+ -- martin f. krafft <madduck@debian.org> Fri, 28 May 2010 09:35:42 +0200
+
+mdadm (3.1.2-1) unstable; urgency=low
+
+ * New upstream release (closes: #567167).
+ * Ignore lintian error about not stopping in runlevel 1.
+ * Include more information about the configuration, initrd, and LVM in
+ bugscript output.
+ * Check active devices against configuration file based on UUID, not device
+ name (closes: #553896).
+ * When preparing the list of devices, treat /dev/mdX and /dev/md/X equally.
+ * Bump Standards-Version to 3.8.4 without having to make changes.
+ * Fix logcheck rule with patch from Frédéric Brière, since Rebuild events
+ are now arbitrary, no longer multiples of 20 (closes: #570315).
+ * checkarray: do not exit non-zero when there are no arrays found (see
+ #582360).
+ * Do not exit checkarray cronjob non-zero when the tests whether to run
+ fail (closes: #580825). This is related to a recent change in behaviour in
+ cron 3.0pl1-110 (see e.g. #581612). Thanks to everyone for their
+ suggestions!
+ * Call MAKEDEV to create device nodes only if MAKEDEV is installed
+ (closes: #569360).
+
+ -- martin f. krafft <madduck@debian.org> Thu, 27 May 2010 09:34:24 +0200
+
+mdadm (3.1.1-1) unstable; urgency=low
+
+ * New upstream release.
+ * Retire fixed/blkid-dev branch.
+ * Reword warning about unbootable system when mdadm is purged
+ (closes: #544558).
+ * Updated FAQ to include s2ram as one of the reasons that can prevent an
+ array from being stopped; thanks to Pascal Hambourg for writing in.
+ * Install udev rules into udeb package (closes: #558823).
+ * Update mdadd.sh (formerly /usr/share/doc/mdadm/examples/newdisk.gz) from
+ Arno's website, refactoring the script into its own branch/patch
+ (closes: #539103).
+ * Do not single-quote homehost in initramfs script (closes: #549083).
+
+ -- martin f. krafft <madduck@debian.org> Wed, 27 Jan 2010 10:14:25 +1300
+
+mdadm (3.0.3-2) unstable; urgency=low
+
+ * Bumped Standards-Version to 3.8.3 without having to make changes.
+ * Fixed init dependencies of mdadm daemon init.d script; thanks Petter
+ Reinholdtsen (closes: #541396).
+ * Switched source package to v3-quilt format.
+
+ -- martin f. krafft <madduck@debian.org> Fri, 06 Nov 2009 10:06:03 +0100
+
+mdadm (3.0.3-1) unstable; urgency=low
+
+ * New upstream release.
+ * Acknowledge 3.0-3.1 NMU by Christian Kujau (patch by Marco d'Itri)
+ (closes: #541884), and add util-linux dependency.
+ * Copy udev rules into initramfs, which udev stopped doing
+ (closes: #549535, #549083, #538843, #538143).
+ * Fix the bug script to write debug information to the correct file
+ descriptor (closes: #537734).
+ * Switch to TopGit and split Debian diff into topic branches; add
+ README.source.
+ * Drop the outdated rootraiddoc.97.html document.
+
+ -- martin f. krafft <madduck@debian.org> Tue, 27 Oct 2009 18:06:13 +0100
+
+mdadm (3.0-3.1) unstable; urgency=medium
+
+ * Non-maintainer upload.
+ * use blkid instead of vold_id in udev-md-raid.rules (closes: #541884)
+
+ -- christian kujau <lists@nerdbynature.de> Mon, 14 Sep 2009 10:15:21 +0200
+
+mdadm (3.0-2) unstable; urgency=low
+
+ * Fixed initramfs script with patch from Steffen Hau: it was still using
+ --auto-update-homehost, which has been removed and replaced by a better
+ heuristic: arrays created for a different "homehost" will now be
+ assembled read-only, rather than shoehorned into the system with
+ --auto-update-homehost (closes: #537820).
+ * Add version stamps to bugscript and mkconf scripts to facilitate
+ debugging.
+
+ -- martin f. krafft <madduck@debian.org> Tue, 21 Jul 2009 10:33:30 +0200
+
+mdadm (3.0-1) unstable; urgency=low
+
+ * New stable upstream release.
+ * Add information about udev and device links in /dev to bugscript output.
+ * Add pointer to FAQ and in particular rootdelay to the bug script
+ pre-subject file, which is displayed by tools like reportbug and thus
+ hopefully reduces the numbers of duplicated bugs.
+ * Patch from Frédéric Brière to make logcheck rules printk_time aware
+ (closes: #537460).
+ * Updated German translation due to typos and old spelling rules; thanks to
+ Helge Kreutzmann for the patch (closes: #534663).
+ * Bumped Standard-Version to 3.8.2; no changes necessary.
+
+ -- martin f. krafft <madduck@debian.org> Mon, 20 Jul 2009 16:12:41 +0200
+
+mdadm (3.0~devel3-43-g2800528-1) experimental; urgency=low
+
+ * Merge tip of upstream's devel-3.0 branch at commit 2800528.
+ * Drop our own udev rules in favour of upstream's. If
+ /etc/udev/rules.d/65_mdadm.vol_id.rules has not been modified (md5sum
+ check), it is automatically removed; else, a warning is emitted.
+ * Add information about udev and device links in /dev to bugscript output.
+
+ -- martin f. krafft <madduck@debian.org> Tue, 05 May 2009 15:10:46 +0200
+
+mdadm (2.6.9-3) unstable; urgency=low
+
+ * Fix the multipath prereq patch (#516605) and make it exit after printing
+ the prerequisites (closes: #526793).
+ * Change my previous recommendation for postfix over to the new virtual
+ package default-mta (see #522300 and #508644).
+ * Enhance bugscript, which now asks to run as root (sudo/su) if invoked by
+ a normal user.
+ * Include MD5 sums of md-related files in initrd in bug reports.
+ * Add grub2 information retrieval to bugscript.
+ * Trap SIGINT and thus prevent ctrl-c from terminating the bugscript
+ prematurely.
+
+ -- martin f. krafft <madduck@debian.org> Tue, 05 May 2009 11:46:22 +0200
+
+mdadm (3.0~devel3-1) experimental; urgency=low
+
+ * Initial release of DEVELOPMENT BRANCH 3.0 to experimental.
+
+ -- martin f. krafft <madduck@debian.org> Thu, 30 Apr 2009 11:51:39 +0200
+
+mdadm (2.6.9-2) unstable; urgency=low
+
+ * Fix the check of whether mdadm.conf defines all devices known to the
+ system; thanks Cristian Ionescu-Idbohrn (closes: #525655).
+ * No longer pass -k to modprobe, which has been deprecated for a long time;
+ thanks to Jan Hudec (closes: #519999).
+ * Remove Mario Joußen from the uploaders list, since his email started
+ bouncing.
+ * Prepare mdadm source to use quilt, with the long-term goal to switch to
+ TopGit, once I find the time.
+ * Cherry-pick caa0f6c & 667e66d from Neil into a quilt patch to fix gcc-4.4
+ compiler issues (closes: #505375).
+
+ -- martin f. krafft <madduck@debian.org> Sun, 26 Apr 2009 16:08:28 +0200
+
+mdadm (2.6.9-1) unstable; urgency=low
+
+ * New upstream release.
+ * Do not set -eu in the bugscript to maximise information output in the case
+ of errors.
+ * Make initramfs script depend on multipath to ensure its script is run
+ before ours (closes: #516605).
+ * Provide an alternative (postfix) for mail-transport-agent (closes:
+ #522300). I chose postfix because that's the only one I could recommend,
+ and since the alternative does not affect people who already have an MTA
+ installed, or have a preference, it won't affect them.
+ * Honour debconf pre-selection of mdadm/initrdstart (closes: #516802).
+ * Incorporate patch from Adrian Bridgett: the initramfs hook now checks to
+ see if all known arrays are listed in mdadm.conf and issues a warning if
+ this is not the case (closes: #519328).
+ * Make checkarray skip over arrays still marked auto-read-only
+ (closes: #510641).
+ * Add cron.daily snippet from Paul Slootman to run one-shot scans every day
+ to ensure that failed arrays don't go unnoticed (closes: #497949).
+ * Bumped Standards-Version to 3.8.1; no changes necessary.
+
+ -- martin f. krafft <madduck@debian.org> Sat, 25 Apr 2009 19:04:47 +0200
+
+mdadm (2.6.8-12-gb47dff6-2) unstable; urgency=low
+
+ * Brown paper bag release: I built from the wrong branch which caused some
+ Debian-specific changes not to get into the package. Thus build fixes it.
+
+ -- martin f. krafft <madduck@debian.org> Mon, 16 Feb 2009 12:15:37 +0100
+
+mdadm (2.6.8-12-gb47dff6-1) unstable; urgency=low
+
+ * New upstream release.
+ - better checks asprintf() return codes, thanks to patch from Dustin
+ Kirkland (closes: #509167).
+ * Fix start/stop runlevels in header of mdadm monitor init.d script
+ (closes: #514923).
+ * Use modprobe -q instead of --syslog from initramfs (closes: #502988).
+
+ -- martin f. krafft <madduck@debian.org> Mon, 16 Feb 2009 11:07:18 +0100
+
+mdadm (2.6.7.2-1) unstable; urgency=low
+
+ * New upstream release, created for Debian lenny:
+ - fixes assembly of arrays that are being reshaped (closes: #512475)
+ - this bug was also responsible for other assembly problems
+ (closes: #498505, #499643, #496334)
+ Again, many thanks to Neil Brown for being such an awesome upstream.
+
+ * Documentation updates:
+ - Actually install David Pashley's blog post added in 2.6.7.1-1, and
+ register it with doc-base.
+ - Update md.txt to version 2.6.26 (the lenny kernel).
+ - Add a dump of a website detailing md superblock formats.
+ - Register FAQ, md.txt, RAID5-vs-RAID10, README.recipes with doc-base
+ - Cherry-picked UID/UUID typo in mdadm.conf(5) manpage fix (commit
+ 0e69da7) (closes: #506245).
+
+ * Added Italian debconf translation; thanks Luca Monducci (closes: #506572).
+
+ -- martin f. krafft <madduck@debian.org> Tue, 03 Feb 2009 21:28:34 +0100
+
+mdadm (2.6.7.1-1) unstable; urgency=low
+
+ * New upstream release, specifically created for Debian lenny to fix the RC
+ bugs, which
+ - fixes typo in forced assembly code (closes: #496334, #499643, #498505).
+ - fixes array component size detection (closes: 500309).
+ Thanks Neil Brown, mdadm upstream: you are spoiling me. :)
+
+ * Minor fixes to documentation:
+ - Add David Pashley's Rebuilding RAID blog post.
+ - Add new (bugfix) version 1.40 of the newdisk script
+ (/usr/share/doc/mdadm/examples/newdisk.gz) (closes: #490955).
+ - Add link to Warren Togami's writeup about remote RAID-1 conversion to
+ README.recipes.
+ - Fix probability of survival in FAQ 4b, since I erroneously labeled the
+ chance of failure as the chance of survival; thanks to Per Olofssen for
+ clarification (closes: #493577).
+ - Cherry-picked 6d6de2e from Neil, which adds HOMEHOST to the manpage and
+ closes: #489257.
+
+ -- martin f. krafft <madduck@debian.org> Wed, 15 Oct 2008 10:27:23 +0200
+
+mdadm (2.6.7-3.1) unstable; urgency=low
+
+ * Non-maintainer upload with permission.
+ * Ask mdadm/initrdstart at medium priority in chrooted environment.
+ (Closes: #493099)
+ * Update Swedish debconf translations. Thanks Martin Ågren.
+ (Closes: #492074)
+
+ -- Jérémy Bobbio <lunar@debian.org> Mon, 25 Aug 2008 22:28:53 +0200
+
+mdadm (2.6.7-3) unstable; urgency=low
+
+ * Correct credits in the NEWS file: Suse authored the udev rules, not Ubuntu
+ (who use the same file without credit).
+
+ -- martin f. krafft <madduck@debian.org> Sat, 05 Jul 2008 12:22:58 +0200
+
+mdadm (2.6.7-2) unstable; urgency=low
+
+ * Remove mdrun completely.
+ * Import udev vol_id handling from Suse, and thus finally export
+ /dev/disk/by-id/* and /dev/disk/by-uuid symlinks (closes: #435983).
+ * Update upstream URLs in copyright and watch file (closes: #488364).
+ * Bump Standards-Version to 3.8.0; no changes required.
+ * Add mdadm homepage link to debian/control.
+
+ -- martin f. krafft <madduck@debian.org> Wed, 02 Jul 2008 11:13:18 +0200
+
+mdadm (2.6.7-1) unstable; urgency=low
+
+ * New upstream version, which
+ - fixes a segfault when reading /proc/mdstat (closes: #462154).
+ - fixes a possible bug with v1 bitmap space allocation (closes: #474548).
+ - supports large files for loop assembly (closes: #463769).
+ * Moved mdadm-raid init.d script to position S60 (from S50) for runlevels
+ 0 and 6, so that arrays get stopped after cryptdisks-early; thanks to
+ J.M.Roth (closes: #486012).
+ * Fixed a typo in checkarray; thanks to Helmut Grohne (closes: #445540).
+ * Updated debconf translations:
+ - Spanish; thanks to Javier Fernández-Sanguino (closes: #477920).
+ - Basque; thanks to Piarres Beobide (closes: #478676).
+ * Updated logcheck rule so that it matches mdadm log entries with and without
+ PID (2.6.5 introduces PIDs in the messages).
+
+ -- martin f. krafft <madduck@debian.org> Wed, 25 Jun 2008 17:31:15 +0200
+
+mdadm (2.6.4-2) unstable; urgency=low
+
+ * Adjusted logcheck rules to follow kernel changes; thanks to Frédéric
+ Brière (closes: #462478).
+ * Debconf templates and debian/control reviewed by the debian-l10n-
+ english team as part of the Smith review project. Closes: #463673
+ * Debconf translation updates (thanks to Christian Perrier for compiling
+ them):
+ * Japanese. Closes: #464438
+ * Galician. Closes: #464454
+ * French. Closes: #465984
+ * Czech. Closes: #466306
+ * Dutch. Closes: #466543
+ * Russian. Closes: #466577
+ * Portuguese. Closes: #466794
+ * German. Closes: #466989
+ * Vietnamese. Closes: #467118
+ * New debconf translations:
+ * Finnish. Closes: #468048
+ * Fixed bashism in mdadm-raid init.d script; thanks to Raphael Geisser
+ (closes: #471874).
+ * Do not output warning when run from cron and no arrays are found
+ (closes: #474542).
+ * Add doc-base registration file; thanks to Roberto C. Sanchez
+ (closes: #451684).
+ * Reschedule "mdadm Sunday" to 00:57 instead of 01:06 to prevent double
+ invocation on DST change (closes: #449244).
+ * Bump DH compatibility level to 6; no changes required.
+
+ -- martin f. krafft <madduck@debian.org> Fri, 11 Apr 2008 10:48:45 +0200
+
+mdadm (2.6.4-1) unstable; urgency=low
+
+ * New upstream release.
+ * Apply patch by Petter Reinholdtsen to fix dependency loop in
+ init.d script (closes: #460256).
+ * Bump Standards-Version to 3.7.3; no changes needed.
+
+ -- martin f. krafft <madduck@debian.org> Mon, 14 Jan 2008 12:47:14 +0100
+
+mdadm (2.6.3+200709292116+4450e59-3) unstable; urgency=low
+
+ * Patch by Jérémy Bobbio which completes the fix for #444682.
+
+ -- martin f. krafft <madduck@debian.org> Mon, 01 Oct 2007 16:16:19 +0100
+
+mdadm (2.6.3+200709292116+4450e59-2) unstable; urgency=low
+
+ * Patch the routine loading v1 superblocks to fix a segfault on amd64
+ (closes: #444682).
+
+ -- martin f. krafft <madduck@debian.org> Sun, 30 Sep 2007 14:10:41 +0100
+
+mdadm (2.6.3+200709292116+4450e59-1) unstable; urgency=low
+
+ * New merge from upstream @4450e59ffaf75623fa4261e244b0717a7463aa84
+ - makes "--write-mostly" effective when re-adding a device to an array.
+ (closes: #442874).
+ * Do not call update-initramfs -k all, it can be set via
+ /etc/initramfs-tools/update-initramfs.conf (closes: #439334).
+ * Depend on udev|makedev instead of just makedev and invoke /dev/MAKEDEV,
+ not /sbin/MAKEDEV (closes: #436998).
+ * De-escalate the initramfs hook warning about an "emergency procedure" and
+ simply note that this involves initramfs assembling arrays it finds
+ automatically at boot. Also added a FAQ entry on how to turn off the init
+ script warning when no arrays are found (closes: #434934).
+ * Add --scan to the single-device-assembly-codepath in the initramfs
+ local-top script; thanks to Mario 'BitKoenig' Holbe for the patch
+ (closes: #440703).
+ * Use short option in initramfs script mkdir call, so make it klibc-utils
+ compatible; thanks maximilian attems for the patch (closes: #443436).
+ * Handle module name synonyms in initramfs hook script (closes: #432585).
+
+ -- martin f. krafft <madduck@debian.org> Sat, 29 Sep 2007 21:21:25 +0100
+
+mdadm (2.6.2-2) unstable; urgency=low
+
+ * Fix typos in md(4) manpage; thanks Jeroen (closes: #425576).
+ * Make init script not report failure when there are no arrays defined in
+ config file.
+ * Add /usr/share/doc/mdadm/examples/newdisk, a script to integrate
+ a replacement disk into an existing array with minimal effort; will remain
+ in examples/ until I had a chance to really test and understand it. Thanks
+ to Arno van Amersfoort (closes: #427880).
+ * Does some sanity checking for proper format of level= arguments in
+ mdadm.conf and bails if an error is found. Since the RAID levels are used
+ verbatim as module names, a discrepancy might lead to an unusable system.
+ Instead, we thus use the emergency fallback. Thanks to Andrew
+ Sackville-West for spotting this and helping me with the fix.
+
+ -- martin f. krafft <madduck@debian.org> Tue, 10 Jul 2007 09:59:45 +0200
+
+mdadm (2.6.2-1) unstable; urgency=low
+
+ * New upstream release
+ - new options --fail detach and --remove faulty can be used to fail and
+ remove devices that are no longer physically present (closes: #416512).
+ - --help output now goes to stdout (closes: #416653).
+ - plenty of manpage fixes, thanks Peter Samuelson (closes: #414688).
+ * Incorporated patch by Mikko Rasa to fix detecting of raid6 (and raid10)
+ devices with --scan (closes: #421915).
+
+ -- martin f. krafft <madduck@debian.org> Mon, 21 May 2007 14:25:43 +0200
+
+mdadm (2.6.1-1) unstable; urgency=low
+
+ * Release to unstable.
+ * Start arrays read-only in initramfs to prevent syncing and hence enable
+ resuming/freezing. The arrays will automatically sync as soon something
+ writes to it; thanks to Tim Dijkstra, Neil Brown, and Luis Rodrigo
+ Gallardo Cruz (closes: #415441).
+ * mkconf now tries to preserve existing values for DEVICE, CREATE and
+ HOMEHOST (in addition to MAILADDR, which it preserved previously already).
+ PROGRAM is preserved but only added to mdadm.conf if it occured in the
+ previously existing configuration file.
+ * startall is now mdadm-startall and lives in /sbin, thanks to Eduard Bloch.
+ It now can handle existing mdadm.conf files much more gracefully, mostly
+ thanks to the above mkconf enhancements (closes: #415336).
+
+ -- martin f. krafft <madduck@debian.org> Sat, 05 May 2007 16:12:29 +0200
+
+mdadm (2.6.1-1~exp.5) experimental; urgency=low
+
+ * Fix mdadm.conf typo; thanks Tim Phipps (closes: #416626).
+ * Execute udevtrigger after assembly of arrays during initramfs processing;
+ thanks to Michael Prokop (closes: #416658).
+
+ -- martin f. krafft <madduck@debian.org> Sat, 31 Mar 2007 12:12:27 +0200
+
+mdadm (2.6.1-1~exp.4) experimental; urgency=low
+
+ * Incorporate patches by Peter Samuelson fixing several typography as well
+ as typesetting issues in the manpages. Thanks a lot! (closes: #414688)
+
+ -- martin f. krafft <madduck@debian.org> Tue, 13 Mar 2007 19:26:37 +0100
+
+mdadm (2.6.1-1~exp.3) experimental; urgency=low
+
+ * Patch by Jørn V. Christensen to properly handle multiple email addresses
+ for the MAILADDR setting (closes: #413330).
+
+ -- martin f. krafft <madduck@debian.org> Mon, 5 Mar 2007 11:19:18 +0000
+
+mdadm (2.6.1-1~exp.2) experimental; urgency=low
+
+ * Updated debconf translations:
+ - Galician by Jacobo Tarrio (closes: #412203).
+
+ -- martin f. krafft <madduck@debian.org> Sat, 24 Feb 2007 16:41:16 +0100
+
+mdadm (2.6.1-1~exp.1) experimental; urgency=low
+
+ * New upstream release, targeted at experimental until etch is out:
+ - adds --syslog option (closes: #402457).
+ - now can --wait for sync activity to finish (closes: #328197).
+ - for other changes, please see /usr/share/doc/mdadm/changelog.gz
+ * Updated debconf translations:
+ - Portuguese by Rui Branco (closes: #411745).
+
+ -- martin f. krafft <madduck@debian.org> Thu, 22 Feb 2007 16:35:16 +0100
+
+mdadm (2.5.6-9) UNRELEASED; urgency=low
+
+ * More logcheck filters to prevent redundant information logged by mdadm
+ --syslog.
+ * Improved mdadm-raid init script to correctly output status information for
+ drives that are initialising or adding spares.
+
+ -- martin f. krafft <madduck@debian.org> Thu, 11 Jan 2007 16:05:12 +0100
+
+mdadm (2.5.6-8) unstable; urgency=low
+
+ * Hard-code path to /sbin/mdadm binary rather than searching the $PATH. This
+ closes: #403307 and should be a little more robust in the presence of
+ installations of mdadm in /usr/local.
+ * Made the bugscript a little more failure-resilient.
+ * Added more documentation.
+
+ -- martin f. krafft <madduck@debian.org> Mon, 8 Jan 2007 02:04:25 +0100
+
+mdadm (2.5.6-7) unstable; urgency=low
+
+ * Only parse ARRAY lines from configuration file when collecting the array
+ pairs. Thanks to Daniel Dehennin for the bug report and suggested fix
+ (closes: #402106).
+ * Prevent modules from being loaded during initramfs time if no arrays are
+ to be assembled at this stage.
+ * Export DAEMON_OPTIONS to /etc/default/mdadm, which gets passed to the
+ mdadm daemon on startup from the init.d script. The value is set to
+ -y/--syslog by default, and will get incorporated into debconf in a future
+ version; thanks for the idea by Alex Owen (closes: #401696).
+ * Incorporate patch by upstream to fix handling of --syslog long option
+ (closes: #402457).
+ * Added logcheck filters for new syslog entries by mdadm monitoring daemon.
+ * Added Spanish debconf translation by Javier Fernández-Sanguino
+ (closes: #402681).
+
+ -- martin f. krafft <madduck@debian.org> Tue, 12 Dec 2006 11:49:52 +0100
+
+mdadm (2.5.6-6) unstable; urgency=medium
+
+ * Fixed a typo in the debconf control script which would cause failures with
+ a dash shell; thanks to Santiago Garcia Mantinan for reporting this, and
+ Andreas Metzeler for providing a solution (closes: #399315).
+
+ -- martin f. krafft <madduck@debian.org> Mon, 20 Nov 2006 15:02:34 +0800
+
+mdadm (2.5.6-5) unstable; urgency=low
+
+ * Prevent initramfs hook from exiting prematurely when VERBOSE=false.
+ * Moved debconf question about arrays to start by initramfs to high
+ priority.
+
+ -- martin f. krafft <madduck@debian.org> Mon, 13 Nov 2006 11:24:21 +0100
+
+mdadm (2.5.6-4) unstable; urgency=low
+
+ * Actually remove mdadm.conf on purge; previously, the generation of
+ a temporary file for initramfs would screw up the purging; thanks to
+ Fabrice Lorrain for the report (closes: #398088).
+
+ -- martin f. krafft <madduck@debian.org> Sat, 11 Nov 2006 20:07:55 +0100
+
+mdadm (2.5.6-3) unstable; urgency=low
+
+ * Fix a syntax error in mdadm-raid script.
+
+ -- martin f. krafft <madduck@debian.org> Thu, 9 Nov 2006 15:47:51 +0100
+
+mdadm (2.5.6-2) unstable; urgency=low
+
+ * Small fixes to mkconf, now returns 255 instead of -1.
+ * Added /usr/share/mdadm/startall, a helper script to facilitate starting
+ all arrays when booting from rescue/live media. It overrides AUTOSTART in
+ /etc/default/mdadm and starts arrays even if the variable is set to
+ a false value.
+
+ -- martin f. krafft <madduck@debian.org> Thu, 9 Nov 2006 14:44:35 +0100
+
+mdadm (2.5.6-1) unstable; urgency=low
+
+ * New upstream release:
+ - added note to mdadm(8)/--metadata about overriding the default in
+ mdadm.conf (closes: #396914).
+ - fixed problems that could cause infinite loop with auto assemble. Thanks
+ to Dan Pascu for pointing this out (closes: #396582).
+ - fixed problems with bitmap file names lost after reading from
+ configuration file.
+ * Merged patch by Dan Pascu to nicely handle situations where a degraded
+ array only has one drive left nicely by the mdadm-raid script.
+ * Updated Japanese debconf translation; thanks to Hideki Yamane
+ (closes: #396400).
+
+ -- martin f. krafft <madduck@debian.org> Thu, 9 Nov 2006 00:47:45 +0100
+
+mdadm (2.5.5-1) unstable; urgency=low
+
+ * New upstream release:
+ - fixes the build problems on several architectures (closes: #393314) by
+ including the contents of linux/blkpg.h literally, not via #include.
+ - optimises bitmap file use on 64bit systems.
+ - does not error out anymore when trying to assemble an already assembled
+ array without a corresponding /dev device node.
+ - does not report an error if --assemble --scan only finds already running
+ arrays.
+ - fixes several bugs related to RAID10 and the new offset layout.
+ - improves error message when a wrong '--update' option is given.
+ * Added FAQ entries about partitionable arrays.
+ * chroot detection now also works for 2.6.18 and beyond (c.f. kernel commit
+ 778c1144771f0064b6f51bee865cceb0d996f2f9).
+ * Now recommends module-init-tools.
+ * Hides ugly errors during configuration in the absense of module-init-tools
+ or initramfs-tools.
+ * Send udev events for arrays assembled by the mdadm-raid init.d script.
+ This does not close #394193 but it's a good addition anyway. I am not
+ sending these events from the initramfs as well because it would be
+ non-trivial to ensure that an event doesn't get sent twice for a given
+ array.
+ Anyway, this is all a hack until the kernel sends online/offline events to
+ udev. See #394193.
+ * Added more RAID10 information to the FAQ.
+ * Added filters to logcheck for regular events, even by the md driver; also
+ promoted messages about non-fresh components to security events.
+ * Hide informational messages unless VERBOSE is set to a true value in
+ /etc/default/mdadm.
+
+ -- martin f. krafft <madduck@debian.org> Thu, 26 Oct 2006 22:35:24 +0200
+
+mdadm (2.5.4-1) unstable; urgency=low
+
+ * New upstream release:
+ - --examine now reports chunk size also for RAID6 and RAID10
+ - fix endianness issues with v1 superblocks (closes: #385726) and bitmap
+ metadata.
+ - improved message when mdadm detects similar superblocks
+ (closes: #385951).
+ - documents that the automatic update of the super-minor field in the
+ superblock when using a 2.6 kernel only applies to RAID levels 1 and
+ higher. RAID0 array superblocks must be manually updated
+ (closes: #386315, #388172).
+ - removes partition table from any whole device added to an array.
+ - allow --auto=yes to specify a number; if mdadm determines from the
+ device name that you want a partitionable array, this number determines
+ the number of sub-device nodes to create.
+ * Removed patch previously used to fix #385951 because it's not adequate.
+ See the bug log for reasons.
+
+ -- martin f. krafft <madduck@debian.org> Fri, 13 Oct 2006 08:32:20 +0200
+
+mdadm (2.5.3.git200608202239-8) unstable; urgency=low
+
+ * This revision is dedicated to Peter Samuelson for his RAID10 expertise^W
+ educated guess^W^W pure luck. (:
+ * Now writes minimal mdadm.conf file even if the MD subsystem has not been
+ loaded and the scan for arrays thus failed.
+ * Now tries to ensure that the configuration file used for the initramfs
+ actually defines arrays.
+ * Now preserves MAILADDR from an existing mdadm.conf when generating a new
+ one.
+ * Documentation updates.
+ * Updated debconf translations:
+ - German by Mario Joußen.
+ - Vietnamese by Clytie Siddall (closes: #390311).
+ - Dutch by Frans Pop (closes: #390955).
+ - French by Jean-Luc Coulon (closes: #391215).
+
+ -- martin f. krafft <madduck@debian.org> Fri, 6 Oct 2006 15:03:46 +0200
+
+mdadm (2.5.3.git200608202239-7) unstable; urgency=medium
+
+ * Fixed a serious bug in the debconf script which would cause the
+ configuration to exit prematurely in cases when the root could not be
+ determined. Since this is RC, the urgency is set to medium.
+ * Updated the documentation a bit.
+ * Updated debconf translations:
+ - Swedish by Daniel Nylander (closes: #389040).
+ - Czech by Miroslav Kure (closes: #389083).
+ - Russian by Yuri Kozlov (closes: #389086).
+ - Brazilian Portuguese by Felipe Augusto.
+
+ -- martin f. krafft <madduck@debian.org> Fri, 29 Sep 2006 16:31:44 +0200
+
+mdadm (2.5.3.git200608202239-6) unstable; urgency=high
+
+ * Bumping urgency to high because previous version has been in unstable for
+ three days and this one really only fixes a stupid segfault:
+ * Reworked the parsing of /proc/partitions and spotted a mean segfault
+ (closes: #388355).
+
+ -- martin f. krafft <madduck@debian.org> Thu, 21 Sep 2006 15:25:21 +0200
+
+mdadm (2.5.3.git200608202239-5) unstable; urgency=medium
+
+ * Keeping medium urgency due to RC bug.
+ * Modified the patch responsible for pruning parent devices so that
+ superblocks at the end of a disk do not get interpreted twice. It now
+ makes less assumptions about the exact output of /proc/partitions and
+ should thus be more robust (now closes: #385951).
+ * Added code that defers mdadm preconfiguration when the debconf backend is
+ too old (and does not provide debconf-escape). Now configuration is
+ postponed until the postinst is run in this case.
+
+ -- martin f. krafft <madduck@debian.org> Thu, 14 Sep 2006 11:16:39 +0200
+
+mdadm (2.5.3.git200608202239-4) unstable; urgency=medium
+
+ * Correct error related to an unbound variable in postinst.
+ * Keeping medium urgency.
+
+ -- martin f. krafft <madduck@debian.org> Wed, 13 Sep 2006 20:49:33 +0200
+
+mdadm (2.5.3.git200608202239-3) unstable; urgency=medium
+
+ * Urgency medium because of RC bugs.
+ * Add versioned dependency to debconf (closes: #385994); temporary fix until
+ we find a proper fix for #386439.
+ * Add patch by Steinar H. Gunderson to ensure mdadm does not interpret
+ a superblock as belonging to a device when it's actually part of
+ a partition on that device (closes: #385951).
+ * Do not override the superblock default version in mdadm.conf to prevent
+ creation of superblocks that the kernel can't handle (closes: #384614).
+ * Added a note to alert people that the warning about arrays not listed in
+ the configuration file is only relevant if the arrays are needed to be
+ brought up by mdadm from initramfs during boot (closes: #385017).
+ * Added bootloader/cmdline info to bugscript so that future bug reports via
+ bug/reportbug include information on how the system is booted with respect
+ to RAID (the root partition).
+ * If mdadm is being configured in a chroot, it now defaults to starting all
+ arrays from the initial ramdisk, rather than trying to figure out the root
+ MD array (we're using /proc information, so it would be the one of the
+ host, not the one of the chroot) (closes: #386468).
+ * Added LSB headers to init scripts.
+ * Reworked the documentation with respect to the use of "MD" and "RAID", and
+ added a FAQ entry on the meaning of "MD". Thanks to Frans Pop for his
+ help!
+ * Updated debconf translations:
+ - Czech by Miroslav Kure (closes: #384754).
+ - French by Florentin Duneau (closes: #385690).
+ - Russian by Yuri Kozlov (closes: #387017).
+
+ -- martin f. krafft <madduck@debian.org> Thu, 7 Sep 2006 14:32:04 +0200
+
+mdadm (2.5.3.git200608202239-2) unstable; urgency=low
+
+ * Allow ARRAY lines in configuration file to break across lines
+ (closes: #384222).
+ * Improved initramfs hook; now does not rely on initramfs to provide RAID
+ assembly:
+ - if a checked mdadm.conf file is present, use that.
+ - if an unchecked mdadm.conf is present, create a temporary one
+ - if that fails, use the unchecked one iff it contains at least one
+ ARRAY statement. Otherwise rely on auto-generation from the initramfs
+ during the book (and hope for the best).
+ - if no mdadm.conf is found, create one on the fly
+ - if that fails, hope that the auto-generation will work during boot
+ * Improved the messages printed by the initramfs script.
+ * Do not store the debconf answer for whether arrays not listed in the
+ configuration file should be used.
+ * Now asks again for the devices to start (preseeded with 'all') if the user
+ does not want to proceed with devices not listed in the configuration
+ file.
+
+ -- martin f. krafft <madduck@debian.org> Wed, 30 Aug 2006 16:29:07 +0200
+
+mdadm (2.5.3.git200608202239-1) unstable; urgency=low
+
+ * Tracking upstream git releases.
+ - now the --run switch behaves as stated in the manpage. This properly
+ fixes #287415
+ - new version-1 partitionable arrays are now named X instead of _dX (e.g.
+ 0 instead of _d0) for device names like md_dX. I actually think this is
+ a bug and hope upstream will use dX (e.g. d0) instead in a future
+ version.
+ - we specify --symlink=no and thus disable the new feature to create
+ /dev/mdX symlinks to /dev/md/X devices until the entire device node mess
+ is cleared up. No need to introduce yet another complicating factor at
+ this stage.
+ * Instead of trying to do a whole lot of magic with respect to detecting
+ RAID devices to start, mdadm from now on requires a valid mdadm.conf file
+ to be installed. It still tries to do what it can, but there are no
+ heuristics anymore. See /usr/share/doc/mdadm/README.upgrading-2.5.3 .
+ * Removed the zero-superblock warning because we require the user to sign
+ off the configuration file anyway.
+ * This also enables us to use mdadm.conf from the initial ramdisk and thus
+ closes: #381303.
+ * In case the user chooses to assemble all arrays from the initial ramdisk,
+ use the new homehost feature of mdadm (closes: #381057). This will start
+ only those arrays belonging to the local system, unless it is the first
+ run on a system, in which case it will start all arrays and mark them as
+ belonging to the local system.
+ * Improved the debconf control script: integrated error messages into the
+ frontends, and made it a bit smarter. Error messages can now be
+ translated, and the script checks whether the user's choice is listed in
+ the configuration file and only proceeds if it is, or the user chooses to
+ ignore that it is not.
+ * mkconf can now take a generate/force-generate parameter to write directly
+ to /etc/mdadm/mdadm.conf. A second parameter specifies an alternate
+ filename.
+ * mkconf now outputs comments for the settings it suggests.
+ * Removed all udev-related stuff. We must coexist with udev because there
+ are setups that assemble arrays without mdadm, so the device nodes must be
+ created by udev, if that is used.
+ (closes: #382263, #382450, #383688, #383891, #383806, #382480)
+ Staying at low urgency since these (RC) bugs only exist in unstable.
+ * Now installs MD modules and mdadm/mdrun into initial ramdisk regardless of
+ whether the hook script thinks there are devices to start. This was done
+ to enable recovery from the initramfs shell.
+ * Now uses 'MD' instead of 'RAID' consistently in all messages.
+ * Now rebuilds initramfs for all installed kernels.
+ * Now breaks the endless config loop only when the user does not see the
+ question (see #381284, #381007).
+ * Don't fail mdadm-raid when /dev is on a read-only filesystem
+ (closes: #382876).
+ * Updated debconf translations:
+ - French by Florentin Duneau (closes: #382389).
+
+ -- martin f. krafft <madduck@debian.org> Mon, 21 Aug 2006 00:25:22 +0100
+
+mdadm (2.5.2-10) unstable; urgency=low
+
+ * Applied patch by upstream to fix the logic of the --run switch (see
+ #287415). Thus also reverted the mdadm-raid hack used to fix the bug in
+ the 2.5.2-9 upload.
+ * Recognise devfs-style device nodes by fixing a regression bug in the root
+ RAID autodetection code (closes: #381007), which was introduced as part of
+ the fix for #380596 in the 2.5.2-9 upload. The bug is RC, but it only
+ applies to unstable right now, so I am not pumping up the urgency.
+ The autodetection code now doesn't care about the actual name of the array
+ device, but instead only insists that it exists, is a block device, and
+ recognised as an array by mdadm (mdadm --detail).
+ * Added safety net to prevent endless loops in RAID autodetection. Now just
+ falls back to starting all arrays from the initramfs if it fails to
+ determine an acceptable array for the / filesystem in three tries
+ (closes: #381284, also see #381007).
+ * Added udev rules file to prevent udev from ever creating md device nodes,
+ which can get in the way of mdadm (also see next item).
+ * Added a workaround to the initramfs hook to deal with the problem with
+ /dev/md/X device nodes when /dev/mdX is also present and version-0
+ superblocks are in use (closes: #381181).
+ * checkarray: correctly recognise when the kernel is too old for parity
+ checks, or when there are no redundant arrays present (closes: #380746).
+ * checkarray: now supports -s|--status switch to query parity check status
+ for given devices.
+ * checkarray: now supports -x|--cancel switch to cancel running checks.
+ * mkconf: now also outputs 'MAILADDR root' and 'HOMEHOST <system>'.
+ * Added README.checkarray with some information about the check process.
+ * Added /usr/share/doc/mdadm/FAQ to answer some FAQs.
+
+ -- martin f. krafft <madduck@debian.org> Thu, 3 Aug 2006 22:54:04 +0100
+
+mdadm (2.5.2-9) unstable; urgency=low
+
+ * Added logcheck rules for kernel messages generated by checkarray, using
+ logcheck server level.
+ * Added handling of partitionable arrays to root RAID autodetection script
+ (closes: #380596).
+ * Forcing RAID assembly to run the arrays, working around an upstream bug
+ until that's fixed (closes: #287415).
+ * Updated documentation in README.initramfs-transition to include
+ information related to #380089.
+ * Updated debconf translations:
+ - Vietnamese by Clytie Syddall, thanks!
+
+ -- martin f. krafft <madduck@debian.org> Mon, 31 Jul 2006 14:35:38 +0100
+
+mdadm (2.5.2-8) unstable; urgency=low
+
+ * Re-added rootraiddoc.97.html which was mysteriously lost (closes: #378678).
+ * Catching modprobe error in case of absence of the kernel modules, or
+ a non-modular kernel. Thanks to Holger Levsen.
+ * Copy raid456 kernel module into initramfs, if present (closes: #380152).
+ * checkarray: check for presence of active RAID arrays and give an
+ appropriate error if there are none present (closes: #379019).
+ * checkarray: skip sync for non-redundant devices (closes: #379352, #380424).
+ * Fixing cron registration for checkarray. crontab(5) is really stupid and
+ makes me think that they simply documented a bug instead of fixing it, so
+ now I have to hack around it. See the cron.d file (closes: #380425).
+ * Removed the code writing auto-detected devices to /var, which was silly
+ since /var isn't necessarily mounted yet by the time mdadm-raid is called.
+ Thanks to Maurizio Avogadro for pointing this out.
+ * Add reference to BAARF to README.Debian and included the RAID5 vs RAID10
+ article from the BAARF website.
+ * Updated debconf translations:
+ - Japanese by Hideki Yamane, thanks!
+ - French by Florentin Duneau, thanks! (closes: #379511)
+
+ -- martin f. krafft <madduck@debian.org> Thu, 27 Jul 2006 22:49:32 +0100
+
+mdadm (2.5.2-7) unstable; urgency=low
+
+ * Release to unstable.
+
+ -- martin f. krafft <madduck@debian.org> Thu, 20 Jul 2006 17:23:23 +0100
+
+mdadm (2.5.2-6) experimental; urgency=low
+
+ * Adding mdrun to generated udeb. I will only remove mdrun after etch.
+ * Updated debconf translations:
+ - Dutch, thanks to Frans "Franzerl" Pop! (closes: #377412)
+ - French, thanks to Florentin Duneau! (closes: #377968)
+
+ -- martin f. krafft <madduck@debian.org> Thu, 13 Jul 2006 23:11:24 +0200
+
+mdadm (2.5.2-5) UNRELEASED; urgency=low
+
+ * Remove the check for the lvm prereq in the initramfs hook, as #369617 is
+ now fixed. Thus conflicts against initramfs-tools (<< 0.65).
+ * Updated debconf translations:
+ - German, thanks to Mario Joußen!
+ * Added short note about maintenance in SVN to README.Debian.
+
+ -- martin f. krafft <madduck@debian.org> Thu, 13 Jul 2006 23:10:36 +0200
+
+mdadm (2.5.2-4) UNRELEASED; urgency=low
+
+ * The "it takes two to swing" release.
+ * Now does not stop arrays on upgrade or remove. Thanks (and sorry) to
+ Christian Pernegger (and hopefully no others).
+ * Fixed small problem in debconf configuration script related to unbound
+ MAIL_TO variable. Thanks to Christian Pernegger.
+
+ -- martin f. krafft <madduck@debian.org> Fri, 7 Jul 2006 16:59:01 +0200
+
+mdadm (2.5.2-3) UNRELEASED; urgency=low
+
+ * The initramfs now gets all RAID modules installed. It's a lot safer to
+ have them all around, the size difference is negligible, and we still only
+ load the needed ones at boot time.
+ * Added /usr/share/mdadm/checkarray, which can be used to check arrays for
+ parity. Also added a debconf question to let the user choose whether
+ cron should run these checks (closes: #377071).
+ * Only shut down arrays automatically when they've been automatically
+ started (closes: #376009).
+ * Make sure the user has a chance to choose the autostart feature by
+ elevating the debconf priority to high (see #376009). The warning about
+ reuse of RAID components has also been elevated to debconf priority high.
+ * The MAIL_TO setting from /etc/default/mdadm has been removed. Instead, use
+ MAILADDR in /etc/mdadm/mdadm.conf. See mdadm.conf(5). Your setting should
+ be automatically migrated.
+ * Now rewrites /etc/default/mdadm (but preserves settings) instead of trying
+ to patch it with changes.
+ * Added note to README.Debian to ensure users know that only the devices
+ listed in mdadm.conf will be autostarted (see #376009).
+ * Now includes latest md.txt from kernel documentation in
+ /usr/share/doc/mdadm/md.txt.gz.
+ * Added some more recipes to /usr/share/doc/mdadm/README.recipes.gz.
+ * Updated debconf translations:
+ - Swedish, thanks to Daniel Nylander!
+ - Brazilian Portuguese, thanks to Felipe Augusto van de Wiel!
+ - Czech, thanks to Miroslav Kure!
+ - Russian, thanks to Yuri Kozlov (closes: #376181).
+ * Further updates to the debconf templates; I hope the translators aren't
+ going to kill me.
+
+ -- martin f. krafft <madduck@debian.org> Fri, 7 Jul 2006 15:09:40 +0200
+
+mdadm (2.5.2-2) experimental; urgency=low
+
+ * The "if it weren't for Munich's wheat beer, there'd be no" release.
+ * Removed -fno-strict-aliasing from compiler options, after upstream fixed
+ the bug that led to its use (see #369779, #356153). Thanks to Elimar
+ Riesebieter for pointing this out (closes: #375876).
+ * Moved detection of RAID devices from initramfs hook to debconf control
+ file, and added a (low-priority) debconf question as to which devices
+ should be started early in the boot sequence. For the cases where we
+ failed to auto-detect previously (e.g. root on LVM on RAID), it's paranoid
+ and suggests to start them all (closes: #375879). Thanks to Alec Berryman
+ for spotting this.
+ * Fixed a typo in README.experimental, which could lead to an unbootable
+ system with initramfs-tools 0.64 or before. Again, thanks to Alec for
+ spotting this.
+ * Extended bug script to include --examine output for all components (at
+ least if called by root, which hopefully should never happen. Err,
+ wait...)
+ * Disabled deprecation warning in mdrun until the transition is complete.
+ * Reworded the debconf templates due to a new question, and also for
+ readability.
+
+ -- martin f. krafft <madduck@debian.org> Thu, 29 Jun 2006 22:54:47 +0200
+
+mdadm (2.5.2-1) experimental; urgency=low
+
+ * New upstream release.
+ * Implemented checks in the initramfs hooks and scripts for compatibility
+ with initramfs-tools. Now we do not need a conflict anymore because
+ mdadm's hooks and scripts will simply do nothing while the ones provided
+ by initramfs-tools are still present.
+ * Not using /bin/bash for mdrun, which I thought we'd need for read timeout
+ support (for the deprecation warning). Since the -n and -t flags to the
+ read shell builtin are non-POSIX, I dropped them, they were merely
+ cosmetic anyway.
+
+ -- martin f. krafft <madduck@debian.org> Tue, 27 Jun 2006 15:06:55 +0200
+
+mdadm (2.5.1-2) experimental; urgency=low
+
+ * Updating dependency on initramfs-tools, which has not yet adopted to mdadm
+ taking over the hooks.
+
+ -- martin f. krafft <madduck@debian.org> Mon, 26 Jun 2006 22:35:08 +0200
+
+mdadm (2.5.1-1) experimental; urgency=low
+
+ * New upstream release:
+ - Really fixes return status of examine (closes: #367901).
+ - Fixes a memory leak in monitor mode (closes: #372618).
+ - Fixes compiler warnings and errors (closes: #373802, #356153, #369779).
+ - Fix byte swapping issues (closes: #369765).
+ - Now lists devices it stops (closes: #369850). This also leads to
+ beautification of the init.d script's stop action.
+ * Fixed RAID init script to not complain about missing logger command.
+
+ -- martin f. krafft <madduck@debian.org> Mon, 26 Jun 2006 00:58:36 +0200
+
+mdadm (2.5-4) experimental; urgency=low
+
+ * The "would you like fries with your parasite?" release.
+ * Now does not require RAID support from the kernel just for package
+ installation; that was silly of me, sorry (closes: Bug#370115).
+ * Added version to Replaces: initramfs-tools dependency.
+ * Further init.d script improvements.
+ * Recommends mail-transport-agent, or the monitor daemon won't be able to
+ send anything.
+ * Ignores failures from modprobe in postinst when RAID modules are not
+ available (closes: #370582).
+
+ -- martin f. krafft <madduck@debian.org> Tue, 6 Jun 2006 12:45:53 +0200
+
+mdadm (2.5-3) experimental; urgency=low
+
+ * Added /usr/share/doc/mdadm/README.recipes with some common usage examples.
+ * Vastly improved the mdadm-raid init.d script output, and removed bashisms.
+
+ -- martin f. krafft <madduck@debian.org> Fri, 2 Jun 2006 00:45:06 +0200
+
+mdadm (2.5-2) experimental; urgency=low
+
+ * The "on her majesty's secret service" release.
+ * Enabled -DDEBIAN during build, which will take care of default permissions
+ on devices created by mdadm. Together with the CREATE configuration
+ directive in 2.5, this now certainly closes: Bug#310241.
+ * Added a patch (incorporating lib/mm/xlate.h from lvm2) to prevent direct
+ access to kernel headers from userspace (closes: Bug#369765).
+ * Disabled strict aliasing compiler checks until we find a better
+ implementation for linked lists in C (closes: Bug#369779, Bug#356153).
+ * Actually decreased the size of the udeb mdadm binary with -Os
+ -fomit-frame-pointer (as suggested by Joey Hess) (closes: Bug#314370)
+ * Added Replaces: initramfs-tools to communicate that we're not conflicting
+ but replacing instead (see Bug#367567)
+ * Updated conflict with initramfs-tools to (<< 0.63) per suggestion by the
+ maintainers.
+
+ -- martin f. krafft <madduck@debian.org> Thu, 1 Jun 2006 20:15:17 +0200
+
+mdadm (2.5-1) experimental; urgency=low
+
+ * The "show me the way to the next whiskey bar" release.
+ * See /usr/share/doc/mdadm/README.experimental or
+ http://madduck.net/~madduck/scratch/README.experimental
+ * New upstream release:
+ - mails include /proc/mdstat output (closes: Bug#355882)
+ - allows specification of device permissions in config (closes: Bug#310241)
+ * /sbin/mdrun has been deprecated and replaced by calls to /sbin/mdadm;
+ a proper deprecation warning is in place (see NEWS).
+ * Moved initramfs hook and script into the package, and switched it to mdadm
+ (from mdadm. Thanks to Stephen Frost for his help (closes: Bug#354144).
+ This should make sure that the right minor numbers are chosen during boot
+ (mainly because mdadm takes care of it all) (closes: Bug#361408).
+ * Removing mdrun from the udeb (d-i patch submitted to debian-boot mailing
+ list)
+ * Upstream links against openssl for SHA1 support (homehost feature), which
+ is a problem. An internal SHA1 implementation is provided, however, so
+ I just link against that.
+ * Switched init.d scripts to use LSB-compliant output.
+ * Enhanced init.d script output.
+
+ -- martin f. krafft <madduck@debian.org> Thu, 1 Jun 2006 02:20:22 +0200
+
+mdadm (2.4.1-2) unstable; urgency=low
+
+ * The "this took way longer than I thought" release.
+ * Migrating to unstable.
+ * If the init.d script creates the mdadm.conf file, it should remove it on
+ purge. To accomplish this, I create a semaphore in /var/lib/mdadm if it
+ was generated, and only remove the conffile on purge if the semaphore
+ exists.
+ * Added a little helper /usr/share/mdadm/mkconf to aid generation of
+ configuration file.
+ * Added a bug script to collect some important information when the user
+ uses Debian bug reporting tools (such as reportbug).
+ * Added a debian/watch file.
+
+ -- martin f. krafft <madduck@debian.org> Wed, 31 May 2006 23:07:48 +0200
+
+mdadm (2.4.1-1) experimental; urgency=low
+
+ * The "I'll kill that maintainer... uh, wait, it's me" release. Sorry for
+ the delay, here's the long awaited new upstream release (closes:
+ Bug#337903, Bug#363592), which gets rid of a bunch of functionality bugs:
+ - reiserfs size does not overflow anymore (closes: Bug#318230)
+ - fixed typos in manpages (closes: Bug#352798)
+ Oh, and we're moving away from that arch nightmare too. Sorry for the
+ confusion.
+ * Experimental release, because I really don't want to be responsible for
+ data loss. Though I am quite sure that the upgrade is painless, I also
+ don't have access to 18 drive RAID 10 with multipath on s390 or similar
+ arrangements.
+ * We now make the /dev/md* devices in postinst unless /dev/md15 exists (no
+ longer checking for /dev/md0), or unless devfs is in use. If udev is used,
+ /dev/md15 will only exist in complex setups, so the devices will be made
+ in /dev/.static by MAKEDEV, which is not really a concern. I opted against
+ unconditionally calling MAKEDEV until #367407 is fixed so as to preserve
+ custom permissions or owner settings. This also acknowledges the NMU
+ (#299623).
+ closes: Bug#310247, Bug#299623
+ * Patched some of the code to make mdadm honour /etc/mdadm/mdadm.conf over
+ /etc/mdadm.conf (see NEWS).
+ * Fixed a couple of typos in the mdadm(8) manpage; thanks to Reuben Thomas.
+ closes: Bug#345669, Bug#345667
+ * Pushed Standards-Version to 3.7.2; no changes required.
+ * Updated Debconf translations:
+ - Vietnamese by Clytie Siddall (closes: Bug#323950)
+ - Czech by Miroslav Kure (closes: Bug#360290)
+ - Russian by Yuri Kozlov (closes: Bug#361116)
+ - French by Eric Madesclair (closes: Bug#323988)
+ * Added new Debconf translations:
+ - Swedish by Daniel Nylander (closes: Bug#333486)
+ - Dutch by Frans Pop (closes: Bug#344714)
+
+ -- martin f. krafft <madduck@debian.org> Tue, 16 May 2006 18:21:36 -0500
+
+mdadm (1.12.0-1) unstable; urgency=low
+
+ * New upstream release.
+ (obsoletes branches: symlinks)
+ (reduces branches: gcc4signedness, debian, autoscan)
+ * Fixed typo in mdadm.conf(5) manpage (closes: Bug#321152).
+
+ -- martin f. krafft <madduck@debian.org> Sun, 24 Jul 2005 19:20:01 +0200
+
+mdadm (1.9.0-5) unstable; urgency=low
+
+ * martin f. krafft: (the, "look ma', we're maintained in arch now!" release)
+ (no functional differences except for added/updated translations)
+ - Acknowledge NMU by Steve Langasek; thanks! (closes: Bug#299623)
+ - split diff.gz into different arch branches (see debian/arch-branches).
+ - debian/control:
+ - Changed maintainer to pkg-mdadm-devel.
+ - Reworded some of the descriptions (closes: Bug#304170).
+ - Pushed Standards-Version to 3.6.2.1; no changes needed.
+ - fixed po-debconf integration
+ - debian/rules:
+ - fixed po-debconf integration
+ - l10n changes:
+ - Removed amiguity from debconf template (closes: Bug#312754).
+ - Added Vietnamese debconf translation; thanks to Clytie Siddall!
+ (closes: Bug#312753)
+ - Added Czech debconf translation; thanks to Miroslav Kure! (closes: Bug#319626)
+ - Updated German debconf translation; thanks to Jens Seidel! (closes: Bug#313981)
+ - backported upstream's gcc4 signedness fixes from 1.12.0 (gcc4signedness
+ branch) (closes: Bug#319743).
+
+ -- martin f. krafft <madduck@debian.org> Sun, 24 Jul 2005 17:58:46 +0200
+
+mdadm (1.9.0-4.1) unstable; urgency=high
+
+ * Non-maintainer upload.
+ * High-urgency upload for sarge-targetted RC bugfix
+ * Make sure error output from MAKEDEV is sent to stderr, to avoid
+ interfering with debconf; this avoids installation problems on
+ udev-using systems. Thanks to Jonas Smedegaard for the patch.
+ Closes: #299623.
+
+ -- Steve Langasek <vorlon@debian.org> Wed, 1 Jun 2005 03:36:42 -0700
+
+mdadm (1.9.0-4) unstable; urgency=high
+
+ * High-urgency upload for sarge targeted RC bugfix.
+ * mdrun: replaced invocation of /usr/bin/seq with hard-coded sequence
+ (closes: Bug#310671).
+
+ -- martin f. krafft <madduck@debian.org> Wed, 25 May 2005 09:51:41 +0200
+
+mdadm (1.9.0-3) unstable; urgency=high
+
+ * High-urgency upload for sarge targeted RC bugfix.
+ * Applied patch by Peter Samuelson <peter@p12n.org>, which causes mdadm to
+ follow symlinks of device nodes (closes: #274859, #310412, #310492).
+ * Added myself as co-maintainer as per agreement with Mario Joussen.
+
+ -- martin f. krafft <madduck@debian.org> Tue, 24 May 2005 00:03:49 +0200
+
+mdadm (1.9.0-2.3) unstable; urgency=high
+
+ * Non-maintainer upload.
+ * Do not prevent postinst node creation when udev is being used; MAKEDEV
+ puts files into /dev/.static/dev with udev, which is needed so that device
+ nodes will be there even if udev is removed. Sorry for letting this slip
+ my mind and thanks to Steve Langasek for spotting this error.
+ * Leaving urgency at high to make sarge.
+
+ -- martin f. krafft <madduck@debian.org> Sun, 22 May 2005 19:35:04 +0200
+
+mdadm (1.9.0-2.2) unstable; urgency=high
+
+ * Non-maintainer upload.
+ * High-urgency upload for sarge targeted RC bugfix.
+ * Move mdadm-raid back to S25 as it needs to run after modules have been
+ loaded at S20 (see followups to #294404, #301560).
+ * Verified that Steve Langasek's patch to config.c (see item 4 of the
+ 1.9.0-2.1 changelog) is necessary for `mdadm -A -s` to work.
+ (closes: #301560)
+ * Integrated patch by Erik van Konijnenburg to fix mdadm's --auto
+ option in the presence of --scan.
+ (closes: #294404, #273182, #284028, #310126).
+ * Modified mdrun to call mdadm with --auto in assembly mode. Removed code
+ which would auto-create 24 device nodes during system startup when udev
+ was used.
+ * Fixed next_free_md function in mdrun to iterate all 24 nodes instead of
+ using some fragile shell globbing, which did not work anyway.
+ * Prevent postinst node creation when udev is being used.
+ * Added a README.udev file to /usr/share/doc/mdadm.
+
+ -- martin f. krafft <madduck@debian.org> Sun, 22 May 2005 12:57:56 +0200
+
+mdadm (1.9.0-2.1) unstable; urgency=high
+
+ * Non-maintainer upload.
+ * High-urgency upload for sarge targetted RC bugfix.
+ * Start mdadm-raid before udev on boot-up, so that mdadm device node
+ creation is honored, and support changing the init script ordering
+ on upgrades (closes: #294404).
+ * Fix mdadm --scan to prefer the values contained in /proc/partitions,
+ instead of picking up device node names at random from /dev.
+ * Teach mdrun to look at /dev/.static/dev instead of /.dev for udev
+ mounts requiring autostart (closes: #301560).
+
+ -- Steve Langasek <vorlon@debian.org> Sun, 27 Mar 2005 21:59:12 -0800
+
+mdadm (1.9.0-2) unstable; urgency=low
+
+ * Patched is_standard() to accept /dev/md/* names as standard.
+ Thanks to Colin Watson <cjwatson@debian.org>.
+ (closes: Bug#296794)
+ * Added another typecast to make it compilable on amd64 with gcc-4.0.
+ Thanks to Andreas Jochens <aj@andaco.de>.
+ (closes: Bug#294217)
+ * Removed unnecessary second assignment to $BASE in mdrun.
+ Thanks to Colin Watson <cjwatson@debian.org>.
+ (closes: Bug#295433)
+
+ -- Mario Joussen <joussen@debian.org> Sun, 6 Mar 2005 14:22:24 +0100
+
+mdadm (1.9.0-1) unstable; urgency=high
+
+ * New upstream release.
+ Solves problems with same UUID for each array.
+ Again a stable upstream version.
+ (closes: Bug#292282, Bug#293406, Bug#292784, Bug#290363, Bug#292715)
+ * Added some typecasts to make it compilable on amd64 with gcc-4.0.
+ Thanks to Andreas Jochens <aj@andaco.de>.
+ (closes: Bug#287638)
+
+ -- Mario Joussen <joussen@debian.org> Sun, 6 Feb 2005 12:25:03 +0100
+
+mdadm (1.8.1-1) unstable; urgency=low
+
+ * New upstream release.
+ Fixed segfault if no config file present and --scan is used.
+ (closes: Bug#283425, Bug#282604, Bug#284024)
+ * Fixed typo in detailed help of grow mode.
+ (closes: Bug#286980)
+ * Added japanese debconf translation. Thanks to Hideki Yamane
+ <henrich@samba.gr.jp>.
+ (closes: Bug#281073)
+ * Fixed missing variable initialization causing segfaults.
+
+ -- Mario Joussen <joussen@debian.org> Sun, 26 Dec 2004 14:44:31 +0100
+
+mdadm (1.7.0-2) unstable; urgency=high
+
+ * Changed debconf script to save the settings from the config file.
+ Thanks to Fabio Massimo Di Nitto <fabbione@fabbione.net> and
+ Frank Lichtenheld <djpig@debian.org> for the patch.
+ (closes: Bug#274208)
+ * Moved try to load md module inside the AUTOSTART if branch in
+ /etc/init.d/mdadm.
+ * Removed try to load md module from /etc/init.d/mdadm-raid.
+
+ -- Mario Joussen <joussen@debian.org> Sun, 24 Oct 2004 19:48:06 +0200
+
+mdadm (1.7.0-1) unstable; urgency=low
+
+ * New upstream release.
+ (closes: Bug#267814)
+
+ -- Mario Joussen <joussen@debian.org> Sun, 12 Sep 2004 20:48:33 +0200
+
+mdadm (1.6.0-3) unstable; urgency=high
+
+ * Added 'Conflicts: raidtools2 (<< 1.00.3-12.1)' because these packages
+ contain a mdrun.8 man page also.
+ (closes: Bug#268634, Bug#266527)
+ * Updated the french translation.
+ Thanks to Eric <eric-m@wanadoo.fr>
+ (closes: Bug#266251)
+
+ -- Mario Joussen <joussen@debian.org> Sat, 28 Aug 2004 18:23:17 +0200
+
+mdadm (1.6.0-2) unstable; urgency=low
+
+ * Included version 0.97 of "Debian Software Root Raid Documentation".
+ * Now mdrun is only used if no mdadm.conf is present.
+ Thanks to Thomas Prokosch <7nrmi1s02@sneakemail.com>.
+ (closes: Bug#264059)
+ * Added man page for mdrun.
+ Thanks to Robert Collins <robertc@robertcollins.net>.
+ (closes: Bug#265480)
+ * Moved /etc/mdadm/debian.conf to /etc/default/mdadm.
+ (closes: Bug#254922)
+ * Added a little workaround to mdrun to interact better with udev.
+ Thanks to Fabio Massimo Di Nitto <fabbione@fabbione.net>.
+ (closes: Bug#259491)
+ * Updated Brazilian Portuguese translation.
+ Thanks to Andre Luis Lopes <andrelop@debian.org>.
+ (closes: Bug#264220)
+
+ -- Mario Joussen <joussen@debian.org> Mon, 16 Aug 2004 22:10:59 +0200
+
+mdadm (1.6.0-1) unstable; urgency=low
+
+ * New upstream release.
+ Detect degraded arrays in --monitor mode now.
+ (closes: Bug#257357)
+ * Changed default to autostart RAID array.
+ (closes: Bug#250792)
+ * Fixed mdrun problem with kernel 2.6.
+ Thanks to Andre Tomt <andre@tomt.net> and Fabio Massimo Di Nitto
+ <fabbione@fabbione.net>
+ (closes: Bug#231823)
+ * Changed reuse warning to be less misleading.
+ (closes: Bug#253339)
+
+ -- Mario Joussen <joussen@debian.org> Tue, 20 Jul 2004 21:40:33 +0200
+
+mdadm (1.5.0-2) unstable; urgency=low
+
+ * Added french debconf template.
+ Thanks to Eric Madesclair <eric-m@wanadoo.fr>.
+ (closes: Bug#231968)
+
+ -- Mario Joussen <joussen@debian.org> Tue, 4 May 2004 21:29:19 +0200
+
+mdadm (1.5.0-1) unstable; urgency=low
+
+ * New upstream release.
+ * Rewrote debconf templates to avoid referring to debconf interface
+ widgets.
+ (closes: Bug#231221)
+ * Removed manual scan for RAID devices from init script.
+ (closes: Bug#233122, Bug#236762)
+ * Added creation of an udeb package.
+ (closes: Bug#243609)
+ * Added "Debian Software Root Raid Documentation".
+ Thanks to Lucas Albers <albersl@cs.montana.edu>.
+
+ -- Mario Joussen <joussen@debian.org> Sun, 25 Apr 2004 16:16:06 +0200
+
+mdadm (1.4.0-3) unstable; urgency=low
+
+ * Updated to standards version 3.6.1.0 and debhelper 4.
+ * Corrected definition of BLKGETSIZE64 macro to compile with the
+ 2.6 kernel headers.
+ (closes: Bug#223191)
+ * Swichted to po-debconf to provide localized debconf templates.
+ (closes: Bug#225288)
+
+ -- Mario Joussen <joussen@debian.org> Sun, 1 Feb 2004 19:30:53 +0100
+
+mdadm (1.4.0-2) unstable; urgency=low
+
+ * Corrected human readable size calculation.
+ (closes: Bug#225041)
+ * Added a warning about reusing hard disks and using the autostart
+ feature.
+ (closes: Bug#223790)
+
+ -- Mario Joussen <joussen@debian.org> Thu, 25 Dec 2003 19:52:57 +0100
+
+mdadm (1.4.0-1) unstable; urgency=low
+
+ * New upstream release.
+
+ -- Mario Joussen <joussen@debian.org> Sun, 7 Dec 2003 19:39:27 +0100
+
+mdadm (1.3.0-2) unstable; urgency=low
+
+ * Added upstream changelog to package.
+
+ -- Mario Joussen <joussen@debian.org> Tue, 12 Aug 2003 21:51:59 +0200
+
+mdadm (1.3.0-1) unstable; urgency=low
+
+ * New upstream release.
+ (closes: Bug#191561, Bug#200921)
+
+ -- Mario Joussen <joussen@debian.org> Thu, 31 Jul 2003 20:59:20 +0200
+
+mdadm (1.2.0-1) unstable; urgency=low
+
+ * New upstream release. (closes: Bug#183191)
+ * New version of mdrun that works properly with devfs and temporary
+ device directory.
+ (closes: Bug#182035)
+ * Added 'Conflicts: raidtools' because of a name clash with mdrun.
+ (closes: Bug#182960)
+
+ -- Mario Joussen <joussen@debian.org> Sun, 16 Mar 2003 13:32:45 +0100
+
+mdadm (1.0.1-4) unstable; urgency=low
+
+ * Changed mdrun so that it can deal with partition statistics in
+ /proc/partitions.
+ (closes: Bug#174000, Bug#175130)
+ * Added russian (ru) debconf template translation. Thanks to Sergey
+ Spiridonov <sena@hurd.homeunix.org>.
+
+ -- Mario Joussen <joussen@debian.org> Sun, 5 Jan 2003 13:14:45 +0100
+
+mdadm (1.0.1-3) unstable; urgency=low
+
+ * Fixed a bug in mdrun. (closes: Bug#167607)
+
+ -- Mario Joussen <joussen@debian.org> Mon, 11 Nov 2002 07:53:23 +0100
+
+mdadm (1.0.1-2) unstable; urgency=low
+
+ * Fixed typo in help option. (closes: Bug#151533)
+ * Added a script that discovers and assembles all arrays automatically.
+ Thanks to Eduard Bloch <blade@debian.org>.
+ (closes: Bug#161699)
+
+ -- Mario Joussen <joussen@debian.org> Fri, 1 Nov 2002 13:46:47 +0100
+
+mdadm (1.0.1-1) unstable; urgency=low
+
+ * New upstream release.
+
+ -- Mario Joussen <joussen@debian.org> Thu, 30 May 2002 14:01:22 +0200
+
+mdadm (0.8.2-1) unstable; urgency=low
+
+ * New upstream release.
+ * Splitted up mdadm.templates in one file for each language.
+ * Added brazilian portuguese (pt_BR) debconf template translation.
+ Thanks to Andre Luis Lopes <andrelop@ig.com.br>.
+ (closes: Bug#141540)
+
+ -- Mario Joussen <joussen@debian.org> Thu, 18 Apr 2002 19:31:00 +0200
+
+mdadm (0.7.2-1) unstable; urgency=low
+
+ * New upstream release.
+ * 'mdctl' was renamed to 'mdadm' upstream.
+ * Removed question about updating mdctl init script links.
+
+ -- Mario Joussen <joussen@debian.org> Sat, 23 Mar 2002 02:50:51 +0100
+
+mdctl (0.5-4) unstable; urgency=low
+
+ * Added debconf template to ask the user if the init script links
+ should be updated.
+
+ -- Mario Joussen <joussen@debian.org> Mon, 4 Mar 2002 22:53:37 +0100
+
+mdctl (0.5-3) unstable; urgency=low
+
+ * Splitted up init script in two parts. One starts the md array and the
+ other starts the raid monitor daemon.
+ (closes: Bug#136184)
+
+ -- Mario Joussen <joussen@debian.org> Thu, 28 Feb 2002 22:45:57 +0100
+
+mdctl (0.5-2) unstable; urgency=low
+
+ * Included optimization in Makefile
+ (closes: Bug#127687)
+ * Removed Conflicts/Replaces/Provides: mdutils
+ (closes: Bug#127684, Bug#127719)
+ * Added an init script, which can start md arrays and the raid monitor
+ daemon
+ * MD devices are now created under /dev if necessary
+ * Added a sample configuration file
+
+ -- Mario Joussen <mario@joussen.org> Sun, 13 Jan 2002 23:43:40 +0100
+
+mdctl (0.5-1) unstable; urgency=low
+
+ * Initial Release.
+ (closes: Bug#126610)
+
+ -- Mario Joussen <mario@joussen.org> Wed, 26 Dec 2001 17:07:09 +0100
diff --git a/debian/checkarray b/debian/checkarray
new file mode 100644
index 00000000..88266c45
--- /dev/null
+++ b/debian/checkarray
@@ -0,0 +1,219 @@
+#!/bin/sh
+#
+# checkarray -- initiates a check run of an MD array's redundancy information.
+#
+# Copyright © martin f. krafft <madduck@debian.org>
+# distributed under the terms of the Artistic Licence 2.0
+#
+set -eu
+
+PROGNAME=${0##*/}
+
+about()
+{
+ echo "\
+$PROGNAME -- MD array (RAID) redundancy checker tool
+Copyright © martin f. krafft <madduck@debian.org>
+Released under the terms of the Artistic Licence 2.0"
+}
+
+usage()
+{
+ about
+ echo "
+Usage: $PROGNAME [options] [arrays]
+
+Valid options are:
+ -a|--all check all assembled arrays (ignores arrays in command line).
+ -s|--status print redundancy check status of devices.
+ -x|--cancel queue a request to cancel a running redundancy check.
+ -i|--idle perform check in a lowest scheduling class (idle)
+ -l|--slow perform check in a lower-than-standard scheduling class
+ -f|--fast perform check in higher-than-standard scheduling class
+ --realtime perform check in real-time scheduling class (DANGEROUS!)
+ -c|--cron honour AUTOCHECK setting in /etc/default/mdadm.
+ -q|--quiet suppress informational messages
+ (use twice to suppress error messages too).
+ -h|--help show this output.
+ -V|--version show version information.
+
+Examples:
+ $PROGNAME --all --idle
+ $PROGNAME --quiet /dev/md[123]
+ $PROGNAME -sa
+ $PROGNAME -x --all
+
+Devices can be specified in almost any format. The following are equivalent:
+ /dev/md0, md0, /dev/md/0, /sys/block/md0
+
+You can also control the status of a check with /proc/mdstat file."
+}
+
+SHORTOPTS=achVqQsxilf
+LONGOPTS=all,cron,help,version,quiet,real-quiet,status,cancel,idle,slow,fast,realtime
+
+eval set -- $(getopt -o $SHORTOPTS -l $LONGOPTS -n $PROGNAME -- "$@")
+
+arrays=''
+cron=0
+all=0
+quiet=0
+status=0
+action=check
+ionice=
+
+for opt in $@; do
+ case "$opt" in
+ -a|--all) all=1;;
+ -s|--status) action=status;;
+ -x|--cancel) action=idle;;
+ -i|--idle) ionice=idle;;
+ -l|--slow) ionice=low;;
+ -f|--fast) ionice=high;;
+ --realtime) ionice=realtime;;
+ -c|--cron) cron=1;;
+ -q|--quiet) quiet=$(($quiet+1));;
+ -Q|--real-quiet) quiet=$(($quiet+2));; # for compatibility
+ -h|--help) usage; exit 0;;
+ -V|--version) about; exit 0;;
+ /dev/md/*|md/*) arrays="${arrays:+$arrays }md${opt#*md/}";;
+ /dev/md*|md*) arrays="${arrays:+$arrays }${opt#/dev/}";;
+ /sys/block/md*) arrays="${arrays:+$arrays }${opt#/sys/block/}";;
+ --) :;;
+ *) echo "$PROGNAME: E: invalid option: $opt. Try --help." >&2; exit 1;;
+ esac
+done
+
+is_true()
+{
+ case "${1:-}" in
+ [Yy]es|[Yy]|1|[Tt]rue|[Tt]) return 0;;
+ *) return 1;
+ esac
+}
+
+DEBIANCONFIG=/etc/default/mdadm
+[ -r $DEBIANCONFIG ] && . $DEBIANCONFIG
+if [ $cron = 1 ] && ! is_true ${AUTOCHECK:-false}; then
+ [ $quiet -lt 1 ] && echo "$PROGNAME: I: disabled in $DEBIANCONFIG ." >&2
+ exit 0
+fi
+
+if [ ! -f /proc/mdstat ]; then
+ [ $quiet -lt 2 ] && echo "$PROGNAME: E: MD subsystem not loaded, or /proc unavailable." >&2
+ exit 2
+fi
+
+if [ ! -d /sys/block ]; then
+ [ $quiet -lt 2 ] && echo "$PROGNAME: E: /sys filesystem not available." >&2
+ exit 7
+fi
+
+if [ -z "$(ls /sys/block/md* 2>/dev/null)" ]; then
+ if [ $quiet -lt 2 ] && [ $cron != 1 ]; then
+ echo "$PROGNAME: W: no active MD arrays found." >&2
+ echo "$PROGNAME: W: (maybe uninstall the mdadm package?)" >&2
+ fi
+ exit 0
+fi
+
+if [ -z "$(ls /sys/block/md*/md/level 2>/dev/null)" ]; then
+ [ $quiet -lt 2 ] && echo "$PROGNAME: E: kernel too old, no support for redundancy checks." >&2
+ exit 6
+fi
+
+if ! egrep -q '^raid([1456]|10)$' /sys/block/md*/md/level 2>/dev/null; then
+ [ $quiet -lt 1 ] && echo "$PROGNAME: I: no redundant arrays present; skipping checks..." >&2
+ exit 0
+fi
+
+if [ -z "$(ls /sys/block/md*/md/sync_action 2>/dev/null)" ]; then
+ [ $quiet -lt 2 ] && echo "$PROGNAME: E: no kernel support for redundancy checks." >&2
+ exit 3
+fi
+
+[ $all = 1 ] && arrays="$(ls -d1 /sys/block/md* | cut -d/ -f4)"
+
+for array in $arrays; do
+ MDBASE=/sys/block/$array/md
+
+ if [ ! -e $MDBASE/sync_action ]; then
+ [ $quiet -lt 1 ] && echo "$PROGNAME: I: skipping non-redundant array $array." >&2
+ continue
+ fi
+
+ read cur_status < $MDBASE/sync_action
+
+ if [ $action = status ]; then
+ echo "$array: $cur_status"
+ continue
+ fi
+
+ if [ ! -w $MDBASE/sync_action ]; then
+ [ $quiet -lt 2 ] && echo "$PROGNAME: E: $MDBASE/sync_action not writeable." >&2
+ exit 4
+ fi
+
+ if [ "$(cat $MDBASE/array_state)" = 'read-auto' ]; then
+ [ $quiet -lt 1 ] && echo "$PROGNAME: W: array $array in auto-read-only state, skipping..." >&2
+ continue
+ fi
+
+ case "$action" in
+ idle)
+ echo $action > $MDBASE/sync_action
+ [ $quiet -lt 1 ] && echo "$PROGNAME: I: cancel request queued for array $array." >&2
+ ;;
+
+ check)
+ if [ "$cur_status" != idle ]; then
+ [ $quiet -lt 2 ] && echo "$PROGNAME: W: array $array not idle, skipping..." >&2
+ continue
+ fi
+
+ # check if the array created recently and skip test if it is
+ created=$(mdadm --detail /dev/$array 2>/dev/null |
+ sed -n 's/.*Creation Time *://p' )
+ if [ -n "$created" ]; then
+ created=$(date +%s -d "$created" 2>/dev/null)
+ fi
+ if [ -n "$created" ]; then
+ now=$(date +%s)
+ if [ "$created" -lt "$now" -a \
+ "$created" -gt "$(($now - 14 * 24 * 60 * 60))" ]; then
+ [ $quiet -lt 2 ] && echo "$PROGNAME: I: array $array created recently, skipping..." >&2
+ continue
+ fi
+ fi
+
+ # queue request for the array. The kernel will make sure that these requests
+ # are properly queued so as to not kill one of the array.
+ echo $action > $MDBASE/sync_action
+ [ $quiet -lt 1 ] && echo "$PROGNAME: I: check queued for array $array." >&2
+
+ case "$ionice" in
+ idle) ioarg='-c3'; renice=15;;
+ low) ioarg='-c2 -n7'; renice=5;;
+ high) ioarg='-c2 -n0'; renice=0;;
+ realtime) ioarg='-c1 -n4'; renice=-5;;
+ *) break;;
+ esac
+
+ resync_pid= wait=5
+ while [ $wait -gt 0 ]; do
+ wait=$((wait - 1))
+ resync_pid=$(ps -ef | awk -v dev=$array 'BEGIN { pattern = "^\\[" dev "_resync]$" } $8 ~ pattern { print $2 }')
+ if [ -n "$resync_pid" ]; then
+ [ $quiet -lt 1 ] && echo "$PROGNAME: I: selecting $ionice I/O scheduling class and $renice niceness for resync of $array." >&2
+ ionice -p "$resync_pid" $ioarg || :
+ renice -n $renice -p "$resync_pid" 1>/dev/null || :
+ break
+ fi
+ sleep 1
+ done
+ ;;
+ esac
+
+done
+
+exit 0
diff --git a/debian/compat b/debian/compat
new file mode 100644
index 00000000..1e8b3149
--- /dev/null
+++ b/debian/compat
@@ -0,0 +1 @@
+6
diff --git a/debian/control b/debian/control
new file mode 100644
index 00000000..f031e371
--- /dev/null
+++ b/debian/control
@@ -0,0 +1,34 @@
+Source: mdadm
+Section: admin
+Priority: optional
+Maintainer: Debian mdadm maintainers <pkg-mdadm-devel@lists.alioth.debian.org>
+Uploaders: Michael Tokarev <mjt@tls.msk.ru>
+Build-Depends: debhelper (>= 6.0.7~), po-debconf, groff-base, docbook-to-man
+Standards-Version: 3.9.3
+Vcs-Git: git://git.debian.org/git/pkg-mdadm/mdadm
+Vcs-Browser: http://git.debian.org/?p=pkg-mdadm/mdadm.git
+Homepage: http://neil.brown.name/blog/mdadm
+
+Package: mdadm
+Architecture: any
+Depends: ${shlibs:Depends}, udev | makedev, ${misc:Depends}, lsb-base (>= 3.1-6), debconf (>= 1.4.72), initscripts (>= 2.88dsf-13.3)
+Recommends: default-mta | mail-transport-agent, module-init-tools
+Replaces: mdctl
+Breaks: mdctl (<< 0.7.2), raidtools2 (<< 1.00.3-12.1), initramfs-tools (<< 0.65)
+Description: tool to administer Linux MD arrays (software RAID)
+ The mdadm utility can be used to create, manage, and monitor MD
+ (multi-disk) arrays for software RAID or multipath I/O.
+ .
+ This package automatically configures mdadm to assemble arrays during the
+ system startup process. If not needed, this functionality can be disabled.
+
+Package: mdadm-udeb
+Section: debian-installer
+XC-Package-Type: udeb
+Architecture: any
+Depends: ${shlibs:Depends}
+Description: tool to administer Linux MD arrays (software RAID)
+ The mdadm utility can be used to create, manage, and monitor MD
+ (multi-disk) arrays for software RAID or multipath I/O.
+ .
+ This is a minimal package used by the debian-installer.
diff --git a/debian/copyright b/debian/copyright
new file mode 100644
index 00000000..f6eaec91
--- /dev/null
+++ b/debian/copyright
@@ -0,0 +1,21 @@
+This package was debianized by Mario Jou/3en <joussen@debian.org> on
+Wed, 26 Dec 2001 17:07:09 +0100.
+Martin F. Krafft <madduck@debian.org> took over on
+Tue, 16 May 2006 13:21:06 -0500
+
+The mdadm source was downloaded from
+ http://www.kernel.org/pub/linux/utils/raid/mdadm/
+
+Upstream Author: Neil Brown <neilb@suse.de>
+
+Copyright © 2001-2006 Neil Brown <neilb@suse.de>
+Packaging copyright © 2001-2005 Mario Jou/3en <joussen@debian.org>
+Packaging copyright © 2005-2008 Martin F. Krafft <madduck@debian.org>
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+On Debian GNU/Linux systems, the complete text of the GNU General
+Public License can be found in '/usr/share/common-licenses/GPL'.
diff --git a/debian/docs/RAID5_versus_RAID10.txt b/debian/docs/RAID5_versus_RAID10.txt
new file mode 100644
index 00000000..8278ab26
--- /dev/null
+++ b/debian/docs/RAID5_versus_RAID10.txt
@@ -0,0 +1,177 @@
+# from http://www.miracleas.com/BAARF/RAID5_versus_RAID10.txt
+# also see http://www.miracleas.com/BAARF/BAARF2.html
+#
+# Note: I, the Debian maintainer, do not agree with some of the arguments,
+# especially not with the total condemning of RAID5. Anyone who talks about
+# data loss and blames the RAID system should spend time reading up on Backups
+# instead of trying to evangelise, but that's only my opinion. RAID5 has its
+# merits and its shortcomings, just like any other method. However, the author
+# of this argument puts forth a good case and thus I am including the
+# document. Remember that you're the only one that can decide which RAID level
+# to use.
+#
+
+RAID5 versus RAID10 (or even RAID3 or RAID4)
+
+First let's get on the same page so we're all talking about apples.
+
+What is RAID5?
+
+OK here is the deal, RAID5 uses ONLY ONE parity drive per stripe and many
+RAID5 arrays are 5 (if your counts are different adjust the calculations
+appropriately) drives (4 data and 1 parity though it is not a single drive
+that is holding all of the parity as in RAID 3 & 4 but read on). If you
+have 10 drives or say 20GB each for 200GB RAID5 will use 20% for parity
+(assuming you set it up as two 5 drive arrays) so you will have 160GB of
+storage. Now since RAID10, like mirroring (RAID1), uses 1 (or more) mirror
+drive for each primary drive you are using 50% for redundancy so to get the
+same 160GB of storage you will need 8 pairs or 16 - 20GB drives, which is
+why RAID5 is so popular. This intro is just to put things into
+perspective.
+
+RAID5 is physically a stripe set like RAID0 but with data recovery
+included. RAID5 reserves one disk block out of each stripe block for
+parity data. The parity block contains an error correction code which can
+correct any error in the RAID5 block, in effect it is used in combination
+with the remaining data blocks to recreate any single missing block, gone
+missing because a drive has failed. The innovation of RAID5 over RAID3 &
+RAID4 is that the parity is distributed on a round robin basis so that
+there can be independent reading of different blocks from the several
+drives. This is why RAID5 became more popular than RAID3 & RAID4 which
+must sychronously read the same block from all drives together. So, if
+Drive2 fails blocks 1,2,4,5,6 & 7 are data blocks on this drive and blocks
+3 and 8 are parity blocks on this drive. So that means that the parity on
+Drive5 will be used to recreate the data block from Disk2 if block 1 is
+requested before a new drive replaces Drive2 or during the rebuilding of
+the new Drive2 replacement. Likewise the parity on Drive1 will be used to
+repair block 2 and the parity on Drive3 will repair block4, etc. For block
+2 all the data is safely on the remaining drives but during the rebuilding
+of Drive2's replacement a new parity block will be calculated from the
+block 2 data and will be written to Drive 2.
+
+Now when a disk block is read from the array the RAID software/firmware
+calculates which RAID block contains the disk block, which drive the disk
+block is on and which drive contains the parity block for that RAID block
+and reads ONLY the one data drive. It returns the data block. If you
+later modify the data block it recalculates the parity by subtracting the
+old block and adding in the new version then in two separate operations it
+writes the data block followed by the new parity block. To do this it must
+first read the parity block from whichever drive contains the parity for
+that stripe block and reread the unmodified data for the updated block from
+the original drive. This read-read-write-write is known as the RAID5 write
+penalty since these two writes are sequential and synchronous the write
+system call cannot return until the reread and both writes complete, for
+safety, so writing to RAID5 is up to 50% slower than RAID0 for an array of
+the same capacity. (Some software RAID5's avoid the re-read by keeping an
+unmodified copy of the orginal block in memory.)
+
+Now what is RAID10:
+
+RAID10 is one of the combinations of RAID1 (mirroring) and RAID0
+(striping) which are possible. There used to be confusion about what
+RAID01 or RAID10 meant and different RAID vendors defined them
+differently. About five years or so ago I proposed the following standard
+language which seems to have taken hold. When N mirrored pairs are
+striped together this is called RAID10 because the mirroring (RAID1) is
+applied before striping (RAID0). The other option is to create two stripe
+sets and mirror them one to the other, this is known as RAID01 (because
+the RAID0 is applied first). In either a RAID01 or RAID10 system each and
+every disk block is completely duplicated on its drive's mirror.
+Performance-wise both RAID01 and RAID10 are functionally equivalent. The
+difference comes in during recovery where RAID01 suffers from some of the
+same problems I will describe affecting RAID5 while RAID10 does not.
+
+Now if a drive in the RAID5 array dies, is removed, or is shut off data is
+returned by reading the blocks from the remaining drives and calculating
+the missing data using the parity, assuming the defunct drive is not the
+parity block drive for that RAID block. Note that it takes 4 physical
+reads to replace the missing disk block (for a 5 drive array) for four out
+of every five disk blocks leading to a 64% performance degradation until
+the problem is discovered and a new drive can be mapped in to begin
+recovery. Performance is degraded further during recovery because all
+drives are being actively accessed in order to rebuild the replacement
+drive (see below).
+
+If a drive in the RAID10 array dies data is returned from its mirror drive
+in a single read with only minor (6.25% on average for a 4 pair array as a
+whole) performance reduction when two non-contiguous blocks are needed from
+the damaged pair (since the two blocks cannot be read in parallel from both
+drives) and none otherwise.
+
+One begins to get an inkling of what is going on and why I dislike RAID5,
+but, as they say on late night info-mercials, there's more.
+
+What's wrong besides a bit of performance I don't know I'm missing?
+
+OK, so that brings us to the final question of the day which is: What is
+the problem with RAID5? It does recover a failed drive right? So writes
+are slower, I don't do enough writing to worry about it and the cache
+helps a lot also, I've got LOTS of cache! The problem is that despite the
+improved reliability of modern drives and the improved error correction
+codes on most drives, and even despite the additional 8 bytes of error
+correction that EMC puts on every Clariion drive disk block (if you are
+lucky enough to use EMC systems), it is more than a little possible that a
+drive will become flaky and begin to return garbage. This is known as
+partial media failure. Now SCSI controllers reserve several hundred disk
+blocks to be remapped to replace fading sectors with unused ones, but if
+the drive is going these will not last very long and will run out and SCSI
+does NOT report correctable errors back to the OS! Therefore you will not
+know the drive is becoming unstable until it is too late and there are no
+more replacement sectors and the drive begins to return garbage. [Note
+that the recently popular IDE/ATA drives do not (TMK) include bad sector
+remapping in their hardware so garbage is returned that much sooner.]
+When a drive returns garbage, since RAID5 does not EVER check parity on
+read (RAID3 & RAID4 do BTW and both perform better for databases than
+RAID5 to boot) when you write the garbage sector back garbage parity will
+be calculated and your RAID5 integrity is lost! Similarly if a drive
+fails and one of the remaining drives is flaky the replacement will be
+rebuilt with garbage also propagating the problem to two blocks instead of
+just one.
+
+Need more? During recovery, read performance for a RAID5 array is
+degraded by as much as 80%. Some advanced arrays let you configure the
+preference more toward recovery or toward performance. However, doing so
+will increase recovery time and increase the likelihood of losing a second
+drive in the array before recovery completes resulting in catastrophic
+data loss. RAID10 on the other hand will only be recovering one drive out
+of 4 or more pairs with performance ONLY of reads from the recovering pair
+degraded making the performance hit to the array overall only about 20%!
+Plus there is no parity calculation time used during recovery - it's a
+straight data copy.
+
+What about that thing about losing a second drive? Well with RAID10 there
+is no danger unless the one mirror that is recovering also fails and
+that's 80% or more less likely than that any other drive in a RAID5 array
+will fail! And since most multiple drive failures are caused by
+undetected manufacturing defects you can make even this possibility
+vanishingly small by making sure to mirror every drive with one from a
+different manufacturer's lot number. ("Oh", you say, "this schenario does
+not seem likely!" Pooh, we lost 50 drives over two weeks when a batch of
+200 IBM drives began to fail. IBM discovered that the single lot of
+drives would have their spindle bearings freeze after so many hours of
+operation. Fortunately due in part to RAID10 and in part to a herculean
+effort by DG techs and our own people over 2 weeks no data was lost.
+HOWEVER, one RAID5 filesystem was a total loss after a second drive failed
+during recover. Fortunately everything was on tape.
+
+Conclusion? For safety and performance favor RAID10 first, RAID3 second,
+RAID4 third, and RAID5 last! The original reason for the RAID2-5 specs
+was that the high cost of disks was making RAID1, mirroring, impractical.
+That is no longer the case! Drives are commodity priced, even the biggest
+fastest drives are cheaper in absolute dollars than drives were then and
+cost per MB is a tiny fraction of what it was. Does RAID5 make ANY sense
+anymore? Obviously I think not.
+
+To put things into perspective: If a drive costs $1000US (and most are far
+less expensive than that) then switching from a 4 pair RAID10 array to a 5
+drive RAID5 array will save 3 drives or $3000US. What is the cost of
+overtime, wear and tear on the technicians, DBAs, managers, and customers
+of even a recovery scare? What is the cost of reduced performance and
+possibly reduced customer satisfaction? Finally what is the cost of lost
+business if data is unrecoverable? I maintain that the drives are FAR
+cheaper! Hence my mantra:
+
+NO RAID5! NO RAID5! NO RAID5! NO RAID5! NO RAID5! NO RAID5! NO RAID5!
+
+Art S. Kagel
+
diff --git a/debian/docs/rebuilding-raid.html b/debian/docs/rebuilding-raid.html
new file mode 100644
index 00000000..1d7b8c0d
--- /dev/null
+++ b/debian/docs/rebuilding-raid.html
@@ -0,0 +1,561 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:dc="http://purl.org/dc/elements/1.1/" xml:lang="en" lang="en">
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+ <title>JD : /linux/rebuilding-raid</title>
+ <link rel="stylesheet" media="screen" type="text/css" href="http://www.davidpashley.com/css/ie.css" />
+ <link rel="stylesheet" media="print" type="text/css" href="http://www.davidpashley.com/css/print.css" />
+ <link xmlns="" rel="alternate" type="application/rss+xml" title="RSS 2.0" href="http://www.davidpashley.com/blog/?flav=rss" />
+ <link xmlns="" rel="alternate" type="text/xml" title="RSS .92" href="http://www.davidpashley.com/blog/?flav=rss" />
+ <link xmlns="" rel="alternate" type="application/atom+xml" title="Atom 0.3" href="http://www.davidpashley.com/blog/?flav=atom" />
+ </head>
+ <body>
+ <script type="text/javascript">
+<!--
+ function addGlobalStyle(css) {
+ var head, style;
+ head = document.getElementsByTagName('head')[0];
+ if (!head) { return; }
+ style = document.createElement('style');
+ style.type = 'text/css';
+ style.innerHTML = css;
+ head.appendChild(style);
+ }
+
+ var full_width = 0;
+
+ function make_max_width() {
+ if (!full_width) {
+ full_width = 1;
+ addGlobalStyle(' #page { max-width:100%; }');
+ } else {
+ full_width = 0;
+ addGlobalStyle(' #page { max-width:70em; }');
+ }
+ }
+ -->
+ </script>
+ <script src="http://www.google-analytics.com/urchin.js" type="text/javascript"></script>
+ <script type="text/javascript">
+ _uacct = "UA-261983-1";
+ urchinTracker();
+ </script>
+ <div id="page" style="width: expression(Math.min(parseInt(this.offsetWidth), 70*12 ) + 'px');">
+ <div id="header">
+ DavidPashley.com
+ </div>
+ <div xmlns="" id="menu">
+ <ul>
+ <li>
+ <a href="/" title="Home">Home</a>
+ </li>
+ <li>
+ <a href="/blog/" title="Blog">Blog</a>
+ </li>
+ <li>
+ <a href="/articles/" title="Articles">Articles</a>
+ </li>
+ <li>
+ <a href="/projects/" title="Projects">Projects</a>
+ </li>
+ <li>
+ <a href="/about/" title="About">About</a>
+ </li>
+ <li class="last">
+ <a href="/contact/" title="Contact">Contact</a>
+ </li>
+ </ul>
+ </div>
+ <div xmlns="" class="advert">
+ <script type="text/javascript">
+<!--
+ google_ad_client = "pub-3364074587908580";
+ google_ad_width = 733;
+ google_ad_height = 95;
+ google_ad_format = "728x90_as";
+ google_ad_type = "text_image";
+ google_ad_channel ="";
+ google_color_border = "FFFFFF";
+ google_color_bg = "FFFFFF";
+ google_color_link = "7788AA";
+ google_color_url = "556699";
+ google_color_text = "000000";
+ -->
+ </script>
+ <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
+ </div>
+ <div id="main">
+ <div xmlns="" id="sidebar">
+ <a href="javascript:make_max_width()">Use full width</a>
+ <div id="about">
+ <h1>About</h1>
+ <p><a href="mailto:david@davidpashley.com">David Pashley</a><br />
+ Systems Support<br />
+ Runtime Collective
+ </p>
+ <p>
+ <a href="http://www.davidpashley.com/blog/?flav=rss">
+ <img class="button" src="/images/rss10.png" width="80" height="15" alt="[RSS 1.0 Feed]" />
+ </a>
+ <a href="http://www.davidpashley.com/blog/?flav=atom">
+ <img class="button" src="/images/atom.png" width="80" height="15" alt="[RSS 2.0 Feed]" />
+ </a>
+ <a href="/foaf.rdf">
+ <img class="button" src="/images/foaf.png" width="80" height="15" alt="[FOAF Subscriptions]" />
+ </a>
+ <a href="http://www.catb.org/hacker-emblem/">
+ <img class="button" src="/images/hacker.png" width="80" height="15" alt="[Hacker]" />
+ </a>
+ </p>
+ </div>
+ <div class="archives">
+ <h1>Archives</h1>
+ <table class="blosxomCalendar">
+ <tr>
+ <td align="left">
+ <a href="http://www.davidpashley.com/blog/2008/Jun">&lt;</a>
+ </td>
+ <td colspan="5" align="center" class="blosxomCalendarHead">July 2008</td>
+ <td align="right">
+ <a href="http://www.davidpashley.com/blog/2008/Aug">&gt;</a>
+ </td>
+ </tr>
+ <tr>
+ <td class="blosxomCalendarWeekHeader">Su</td>
+ <td class="blosxomCalendarWeekHeader">Mo</td>
+ <td class="blosxomCalendarWeekHeader">Tu</td>
+ <td class="blosxomCalendarWeekHeader">We</td>
+ <td class="blosxomCalendarWeekHeader">Th</td>
+ <td class="blosxomCalendarWeekHeader">Fr</td>
+ <td class="blosxomCalendarWeekHeader">Sa</td>
+ </tr>
+ <tr>
+ <td class="blosxomCalendarEmpty"> </td>
+ <td class="blosxomCalendarEmpty"> </td>
+ <td class="blosxomCalendarCell"> 1</td>
+ <td class="blosxomCalendarCell"> 2</td>
+ <td class="blosxomCalendarCell"> 3</td>
+ <td class="blosxomCalendarCell"> 4</td>
+ <td class="blosxomCalendarCell"> 5</td>
+ </tr>
+ <tr>
+ <td class="blosxomCalendarCell"> 6</td>
+ <td class="blosxomCalendarCell"> 7</td>
+ <td class="blosxomCalendarCell"> 8</td>
+ <td class="blosxomCalendarCell"> 9</td>
+ <td class="blosxomCalendarCell">10</td>
+ <td class="blosxomCalendarCell">11</td>
+ <td class="blosxomCalendarBlogged">
+ <a href="http://www.davidpashley.com/blog/2008/Jul/12">12</a>
+ </td>
+ </tr>
+ <tr>
+ <td class="blosxomCalendarCell">13</td>
+ <td class="blosxomCalendarCell">14</td>
+ <td class="blosxomCalendarCell">15</td>
+ <td class="blosxomCalendarCell">16</td>
+ <td class="blosxomCalendarCell">17</td>
+ <td class="blosxomCalendarCell">18</td>
+ <td class="blosxomCalendarCell">19</td>
+ </tr>
+ <tr>
+ <td class="blosxomCalendarCell">20</td>
+ <td class="blosxomCalendarCell">21</td>
+ <td class="blosxomCalendarCell">22</td>
+ <td class="blosxomCalendarCell">23</td>
+ <td class="blosxomCalendarCell">24</td>
+ <td class="blosxomCalendarCell">25</td>
+ <td class="blosxomCalendarCell">26</td>
+ </tr>
+ <tr>
+ <td class="blosxomCalendarCell">27</td>
+ <td class="blosxomCalendarCell">28</td>
+ <td class="blosxomCalendarCell">29</td>
+ <td class="blosxomCalendarCell">30</td>
+ <td class="blosxomCalendarCell">31</td>
+ <td class="blosxomCalendarEmpty"> </td>
+ <td class="blosxomCalendarEmpty"> </td>
+ </tr>
+ </table>
+ </div>
+ <div class="archives">
+ <h1>Tags</h1>
+ <p>
+ <div id="tagcloud">
+ <a href="http://www.davidpashley.com/blog/tags/ data integrity" class="smallTag" alt="There are 2 entries tagged data integrity"> data integrity</a>
+ <a href="http://www.davidpashley.com/blog/tags/ databases" class="smallTag" alt="There are 2 entries tagged databases"> databases</a>
+ <a href="http://www.davidpashley.com/blog/tags/ gotchas" class="smallTag" alt="There are 2 entries tagged gotchas"> gotchas</a>
+ <a href="http://www.davidpashley.com/blog/tags/ java" class="smallestTag" alt="There are 1 entries tagged java"> java</a>
+ <a href="http://www.davidpashley.com/blog/tags/ jetty" class="smallestTag" alt="There are 1 entries tagged jetty"> jetty</a>
+ <a href="http://www.davidpashley.com/blog/tags/ maven" class="smallestTag" alt="There are 1 entries tagged maven"> maven</a>
+ <a href="http://www.davidpashley.com/blog/tags/ netcat" class="smallestTag" alt="There are 1 entries tagged netcat"> netcat</a>
+ <a href="http://www.davidpashley.com/blog/tags/ rsync" class="smallestTag" alt="There are 1 entries tagged rsync"> rsync</a>
+ <a href="http://www.davidpashley.com/blog/tags/ servlets" class="smallestTag" alt="There are 1 entries tagged servlets"> servlets</a>
+ <a href="http://www.davidpashley.com/blog/tags/alpha" class="smallestTag" alt="There are 1 entries tagged alpha">alpha</a>
+ <a href="http://www.davidpashley.com/blog/tags/apache" class="smallestTag" alt="There are 1 entries tagged apache">apache</a>
+ <a href="http://www.davidpashley.com/blog/tags/article" class="mediumTag" alt="There are 7 entries tagged article">article</a>
+ <a href="http://www.davidpashley.com/blog/tags/async routing" class="smallestTag" alt="There are 1 entries tagged async routing">async routing</a>
+ <a href="http://www.davidpashley.com/blog/tags/Atom" class="smallTag" alt="There are 2 entries tagged Atom">Atom</a>
+ <a href="http://www.davidpashley.com/blog/tags/backups" class="smallestTag" alt="There are 1 entries tagged backups">backups</a>
+ <a href="http://www.davidpashley.com/blog/tags/bash" class="mediumTag" alt="There are 6 entries tagged bash">bash</a>
+ <a href="http://www.davidpashley.com/blog/tags/bitlbee" class="smallestTag" alt="There are 1 entries tagged bitlbee">bitlbee</a>
+ <a href="http://www.davidpashley.com/blog/tags/blog" class="smallTag" alt="There are 3 entries tagged blog">blog</a>
+ <a href="http://www.davidpashley.com/blog/tags/bzip2" class="smallestTag" alt="There are 1 entries tagged bzip2">bzip2</a>
+ <a href="http://www.davidpashley.com/blog/tags/C++" class="smallestTag" alt="There are 1 entries tagged C++">C++</a>
+ <a href="http://www.davidpashley.com/blog/tags/certificate authority" class="smallestTag" alt="There are 1 entries tagged certificate authority">certificate authority</a>
+ <a href="http://www.davidpashley.com/blog/tags/comments" class="smallestTag" alt="There are 1 entries tagged comments">comments</a>
+ <a href="http://www.davidpashley.com/blog/tags/conffiles" class="smallestTag" alt="There are 1 entries tagged conffiles">conffiles</a>
+ <a href="http://www.davidpashley.com/blog/tags/d-i" class="smallestTag" alt="There are 1 entries tagged d-i">d-i</a>
+ <a href="http://www.davidpashley.com/blog/tags/database" class="bigTag" alt="There are 9 entries tagged database">database</a>
+ <a href="http://www.davidpashley.com/blog/tags/databases" class="smallestTag" alt="There are 1 entries tagged databases">databases</a>
+ <a href="http://www.davidpashley.com/blog/tags/debconf" class="smallTag" alt="There are 3 entries tagged debconf">debconf</a>
+ <a href="http://www.davidpashley.com/blog/tags/Debian" class="biggestTag" alt="There are 11 entries tagged Debian">Debian</a>
+ <a href="http://www.davidpashley.com/blog/tags/decompression errors" class="smallestTag" alt="There are 1 entries tagged decompression errors">decompression errors</a>
+ <a href="http://www.davidpashley.com/blog/tags/disk" class="smallestTag" alt="There are 1 entries tagged disk">disk</a>
+ <a href="http://www.davidpashley.com/blog/tags/DocBook" class="smallestTag" alt="There are 1 entries tagged DocBook">DocBook</a>
+ <a href="http://www.davidpashley.com/blog/tags/dpkg" class="smallestTag" alt="There are 1 entries tagged dpkg">dpkg</a>
+ <a href="http://www.davidpashley.com/blog/tags/Eddie" class="smallestTag" alt="There are 1 entries tagged Eddie">Eddie</a>
+ <a href="http://www.davidpashley.com/blog/tags/email addresses" class="smallestTag" alt="There are 1 entries tagged email addresses">email addresses</a>
+ <a href="http://www.davidpashley.com/blog/tags/encodings" class="smallestTag" alt="There are 1 entries tagged encodings">encodings</a>
+ <a href="http://www.davidpashley.com/blog/tags/Fedora" class="smallestTag" alt="There are 1 entries tagged Fedora">Fedora</a>
+ <a href="http://www.davidpashley.com/blog/tags/feed parser" class="smallestTag" alt="There are 1 entries tagged feed parser">feed parser</a>
+ <a href="http://www.davidpashley.com/blog/tags/firefox" class="smallestTag" alt="There are 1 entries tagged firefox">firefox</a>
+ <a href="http://www.davidpashley.com/blog/tags/gnome" class="smallestTag" alt="There are 1 entries tagged gnome">gnome</a>
+ <a href="http://www.davidpashley.com/blog/tags/gnome-terminal" class="smallestTag" alt="There are 1 entries tagged gnome-terminal">gnome-terminal</a>
+ <a href="http://www.davidpashley.com/blog/tags/google" class="smallTag" alt="There are 2 entries tagged google">google</a>
+ <a href="http://www.davidpashley.com/blog/tags/google maps" class="smallestTag" alt="There are 1 entries tagged google maps">google maps</a>
+ <a href="http://www.davidpashley.com/blog/tags/gotchas" class="mostHugeTag" alt="There are 20 entries tagged gotchas">gotchas</a>
+ <a href="http://www.davidpashley.com/blog/tags/guadec" class="smallestTag" alt="There are 1 entries tagged guadec">guadec</a>
+ <a href="http://www.davidpashley.com/blog/tags/gzip" class="smallestTag" alt="There are 1 entries tagged gzip">gzip</a>
+ <a href="http://www.davidpashley.com/blog/tags/hardware failure" class="smallestTag" alt="There are 1 entries tagged hardware failure">hardware failure</a>
+ <a href="http://www.davidpashley.com/blog/tags/Hardy" class="smallestTag" alt="There are 1 entries tagged Hardy">Hardy</a>
+ <a href="http://www.davidpashley.com/blog/tags/HCI" class="smallestTag" alt="There are 1 entries tagged HCI">HCI</a>
+ <a href="http://www.davidpashley.com/blog/tags/Helsinki" class="smallTag" alt="There are 3 entries tagged Helsinki">Helsinki</a>
+ <a href="http://www.davidpashley.com/blog/tags/hotbabe" class="smallestTag" alt="There are 1 entries tagged hotbabe">hotbabe</a>
+ <a href="http://www.davidpashley.com/blog/tags/init" class="smallestTag" alt="There are 1 entries tagged init">init</a>
+ <a href="http://www.davidpashley.com/blog/tags/InnoDB" class="smallestTag" alt="There are 1 entries tagged InnoDB">InnoDB</a>
+ <a href="http://www.davidpashley.com/blog/tags/IO::File" class="smallestTag" alt="There are 1 entries tagged IO::File">IO::File</a>
+ <a href="http://www.davidpashley.com/blog/tags/irssi" class="mediumTag" alt="There are 5 entries tagged irssi">irssi</a>
+ <a href="http://www.davidpashley.com/blog/tags/Jonathan Corbet" class="smallestTag" alt="There are 1 entries tagged Jonathan Corbet">Jonathan Corbet</a>
+ <a href="http://www.davidpashley.com/blog/tags/juniper" class="smallestTag" alt="There are 1 entries tagged juniper">juniper</a>
+ <a href="http://www.davidpashley.com/blog/tags/junos" class="smallestTag" alt="There are 1 entries tagged junos">junos</a>
+ <a href="http://www.davidpashley.com/blog/tags/lazyweb" class="smallTag" alt="There are 2 entries tagged lazyweb">lazyweb</a>
+ <a href="http://www.davidpashley.com/blog/tags/ldap" class="smallTag" alt="There are 3 entries tagged ldap">ldap</a>
+ <a href="http://www.davidpashley.com/blog/tags/LDAP" class="smallestTag" alt="There are 1 entries tagged LDAP">LDAP</a>
+ <a href="http://www.davidpashley.com/blog/tags/linux" class="smallTag" alt="There are 3 entries tagged linux">linux</a>
+ <a href="http://www.davidpashley.com/blog/tags/Linux 2.6" class="smallestTag" alt="There are 1 entries tagged Linux 2.6">Linux 2.6</a>
+ <a href="http://www.davidpashley.com/blog/tags/livejournal" class="smallTag" alt="There are 3 entries tagged livejournal">livejournal</a>
+ <a href="http://www.davidpashley.com/blog/tags/lwn.net" class="smallestTag" alt="There are 1 entries tagged lwn.net">lwn.net</a>
+ <a href="http://www.davidpashley.com/blog/tags/mail" class="smallestTag" alt="There are 1 entries tagged mail">mail</a>
+ <a href="http://www.davidpashley.com/blog/tags/mdadm" class="smallestTag" alt="There are 1 entries tagged mdadm">mdadm</a>
+ <a href="http://www.davidpashley.com/blog/tags/MIME" class="smallestTag" alt="There are 1 entries tagged MIME">MIME</a>
+ <a href="http://www.davidpashley.com/blog/tags/mjray" class="smallestTag" alt="There are 1 entries tagged mjray">mjray</a>
+ <a href="http://www.davidpashley.com/blog/tags/mozilla" class="smallestTag" alt="There are 1 entries tagged mozilla">mozilla</a>
+ <a href="http://www.davidpashley.com/blog/tags/mutt" class="smallestTag" alt="There are 1 entries tagged mutt">mutt</a>
+ <a href="http://www.davidpashley.com/blog/tags/MySQL" class="smallTag" alt="There are 4 entries tagged MySQL">MySQL</a>
+ <a href="http://www.davidpashley.com/blog/tags/mysql" class="smallTag" alt="There are 4 entries tagged mysql">mysql</a>
+ <a href="http://www.davidpashley.com/blog/tags/network troubleshooting" class="smallestTag" alt="There are 1 entries tagged network troubleshooting">network troubleshooting</a>
+ <a href="http://www.davidpashley.com/blog/tags/networking" class="smallestTag" alt="There are 1 entries tagged networking">networking</a>
+ <a href="http://www.davidpashley.com/blog/tags/OOP" class="smallTag" alt="There are 3 entries tagged OOP">OOP</a>
+ <a href="http://www.davidpashley.com/blog/tags/OpenSSL" class="smallTag" alt="There are 2 entries tagged OpenSSL">OpenSSL</a>
+ <a href="http://www.davidpashley.com/blog/tags/Oracle" class="smallTag" alt="There are 4 entries tagged Oracle">Oracle</a>
+ <a href="http://www.davidpashley.com/blog/tags/Oracle XE" class="smallestTag" alt="There are 1 entries tagged Oracle XE">Oracle XE</a>
+ <a href="http://www.davidpashley.com/blog/tags/patents" class="smallestTag" alt="There are 1 entries tagged patents">patents</a>
+ <a href="http://www.davidpashley.com/blog/tags/perl" class="mediumTag" alt="There are 5 entries tagged perl">perl</a>
+ <a href="http://www.davidpashley.com/blog/tags/perl DBI" class="smallestTag" alt="There are 1 entries tagged perl DBI">perl DBI</a>
+ <a href="http://www.davidpashley.com/blog/tags/politics" class="smallestTag" alt="There are 1 entries tagged politics">politics</a>
+ <a href="http://www.davidpashley.com/blog/tags/post-inst" class="smallestTag" alt="There are 1 entries tagged post-inst">post-inst</a>
+ <a href="http://www.davidpashley.com/blog/tags/postgresql" class="smallestTag" alt="There are 1 entries tagged postgresql">postgresql</a>
+ <a href="http://www.davidpashley.com/blog/tags/PostgreSQL" class="mediumTag" alt="There are 5 entries tagged PostgreSQL">PostgreSQL</a>
+ <a href="http://www.davidpashley.com/blog/tags/printconf" class="smallestTag" alt="There are 1 entries tagged printconf">printconf</a>
+ <a href="http://www.davidpashley.com/blog/tags/privoxy" class="smallestTag" alt="There are 1 entries tagged privoxy">privoxy</a>
+ <a href="http://www.davidpashley.com/blog/tags/programming" class="smallestTag" alt="There are 1 entries tagged programming">programming</a>
+ <a href="http://www.davidpashley.com/blog/tags/prompt" class="smallestTag" alt="There are 1 entries tagged prompt">prompt</a>
+ <a href="http://www.davidpashley.com/blog/tags/prompts" class="smallestTag" alt="There are 1 entries tagged prompts">prompts</a>
+ <a href="http://www.davidpashley.com/blog/tags/puppet" class="smallestTag" alt="There are 1 entries tagged puppet">puppet</a>
+ <a href="http://www.davidpashley.com/blog/tags/pyblosxom" class="smallestTag" alt="There are 1 entries tagged pyblosxom">pyblosxom</a>
+ <a href="http://www.davidpashley.com/blog/tags/python" class="smallestTag" alt="There are 1 entries tagged python">python</a>
+ <a href="http://www.davidpashley.com/blog/tags/quota" class="smallestTag" alt="There are 1 entries tagged quota">quota</a>
+ <a href="http://www.davidpashley.com/blog/tags/RAID" class="smallestTag" alt="There are 1 entries tagged RAID">RAID</a>
+ <a href="http://www.davidpashley.com/blog/tags/rfc2821" class="smallestTag" alt="There are 1 entries tagged rfc2821">rfc2821</a>
+ <a href="http://www.davidpashley.com/blog/tags/rfc2822" class="smallestTag" alt="There are 1 entries tagged rfc2822">rfc2822</a>
+ <a href="http://www.davidpashley.com/blog/tags/Rome" class="smallestTag" alt="There are 1 entries tagged Rome">Rome</a>
+ <a href="http://www.davidpashley.com/blog/tags/root ca" class="smallestTag" alt="There are 1 entries tagged root ca">root ca</a>
+ <a href="http://www.davidpashley.com/blog/tags/routing" class="smallestTag" alt="There are 1 entries tagged routing">routing</a>
+ <a href="http://www.davidpashley.com/blog/tags/RPM" class="smallTag" alt="There are 2 entries tagged RPM">RPM</a>
+ <a href="http://www.davidpashley.com/blog/tags/RSS" class="smallTag" alt="There are 2 entries tagged RSS">RSS</a>
+ <a href="http://www.davidpashley.com/blog/tags/samba" class="smallestTag" alt="There are 1 entries tagged samba">samba</a>
+ <a href="http://www.davidpashley.com/blog/tags/sambaSID" class="smallestTag" alt="There are 1 entries tagged sambaSID">sambaSID</a>
+ <a href="http://www.davidpashley.com/blog/tags/sane" class="smallestTag" alt="There are 1 entries tagged sane">sane</a>
+ <a href="http://www.davidpashley.com/blog/tags/SAX" class="smallestTag" alt="There are 1 entries tagged SAX">SAX</a>
+ <a href="http://www.davidpashley.com/blog/tags/SCIM" class="smallestTag" alt="There are 1 entries tagged SCIM">SCIM</a>
+ <a href="http://www.davidpashley.com/blog/tags/Scott James Remnant" class="smallestTag" alt="There are 1 entries tagged Scott James Remnant">Scott James Remnant</a>
+ <a href="http://www.davidpashley.com/blog/tags/scp" class="smallestTag" alt="There are 1 entries tagged scp">scp</a>
+ <a href="http://www.davidpashley.com/blog/tags/security" class="smallTag" alt="There are 3 entries tagged security">security</a>
+ <a href="http://www.davidpashley.com/blog/tags/serverfault" class="smallTag" alt="There are 2 entries tagged serverfault">serverfault</a>
+ <a href="http://www.davidpashley.com/blog/tags/shell" class="mediumTag" alt="There are 5 entries tagged shell">shell</a>
+ <a href="http://www.davidpashley.com/blog/tags/Shibboleth" class="smallestTag" alt="There are 1 entries tagged Shibboleth">Shibboleth</a>
+ <a href="http://www.davidpashley.com/blog/tags/sip" class="smallestTag" alt="There are 1 entries tagged sip">sip</a>
+ <a href="http://www.davidpashley.com/blog/tags/slapindex" class="smallestTag" alt="There are 1 entries tagged slapindex">slapindex</a>
+ <a href="http://www.davidpashley.com/blog/tags/software patents" class="smallestTag" alt="There are 1 entries tagged software patents">software patents</a>
+ <a href="http://www.davidpashley.com/blog/tags/Solaris" class="smallestTag" alt="There are 1 entries tagged Solaris">Solaris</a>
+ <a href="http://www.davidpashley.com/blog/tags/spam" class="smallTag" alt="There are 2 entries tagged spam">spam</a>
+ <a href="http://www.davidpashley.com/blog/tags/spamassassin" class="smallestTag" alt="There are 1 entries tagged spamassassin">spamassassin</a>
+ <a href="http://www.davidpashley.com/blog/tags/SQL" class="smallestTag" alt="There are 1 entries tagged SQL">SQL</a>
+ <a href="http://www.davidpashley.com/blog/tags/SQL::Translator" class="smallestTag" alt="There are 1 entries tagged SQL::Translator">SQL::Translator</a>
+ <a href="http://www.davidpashley.com/blog/tags/ssh" class="smallestTag" alt="There are 1 entries tagged ssh">ssh</a>
+ <a href="http://www.davidpashley.com/blog/tags/sshd" class="smallestTag" alt="There are 1 entries tagged sshd">sshd</a>
+ <a href="http://www.davidpashley.com/blog/tags/SSL" class="smallestTag" alt="There are 1 entries tagged SSL">SSL</a>
+ <a href="http://www.davidpashley.com/blog/tags/style" class="smallestTag" alt="There are 1 entries tagged style">style</a>
+ <a href="http://www.davidpashley.com/blog/tags/subversion" class="smallTag" alt="There are 2 entries tagged subversion">subversion</a>
+ <a href="http://www.davidpashley.com/blog/tags/tabs" class="smallestTag" alt="There are 1 entries tagged tabs">tabs</a>
+ <a href="http://www.davidpashley.com/blog/tags/tar" class="smallestTag" alt="There are 1 entries tagged tar">tar</a>
+ <a href="http://www.davidpashley.com/blog/tags/terminal" class="smallestTag" alt="There are 1 entries tagged terminal">terminal</a>
+ <a href="http://www.davidpashley.com/blog/tags/timezone" class="smallestTag" alt="There are 1 entries tagged timezone">timezone</a>
+ <a href="http://www.davidpashley.com/blog/tags/tips" class="smallestTag" alt="There are 1 entries tagged tips">tips</a>
+ <a href="http://www.davidpashley.com/blog/tags/toilet breaks" class="smallestTag" alt="There are 1 entries tagged toilet breaks">toilet breaks</a>
+ <a href="http://www.davidpashley.com/blog/tags/tomcat" class="smallTag" alt="There are 3 entries tagged tomcat">tomcat</a>
+ <a href="http://www.davidpashley.com/blog/tags/travel" class="smallTag" alt="There are 4 entries tagged travel">travel</a>
+ <a href="http://www.davidpashley.com/blog/tags/turing test" class="smallestTag" alt="There are 1 entries tagged turing test">turing test</a>
+ <a href="http://www.davidpashley.com/blog/tags/tuxpaint" class="smallestTag" alt="There are 1 entries tagged tuxpaint">tuxpaint</a>
+ <a href="http://www.davidpashley.com/blog/tags/Ubuntu" class="smallTag" alt="There are 2 entries tagged Ubuntu">Ubuntu</a>
+ <a href="http://www.davidpashley.com/blog/tags/udev" class="smallestTag" alt="There are 1 entries tagged udev">udev</a>
+ <a href="http://www.davidpashley.com/blog/tags/UI" class="smallestTag" alt="There are 1 entries tagged UI">UI</a>
+ <a href="http://www.davidpashley.com/blog/tags/UK" class="smallestTag" alt="There are 1 entries tagged UK">UK</a>
+ <a href="http://www.davidpashley.com/blog/tags/untagged" class="mediumTag" alt="There are 96 entries tagged untagged">untagged</a>
+ <a href="http://www.davidpashley.com/blog/tags/upgrades" class="smallestTag" alt="There are 1 entries tagged upgrades">upgrades</a>
+ <a href="http://www.davidpashley.com/blog/tags/user administration" class="smallestTag" alt="There are 1 entries tagged user administration">user administration</a>
+ <a href="http://www.davidpashley.com/blog/tags/user adminitration" class="smallestTag" alt="There are 1 entries tagged user adminitration">user adminitration</a>
+ <a href="http://www.davidpashley.com/blog/tags/user-friendly" class="smallestTag" alt="There are 1 entries tagged user-friendly">user-friendly</a>
+ <a href="http://www.davidpashley.com/blog/tags/validation" class="smallestTag" alt="There are 1 entries tagged validation">validation</a>
+ <a href="http://www.davidpashley.com/blog/tags/vim" class="smallestTag" alt="There are 1 entries tagged vim">vim</a>
+ <a href="http://www.davidpashley.com/blog/tags/warnquota" class="smallestTag" alt="There are 1 entries tagged warnquota">warnquota</a>
+ <a href="http://www.davidpashley.com/blog/tags/water" class="smallestTag" alt="There are 1 entries tagged water">water</a>
+ <a href="http://www.davidpashley.com/blog/tags/weblogs" class="smallestTag" alt="There are 1 entries tagged weblogs">weblogs</a>
+ <a href="http://www.davidpashley.com/blog/tags/Windows XP" class="smallestTag" alt="There are 1 entries tagged Windows XP">Windows XP</a>
+ <a href="http://www.davidpashley.com/blog/tags/Workrave" class="smallestTag" alt="There are 1 entries tagged Workrave">Workrave</a>
+ <a href="http://www.davidpashley.com/blog/tags/wtf" class="bigTag" alt="There are 8 entries tagged wtf">wtf</a>
+ <a href="http://www.davidpashley.com/blog/tags/XSLT" class="smallTag" alt="There are 2 entries tagged XSLT">XSLT</a>
+ <a href="http://www.davidpashley.com/blog/tags/xss" class="smallestTag" alt="There are 1 entries tagged xss">xss</a>
+ <a href="http://www.davidpashley.com/blog/tags/xterm title" class="smallestTag" alt="There are 1 entries tagged xterm title">xterm title</a>
+ <a href="http://www.davidpashley.com/blog/tags/yum" class="smallestTag" alt="There are 1 entries tagged yum">yum</a>
+ </div>
+ <br />
+ </p>
+ </div>
+ <div class="archives">
+ <h1>Categories</h1>
+ <p><a href="http://www.davidpashley.com/blog/">/</a> (188)<br />  <a href="http://www.davidpashley.com/blog/computing">computing/</a> (49)<br />    <a href="http://www.davidpashley.com/blog/computing/vim">vim/</a> (1)<br />  <a href="http://www.davidpashley.com/blog/databases">databases/</a> (1)<br />    <a href="http://www.davidpashley.com/blog/databases/mysql">mysql/</a> (7)<br />    <a href="http://www.davidpashley.com/blog/databases/oracle">oracle/</a> (1)<br />    <a href="http://www.davidpashley.com/blog/databases/postgresql">postgresql/</a> (4)<br />  <a href="http://www.davidpashley.com/blog/debian">debian/</a> (24)<br />  <a href="http://www.davidpashley.com/blog/films">films/</a> (6)<br />  <a href="http://www.davidpashley.com/blog/general">general/</a> (20)<br />  <a href="http://www.davidpashley.com/blog/life">life/</a> (20)<br />  <a href="http://www.davidpashley.com/blog/linux">linux/</a> (6)<br />  <a href="http://www.davidpashley.com/blog/meta">meta/</a> (6)<br />  <a href="http://www.davidpashley.com/blog/music">music/</a> (12)<br />  <a href="http://www.davidpashley.com/blog/networks">networks/</a> (0)<br />    <a href="http://www.davidpashley.com/blog/networks/juniper">juniper/</a> (1)<br />  <a href="http://www.davidpashley.com/blog/politics">politics/</a> (6)<br />  <a href="http://www.davidpashley.com/blog/programming">programming/</a> (0)<br />    <a href="http://www.davidpashley.com/blog/programming/java">java/</a> (11)<br />    <a href="http://www.davidpashley.com/blog/programming/perl">perl/</a> (8)<br />    <a href="http://www.davidpashley.com/blog/programming/shell">shell/</a> (1)<br />  <a href="http://www.davidpashley.com/blog/spamusements">spamusements/</a> (1)<br />  <a href="http://www.davidpashley.com/blog/systems-administration">systems-administration/</a> (0)<br />    <a href="http://www.davidpashley.com/blog/systems-administration/puppet">puppet/</a> (2)<br />    <a href="http://www.davidpashley.com/blog/systems-administration/tomcat">tomcat/</a> (1)<br />
+ </p>
+ </div>
+ <div class="donation">
+ <form action="https://www.paypal.com/cgi-bin/webscr" method="post">
+ <input type="hidden" name="cmd" value="_s-xclick" />
+ <input type="image" src="https://www.paypal.com/en_US/i/btn/x-click-but04.gif" border="0" name="submit" alt="Make payments with PayPal - it's fast, free and secure!" />
+ <input type="hidden" name="encrypted" value="-----BEGIN PKCS7-----MIIHFgYJKoZIhvcNAQcEoIIHBzCCBwMCAQExggEwMIIBLAIBADCBlDCBjjELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAkNBMRYwFAYDVQQHEw1Nb3VudGFpbiBWaWV3MRQwEgYDVQQKEwtQYXlQYWwgSW5jLjETMBEGA1UECxQKbGl2ZV9jZXJ0czERMA8GA1UEAxQIbGl2ZV9hcGkxHDAaBgkqhkiG9w0BCQEWDXJlQHBheXBhbC5jb20CAQAwDQYJKoZIhvcNAQEBBQAEgYBD1LP+xrMTTJNaC943UTKqkYfhTtX0XggghWl7tg/boQneAFA9vIFrcJhUspkcWE0SogGNYGFItT0Rtufx7JkrlSqmCj6tUFYlF4dB5vRtCmAAOvKtRw+u8uU2KLrINW5Za6Rsr/+mlZciDsueK2Unw4p9tmpaK5pF7zjbiMd5mTELMAkGBSsOAwIaBQAwgZMGCSqGSIb3DQEHATAUBggqhkiG9w0DBwQIzYN5SEiBrAKAcMVdle4DhtCNVJAjUtNm5SfdWCHbbK+bFc72nG26lSM5h7TH3Qw2bSt05urvY4qwDCDSlSG+sVvlyC0e38hsCkNwIHMXLcgn9PmgFPb1vOBffVEkILkxg/819qcUjvczdAHmujcMvaXayjQODBF8RDegggOHMIIDgzCCAuygAwIBAgIBADANBgkqhkiG9w0BAQUFADCBjjELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAkNBMRYwFAYDVQQHEw1Nb3VudGFpbiBWaWV3MRQwEgYDVQQKEwtQYXlQYWwgSW5jLjETMBEGA1UECxQKbGl2ZV9jZXJ0czERMA8GA1UEAxQIbGl2ZV9hcGkxHDAaBgkqhkiG9w0BCQEWDXJlQHBheXBhbC5jb20wHhcNMDQwMjEzMTAxMzE1WhcNMzUwMjEzMTAxMzE1WjCBjjELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAkNBMRYwFAYDVQQHEw1Nb3VudGFpbiBWaWV3MRQwEgYDVQQKEwtQYXlQYWwgSW5jLjETMBEGA1UECxQKbGl2ZV9jZXJ0czERMA8GA1UEAxQIbGl2ZV9hcGkxHDAaBgkqhkiG9w0BCQEWDXJlQHBheXBhbC5jb20wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAMFHTt38RMxLXJyO2SmS+Ndl72T7oKJ4u4uw+6awntALWh03PewmIJuzbALScsTS4sZoS1fKciBGoh11gIfHzylvkdNe/hJl66/RGqrj5rFb08sAABNTzDTiqqNpJeBsYs/c2aiGozptX2RlnBktH+SUNpAajW724Nv2Wvhif6sFAgMBAAGjge4wgeswHQYDVR0OBBYEFJaffLvGbxe9WT9S1wob7BDWZJRrMIG7BgNVHSMEgbMwgbCAFJaffLvGbxe9WT9S1wob7BDWZJRroYGUpIGRMIGOMQswCQYDVQQGEwJVUzELMAkGA1UECBMCQ0ExFjAUBgNVBAcTDU1vdW50YWluIFZpZXcxFDASBgNVBAoTC1BheVBhbCBJbmMuMRMwEQYDVQQLFApsaXZlX2NlcnRzMREwDwYDVQQDFAhsaXZlX2FwaTEcMBoGCSqGSIb3DQEJARYNcmVAcGF5cGFsLmNvbYIBADAMBgNVHRMEBTADAQH/MA0GCSqGSIb3DQEBBQUAA4GBAIFfOlaagFrl71+jq6OKidbWFSE+Q4FqROvdgIONth+8kSK//Y/4ihuE4Ymvzn5ceE3S/iBSQQMjyvb+s2TWbQYDwcp129OPIbD9epdr4tJOUNiSojw7BHwYRiPh58S1xGlFgHFXwrEBb3dgNbMUa+u4qectsMAXpVHnD9wIyfmHMYIBmjCCAZYCAQEwgZQwgY4xCzAJBgNVBAYTAlVTMQswCQYDVQQIEwJDQTEWMBQGA1UEBxMNTW91bnRhaW4gVmlldzEUMBIGA1UEChMLUGF5UGFsIEluYy4xEzARBgNVBAsUCmxpdmVfY2VydHMxETAPBgNVBAMUCGxpdmVfYXBpMRwwGgYJKoZIhvcNAQkBFg1yZUBwYXlwYWwuY29tAgEAMAkGBSsOAwIaBQCgXTAYBgkqhkiG9w0BCQMxCwYJKoZIhvcNAQcBMBwGCSqGSIb3DQEJBTEPFw0wNjAzMDQwOTMwMzBaMCMGCSqGSIb3DQEJBDEWBBRw63X5l5Xjq3OImPAD3b2LjgmntTANBgkqhkiG9w0BAQEFAASBgCUcGd5XcaxY6p3qUl5uDnkWvvG8hr1bDogJ16obgcYkjk3BJ5vvVS6XbiiWtNxd2teEhoIhQVIto+JhkW1GN6p+l6hHOixPeghFzG+bLHtey7XTpmv1spkJxgH9Z7z/YApW+MVeL+ge8qsk4kbPvXQEM/qFYGrRQwl/YaCoMHZR-----END PKCS7----- " />
+ </form>
+ </div>
+ </div>
+ <div xmlns="" id="body">
+ <div id="content">
+ <h1>Sat, 12 Jul 2008</h1>
+ <div class="entry"><h2>Rebuilding a RAID array</h2><div><p>I recently had a failed drive in my RAID1 array. I've just installed
+the replacement drive and thought I'd share the method.</p><p>Let's look at the current situation:</p><pre>
+root@ace:~# <b>cat /proc/mdstat</b>
+Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
+md1 : active raid1 sda3[1]
+ 483403776 blocks [2/1] [_U]
+
+md0 : active raid1 sda1[1]
+ 96256 blocks [2/1] [_U]
+
+unused devices: &lt;none&gt;
+</pre><p>So we can see we have two mirrored arrays with one drive missing in both.</p><p>Let's see that we've recognised the second drive:</p><pre>
+root@ace:~# <b>dmesg | grep sd</b>
+[ 21.465395] Driver 'sd' needs updating - please use bus_type methods
+[ 21.465486] sd 2:0:0:0: [sda] 976773168 512-byte hardware sectors (500108 MB)
+[ 21.465496] sd 2:0:0:0: [sda] Write Protect is off
+[ 21.465498] sd 2:0:0:0: [sda] Mode Sense: 00 3a 00 00
+[ 21.465512] sd 2:0:0:0: [sda] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
+[ 21.465562] sd 2:0:0:0: [sda] 976773168 512-byte hardware sectors (500108 MB)
+[ 21.465571] sd 2:0:0:0: [sda] Write Protect is off
+[ 21.465573] sd 2:0:0:0: [sda] Mode Sense: 00 3a 00 00
+[ 21.465587] sd 2:0:0:0: [sda] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
+[ 21.465590] sda: sda1 sda2 sda3
+[ 21.487248] sd 2:0:0:0: [sda] Attached SCSI disk
+[ 21.487303] sd 2:0:1:0: [sdb] 976773168 512-byte hardware sectors (500108 MB)
+[ 21.487314] sd 2:0:1:0: [sdb] Write Protect is off
+[ 21.487317] sd 2:0:1:0: [sdb] Mode Sense: 00 3a 00 00
+[ 21.487331] sd 2:0:1:0: [sdb] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
+[ 21.487371] sd 2:0:1:0: [sdb] 976773168 512-byte hardware sectors (500108 MB)
+[ 21.487381] sd 2:0:1:0: [sdb] Write Protect is off
+[ 21.487382] sd 2:0:1:0: [sdb] Mode Sense: 00 3a 00 00
+[ 21.487403] sd 2:0:1:0: [sdb] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
+[ 21.487407] sdb: unknown partition table
+[ 21.502763] sd 2:0:1:0: [sdb] Attached SCSI disk
+[ 21.506690] sd 2:0:0:0: Attached scsi generic sg0 type 0
+[ 21.506711] sd 2:0:1:0: Attached scsi generic sg1 type 0
+[ 21.793835] md: bind&lt;sda1&gt;
+[ 21.858027] md: bind&lt;sda3&gt;
+</pre><p>So, sda has three partitions, sda1, sda2 and sda3, and sdb has no partition
+table. Let's give it one the same as sda. The easiest way to do this is using
+<tt>sfdisk</tt>:</p><pre>
+root@ace:~# <b>sfdisk -d /dev/sda | sfdisk /dev/sdb</b>
+Checking that no-one is using this disk right now ...
+OK
+
+Disk /dev/sdb: 60801 cylinders, 255 heads, 63 sectors/track
+
+sfdisk: ERROR: sector 0 does not have an MSDOS signature
+ /dev/sdb: unrecognised partition table type
+Old situation:
+No partitions found
+New situation:
+Units = sectors of 512 bytes, counting from 0
+
+ Device Boot Start End #sectors Id System
+/dev/sdb1 * 63 192779 192717 fd Linux RAID autodetect
+/dev/sdb2 192780 9960299 9767520 82 Linux swap / Solaris
+/dev/sdb3 9960300 976768064 966807765 fd Linux RAID autodetect
+/dev/sdb4 0 - 0 0 Empty
+Successfully wrote the new partition table
+
+Re-reading the partition table ...
+
+If you created or changed a DOS partition, /dev/foo7, say, then use dd(1)
+to zero the first 512 bytes: dd if=/dev/zero of=/dev/foo7 bs=512 count=1
+(See fdisk(8).)
+</pre><p>If we check <tt>dmesg</tt> now to check it's worked, we'll see:</p><pre>
+root@ace:~# <b>dmesg | grep sd</b>
+...
+[ 224.246102] sd 2:0:1:0: [sdb] 976773168 512-byte hardware sectors (500108 MB)
+[ 224.246322] sd 2:0:1:0: [sdb] Write Protect is off
+[ 224.246325] sd 2:0:1:0: [sdb] Mode Sense: 00 3a 00 00
+[ 224.246547] sd 2:0:1:0: [sdb] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
+[ 224.246686] sdb: unknown partition table
+[ 227.326278] sd 2:0:1:0: [sdb] 976773168 512-byte hardware sectors (500108 MB)
+[ 227.326504] sd 2:0:1:0: [sdb] Write Protect is off
+[ 227.326507] sd 2:0:1:0: [sdb] Mode Sense: 00 3a 00 00
+[ 227.326703] sd 2:0:1:0: [sdb] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
+[ 227.326708] sdb: sdb1 sdb2 sdb3
+</pre><p>So, now we have identical partition tables. The next thing to do is to add the new partitions to the array:</p><pre>
+root@ace:~# <b>mdadm /dev/md0 --add /dev/sdb1</b>
+mdadm: added /dev/sdb1
+root@ace:~# <b>mdadm /dev/md1 --add /dev/sdb3</b>
+mdadm: added /dev/sdb3
+</pre><p>Everything looks good. Let's check <tt>dmesg</tt>:</p><pre>
+[ 323.941542] md: bind&lt;sdb1&gt;
+[ 324.038183] RAID1 conf printout:
+[ 324.038189] --- wd:1 rd:2
+[ 324.038192] disk 0, wo:1, o:1, dev:sdb1
+[ 324.038195] disk 1, wo:0, o:1, dev:sda1
+[ 324.038300] md: recovery of RAID array md0
+[ 324.038303] md: minimum _guaranteed_ speed: 1000 KB/sec/disk.
+[ 324.038305] md: using maximum available idle IO bandwidth (but not more than 200000 KB/sec) for recovery.
+[ 324.038310] md: using 128k window, over a total of 96256 blocks.
+[ 325.417219] md: md0: recovery done.
+[ 325.453629] RAID1 conf printout:
+[ 325.453632] --- wd:2 rd:2
+[ 325.453634] disk 0, wo:0, o:1, dev:sdb1
+[ 325.453636] disk 1, wo:0, o:1, dev:sda1
+[ 347.970105] md: bind&lt;sdb3&gt;
+[ 348.004566] RAID1 conf printout:
+[ 348.004571] --- wd:1 rd:2
+[ 348.004573] disk 0, wo:1, o:1, dev:sdb3
+[ 348.004574] disk 1, wo:0, o:1, dev:sda3
+[ 348.004657] md: recovery of RAID array md1
+[ 348.004659] md: minimum _guaranteed_ speed: 1000 KB/sec/disk.
+[ 348.004660] md: using maximum available idle IO bandwidth (but not more than 200000 KB/sec) for recovery.
+[ 348.004664] md: using 128k window, over a total of 483403776 blocks.
+</pre><p>Everything still looks good. Let's sit back and watch it rebuild using the wonderfully useful <tt>watch</tt> command:</p><pre>
+root@ace:~# <b>watch -n 1 cat /proc/mdstat</b>
+Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
+md1 : active raid1 sdb3[2] sda3[1]
+ 483403776 blocks [2/1] [_U]
+ [=====&gt;...............] recovery = 26.0% (126080960/483403776) finish=96.2min speed=61846K/sec
+
+md0 : active raid1 sdb1[0] sda1[1]
+ 96256 blocks [2/2] [UU]
+
+unused devices: &lt;none&gt;
+</pre><p>The Ubuntu and Debian installers will allow you create RAID1 arrays
+with less drives than you actually have, so you can use this technique
+if you plan to add an additional drive after you've installed the
+system. Just tell it the eventual number of drives, but only select the
+available partitions during RAID setup. I used this method when a new machine recent
+didn't have enough SATA power cables and had to wait for an adaptor to
+be delivered.</p><p><small>(Why did no one tell me about <tt>watch</tt> until recently. I wonder
+how many more incredibly useful programs I've not discovered even after 10
+years of using Linux</small>)</p></div>
+ [<a href="http://www.davidpashley.com/blog/tags/linux" rel="tag">linux</a>, <a href="http://www.davidpashley.com/blog/tags/mdadm" rel="tag">mdadm</a>, <a href="http://www.davidpashley.com/blog/tags/RAID" rel="tag">RAID</a>] | <a href="http://www.davidpashley.com/blog/linux/rebuilding-raid" title="Permalink"># Read Comments (3)</a> |
+ <div class="archives"><div id="relatedstories"><h2>Related Stories</h2><p><a href="http://www.davidpashley.com/blog/linux/copying-files-with-netcat">Copying files with netcat</a><br /><a href="http://www.davidpashley.com/blog/computing/network-troubleshooting">Network Troubleshooting Article</a><br /></p></div></div>
+ <div class="archives">
+
+ </div>
+
+</div>
+ <h2>Comments</h2>
+ <div class="blosxomComments">
+ <div class="blosxomComment"><!-- Rebuilding a RAID array --><a name="1215931866.99" id="1215931866.99"></a>
+ One extra step that I do is install an MBR on the new disk, to make it bootable:<br />
+<br />
+install-mbr /dev/sdb<br />
+ Posted by <a href="http://gedmin.as">Marius Gedminas</a> at Sun Jul 13 07:51:06 2008
+ </div>
+ <div class="blosxomComment"><!-- Rebuilding a RAID array --><a name="1215971647.83" id="1215971647.83"></a>
+ Great article!<br />
+Maybe it would be even more useful if merged here:<br />
+<a href="http://linux-raid.osdl.org/index.php/Reconstruction">http://linux-raid.osdl.org/index.php/Reconstruction</a><br />
+ Posted by <a href="http://edpeur.blogspot.com/">Eduardo Pérez Ureta</a> at Sun Jul 13 18:54:07 2008
+ </div>
+ <div class="blosxomComment"><!-- Rebuilding a RAID array --><a name="1216035050.47" id="1216035050.47"></a>
+ Semi-Tangential note about performance:  On my home (== partly "play") machine, I made the experience that "mdadm --manage .. --fail"-ing the root partition before doing lots of package upgrades (installing KDE 4/experimental and lots of other updates in my case, on a mostly etch system.  Dual screen support sucks if the screens don't have the same size, btw!) speeds up apt considerably, while the subsequent reconstruct step (--remove and then --add the partition) doesn't slow down the system much during light desktop workload.<br />
+<br />
+My system is a few years old (no SATA, probably not too much cache on the disks, too) and has only 512M RAM, so maybe a better equipped system would make this less noticeable.<br />
+<br />
+(... and no, I probably wouldn't force-fail part of my /home partition for any length of time :-)<br />
+ Posted by <a href="http://fortytwo.ch/">cmot</a> at Mon Jul 14 12:30:50 2008
+ </div>
+ <br />
+ <div class="blosxomCommentForm">
+ <form method="post" action="http://www.davidpashley.com/blog/linux/rebuilding-raid" id="comments_form">
+ <p><input type="hidden" name="secretToken" value="pleaseDontSpam" /><input name="parent" type="hidden" value="linux/rebuilding-raid" /><input name="title" type="hidden" value="Rebuilding a RAID array" />
+ Name:<br />
+ <input maxlength="50" name="author" size="50" type="text" value="" /><br />
+ <br />
+ E-mail:<br />
+ <input maxlength="75" name="email" size="50" type="text" value="" /><br />
+ <br />
+ URL:<br />
+
+ <input maxlength="100" name="url" size="50" type="text" value="" /><br />
+ <br />
+ Comment:<br />
+ <textarea cols="50" name="body" rows="12"></textarea><br />
+ <br />
+ Please enter "fudge" to prove you are a human
+ <input size="50" type="text" name="human" />
+ <br />
+ <input name="Submit" type="submit" value="Submit" />
+ <!-- <input name="preview" type="submit" value="Preview" />
+ <input type="button" onclick="forgetMe(this.form)" value="Clear Info" />
+ <input type="checkbox" name="bakecookie" />Remember info?</input> -->
+ </p>
+ </form>
+ </div>
+ </div>
+ </div>
+ </div>
+ <div xmlns="" id="footer">Copyright 2004,2005,2006,2007,2008 David Pashley<br />
+ All Rights Reserved
+ </div>
+ </div>
+ </div>
+ </body>
+</html><!--
+ -* Generated by mod-xslt 1.3.9; http://www.mod-xslt2.com/
+ -* Copyright (C) 2002,2003 Carlo Contavalli - <ccontavalli at masobit.net>
+ -* derived from work by Philipp Dunkel and others (http://www.mod-xslt2.com/main/credits.xml)
+ -* Thanks to http://www.masobit.net/ for paying me while working on mod-xslt
+ -* and for providing resources to the project. -->
diff --git a/debian/initramfs/hook b/debian/initramfs/hook
new file mode 100644
index 00000000..e44522b3
--- /dev/null
+++ b/debian/initramfs/hook
@@ -0,0 +1,275 @@
+#!/bin/sh
+#
+# Copyright © 2006-2008 Martin F. Krafft <madduck@debian.org>,
+# 2012 Michael Tokarev <mjt@tls.msk.ru>
+# based on the scripts in the initramfs-tools package.
+# released under the terms of the Artistic Licence.
+#
+set -eu
+
+PREREQ=
+prereqs()
+{
+ echo "$PREREQ"
+}
+
+case "${1:-}" in
+ prereqs)
+ prereqs
+ exit 0
+ ;;
+esac
+
+is_true()
+{
+ case "${1:-}" in
+ [Yy]es|[Yy]|1|[Tt]rue|[Tt]) return 0;;
+ *) return 1;;
+ esac
+}
+
+write()
+{
+ local PREFIX; PREFIX=$1; shift
+ echo "${PREFIX}: mdadm: $@" >&2
+}
+
+info()
+{
+ is_true ${VERBOSE:-false} && write I "$@" || :
+}
+
+warn()
+{
+ write W "$@"
+}
+
+err()
+{
+ write E "$@"
+}
+
+MDADM=/sbin/mdadm
+MDMON=/sbin/mdmon
+[ -x "$MDADM" ] || exit 0
+
+[ -r /usr/share/initramfs-tools/hook-functions ] || exit 0
+. /usr/share/initramfs-tools/hook-functions
+
+# copy the binary as early as possible
+copy_exec $MDADM /sbin
+copy_exec $MDMON /sbin
+
+# copy all modules into the initramfs, just for safety.
+# we copy raid456 / raid5+raid6 because the hook script just won't do
+# anything when the module cannot be found.
+modules="linear multipath raid0 raid1 raid456 raid5 raid6 raid10"
+for mod in $modules; do manual_add_modules $mod; done
+
+# read in the configuration
+CONFIG=/etc/mdadm/mdadm.conf
+ALTCONFIG=/etc/mdadm.conf
+[ ! -f $CONFIG ] && [ -f $ALTCONFIG ] && CONFIG=$ALTCONFIG || :
+
+DEBIANCONFIG=/etc/default/mdadm
+INITRDSTART=all
+[ -s $DEBIANCONFIG ] && . $DEBIANCONFIG
+[ -z "$INITRDSTART" ] && INITRDSTART=none
+
+DESTMDADMCONF=$DESTDIR/etc/mdadm/mdadm.conf
+DESTCONFIG=$DESTDIR/conf/mdadm
+
+if [ -f $CONFIG ]; then
+ homehost="$(sed -ne 's,^[[:space:]]*HOMEHOST[[:space:]]*,,p' $CONFIG)"
+fi
+if [ -z "${homehost:-}" ] || [ "${homehost:-}" = '<system>' ]; then
+ echo "MD_HOMEHOST='$(hostname)'" > $DESTCONFIG
+fi
+
+install_config()
+{
+ # install the configuration file
+ mkdir -p ${2%/*}
+ # only copy ARRAY/DEVICE/HOMEHOST lines, and merge continuation lines into one
+ if [ -f "$1" ] ; then
+ sed -e :a -re '$!N;s/\n[[:space:]]+/ /;ta' -ne '/^(ARRAY|DEVICE|HOMEHOST)/P;D' $1 > $2
+ fi
+}
+
+if [ ! -f $CONFIG ]; then
+ # there is no configuration file, so let's create one
+
+ if /usr/share/mdadm/mkconf generate $CONFIG; then
+ # all is well
+ install_config $CONFIG $DESTMDADMCONF
+ info "auto-generated the mdadm.conf configuration file."
+ else
+ # we failed to auto-generate, so let the emergency procedure take over
+ warn "failed to auto-generate the mdadm.conf file."
+ warn "please read /usr/share/doc/mdadm/README.upgrading-2.5.3.gz ."
+ fi
+
+else
+
+ use_temp=0
+ if [ -e /var/lib/mdadm/CONF-UNCHECKED ]; then
+ # the file comes from an old installation and hence is not guaranteed to
+ # work. We thus better create one and start all arrays to be sure.
+
+ warn "unchecked configuration file: $CONFIG"
+ warn "please read /usr/share/doc/mdadm/README.upgrading-2.5.3.gz ."
+
+ use_temp=1
+ elif ! grep -q '^ARRAY' $CONFIG; then
+ # the file defines no ARRAYs. We better create a temporary file to be
+ # sure.
+
+ warn "$CONFIG defines no arrays."
+ use_temp=1
+
+ else
+ # this is the ideal case
+ install_config $CONFIG $DESTMDADMCONF
+ info "using configuration file: $CONFIG"
+ fi
+
+ if [ $use_temp -eq 1 ]; then
+ mkdir --parents ${DESTMDADMCONF%/*}
+ tmpfile="${DESTMDADMCONF}.tmp"
+ if /usr/share/mdadm/mkconf > $tmpfile; then
+ # all is well, we now have a temporary configuration file
+ info "auto-generated temporary mdadm.conf configuration file."
+ install_config $tmpfile $DESTMDADMCONF
+ else
+ # stuff's really broke, as we failed to generate a temporary file.
+ # let's hope the unchecked file works, provided it contains at least one
+ # ARRAY statement...
+ warn "failed to auto-generate temporary mdadm.conf file."
+ if grep -q '^ARRAY' $CONFIG; then
+ warn "using the unchecked file and hoping for the best..."
+ install_config $CONFIG $DESTMDADMCONF
+ fi
+ fi
+ rm -f $tmpfile
+ fi
+
+fi
+
+# if at this point, $DESTMDADMCONF does not exist or it does not contain any
+# ARRAY statements, we must let the initramfs handle stuff.
+if [ ! -f $DESTMDADMCONF ]; then
+ warn "no configuration file available."
+ info "letting initramfs assemble auto-detected arrays."
+ exit 0
+elif ! grep -q '^ARRAY' $DESTMDADMCONF; then
+ warn "no arrays defined in configuration file."
+ info "letting initramfs assemble auto-detected arrays."
+ exit 0
+else
+ # obtain devices list from config file, honouring multiline entries
+ devices="$(
+ dev=
+ while read line; do
+ case "$line" in
+ (ARRAY*) :;;
+ (*) continue;;
+ esac
+ for atom in $line; do
+ case "$atom" in
+ (/dev*) dev=$atom;;
+ esac
+ done
+
+ # /dev/mdX and /dev/md/X are the same, really
+ case "$dev" in
+ "") continue ;;
+ (/dev/md/*) alt=/dev/md${dev##*/};;
+ (/dev/md*) alt=/dev/md/${dev#/dev/md};;
+ (*)
+ err "unknown device encountered: $dev"
+ warn_emergency
+ exit 0
+ ;;
+ esac
+ if [ ! -b "$dev" ] && [ -b "$alt" ]; then
+ dev="$alt"
+ fi
+
+ echo "$dev"
+ done < $DESTMDADMCONF)" || exit $?
+fi
+
+if [ "$INITRDSTART" != none ] && [ -n "$devices" ]; then
+
+ devs=
+ for dev in $devices; do
+ case "$INITRDSTART " in
+ all|*${dev}[[:space:]]*)
+ case "$devs " in # uniquiness
+ (*${dev}\ *) :;;
+ (*) devs="${devs:+$devs }$dev" ;;
+ esac
+ ;;
+ *) :;;
+ esac
+ done
+
+ # make sure the configuration file knows about all running devices
+ $MDADM --detail --scan | while read array device params; do
+ uuid=${params#*UUID=}; uuid=${uuid%% *}
+ if ! grep -qi "uuid=$uuid" $DESTMDADMCONF; then
+ warn "the array $device with UUID $uuid"
+ warn "is currently active, but it is not listed in mdadm.conf. if"
+ warn "it is needed for boot, then YOUR SYSTEM IS NOW UNBOOTABLE!"
+ warn "please inspect the output of /usr/share/mdadm/mkconf, compare"
+ warn "it to $CONFIG, and make the necessary changes."
+ fi
+ done
+
+ for i in $INITRDSTART; do
+ case "$INITRDSTART" in all) break;; *) :;; esac
+ case "$devs" in
+ *${i}*) continue;;
+ *) :;;
+ esac
+
+ warn "I am supposed to start $i from the initial ramdisk,"
+ warn "yet I cannot find the array in the configuration file."
+ warn "I am thus reverting to starting all arrays."
+ INITRDSTART=all
+ break
+ done
+
+ if [ "$INITRDSTART" = all ]; then
+ echo "MD_DEVS=all" >> $DESTCONFIG
+ else
+ echo "MD_DEVS='$devs'" >> $DESTCONFIG
+ fi
+
+ if [ "$INITRDSTART" = all ]; then
+ info "will start all available MD arrays from the initial ramdisk."
+ else
+ for i in $devs; do
+ info "will start MD array $i from the initial ramdisk."
+ done
+ fi
+
+ # Copy udev rules, which udev no longer does
+ UDEV_RULE=63-md-raid-arrays.rules
+ for rules_folder in /lib/udev/rules.d /etc/udev/rules.d; do
+ if [ -f $rules_folder/$UDEV_RULE ]; then
+ mkdir -p $DESTDIR$rules_folder
+ cp $rules_folder/$UDEV_RULE $DESTDIR$rules_folder/$UDEV_RULE
+ fi
+ done
+
+else
+ echo "MD_DEVS=none" >> $DESTCONFIG
+ info "no MD arrays will be started from the initial ramdisk."
+fi
+
+# only output this on Debian systems
+[ -s /etc/default/mdadm ] && \
+ info 'use `dpkg-reconfigure --priority=low mdadm` to change this.'
+
+exit 0
diff --git a/debian/initramfs/script.local-top b/debian/initramfs/script.local-top
new file mode 100644
index 00000000..166f256f
--- /dev/null
+++ b/debian/initramfs/script.local-top
@@ -0,0 +1,104 @@
+#!/bin/sh
+#
+# Copyright © 2006-2008 Martin F. Krafft <madduck@debian.org>,
+# 2012 Michael Tokarev <mjt@tls.msk.ru>
+# based on the scripts in the initramfs-tools package.
+# released under the terms of the Artistic Licence.
+#
+set -eu
+
+case ${1:-} in
+ prereqs) echo "multipath"; exit 0;;
+esac
+
+. /scripts/functions
+
+maybe_break pre-mdadm
+
+if [ -e /scripts/local-top/md ]; then
+ log_warning_msg "old md initialisation script found, getting out of its way..."
+ exit 1
+fi
+
+MDADM=/sbin/mdadm
+[ -x "$MDADM" ] || exit 0
+
+verbose()
+{
+ case "$quiet" in y*|Y*|1|t*|T*)
+ return 1;;
+ *)
+ return 0;;
+ esac
+}
+
+MD_DEVS=all
+[ -s /conf/mdadm ] && . /conf/mdadm
+
+if [ "$MD_DEVS" = none ]; then
+ verbose &&
+ log_warning_msg "INITRDSTART set to \"none\" in /etc/default/mdadm, not assembling raid arrays"
+ exit 0
+fi
+
+if [ ! -f /proc/mdstat ] && ! modprobe -q md_mod; then
+ verbose && log_failure_msg "failed to load module md_mod."
+fi
+if [ ! -f /proc/mdstat ]; then
+ verbose && panic "cannot initialise MD subsystem (/proc/mdstat missing)"
+ exit 1
+fi
+
+# prevent writes/syncs so that resuming works (#415441).
+echo 1 > /sys/module/md_mod/parameters/start_ro
+
+# handle /dev/md/X nodes
+mkdir -p /dev/md
+
+CONFIG=/etc/mdadm/mdadm.conf
+# in case the hook failed to install a configuration file, this is our last
+# attempt... the "emergency procedure"... <drumroll>
+if [ ! -e $CONFIG ]; then
+ log_warning_msg "missing mdadm.conf file, trying to create one..."
+ mkdir -p ${CONFIG%/*}
+ echo DEVICE partitions > $CONFIG
+ $MDADM --examine --scan >> $CONFIG
+ if [ -s $CONFIG ]; then
+ verbose && log_success_msg "mdadm.conf created."
+ else
+ verbose && log_failure_msg "could not create mdadm.conf, the boot will likely fail."
+ fi
+ MD_DEVS=all
+fi
+
+if [ "$MD_DEVS" = all ]; then
+
+ verbose && log_begin_msg "Assembling all MD arrays"
+ extra_args=''
+ [ -n "${MD_HOMEHOST:-}" ] && extra_args="--homehost=$MD_HOMEHOST"
+ if $MDADM --assemble --scan --run --auto=yes${extra_args:+ $extra_args}; then
+ verbose && log_success_msg "assembled all arrays."
+ else
+ log_failure_msg "failed to assemble all arrays."
+ fi
+ verbose && log_end_msg
+
+else
+ for dev in $MD_DEVS; do
+
+ verbose && log_begin_msg "Assembling MD array $dev"
+ if $MDADM --assemble --scan --run --auto=yes $dev; then
+ verbose && log_success_msg "started $dev"
+ else
+ log_failure_msg "failed to start $dev"
+ fi
+ verbose && log_end_msg
+
+ done
+fi
+
+wait_for_udev 10
+
+maybe_break post-mdadm
+
+exit 0
diff --git a/debian/mdadd.sh b/debian/mdadd.sh
new file mode 100644
index 00000000..fafb15c6
--- /dev/null
+++ b/debian/mdadd.sh
@@ -0,0 +1,375 @@
+#!/bin/sh
+
+MY_VERSION="1.52a"
+# ----------------------------------------------------------------------------------------------------------------------
+# Linux MD (Soft)RAID Add Script - Add a (new) harddisk to another multi MD-array harddisk
+# Last update: January 10, 2012
+# (C) Copyright 2005-2012 by Arno van Amersfoort
+# Homepage : http://rocky.eld.leidenuniv.nl/
+# Email : a r n o v a AT r o c k y DOT e l d DOT l e i d e n u n i v DOT n l
+# (note: you must remove all spaces and substitute the @ and the . at the proper locations!)
+# ----------------------------------------------------------------------------------------------------------------------
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# version 2 as published by the Free Software Foundation.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+# ----------------------------------------------------------------------------------------------------------------------
+
+EOL='
+'
+
+show_help()
+{
+ echo "Bad or missing parameter(s)"
+ echo "Usage: $(basename $0) [ options ] [ source_disk ] [ target_disk ]"
+ echo "Options:"
+ echo "--force = Even proceed if target device does not appear empty"
+ echo "--noptupdate = Do NOT update the partition table on the target device (EXPERT!)"
+ echo "--nombrupdate = Do NOT update the MBR boot-loader on the target device (EXPERT!)"
+}
+
+
+get_partitions()
+{
+ local DEVICE="$(echo "$1" |sed s,'^/dev/',, )"
+
+ if [ -z "$DEVICE" ]; then
+ cat /proc/partitions |sed -e '1,2d' -e s,' /dev/',,
+ else
+ cat /proc/partitions |sed -e '1,2d' -e s,' /dev/',, |grep -E " ${DEVICE}p?[0-9]+$"
+ fi
+}
+
+get_part_size()
+{
+ get_partitions |grep -E " ${1}$" |awk '{ print $3 }'
+}
+
+check_binary()
+{
+ if ! which "$1" >/dev/null 2>&1; then
+ printf "\033[40m\033[1;31mERROR: Binary \"$1\" does not exist or is not executable!\033[0m\n" >&2
+ printf "\033[40m\033[1;31m Please, make sure that it is (properly) installed!\033[0m\n" >&2
+ exit 2
+ fi
+}
+
+
+sanity_check()
+{
+ if [ "$(id -u)" != "0" ]; then
+ printf "\033[40m\033[1;31mERROR: Root check FAILED (you MUST be root to use this script)! Quitting...\n\033[0m" >&2
+ exit 1
+ fi
+
+ check_binary mdadm
+ check_binary sfdisk
+ check_binary dd
+ check_binary awk
+ check_binary grep
+ check_binary sed
+ check_binary cat
+
+ if [ -z "$SOURCE" ] || [ -z "$TARGET" ]; then
+ echo "ERROR: Bad or missing argument(s)" >&2
+ show_help;
+ exit 4
+ fi
+
+ if ! echo "$SOURCE" |grep -q '^/dev/'; then
+ printf "\033[40m\033[1;31mERROR: Source device $SOURCE does not start with /dev/! Quitting...\n\033[0m" >&2
+ exit 5
+ fi
+
+ if ! echo "$TARGET" |grep -q '^/dev/'; then
+ printf "\033[40m\033[1;31mERROR: Target device $TARGET does not start with /dev/! Quitting...\n\033[0m" >&2
+ exit 5
+ fi
+
+ if echo "$SOURCE" |grep -q 'md[0-9]'; then
+ printf "\033[40m\033[1;31mERROR: The source device specified is an md-device! Quitting...\n\033[0m" >&2
+ echo "A physical drive (part of the md-array(s)) is required as source device (eg. /dev/sda)!" >&2
+ exit 5
+ fi
+
+ # We also want variables without /dev/ :
+ SOURCE_NODEV="$(echo "$SOURCE" |sed 's,^/dev/,,')"
+ TARGET_NODEV="$(echo "$TARGET" |sed 's,^/dev/,,')"
+
+ if [ -z "$(get_partitions ${SOURCE_NODEV})" ]; then
+ printf "\033[40m\033[1;31mERROR: Source device $SOURCE does not contain any partitions!? Quitting...\n\033[0m" >&2
+ exit 7
+ fi
+
+ if [ -n "$(get_partitions ${TARGET_NODEV})" ] && [ $FORCE -ne 1 ]; then
+ sfdisk -l "$TARGET"
+ printf "\033[40m\033[1;31mERROR: Target device $TARGET already contains partitions! Use --force to override. Quitting...\n\033[0m" >&2
+ exit 8
+ fi
+
+ SOURCE_SIZE="$(get_part_size $SOURCE_NODEV)"
+ TARGET_SIZE="$(get_part_size $TARGET_NODEV)"
+ if [ $SOURCE_SIZE -gt $TARGET_SIZE ]; then
+ printf "\033[40m\033[1;31mWARNING: Target device $TARGET ($TARGET_SIZE blocks) is smaller than source device $SOURCE ($SOURCE_SIZE blocks)\nPress enter to continue or CTRL-C to abort...\n\033[0m" >&2
+ read
+ fi
+
+ echo "--> Saving mdadm detail scan to /tmp/mdadm-detail-scan..."
+ mdadm --detail --scan --verbose >|/tmp/mdadm-detail-scan
+ retval=$?
+ if [ $retval -ne 0 ]; then
+ printf "\033[40m\033[1;31mERROR: mdadm returned an error($retval) while determining detail information!\n\033[0m" >&2
+ exit 9
+ fi
+
+ echo "--> Saving partition table of target device $TARGET to /tmp/partitions.target..."
+ sfdisk -d "$TARGET" >|"/tmp/partitions.target" 2>/dev/null
+ retval=$?
+ if [ $retval -ne 0 ]; then
+ echo "NOTE: sfdisk returned an error($retval) while reading the partition table on $TARGET"
+ fi
+
+ echo "--> Saving partition table of source device $SOURCE to /tmp/partitions.source..."
+ sfdisk -d "$SOURCE" >|"/tmp/partitions.source"
+ retval=$?
+ if [ $retval -ne 0 ]; then
+ printf "\033[40m\033[1;31mERROR: sfdisk returned an error($retval) while reading the partition table on $SOURCE!\n\033[0m" >&2
+ exit 11
+ fi
+
+ echo "--> Checking status of running MDs..."
+ MD_DEV=""
+ IFS=$EOL
+ for MDSTAT_LINE in `cat /proc/mdstat`; do
+ if echo "$MDSTAT_LINE" |grep -q '^md'; then
+ MD_DEV_LINE="$MDSTAT_LINE"
+ MD_DEV="$(echo "$MDSTAT_LINE" |awk '{ print $1 }')"
+
+ IFS=$EOL
+ for part_nodev in `cat "/tmp/partitions.target" |grep '^/dev/' |grep -i -v 'Id= 0' |awk '{ print $1 }' |sed 's,^/dev/,,'`; do
+ if echo "$MD_DEV_LINE" |grep -E -q "[[:blank:]]$part_nodev\["; then
+ printf "\033[40m\033[1;31mERROR: Partition /dev/$part_nodev on target device is already in use by array /dev/$MD_DEV!\n\033[0m" >&2
+ exit 12
+ fi
+ done
+ fi
+
+ if echo "$MDSTAT_LINE" |grep -E -q '[[:blank:]]blocks[[:blank:]]' && ! echo "$MDSTAT_LINE" |grep -q '_'; then
+ # This array is NOT degraded so now check whether we want to add devices to it:
+
+ IFS=$EOL
+ for part_nodev in `cat "/tmp/partitions.source" |grep '^/dev/' |grep -i -v 'Id= 0' |awk '{ print $1 }' |sed 's,^/dev/,,'`; do
+ if echo "$MD_DEV_LINE" |grep -E -q "[[:blank:]]$part_nodev\["; then
+ printf "$MD_DEV_LINE\n$MDSTAT_LINE\n"
+ printf "\033[40m\033[1;31mWARNING: Array $MD_DEV is NOT degraded, target device ${TARGET}$(echo "$part_nodev" |sed "s,$SOURCE_NODEV,,") will become a hotspare!\nPress enter to continue or CTRL-C to abort...\n\033[0m" >&2
+ read
+ fi
+ done
+ fi
+ done
+}
+
+
+# Wrapper for partprobe (call when performing a partition table update with eg. fdisk/sfdisk).
+# $1 = Device to re-read
+partprobe()
+{
+ local DEVICE="$1"
+ local result=""
+
+ printf "(Re)reading partition table on $DEVICE"
+
+ # Retry several times since some daemons can block the re-reread for a while (like dm/lvm or blkid)
+ for x in `seq 1 10`; do
+ printf "."
+ result=`sfdisk -R "$DEVICE" 2>&1`
+
+ # Wait a bit for things to settle
+ sleep 1
+
+ if [ -z "$result" ]; then
+ break;
+ fi
+ done
+
+ echo ""
+
+ if [ -n "$result" ]; then
+ echo "$result" >&2
+ return 1
+ fi
+ return 0
+}
+
+
+# Program entry point
+echo "MDadd for SoftRAID-MDADM v$MY_VERSION"
+echo "Written by Arno van Amersfoort"
+echo "--------------------------------"
+
+# Set environment variables to default
+FORCE=0
+NOPTUPDATE=0
+NOMBRUPDATE=0
+SOURCE=""
+TARGET=""
+
+# Check arguments
+unset IFS
+for arg in $*; do
+ ARGNAME="$(echo "$arg" |cut -d= -f1)"
+ ARGVAL="$(echo "$arg" |cut -d= -f2)"
+
+ if ! echo "$ARGNAME" |grep -q '^-'; then
+ if [ -z "$SOURCE" ]; then
+ SOURCE="$ARGVAL"
+ else
+ if [ -z "$TARGET" ]; then
+ TARGET="$ARGVAL"
+ else
+ show_help;
+ exit 3
+ fi
+ fi
+ else
+ case "$ARGNAME" in
+ --force|-force|-f) FORCE=1;;
+ --noptupdate|-noptupdate|--noptu|-noptu) NOPTUPDATE=1;;
+ --nombrupdate|-nombrupdate|--nombru|nombru) NOMBRUPDATE=1;;
+ --help) show_help;
+ exit 0;;
+ *) echo "ERROR: Bad argument: $ARGNAME";
+ show_help;
+ exit 3;;
+ esac
+ fi
+done
+
+# Make sure everything is sane:
+sanity_check;
+
+# Disable all swaps on target disk
+echo "--> Disabling any swap partitions on target device $TARGET"
+IFS=$EOL
+for SWAP in `grep -E "^${TARGET}p?[0-9]+" /proc/swaps |awk '{ print $1 }'`; do
+ swapoff $SWAP >/dev/null 2>&1
+done
+
+# Update track0 on target disk
+if [ $NOMBRUPDATE -ne 1 ]; then
+ echo "--> Copying track0(containing MBR) from $SOURCE to $TARGET..."
+ dd if="$SOURCE" of="$TARGET" bs=32768 count=1
+ retval=$?
+ if [ $retval -ne 0 ]; then
+ printf "\033[40m\033[1;31mERROR: dd returned an error($retval) while copying track0!\n\033[0m" >&2
+ exit 9
+ fi
+fi
+
+PT_FILE="/tmp/partitions.source"
+if [ $NOPTUPDATE -eq 1 ]; then
+ PT_FILE="/tmp/partitions.target"
+fi
+
+echo "--> Restoring partition table from $PT_FILE to $TARGET..."
+sfdisk --no-reread --force "$TARGET" < "$PT_FILE"
+retval=$?
+if [ $retval -ne 0 ]; then
+ printf "\033[40m\033[1;31mERROR: sfdisk returned an error($retval) while writing the partition table!\n\033[0m" >&2
+ exit 9
+fi
+
+echo ""
+
+if [ $NOPTUPDATE -ne 1 ]; then
+ # Re-read partition table
+ partprobe "$TARGET"
+ retval=$?
+ if [ $retval -ne 0 ]; then
+ printf "\033[40m\033[1;31mERROR: (Re)reading the partition table failed($retval)!\n\033[0m" >&2
+ exit 9
+ fi
+fi
+
+# Copy/build all md devices that exist on the source drive:
+BOOT=0
+NO_ADD=1
+IFS=$EOL
+for LINE in `cat /tmp/mdadm-detail-scan`; do
+ if echo "$LINE" |grep -E -q '^ARRAY[[:blank:]]'; then
+ MD_DEV=$(echo "$LINE" |awk '{ print $2 }')
+ fi
+
+ if echo "$LINE" |grep -E -q "devices=.*${SOURCE}p?[0-9]+"; then
+ PARTITION_NR=""
+ IFS=','
+ for item in `echo "$LINE" |sed -e "s:.*devices=::"`; do
+ if echo "$item" |grep -E -q -x "${SOURCE}p?[0-9]+"; then
+ PARTITION_NR=`echo "$item" |sed s:"$SOURCE"::`
+ break;
+ fi
+ done
+
+ if [ -z "$PARTITION_NR" ]; then
+ printf "\033[40m\033[1;31mERROR: Unable to retrieve detail information for $SOURCE from $MD_DEV!\n\033[0m" >&2
+ exit 11
+ fi
+
+ # Check whether we're a root or boot partition
+ if grep -E -q -e "^$MD_DEV[[:blank:]]*/boot[[:blank:]]" -e "$MD_DEV[[:blank:]]*/[[:blank:]]" /etc/fstab; then
+ BOOT=1
+ fi
+
+ NO_ADD=0
+ echo ""
+ echo "--> Adding ${TARGET}${PARTITION_NR} to RAID array $MD_DEV:"
+ printf "\033[40m\033[1;31m"
+ mdadm --add "$MD_DEV" "${TARGET}${PARTITION_NR}"
+ retval=$?
+ if [ $retval -ne 0 ]; then
+ printf "\033[40m\033[1;31mERROR: mdadm returned an error($retval) while adding device!\n\033[0m" >&2
+ exit 12
+ fi
+ printf "\033[0m"
+ fi
+done
+
+echo ""
+
+# Create swapspace on partitions with ID=82
+echo "--> Creating swapspace on target device (if any swap partitions exist)..."
+IFS=$EOL
+for SWAP_DEVICE in `sfdisk -d "$TARGET" 2>/dev/null |grep -i 'Id=82$' |awk '{ print $1 }'`; do
+ if ! mkswap "$SWAP_DEVICE"; then
+ printf "\033[40m\033[1;31mWARNING: mkswap failed for $SWAP_DEVICE\n\033[0m" >&2
+ else
+ swapon "$SWAP_DEVICE"
+ fi
+
+ if ! grep -E -q "^$SWAP_DEVICE[[:blank:]]*none[[:blank:]]*swap[[:blank:]]" /etc/fstab; then
+ printf "\033[40m\033[1;31mWARNING: /etc/fstab does NOT contain a (valid) swap entry for $SWAP_DEVICE\n\033[0m" >&2
+ fi
+done
+
+# Wait a bit for mdstat to settle
+sleep 3
+
+echo "--> Showing current /proc/mdstat (you may need to update your mdadm.conf (manually)..."
+cat /proc/mdstat
+echo ""
+
+if [ $NO_ADD -eq 1 ]; then
+ printf "\033[40m\033[1;31mWARNING: No mdadm --add actions were performed, please investigate!\n\033[0m" >&2
+fi
+
+if [ $BOOT -eq 1 ]; then
+ printf "\033[40m\033[1;31mNOTE: Boot and/or root partition detected.\n Please check your bootloader & active partitions!\n\033[0m"
+fi
diff --git a/debian/mdadm-raid b/debian/mdadm-raid
new file mode 100644
index 00000000..0c0cad52
--- /dev/null
+++ b/debian/mdadm-raid
@@ -0,0 +1,266 @@
+#!/bin/sh
+#
+# Start all arrays specified in the configuration file.
+#
+# Copyright © 2001-2005 Mario Jou/3en <joussen@debian.org>
+# Copyright © 2005-2008 Martin F. Krafft <madduck@debian.org>
+# Distributable under the terms of the GNU GPL version 2.
+#
+### BEGIN INIT INFO
+# Provides: mdadm-raid
+# Required-Start: mountkernfs hostname
+# Should-Start: udev multipath-tools-boot
+# X-Start-Before: checkfs mountall
+# Required-Stop: mountkernfs
+# Should-Stop: udev
+# X-Stop-After: umountfs
+# Default-Start: S
+# Default-Stop: 0 6
+# Short-Description: MD array assembly
+# Description: This script assembles a system's MD arrays, according to
+# the settings in /etc/mdadm/mdadm.conf and the preferences
+# in /etc/default/mdadm.
+### END INIT INFO
+#
+set -eu
+
+MDADM=/sbin/mdadm
+CONFIG=/etc/mdadm/mdadm.conf
+ALTCONFIG=/etc/mdadm.conf
+DEBIANCONFIG=/etc/default/mdadm
+
+test -x "$MDADM" || exit 0
+
+AUTOSTART=true
+STATEDIR=/run/mdadm
+test -f $DEBIANCONFIG && . $DEBIANCONFIG
+
+. /lib/lsb/init-functions
+
+short_dev()
+{
+ local dev; dev=${1##*/}
+ case "$dev" in
+ md*|md_*|mdp*|mdp_*) echo "$dev";;
+ d*) echo "md_${dev}";;
+ *) echo "md${dev}";;
+ esac
+}
+
+log()
+{
+ case "$1" in
+ [[:digit:]]*) success=$1; shift;;
+ *) :;;
+ esac
+ log_action_begin_msg "$1"; shift
+ log_action_end_msg ${success:-0} "$*"
+}
+
+log_dev()
+{
+ success=${1:-}; shift
+ dev=${1:-}; shift
+ log $success "${PREFIX:-} $(short_dev ${dev:-})" "$*"
+}
+
+log_notice()
+{
+ log 0 "${PREFIX:-}s" "$*"
+}
+
+log_problem()
+{
+ log 1 "${PREFIX:-}s" "$*"
+}
+
+is_true()
+{
+ case "${1:-}" in
+ [Yy]es|[Yy]|1|[Tt]rue|[Tt]) return 0;;
+ *) return 1;
+ esac
+}
+
+case "${1:-}" in
+ start)
+ PREFIX="Assembling MD array"
+
+ if is_true $AUTOSTART || is_true ${MDADM_FORCE_AUTOSTART__:-0}; then
+ if [ ! -f /proc/mdstat ] && [ -x "$(command -v modprobe)" ] ; then
+ modprobe -q md 2>/dev/null || :
+ fi
+ if [ ! -f /proc/mdstat ]; then
+ log_problem "failed to load MD subsystem"
+ exit 0
+ fi
+
+ if [ -f $CONFIG ] || [ -f $ALTCONFIG ]; then
+ # handle devfs-style names and version-1 devices
+ # fail gracefully in case we're on a read-only filesystem, in which
+ # case it's safe to assume that the admin knows what s/he's doing.
+ # See (#382876).
+ mkdir --parent /dev/md || :
+
+ # ugly hack because shell sucks
+ IFSOLD=${IFS:-}
+ IFS='
+'
+ for line in $($MDADM --assemble --scan --auto=yes --symlink=no 2>&1); do
+ IFS=$IFSOLD
+ set -- $line
+ shift
+
+ case "$@" in
+
+ 'No arrays found in config file'*)
+ # no point in carrying on.
+ shift
+ log_notice "no $*"
+ exit 0
+ ;;
+
+ 'Unknown keyword'*)
+ # warn only
+ if [ -x $(command -v logger >/dev/null) ]; then
+ logger -t mdadm -p syslog.warning -- "$*"
+ elif [ -w /dev/console ]; then
+ echo "mdadm: $*" > /dev/console
+ else
+ echo "mdadm: $*" >&2
+ fi
+ ;;
+
+ *' is already active.')
+ log_dev 0 $1 "already running"
+ ;;
+
+ *'has been started with '[[:digit:]]*' drive'*' (out of '[[:digit:]]*') and '[[:digit:]]*' spare'*'.')
+ log_dev 0 $1 "initialising [$6/${10%).}]"
+ ;;
+
+ *'has been started with '[[:digit:]]*' drive'*' (out of '[[:digit:]]*').')
+ log_dev 0 $1 "degraded [$6/${10%).}]"
+ ;;
+
+ *'has been started with '[[:digit:]]*' drive'*'.')
+ log_dev 0 $1 "started [$6/$6]"
+ ;;
+
+ *'assembled from '[[:digit:]]*' drive'*' - not enough to start the array.')
+ log_dev 1 $1 "not enough devices"
+ ;;
+
+ 'no devices found for '*)
+ log_dev 1 $5 "no devices found"
+ ;;
+
+ 'failed to RUN_ARRAY '*': Input/output error')
+ log_dev 1 ${4%:} "RUN_ARRAY input/output error"
+ ;;
+
+ *) :;;
+ esac
+ done
+ ret=$?
+
+ log_action_begin_msg "Generating udev events for MD arrays"
+ [ -d $STATEDIR ] || mkdir -p $STATEDIR
+ for uevent in /sys/block/md*/uevent; do
+ test -e $uevent || break
+ sentinel=${uevent#/sys/block/}; sentinel=${sentinel%/uevent}-uevent
+ test -e $STATEDIR/$sentinel && continue
+ test -w $uevent || continue
+ echo add > $uevent
+ test -d $STATEDIR && : > $STATEDIR/$sentinel
+ done
+ log_action_end_msg 0
+
+ [ $ret -ne 0 ] && exit $ret
+
+ else
+ log_problem "no $CONFIG file"
+ fi
+ else
+ log_notice "disabled in $DEBIANCONFIG"
+ fi
+ ;;
+
+ stop)
+ PREFIX="Stopping MD array"
+
+ if is_true $AUTOSTART; then
+ if [ ! -f /proc/mdstat ]; then
+ log_problem "no MD subsystem loaded"
+ exit 0
+ fi
+
+ # ugly hack because shell sucks
+ IFSOLD=${IFS:-}
+ IFS='
+'
+ set +e
+ for line in $($MDADM --stop --scan 2>&1); do
+ set -e
+ IFS=$IFSOLD
+ set -- $line
+ shift
+
+ case "$@" in
+
+ 'Unknown keyword'*)
+ # warn only
+ if [ -x $(command -v logger >/dev/null) ]; then
+ logger -t mdadm -p syslog.warning -- "$*"
+ elif [ -w /dev/console ]; then
+ echo "mdadm: $*" > /dev/console
+ else
+ echo "mdadm: $*" >&2
+ fi
+ ;;
+
+ 'stopped '*)
+ log_dev 0 $2 stopped
+ ;;
+
+ 'fail to stop array '*': Device or resource busy')
+ log_dev 1 ${5%:} busy
+ ;;
+
+ *) :;;
+ esac
+ done || exit $?
+
+ rm -f $STATEDIR/md*-uevent
+
+ else
+ log_notice "disabled in $DEBIANCONFIG"
+ fi
+ ;;
+
+ restart|force-reload)
+ ${0:-} stop
+ ${0:-} start
+ ;;
+
+ reload)
+ PREFIX="Reloading MD array"
+ log_notice "never anything to do"
+ ;;
+
+ status)
+ if [ ! -f /proc/mdstat ]; then
+ log_problem "no MD subsystem loaded"
+ exit 1
+ else
+ cat /proc/mdstat
+ fi
+ ;;
+
+ *)
+ echo "Usage: ${0:-} {start|stop|restart}" >&2
+ exit 1;;
+
+esac
+
+exit 0
diff --git a/debian/mdadm-startall b/debian/mdadm-startall
new file mode 100644
index 00000000..aa947b01
--- /dev/null
+++ b/debian/mdadm-startall
@@ -0,0 +1,31 @@
+#!/bin/sh
+#
+# startall -- starts all existing arrays after creating mdadm.conf
+# overrides the AUTOSTART variable in /etc/default/mdadm
+#
+# Copyright © martin f. krafft <madduck@madduck.net>
+# distributed under the terms of the Artistic Licence 2.0
+#
+set -eu
+
+CONFIG=/etc/mdadm/mdadm.conf
+ALTCONFIG=/etc/mdadm.conf
+
+modprobe -q md 2>/dev/null || :
+
+[ ! -f $CONFIG ] && [ -f $ALTCONFIG ] && CONFIG=$ALTCONFIG
+
+if ! grep -q '^ARRAY' $CONFIG 2>/dev/null; then
+ /usr/share/mdadm/mkconf force-generate || ret=$?
+ case ${ret:-0} in
+ 0) :;;
+ *)
+ echo E: mdadm: mdadm.conf creation failed, aborting. >&2
+ exit $ret
+ ;;
+ esac
+else
+ echo W: mdadm: using ARRAYs defined in existing mdadm.conf. >&2
+fi
+
+MDADM_FORCE_AUTOSTART__=1 exec /etc/init.d/mdadm-raid start
diff --git a/debian/mdadm-startall.sgml b/debian/mdadm-startall.sgml
new file mode 100644
index 00000000..c47b1f89
--- /dev/null
+++ b/debian/mdadm-startall.sgml
@@ -0,0 +1,115 @@
+<!doctype refentry PUBLIC "-//OASIS//DTD DocBook V4.1//EN" [
+
+<!-- Process this file with docbook-to-man to generate an nroff manual
+ page: `docbook-to-man manpage.sgml > manpage.1'. You may view
+ the manual page with: `docbook-to-man manpage.sgml | nroff -man |
+ less'. A typical entry in a Makefile or Makefile.am is:
+
+manpage.1: manpage.sgml
+ docbook-to-man $< > $@
+
+
+ The docbook-to-man binary is found in the docbook-to-man package.
+ Please remember that if you create the nroff version in one of the
+ debian/rules file targets (such as build), you will need to include
+ docbook-to-man in your Build-Depends control field.
+
+ -->
+
+ <!-- Fill in your name for FIRSTNAME and SURNAME. -->
+ <!ENTITY dhfirstname "<firstname>Eduard</firstname>">
+ <!ENTITY dhsurname "<surname>Bloch</surname>">
+ <!-- Please adjust the date whenever revising the manpage. -->
+ <!ENTITY dhdate "<date>April 3, 2007</date>">
+ <!-- SECTION should be 1-8, maybe w/ subsection other parameters are
+ allowed: see man(7), man(1). -->
+ <!ENTITY dhsection "<manvolnum>8</manvolnum>">
+ <!ENTITY dhemail "<email>blade@debian.org</email>">
+ <!ENTITY dhusername "Eduard Bloch">
+ <!ENTITY dhucpackage "<refentrytitle>mdadm-startall</refentrytitle>">
+ <!ENTITY dhpackage "mdadm">
+
+ <!ENTITY debian "<productname>Debian</productname>">
+ <!ENTITY gnu "<acronym>GNU</acronym>">
+ <!ENTITY gpl "&gnu; <acronym>GPL</acronym>">
+]>
+
+<refentry>
+ <refentryinfo>
+ <address>
+ &dhemail;
+ </address>
+ <author>
+ &dhfirstname;
+ &dhsurname;
+ </author>
+ <copyright>
+ <year>2007</year>
+ <holder>&dhusername;</holder>
+ </copyright>
+ &dhdate;
+ </refentryinfo>
+ <refmeta>
+ &dhucpackage;
+
+ &dhsection;
+ </refmeta>
+ <refnamediv>
+ <refname>&dhucpackage;</refname>
+
+ <refpurpose>helper script to start all known arrays</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <cmdsynopsis>
+ <command>&dhucpackage;</command>
+ </cmdsynopsis>
+ </refsynopsisdiv>
+ <refsect1>
+ <title>DESCRIPTION</title>
+
+ <para>The <command>&dhucpackage;</command> script scans the system for
+ arrays and writes a configuration file matching the current state. It then
+ starts all arrays it found. If a configuration file already exists and
+ defines arrays, it is used instead.
+
+ </refsect1>
+ <refsect1>
+ <title>SEE ALSO</title>
+
+ <para>mdadm (8), mdadm.conf(5)</para>
+ </refsect1>
+ <refsect1>
+ <title>AUTHOR</title>
+
+ <para>This manual page was written by &dhusername; &dhemail; for
+ the &debian; system (but may be used by others). Permission is
+ granted to copy, distribute and/or modify this document under
+ the terms of the &gnu; General Public License, Version 2 any
+ later version published by the Free Software Foundation.
+ </para>
+ <para>
+ On Debian systems, the complete text of the GNU General Public
+ License can be found in /usr/share/common-licenses/GPL.
+ </para>
+
+ </refsect1>
+</refentry>
+
+<!-- Keep this comment at the end of the file
+Local variables:
+mode: sgml
+sgml-omittag:t
+sgml-shorttag:t
+sgml-minimize-attributes:nil
+sgml-always-quote-attributes:t
+sgml-indent-step:2
+sgml-indent-data:t
+sgml-parent-document:nil
+sgml-default-dtd-file:nil
+sgml-exposed-tags:nil
+sgml-local-catalogs:nil
+sgml-local-ecat-files:nil
+End:
+-->
+
+
diff --git a/debian/mdadm-udeb.dirs b/debian/mdadm-udeb.dirs
new file mode 100644
index 00000000..13b88a87
--- /dev/null
+++ b/debian/mdadm-udeb.dirs
@@ -0,0 +1,2 @@
+sbin
+lib/udev/rules.d
diff --git a/debian/mdadm-waitidle b/debian/mdadm-waitidle
new file mode 100644
index 00000000..e779d7ba
--- /dev/null
+++ b/debian/mdadm-waitidle
@@ -0,0 +1,55 @@
+#!/bin/sh
+### BEGIN INIT INFO
+# Provides: mdadm-waitidle
+# Required-Start:
+# Required-Stop:
+# Should-Stop: halt reboot kexec
+# X-Stop-After: umountroot
+# Default-Start:
+# Default-Stop: 0 6
+# Short-Description: Wait for MD arrays to become idle
+# Description: Waits until all MD arrays are in idle and synced state
+# before halt/reboot.
+### END INIT INFO
+#
+set -eu
+
+MDADM=/sbin/mdadm
+test -x "$MDADM" || exit 0
+test -f /proc/mdstat || exit 0
+
+. /lib/lsb/init-functions
+
+case "${1:-}" in
+
+ start|restart|force-reload)
+ # nothing, the only reason the script is here is to stop arrays
+ ;;
+
+ stop)
+ sync
+ wait=
+ for md in /sys/block/md*/md ; do
+ [ -d "$md" ] || continue
+ [ "$wait" ] || log_action_begin_msg "Waiting for MD arrays to become idle"
+ wait=y
+ [ -w $md/sync_action ] && echo idle > $md/sync_action
+ done
+ if [ "$wait" ]; then
+ # mdadm --wait-clean has a short internal timeout
+ if $MDADM --wait-clean --scan; then
+ log_action_end_msg 0
+ else
+ log_action_end_msg 1
+ sleep 1
+ fi
+ fi
+ ;;
+
+ *)
+ echo "Usage: ${0:-} stop" >&2
+ exit 1;;
+
+esac
+
+exit 0
diff --git a/debian/mdadm.config b/debian/mdadm.config
new file mode 100644
index 00000000..a7e9b1fb
--- /dev/null
+++ b/debian/mdadm.config
@@ -0,0 +1,199 @@
+#!/bin/sh
+# Copyright © 2001-2004 Mario Jou/3en <joussen@debian.org>
+# Copyright © martin f. krafft <madduck@debian.org>
+# Distributable under the terms of the GNU GPL version 2.
+#
+
+# we need debconf-escape. Without it, defer the configuration.
+if [ ! -x "$(command -v debconf-escape 2>/dev/null)" ]; then
+ echo 'I: mdadm: debconf backend too old, defering configuration...' >&2
+ exit 0
+fi
+
+. /usr/share/debconf/confmodule
+# see #369953 for ordering
+set -eu
+
+CONFIG=/etc/mdadm/mdadm.conf
+ALTCONFIG=/etc/mdadm.conf
+[ ! -f $CONFIG ] && [ -f $ALTCONFIG ] && CONFIG=$ALTCONFIG
+
+DEBIANCONFIG=/etc/default/mdadm
+DEBIANCONFIG_OLD=/etc/mdadm/debian.conf
+
+if [ ! -e "$DEBIANCONFIG" ]; then
+ if [ -e "$DEBIANCONFIG_OLD" ]; then
+ DEBIANCONFIG="$DEBIANCONFIG_OLD"
+ fi
+fi
+
+db_get mdadm/initrdstart || :
+INITRDSTART="$RET"
+
+if [ -s $DEBIANCONFIG ] ; then
+ AUTOSTART=true
+ AUTOCHECK=true
+ START_DAEMON=true
+ MAILADDR=root
+
+ [ -f $DEBIANCONFIG ] && . $DEBIANCONFIG
+ if [ -f $CONFIG ]; then
+ MAILADDR=$(sed -rne 's/^MAILADDR[[:space:]]*([^[:space:]]+).*/\1/p' $CONFIG)
+ fi
+
+ # if $MAIL_TO from $DEBIANCONFIG is set, give it priority. This is because
+ # it was used in the command line invocation of the mdadm monitor, and thus
+ # overruled any existing setting in /etc/mdadm/mdadm.conf.
+ # There's a slight chance of loss of a configuration setting (MAILADDR in
+ # /etc/mdadm/mdadm.conf), but it's only an email address, and it is likely
+ # unused anyway, thus we run the risk.
+ [ -n "${MAIL_TO:-}" ] && MAILADDR="$MAIL_TO"
+
+ [ -n "$AUTOSTART" ] && db_set mdadm/autostart "$AUTOSTART"
+ [ -n "$AUTOCHECK" ] && db_set mdadm/autocheck "$AUTOCHECK"
+ [ -n "$START_DAEMON" ] && db_set mdadm/start_daemon "$START_DAEMON"
+ [ -n "$MAILADDR" ] && db_set mdadm/mail_to "$MAILADDR"
+fi
+
+chrooted() {
+ test "$(stat -c "%d/%i" /)" != "$(stat -Lc "%d/%i" /proc/1/root 2>/dev/null)"
+}
+
+get_root_raiddev() {
+ local rootraiddev;
+ rootraiddev="$(df --portability / | sed -rne 's,^(/dev/[^[:space:]]+).*,\1,p')"
+ if ! mdadm --detail $rootraiddev >/dev/null 2>&1; then
+ return 1
+ fi
+ echo ${rootraiddev%p[0-9]*}
+ return 0
+}
+
+get_initrdstart() {
+ db_fget mdadm/initrdstart seen
+ if chrooted || [ "$RET $INITRDSTART" = "false all" ]; then
+ echo all
+ return 1
+ fi
+
+ get_root_raiddev || echo all
+}
+
+[ -z "$INITRDSTART" ] && INITRDSTART="$(get_initrdstart)" || :
+[ -n "$INITRDSTART" ] && db_set mdadm/initrdstart "$INITRDSTART"
+
+INITRDSTART_PRIORITY=high
+if chrooted; then
+ INITRDSTART_PRIORITY=medium
+fi
+
+db_capb escape
+
+msg=intro; suffix=''; error=0
+while true; do
+ db_metaget mdadm/initrdstart_msg_${msg} extended_description || :
+ db_subst mdadm/initrdstart msg "$(echo -n "${RET}${suffix}" | debconf-escape -e)"
+ ret=0; db_input $INITRDSTART_PRIORITY mdadm/initrdstart || ret=$?
+ db_go
+
+ if [ $error -ne 0 ] && [ $ret -eq 30 ]; then
+ # there was an error in a previous run of this loop, but the above question
+ # was not asked, so we better exit the endless loop...
+ echo "W: mdadm: unable to determine MD arrays needed for boot." >&2
+ echo "W: mdadm: falling back to starting all of them..." >&2
+ INITRDSTART=all
+ break
+ fi
+
+ db_get mdadm/initrdstart
+ INITRDSTART="$(echo $RET | tr , ' ')"
+
+ case "$INITRDSTART" in
+ ''|none) INITRDSTART=none; break;;
+ all) break;;
+
+ *)
+ arrays=''
+ for i in $INITRDSTART; do
+
+ # standardise by prefixing /dev/
+ i="/dev/${i#/dev/}"
+
+ # remove partition from partitionable array
+ i="${i%p[0-9]*}"
+
+ if [ ! -e "$i" ]; then
+ error=1; msg=errexist; suffix=": $i"; break
+ fi
+
+ if [ ! -b "$i" ]; then
+ t="$(readlink -nf "$i")"
+ if [ ! -b "$t" ]; then
+ suffix=": $t"
+ else
+ suffix=": $i"
+ fi
+ error=1; msg=errblock; break
+ fi
+
+ if ! mdadm --detail "$i" >/dev/null 2>&1; then
+ error=1; msg=errmd; suffix=": $i"; break
+ fi
+
+ if [ -f $CONFIG ]; then
+ if ! egrep -q "^(ARRAY)?[[:space:]]+$i([[:space:]]+|$)" $CONFIG; then
+ t="$(readlink -nf "$i")"
+ if [ -L "$i" ] \
+ && egrep -q "^(ARRAY)?[[:space:]]+$t([[:space:]]|$)+" $CONFIG; then
+ i="$t"
+ else
+ db_set mdadm/initrdstart_notinconf false
+ db_fset mdadm/initrdstart_notinconf seen false
+ db_subst mdadm/initrdstart_notinconf array "$i"
+ db_subst mdadm/initrdstart_notinconf config "$CONFIG"
+ db_input high mdadm/initrdstart_notinconf || :
+ db_go
+ db_get mdadm/initrdstart_notinconf
+ if [ "$RET" = true ]; then
+ md5sum $CONFIG > /var/lib/mdadm/CONF-UNCHECKED
+ error=0
+ else
+ db_fset mdadm/initrdstart seen false
+ db_set mdadm/initrdstart all
+ error=1; msg=errconf; suffix=": $i"; break
+ fi
+ fi
+ fi
+ fi
+
+ # uniquely add device name
+ echo $arrays | egrep -q "\b${i}\b" || arrays="${arrays:+$arrays }$i"
+ done
+
+ if [ $error -eq 0 ]; then
+ INITRDSTART="$arrays"
+ # exit the while true loop
+ break
+ fi
+ ;;
+ esac
+done
+
+db_set mdadm/initrdstart "$INITRDSTART"
+
+if [ "$INITRDSTART" != all ]; then
+ db_input high mdadm/autostart || :
+ db_go
+fi
+
+db_input medium mdadm/autocheck || :
+db_go
+
+db_input medium mdadm/start_daemon || :
+db_go
+
+db_get mdadm/start_daemon || :
+if [ "$RET" = true ]; then
+ db_input medium mdadm/mail_to || :
+ db_go
+fi
diff --git a/debian/mdadm.cron.d b/debian/mdadm.cron.d
new file mode 100644
index 00000000..309d180e
--- /dev/null
+++ b/debian/mdadm.cron.d
@@ -0,0 +1,12 @@
+#
+# cron.d/mdadm -- schedules periodic redundancy checks of MD devices
+#
+# Copyright © martin f. krafft <madduck@madduck.net>
+# distributed under the terms of the Artistic Licence 2.0
+#
+
+# By default, run at 00:57 on every Sunday, but do nothing unless the day of
+# the month is less than or equal to 7. Thus, only run on the first Sunday of
+# each month. crontab(5) sucks, unfortunately, in this regard; therefore this
+# hack (see #380425).
+57 0 * * 0 root if [ -x /usr/share/mdadm/checkarray ] && [ $(date +\%d) -le 7 ]; then /usr/share/mdadm/checkarray --cron --all --idle --quiet; fi
diff --git a/debian/mdadm.cron.daily b/debian/mdadm.cron.daily
new file mode 100644
index 00000000..d5ac1ae0
--- /dev/null
+++ b/debian/mdadm.cron.daily
@@ -0,0 +1,18 @@
+#!/bin/sh
+#
+# cron.daily/mdadm -- daily check that MD devices are functional
+#
+# Copyright © 2008 Paul Slootman <paul@debian.org>
+# distributed under the terms of the Artistic Licence 2.0
+
+# As recommended by the manpage, run
+# mdadm --monitor --scan --oneshot
+# every day to ensure that any degraded MD devices don't go unnoticed.
+# Email will go to the address specified in /etc/mdadm/mdadm.conf .
+#
+set -eu
+
+MDADM=/sbin/mdadm
+[ -x $MDADM ] || exit 0 # package may be removed but not purged
+
+exec $MDADM --monitor --scan --oneshot
diff --git a/debian/mdadm.dirs b/debian/mdadm.dirs
new file mode 100644
index 00000000..f6c019f8
--- /dev/null
+++ b/debian/mdadm.dirs
@@ -0,0 +1,8 @@
+sbin
+etc/mdadm
+usr/share/mdadm
+usr/share/initramfs-tools/hooks
+usr/share/initramfs-tools/scripts/local-top
+usr/share/bug/mdadm
+usr/share/lintian/overrides
+var/lib/mdadm
diff --git a/debian/mdadm.doc-base.faq b/debian/mdadm.doc-base.faq
new file mode 100644
index 00000000..3fff4504
--- /dev/null
+++ b/debian/mdadm.doc-base.faq
@@ -0,0 +1,9 @@
+Document: mdadm-faq
+Title: mdadm Debian FAQ
+Author: martin f. krafft
+Abstract: The document answers frequently asked questions about Debian's mdadm
+Section: System/Administration
+
+Format: text
+Index: /usr/share/doc/mdadm/FAQ.gz
+Files: /usr/share/doc/mdadm/FAQ.gz
diff --git a/debian/mdadm.doc-base.jd-rebuild-raid b/debian/mdadm.doc-base.jd-rebuild-raid
new file mode 100644
index 00000000..b1cb73cb
--- /dev/null
+++ b/debian/mdadm.doc-base.jd-rebuild-raid
@@ -0,0 +1,9 @@
+Document: mdadm-jd-rebuild-raid
+Title: Rebuilding a RAID array
+Author: David Pashley
+Abstract: The document describes how to replace a failed component in a RAID(1) array
+Section: System/Administration
+
+Format: HTML
+Index: /usr/share/doc/mdadm/rebuilding-raid.html
+Files: /usr/share/doc/mdadm/rebuilding-raid.html
diff --git a/debian/mdadm.doc-base.raid5-vs-10 b/debian/mdadm.doc-base.raid5-vs-10
new file mode 100644
index 00000000..47416e53
--- /dev/null
+++ b/debian/mdadm.doc-base.raid5-vs-10
@@ -0,0 +1,11 @@
+Document: mdadm-raid5-vs-10
+Title: Comparison of RAID5 and RAID10
+Author: Art S. Kagel
+Abstract: This document compares RAID5 and RAID10 and strongly argues against
+ RAID5. The Debian package maintainer does not agree in full but includes the
+ document to allow people to make up their own mind.
+Section: System/Administration
+
+Format: text
+Index: /usr/share/doc/mdadm/RAID5_versus_RAID10.txt.gz
+Files: /usr/share/doc/mdadm/RAID5_versus_RAID10.txt.gz
diff --git a/debian/mdadm.doc-base.recipes b/debian/mdadm.doc-base.recipes
new file mode 100644
index 00000000..d1069682
--- /dev/null
+++ b/debian/mdadm.doc-base.recipes
@@ -0,0 +1,9 @@
+Document: mdadm-readme-recipes
+Title: mdadm Debian recipes
+Author: David Pashley
+Abstract: The document contains some common recipes for mdadm usage on Debian
+Section: System/Administration
+
+Format: text
+Index: /usr/share/doc/mdadm/README.recipes.gz
+Files: /usr/share/doc/mdadm/README.recipes.gz
diff --git a/debian/mdadm.docs b/debian/mdadm.docs
new file mode 100644
index 00000000..64e9a2d8
--- /dev/null
+++ b/debian/mdadm.docs
@@ -0,0 +1,8 @@
+debian/docs/*
+TODO
+debian/README.recipes
+debian/README.checkarray
+debian/FAQ
+ANNOUNCE-*
+external-reshape-design.txt
+mdmon-design.txt
diff --git a/debian/mdadm.examples b/debian/mdadm.examples
new file mode 100644
index 00000000..a71fd894
--- /dev/null
+++ b/debian/mdadm.examples
@@ -0,0 +1,2 @@
+mdadm.conf-example
+misc/syslog-events
diff --git a/debian/mdadm.init b/debian/mdadm.init
new file mode 100644
index 00000000..d8855f61
--- /dev/null
+++ b/debian/mdadm.init
@@ -0,0 +1,93 @@
+#!/bin/sh
+#
+# Start the MD monitor daemon for all active MD arrays if desired.
+#
+# Copyright © 2001-2005 Mario Jou/3en <joussen@debian.org>
+# Copyright © 2005-2009 Martin F. Krafft <madduck@debian.org>
+# Distributable under the terms of the GNU GPL version 2.
+#
+### BEGIN INIT INFO
+# Provides: mdadm
+# Required-Start: $local_fs $syslog mdadm-raid
+# Required-Stop: $local_fs $syslog sendsigs mdadm-raid
+# Default-Start: 2 3 4 5
+# Default-Stop: 0 1 6
+# Short-Description: MD monitoring daemon
+# Description: mdadm provides a monitor mode, in which it will scan for
+# problems with the MD devices. If a problem is found, the
+# administrator is alerted via email, or a custom script is
+# run.
+### END INIT INFO
+#
+set -eu
+
+MDADM=/sbin/mdadm
+MDMON=/sbin/mdmon
+RUNDIR=/run/mdadm
+PIDFILE=$RUNDIR/monitor.pid
+DEBIANCONFIG=/etc/default/mdadm
+
+test -x "$MDADM" || exit 0
+
+test -f /proc/mdstat || exit 0
+
+START_DAEMON=true
+test -f $DEBIANCONFIG && . $DEBIANCONFIG
+
+. /lib/lsb/init-functions
+
+is_true()
+{
+ case "${1:-}" in
+ [Yy]es|[Yy]|1|[Tt]|[Tt]rue) return 0;;
+ *) return 1;
+ esac
+}
+
+case "${1:-}" in
+ start)
+ if is_true $START_DAEMON; then
+ log_daemon_msg "Starting MD monitoring service" "mdadm --monitor"
+ mkdir -p $RUNDIR
+ set +e
+ start-stop-daemon -S -p $PIDFILE -x $MDADM -- \
+ --monitor --pid-file $PIDFILE --daemonise --scan ${DAEMON_OPTIONS:-}
+ log_end_msg $?
+ set -e
+ fi
+ if [ "$(echo $RUNDIR/md[0-9]*.pid)" != "$RUNDIR/md[0-9]*.pid" ]; then
+ log_daemon_msg "Restarting MD external metadata monitor" "mdmon --takeover --all"
+ set +e
+ $MDMON --takeover --all
+ log_end_msg $?
+ set -e
+ fi
+ ;;
+ stop)
+ if [ -f $PIDFILE ] ; then
+ log_daemon_msg "Stopping MD monitoring service" "mdadm --monitor"
+ set +e
+ start-stop-daemon -K -p $PIDFILE -x $MDADM
+ rm -f $PIDFILE
+ log_end_msg $?
+ set -e
+ fi
+ for file in $RUNDIR/md[0-9]*.pid ; do
+ [ ! -f "$file" ] && continue
+ ln -sf $file /run/sendsigs.omit.d/mdmon-${file##*/}
+ done
+ ;;
+ status)
+ status_of_proc -p $PIDFILE "$MDADM" "mdadm" && exit 0 || exit $?
+ ;;
+ restart|reload|force-reload)
+ ${0:-} stop
+ ${0:-} start
+ ;;
+ *)
+ echo "Usage: ${0:-} {start|stop|status|restart|reload|force-reload}" >&2
+ exit 1
+ ;;
+esac
+
+exit 0
diff --git a/debian/mdadm.links b/debian/mdadm.links
new file mode 100644
index 00000000..48ae6562
--- /dev/null
+++ b/debian/mdadm.links
@@ -0,0 +1 @@
+sbin/mdadm-startall usr/share/mdadm/startall
diff --git a/debian/mdadm.lintian-overrides b/debian/mdadm.lintian-overrides
new file mode 100644
index 00000000..a7164651
--- /dev/null
+++ b/debian/mdadm.lintian-overrides
@@ -0,0 +1 @@
+mdadm: init.d-script-possible-missing-stop etc/init.d/mdadm-raid 1
diff --git a/debian/mdadm.logcheck.ignore.server b/debian/mdadm.logcheck.ignore.server
new file mode 100644
index 00000000..051c4732
--- /dev/null
+++ b/debian/mdadm.logcheck.ignore.server
@@ -0,0 +1,23 @@
+^\w{3} [ :0-9]{11} [._[:alnum:]-]+ kernel:( \[ *[[:digit:]]+\.[[:digit:]]+\])? md: md driver [.[:digit:]]+ MAX_MD_DEVS=[[:digit:]]+, MD_SB_DISKS=[[:digit:]]+$
+^\w{3} [ :0-9]{11} [._[:alnum:]-]+ kernel:( \[ *[[:digit:]]+\.[[:digit:]]+\])? md: bitmap version [.[:digit:]]+$
+^\w{3} [ :0-9]{11} [._[:alnum:]-]+ kernel:( \[ *[[:digit:]]+\.[[:digit:]]+\])? md: md[[:digit:]]+ stopped\.$
+^\w{3} [ :0-9]{11} [._[:alnum:]-]+ kernel:( \[ *[[:digit:]]+\.[[:digit:]]+\])? md: md[[:digit:]]+ still in use\.$
+^\w{3} [ :0-9]{11} [._[:alnum:]-]+ kernel:( \[ *[[:digit:]]+\.[[:digit:]]+\])? md: cannot remove active disk [[:alnum:]]+ from md[[:digit:]]+ \.\.\. ?$
+^\w{3} [ :0-9]{11} [._[:alnum:]-]+ kernel:( \[ *[[:digit:]]+\.[[:digit:]]+\])? md: raid([01456]|456|10) personality registered for level ([01456]|10)$
+^\w{3} [ :0-9]{11} [._[:alnum:]-]+ kernel:( \[ *[[:digit:]]+\.[[:digit:]]+\])? md: (data-check|requested-resync|resync|reshape|recovery) of RAID array md[[:digit:]]+$
+^\w{3} [ :0-9]{11} [._[:alnum:]-]+ kernel:( \[ *[[:digit:]]+\.[[:digit:]]+\])? md: resuming (data-check|requested-resync|resync|reshape|recovery) of md[[:digit:]]+ from checkpoint\.$
+^\w{3} [ :0-9]{11} [._[:alnum:]-]+ kernel:( \[ *[[:digit:]]+\.[[:digit:]]+\])? md: md[[:digit:]]+: (data-check|requested-resync|resync|reshape|recovery) done\.$
+^\w{3} [ :0-9]{11} [._[:alnum:]-]+ kernel:( \[ *[[:digit:]]+\.[[:digit:]]+\])? md: minimum _guaranteed_ ?speed: [[:digit:]]+ KB/sec/disk\.$
+^\w{3} [ :0-9]{11} [._[:alnum:]-]+ kernel:( \[ *[[:digit:]]+\.[[:digit:]]+\])? md: using maximum available idle IO bandwidth \(but not more than [[:digit:]]+ KB/sec\) for (data-check|requested-resync|resync|reshape|recovery)\.$
+^\w{3} [ :0-9]{11} [._[:alnum:]-]+ kernel:( \[ *[[:digit:]]+\.[[:digit:]]+\])? md: delaying (data-check|requested-resync|resync|reshape|recovery) of md[[:digit:]]+ until md[[:digit:]]+ has finished \(they share one or more physical units\)$
+^\w{3} [ :0-9]{11} [._[:alnum:]-]+ kernel:( \[ *[[:digit:]]+\.[[:digit:]]+\])? md: using [[:digit:]]+k window, over a total of [[:digit:]]+( blocks|k)\.$
+^\w{3} [ :0-9]{11} [._[:alnum:]-]+ kernel:( \[ *[[:digit:]]+\.[[:digit:]]+\])? md: (un)?bind<[^>]+>$
+^\w{3} [ :0-9]{11} [._[:alnum:]-]+ kernel:( \[ *[[:digit:]]+\.[[:digit:]]+\])? md: export_rdev\([^)]+\)$
+^\w{3} [ :0-9]{11} [._[:alnum:]-]+ kernel:( \[ *[[:digit:]]+\.[[:digit:]]+\])? raid[[:digit:]]+: raid set [[:alnum:]]+ active with [[:digit:]]+ out of [[:digit:]]+ mirrors$
+^\w{3} [ :0-9]{11} [._[:alnum:]-]+ kernel:( \[ *[[:digit:]]+\.[[:digit:]]+\])? RAID([01456]|10) conf printout:$
+^\w{3} [ :0-9]{11} [._[:alnum:]-]+ kernel:( \[ *[[:digit:]]+\.[[:digit:]]+\])?[[:space:]]+---( [wrf]d:[[:digit:]]+){2,3}$
+^\w{3} [ :0-9]{11} [._[:alnum:]-]+ kernel:( \[ *[[:digit:]]+\.[[:digit:]]+\])?[[:space:]]+disk [[:digit:]]+,( wo:[[:digit:]]+,)? o:[[:digit:]]+, dev:[[:alnum:]]+$
+^\w{3} [ :0-9]{11} [._[:alnum:]-]+ mdadm(\[[[:digit:]]+\])?: Rebuild((Start|Finish)ed|[[:digit:]]+) event detected on md device /dev/[-_./[:alnum:]]+$
+^\w{3} [ :0-9]{11} [._[:alnum:]-]+ mdadm(\[[[:digit:]]+\])?: SpareActive event detected on md device /dev/[-_./[:alnum:]]+, component device /dev/[-_./[:alnum:]]+$
+^\w{3} [ :0-9]{11} [._[:alnum:]-]+ mdadm(\[[[:digit:]]+\])?: (New|Degraded)Array event detected on md device /dev/[-_./[:alnum:]]+$
+^\w{3} [ :0-9]{11} [._[:alnum:]-]+ mdadm(\[[[:digit:]]+\])?: DeviceDisappeared event detected on md device /dev/[-_./[:alnum:]]+$
diff --git a/debian/mdadm.logcheck.violations b/debian/mdadm.logcheck.violations
new file mode 100644
index 00000000..ea8cce72
--- /dev/null
+++ b/debian/mdadm.logcheck.violations
@@ -0,0 +1,3 @@
+^\w{3} [ :0-9]{11} [._[:alnum:]-]+ kernel:( \[ *[[:digit:]]+\.[[:digit:]]+\])? md: kicking non-fresh [[:alnum:]]+ from array!$
+^\w{3} [ :0-9]{11} [._[:alnum:]-]+ kernel:( \[ *[[:digit:]]+\.[[:digit:]]+\])? raid[[:digit:]]+: Disk failure on [[:alnum:]]+, disabling device\.$
+^\w{3} [ :0-9]{11} [._[:alnum:]-]+ kernel:( \[ *[[:digit:]]+\.[[:digit:]]+\])?[[:space:]]+Operation continuing on [[:digit:]]+ devices?$
diff --git a/debian/mdadm.manpages b/debian/mdadm.manpages
new file mode 100644
index 00000000..65605c78
--- /dev/null
+++ b/debian/mdadm.manpages
@@ -0,0 +1 @@
+debian/mdadm-startall.8
diff --git a/debian/mdadm.postinst b/debian/mdadm.postinst
new file mode 100644
index 00000000..8dc90b8a
--- /dev/null
+++ b/debian/mdadm.postinst
@@ -0,0 +1,183 @@
+#!/bin/sh
+# Copyright © 2001-2005 Mario Jou/3en <joussen@debian.org>
+# Copyright © 2005-2008 Martin F. Krafft <madduck@debian.org>
+# Distributable under the terms of the GNU GPL version 2.
+#
+
+. /usr/share/debconf/confmodule
+# See #369953 for ordering
+set -eu
+
+case "${1:-}" in
+ configure|reconfigure)
+
+ if [ ! -f /proc/mdstat ] && [ -x $(command -v modprobe 2>/dev/null) ]; then
+ modprobe md >/dev/null 2>&1 || :
+ fi
+ if [ ! -f /proc/mdstat ]; then
+ echo 'W: mdadm: failed to load MD subsystem.' >&2
+ fi
+
+ MAKEDEV=/dev/MAKEDEV
+ if [ ! -e /dev/md15 ] \
+ && [ ! -e /dev/.static/dev/md15 ] \
+ && [ ! -e /dev/.devfsd ] \
+ && [ -x $MAKEDEV ]; then
+
+ echo -n 'Generating array device nodes... ' >&2
+ cd /dev
+ if $MAKEDEV md >&2 >/dev/null; then
+ echo 'done.' >&2
+ else
+ echo 'failed.' >&2
+ fi
+ fi
+
+ DEBIANCONFIG=/etc/default/mdadm
+ CONFIG=/etc/mdadm/mdadm.conf
+ ALTCONFIG=/etc/mdadm.conf
+ MDADM=/sbin/mdadm
+
+ if [ -z "${2:-}" ] && [ -s /etc/mdctl/mdctl.conf ] \
+ && [ ! -f /etc/mdadm/mdadm.conf ]; then
+ cp -a /etc/mdctl/mdctl.conf /etc/mdadm/mdadm.conf
+ fi
+
+ # load current settings, most of which will be overwritten.
+ [ -f $DEBIANCONFIG ] && . $DEBIANCONFIG
+
+ db_get mdadm/mail_to
+ MAILADDR="${RET:-root}"
+
+ [ ! -f $CONFIG ] && [ -f $ALTCONFIG ] && CONFIG=$ALTCONFIG
+ if [ ! -f $CONFIG ]; then
+ echo -n 'Generating mdadm.conf... ' >&2
+ # pass the MAILADDR variable into the script
+ MDADM_MAILADDR__="$MAILADDR"; export MDADM_MAILADDR__
+ if /usr/share/mdadm/mkconf generate $CONFIG 2>/dev/null; then
+ echo done. >&2
+ else
+ echo "done (failed to scan arrays; /proc probably not mounted)." >&2
+ fi
+ elif dpkg --compare-versions "${2:-2.5.3-1}" le 2.5.3-1; then
+ # we're upgrading from before 2.5.3-1 and there's apparently already
+ # a configuration file which we cannot verify. We'll use the sentinel
+ # during initramfs creation.
+ md5sum $CONFIG > /var/lib/mdadm/CONF-UNCHECKED
+ fi
+
+ if [ -w $CONFIG ] && [ -z "${MDADM_MAILADDR__:-}" ]; then
+ # if the configuration is writeable but has not been written just
+ # before, then edit it to reflect the MAILADDR preference
+ if grep -q '^MAILADDR' $CONFIG; then
+ sed -i -e "s/^MAILADDR.*/MAILADDR $MAILADDR/" $CONFIG
+ else
+ echo "MAILADDR $MAILADDR" >> $CONFIG
+ fi
+ fi
+ unset MDADM_MAILADDR__
+
+ db_get mdadm/initrdstart
+ INITRDSTART="${RET:-all}"
+ db_get mdadm/autostart
+ AUTOSTART="${RET:-true}"
+ db_get mdadm/autocheck
+ AUTOCHECK="${RET:-true}"
+ db_get mdadm/start_daemon
+ START_DAEMON="${RET:-true}"
+ #db_get mdadm/daemon_options
+ [ -n "${DAEMON_OPTIONS:-}" ] || DAEMON_OPTIONS='--syslog'
+
+ cat <<_eof > $DEBIANCONFIG
+# mdadm Debian configuration
+#
+# You can run 'dpkg-reconfigure mdadm' to modify the values in this file, if
+# you want. You can also change the values here and changes will be preserved.
+# Do note that only the values are preserved; the rest of the file is
+# rewritten.
+#
+
+# INITRDSTART:
+# list of arrays (or 'all') to start automatically when the initial ramdisk
+# loads. This list *must* include the array holding your root filesystem. Use
+# 'none' to prevent any array from being started from the initial ramdisk.
+INITRDSTART='$INITRDSTART'
+
+# AUTOSTART:
+# should mdadm start arrays listed in /etc/mdadm/mdadm.conf automatically
+# during boot?
+AUTOSTART=$AUTOSTART
+
+# AUTOCHECK:
+# should mdadm run periodic redundancy checks over your arrays? See
+# /etc/cron.d/mdadm.
+AUTOCHECK=$AUTOCHECK
+
+# START_DAEMON:
+# should mdadm start the MD monitoring daemon during boot?
+START_DAEMON=$START_DAEMON
+
+# DAEMON_OPTIONS:
+# additional options to pass to the daemon.
+DAEMON_OPTIONS="$DAEMON_OPTIONS"
+
+# VERBOSE:
+# if this variable is set to true, mdadm will be a little more verbose e.g.
+# when creating the initramfs.
+VERBOSE=${VERBOSE:-false}
+
+# MAIL_TO:
+# this variable is now managed in /etc/mdadm/mdadm.conf (MAILADDR).
+# Please see mdadm.conf(5).
+_eof
+
+ db_stop
+
+ # try to undo udev rules (installed by 2.5.2-10, see 2.5.3.git200608202239-1
+ # changelog). Do this before update-initramfs, which copies udev into
+ # initrd.
+ V=2.5.3.git200608202239-1~
+ if [ "${1:-}" = "configure" ] && [ -n "${2:-}" ] \
+ && dpkg --compare-versions $2 ge 2.5.2-10 \
+ && dpkg --compare-versions $2 lt $V; then
+
+ # first, disable the rules
+ rm -f /etc/udev/rules.d/z60_mdadm.rules
+
+ if echo "0843432c9c01ed95c42481eee0cf6fbf /etc/udev/mdadm.rules" \
+ | md5sum -c >/dev/null; then
+ # no changes by user, so remove
+ rm -f /etc/udev/mdadm.rules
+ else
+ echo "W: mdadm: I tried to remove /etc/udev/mdadm.rules (see changelog)," >&2
+ echo "W: mdadm: but you have modified it, so I won't touch it. Please" >&2
+ echo "W: mdadm: remove the file at your leisure." >&2
+ fi
+ fi
+
+ command -v update-initramfs >/dev/null 2>&1 && update-initramfs -u
+ ;;
+esac
+
+# remove S04 installed as a fix to #294404 as it does not work
+# we only remove the startup links if the previous version was 1.9.0-2.1 (the
+# one with the erroneous fix) and the S04 link exists to make sure that
+# chances are minimised to overwrite admin changes (even though this would
+# not affect woody upgraders)
+if [ "${1:-}" = "configure" ] && [ "${2:-}" = "1.9.0-2.1" ] \
+ && test -L /etc/rcS.d/S04mdadm-raid;
+then
+ update-rc.d -f mdadm-raid remove
+fi
+
+if [ "${1:-}" = "configure" ] && dpkg --compare-versions ${2:-2.6.7-1} lt 2.6.7-1; then
+ # stop RAIDs a bit later, see #486012
+ for i in 0 6; do
+ test -L /etc/rc${i}.d/S50mdadm-raid && test ! -L /etc/rc${i}.d/S60mdadm-raid \
+ && mv /etc/rc${i}.d/S50mdadm-raid /etc/rc${i}.d/S60mdadm-raid
+ done
+fi
+
+# See #369953
+set +u
+#DEBHELPER#
diff --git a/debian/mdadm.postrm b/debian/mdadm.postrm
new file mode 100644
index 00000000..387fbeaf
--- /dev/null
+++ b/debian/mdadm.postrm
@@ -0,0 +1,33 @@
+#! /bin/sh
+# Copyright © 2001,2002 Mario Jou/3en <joussen@debian.org>
+# Copyright © 2006-2008 Martin F. Krafft <madduck@debian.org>
+# Distributable under the terms of the GNU GPL version 2.
+#
+set -eu
+
+case "${1:-}" in
+ remove)
+ if command -v update-initramfs >/dev/null 2>&1; then
+ echo "W: mdadm: I'll update the initramfs, but if you need MD to boot" >&2
+ echo "W: mdadm: with initramfs, your system may be left unbootable!" >&2
+ update-initramfs -u
+ fi
+ ;;
+
+ purge)
+ GEN_SENTINEL=/var/lib/mdadm/mdadm.conf-generated
+ if [ -r $GEN_SENTINEL ]; then
+ rm -f "$(sed -rne 's,[[:xdigit:]]+ ,,p' $GEN_SENTINEL)"
+ fi
+ rm -f /etc/default/mdadm /etc/mdadm.conf /etc/mdadm/mdadm.conf
+ rm -rf /var/lib/mdadm
+ ;;
+
+ *) :;;
+esac
+
+# just in case somebody actually purges mdadm, we need this to make debconf
+# (added by dh_installdebconf) behave. See #369953
+set +u
+#DEBHELPER#
+set -u
diff --git a/debian/mdadm.preinst b/debian/mdadm.preinst
new file mode 100644
index 00000000..dc6c48ef
--- /dev/null
+++ b/debian/mdadm.preinst
@@ -0,0 +1,56 @@
+#!/bin/sh
+# Copyright © martin f. krafft <madduck@debian.org>
+# Distributed under the terms of the Artistic Licence 2.0
+#
+set -eu
+
+# based on idea from http://www.dpkg.org/dpkg/ConffileHandling
+rm_conffile() {
+ local conffile md5sum package old_md5sum
+
+ conffile="$1"
+ if [ -e "$conffile" ]; then
+ md5sum=$(md5sum "$conffile" | cut -d' ' -f1)
+ package=$(dpkg -S "$conffile" | cut -d: -f1)
+ old_md5sum=$(dpkg -s $package | sed -rne "s,[[:space:]]+${conffile}[[:space:]]+,,p")
+ if [ "$md5sum" != "$old_md5sum" ]; then
+ echo "Obsolete conffile $conffile has been modified by you."
+ echo "Saving as ${conffile}.dpkg-bak ..."
+ mv -f "$conffile" "$conffile".dpkg-bak
+ else
+ echo "Removing obsolete conffile $conffile ..."
+ rm -f "$conffile"
+ fi
+ fi
+}
+
+case "$1" in
+
+ upgrade|install)
+
+ # migrate old configuration from *way back then*
+ DEBIANCONFIG=/etc/default/mdadm
+ OLDCONFIG=/etc/mdadm/debian.conf
+ if [ -s $OLDCONFIG ] && [ ! -f $DEBIANCONFIG ]; then
+ mv $OLDCONFIG $DEBIANCONFIG
+ fi
+
+ # save the v1 output of -Es just in case we need it for upgrades
+ MDADM=/sbin/mdadm
+ if [ -x "$MDADM" ] && [ -n "${2:-}" ] && \
+ dpkg --compare-versions $2 lt 2; then
+ echo DEVICE partitions > /var/backups/mdadm-Es_v1.dump
+ $MDADM -Esc /var/backups/mdadm-Es_v1.dump >> /var/backups/mdadm-Es_v1.dump || :
+ fi
+
+ # Used incorrect name s/_/-/, keep all throughout until after jessie is released.
+ rm_conffile /etc/udev/rules.d/65-mdadm.vol_id.rules
+ ;;
+
+ *) :;;
+esac
+
+# See #369953
+set +u
+#DEBHELPER#
+set -u
diff --git a/debian/mdadm.templates b/debian/mdadm.templates
new file mode 100644
index 00000000..4ff10362
--- /dev/null
+++ b/debian/mdadm.templates
@@ -0,0 +1,110 @@
+# These templates have been reviewed by the debian-l10n-english
+# team
+#
+# If modifications/additions/rewording are needed, please ask
+# debian-l10n-english@lists.debian.org for advice.
+#
+# Even minor modifications require translation updates and such
+# changes should be coordinated with translators and reviewers.
+
+Template: mdadm/initrdstart
+Type: string
+Default: all
+#flag:translate!:2
+_Description: MD arrays needed for the root file system:
+ ${msg}
+ .
+ Please enter 'all', 'none', or a space-separated list of devices such as
+ 'md0 md1' or 'md/1 md/d0' (the leading '/dev/' can be omitted).
+
+Template: mdadm/initrdstart_msg_intro
+Type: text
+_Description: for internal use - only the long description is needed.
+ If the system's root file system is located on an MD array (RAID), it needs to be
+ started early during the boot sequence. If it is located on
+ a logical volume (LVM), which is on MD, all constituent arrays need to be
+ started.
+ .
+ If you know exactly which arrays are needed to bring up the root file system,
+ and you want to postpone starting all other arrays to a later point in the
+ boot sequence, enter the arrays to start here. Alternatively, enter 'all' to
+ simply start all available arrays.
+ .
+ If you do not need or want to start any arrays for the root file system, leave
+ the answer blank (or enter 'none'). This may be the case if you are using
+ kernel autostart or do not need any arrays to boot.
+
+Template: mdadm/initrdstart_msg_errexist
+Type: text
+_Description:
+ An error occurred: device node does not exist
+
+Template: mdadm/initrdstart_msg_errblock
+Type: text
+_Description:
+ An error occurred: not a block device
+
+Template: mdadm/initrdstart_msg_errmd
+Type: text
+_Description:
+ An error occurred: not an MD array
+
+Template: mdadm/initrdstart_msg_errconf
+Type: text
+_Description:
+ An error occurred: array not listed in mdadm.conf file
+
+Template: mdadm/initrdstart_notinconf
+Type: boolean
+Default: false
+_Description: Start arrays not listed in mdadm.conf?
+ The specified array (${array}) is not listed in the configuration
+ file (${config}). Therefore, it cannot be started during boot, unless you
+ correct the configuration file and recreate the initial ramdisk.
+ .
+ This warning is only relevant if you need arrays to be started from the
+ initial ramdisk to be able to boot. If you use kernel autostarting, or do not
+ need any arrays to be started as early as the initial ramdisk is loaded, you
+ can simply continue. Alternatively, choose not to continue and enter 'none'
+ when prompted which arrays to start from the initial ramdisk.
+
+Template: mdadm/autostart
+Type: boolean
+Default: true
+_Description: Do you want to start MD arrays automatically?
+ Once the base system has booted, mdadm can start all MD arrays
+ (RAIDs) specified in /etc/mdadm/mdadm.conf which have not yet been
+ started. This is recommended unless multiple device (MD) support is
+ compiled into the kernel and all partitions are marked as belonging
+ to MD arrays, with type 0xfd (as those and only those will be started
+ automatically by the kernel).
+
+Template: mdadm/autocheck
+Type: boolean
+Default: true
+_Description: Should mdadm run monthly redundancy checks of the MD arrays?
+ If the kernel supports it (versions greater than 2.6.14), mdadm can periodically check the
+ redundancy of MD arrays (RAIDs). This may be a resource-intensive process,
+ depending on the local setup, but it could help prevent rare cases of data loss.
+ Note that this is a read-only check unless errors are found; if errors are
+ found, mdadm will try to correct them, which may result in write access to
+ the media.
+ .
+ The default, if turned on, is to check on the first Sunday of every
+ month at 01:06.
+
+Template: mdadm/start_daemon
+Type: boolean
+Default: true
+_Description: Do you want to start the MD monitoring daemon?
+ The MD (RAID) monitor daemon sends email notifications in response to
+ important MD events (such as a disk failure).
+ .
+ Enabling this option is recommended.
+
+Template: mdadm/mail_to
+Type: string
+Default: root
+_Description: Recipient for email notifications:
+ Please enter the email address of the user who should get the email
+ notifications for important MD events.
diff --git a/debian/mkconf.in b/debian/mkconf.in
new file mode 100644
index 00000000..129d497b
--- /dev/null
+++ b/debian/mkconf.in
@@ -0,0 +1,114 @@
+#!/bin/sh
+#
+# mkconf -- outputs valid mdadm.conf contents for the local system
+#
+# Copyright © martin f. krafft <madduck@madduck.net>
+# distributed under the terms of the Artistic Licence 2.0
+#
+set -eu
+
+ME="${0##*/}"
+VERSION=%VERSION%
+MDADM=/sbin/mdadm
+DEBIANCONFIG=/etc/default/mdadm
+CONFIG=/etc/mdadm/mdadm.conf
+
+# initialise config variables in case the environment leaks
+MAILADDR= DEVICE= CREATE= HOMEHOST= PROGRAM=
+
+test -r $DEBIANCONFIG && . $DEBIANCONFIG
+
+if [ -n "${MDADM_MAILADDR__:-}" ]; then
+ # honour MAILADDR from the environment (from postinst)
+ MAILADDR="$MDADM_MAILADDR__"
+else
+ # preserve existing MAILADDR
+ MAILADDR="$(sed -ne 's/^MAILADDR //p' $CONFIG 2>/dev/null)" || :
+fi
+
+# save existing values as defaults
+if [ -r "$CONFIG" ]; then
+ DEVICE="$(sed -ne 's/^DEVICE //p' $CONFIG)"
+ CREATE="$(sed -ne 's/^CREATE //p' $CONFIG)"
+ HOMEHOST="$(sed -ne 's/^HOMEHOST //p' $CONFIG)"
+ PROGRAM="$(sed -ne 's/^PROGRAM //p' $CONFIG)"
+fi
+
+generate=0
+[ "${1:-}" = force-generate ] && rm -f $CONFIG
+case "${1:-}" in
+ generate|force-generate)
+ [ -n "${2:-}" ] && CONFIG=$2
+ # only barf if the config file specifies anything else than MAILADDR
+ if egrep -qv '^(MAILADDR.*|#.*|)$' $CONFIG 2>/dev/null; then
+ echo "E: $ME: $CONFIG already exists." >&2
+ exit 255
+ fi
+
+ mkdir --parent ${CONFIG%/*}
+ exec >$CONFIG
+ generate=1
+ ;;
+esac
+
+cat <<_eof
+# mdadm.conf
+#
+# Please refer to mdadm.conf(5) for information about this file.
+#
+
+# by default (built-in), scan all partitions (/proc/partitions) and all
+# containers for MD superblocks. alternatively, specify devices to scan, using
+# wildcards if desired.
+#DEVICE ${DEVICE:-partitions containers}
+
+# auto-create devices with Debian standard permissions
+CREATE ${CREATE:-owner=root group=disk mode=0660 auto=yes}
+
+# automatically tag new arrays as belonging to the local system
+HOMEHOST ${HOMEHOST:-<system>}
+
+# instruct the monitoring daemon where to send mail alerts
+MAILADDR ${MAILADDR:-root}
+
+_eof
+
+if [ -n "${PROGRAM:-}" ]; then
+ cat <<-_eof
+ # program to run when mdadm monitor detects potentially interesting events
+ PROGRAM ${PROGRAM}
+
+ _eof
+fi
+
+error=0
+if [ ! -r /proc/mdstat ]; then
+ echo W: $ME: MD subsystem is not loaded, thus I cannot scan for arrays. >&2
+ error=1
+elif [ ! -r /proc/partitions ]; then
+ echo W: $ME: /proc/partitions cannot be read, thus I cannot scan for arrays. >&2
+ error=2
+else
+ echo "# definitions of existing MD arrays"
+ if ! $MDADM --examine --scan --config=partitions; then
+ error=$(($? + 128))
+ echo W: $ME: failed to scan for partitions. >&2
+ echo "### WARNING: scan failed."
+ else
+ echo
+ fi
+fi
+
+if [ $generate -eq 1 ]; then
+ echo "# This file was auto-generated on $(date -R)"
+else
+ echo "# This configuration was auto-generated on $(date -R)"
+fi
+echo "# by mkconf $VERSION"
+
+if [ $generate -eq 1 ]; then
+ mkdir -p /var/lib/mdadm
+ md5sum $CONFIG > /var/lib/mdadm/mdadm.conf-generated
+fi
+
+exit $error
diff --git a/debian/patches/debian-conffile-location.diff b/debian/patches/debian-conffile-location.diff
new file mode 100644
index 00000000..8acc6077
--- /dev/null
+++ b/debian/patches/debian-conffile-location.diff
@@ -0,0 +1,115 @@
+From: martin f. krafft <madduck@debian.org>
+Subject: Set /etc/mdadm/mdadm.conf as primary config file location
+
+On Debian, the configuration file resides primarily in /etc/mdadm/mdadm.conf,
+/etc/mdadm.conf is only used as a backup.
+
+This is a Debian-specific patch.
+
+Forwarded: not-needed
+Reviewed-by: martin f. krafft <madduck@debian.org>
+
+---
+ Makefile | 4 ++--
+ ReadMe.c | 2 +-
+ mdadm.8.in | 14 ++++++--------
+ mdadm.conf.5 | 2 +-
+ mdassemble.8 | 2 +-
+ 5 files changed, 11 insertions(+), 13 deletions(-)
+
+--- a/Makefile
++++ b/Makefile
+@@ -61,8 +61,8 @@
+ PKG_CONFIG ?= pkg-config
+
+ SYSCONFDIR = /etc
+-CONFFILE = $(SYSCONFDIR)/mdadm.conf
+-CONFFILE2 = $(SYSCONFDIR)/mdadm/mdadm.conf
++CONFFILE = $(SYSCONFDIR)/mdadm/mdadm.conf
++CONFFILE2 = $(SYSCONFDIR)/mdadm.conf
+ MAILCMD =/usr/sbin/sendmail -t
+ CONFFILEFLAGS = -DCONFFILE=\"$(CONFFILE)\" -DCONFFILE2=\"$(CONFFILE2)\"
+ # Both MAP_DIR and MDMON_DIR should be somewhere that persists across the
+--- a/ReadMe.c
++++ b/ReadMe.c
+@@ -590,7 +590,7 @@
+ ;
+
+ char Help_config[] =
+-"The /etc/mdadm.conf config file:\n\n"
++"The /etc/mdadm/mdadm.conf config file:\n\n"
+ " The config file contains, apart from blank lines and comment lines that\n"
+ " start with a hash(#), array lines, device lines, and various\n"
+ " configuration lines.\n"
+--- a/mdadm.8.in
++++ b/mdadm.8.in
+@@ -264,13 +264,13 @@
+ .TP
+ .BR \-c ", " \-\-config=
+ Specify the config file or directory. Default is to use
+-.B /etc/mdadm.conf
++.B /etc/mdadm/mdadm.conf
+ and
+-.BR /etc/mdadm.conf.d ,
++.BR /etc/mdadm/mdadm.conf.d ,
+ or if those are missing then
+-.B /etc/mdadm/mdadm.conf
++.B /etc/mdadm.conf
+ and
+-.BR /etc/mdadm/mdadm.conf.d .
++.BR /etc/mdadm.conf.d .
+ If the config file given is
+ .B "partitions"
+ then nothing will be read, but
+@@ -1742,9 +1742,9 @@
+ or requested with (a possibly implicit)
+ .BR \-\-scan .
+ In the later case,
+-.B /etc/mdadm.conf
+-or
+ .B /etc/mdadm/mdadm.conf
++or
++.B /etc/mdadm.conf
+ is used.
+
+ If
+@@ -3003,7 +3003,7 @@
+ is given in Misc mode, and to monitor array reconstruction
+ on Monitor mode.
+
+-.SS /etc/mdadm.conf
++.SS /etc/mdadm/mdadm.conf (or /etc/mdadm.conf)
+
+ The config file lists which devices may be scanned to see if
+ they contain MD super block, and gives identifying information
+@@ -3011,7 +3011,7 @@
+ .BR mdadm.conf (5)
+ for more details.
+
+-.SS /etc/mdadm.conf.d
++.SS /etc/mdadm/mdadm.conf.d (or /etc/mdadm.conf.d)
+
+ A directory containing configuration files which are read in lexical
+ order.
+--- a/mdadm.conf.5
++++ b/mdadm.conf.5
+@@ -8,7 +8,7 @@
+ .SH NAME
+ mdadm.conf \- configuration for management of Software RAID with mdadm
+ .SH SYNOPSIS
+-/etc/mdadm.conf
++/etc/mdadm/mdadm.conf
+ .SH DESCRIPTION
+ .PP
+ .I mdadm
+--- a/mdassemble.8
++++ b/mdassemble.8
+@@ -40,7 +40,7 @@
+
+ .SH FILES
+
+-.SS /etc/mdadm.conf
++.SS /etc/mdadm/mdadm.conf
+
+ The config file lists which devices may be scanned to see if
+ they contain MD super block, and gives identifying information
diff --git a/debian/patches/debian-no-Werror.diff b/debian/patches/debian-no-Werror.diff
new file mode 100644
index 00000000..0a427f16
--- /dev/null
+++ b/debian/patches/debian-no-Werror.diff
@@ -0,0 +1,24 @@
+From: martin f. krafft <madduck@debian.org>
+Subject: Remove -Werror from compiler flags
+
+-Werror seems like a bad idea on released/packaged code because a toolchain
+update (introducing new warnings) could break the build. We'll let upstream
+use it to beautify the code, but remove it for out builds.
+
+Signed-off-by: martin f. krafft <madduck@debian.org>
+
+---
+ Makefile | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+--- a/Makefile
++++ b/Makefile
+@@ -43,7 +43,7 @@
+
+ CC = $(CROSS_COMPILE)gcc
+ CXFLAGS ?= -ggdb
+-CWFLAGS = -Wall -Werror -Wstrict-prototypes -Wextra -Wno-unused-parameter
++CWFLAGS = -Wall -Wstrict-prototypes -Wextra -Wno-unused-parameter
+ ifdef WARN_UNUSED
+ CWFLAGS += -Wp,-D_FORTIFY_SOURCE=2 -O3
+ endif
diff --git a/debian/patches/remove-bashism-from-makefile.patch b/debian/patches/remove-bashism-from-makefile.patch
new file mode 100644
index 00000000..06dff2f9
--- /dev/null
+++ b/debian/patches/remove-bashism-from-makefile.patch
@@ -0,0 +1,22 @@
+From: Michael Tokarev <mjt@tls.msk.ru>
+Subject: Remove bashism from Makefile
+
+Makefile uses [ x == y ] construct which does not work
+with POSIX shell. Since this is just testing a flag,
+replace it with string comparison (=) operator instead.
+
+Signed-off-By: Michael Tokarev <mjt@tls.msk.ru>
+
+diff --git a/Makefile b/Makefile
+index e8da3a5..c60cc2c 100644
+--- a/Makefile
++++ b/Makefile
+@@ -156,7 +156,7 @@ all : check_rundir mdadm mdmon
+ man : mdadm.man md.man mdadm.conf.man mdmon.man raid6check.man
+
+ check_rundir:
+- @if [ ! -d "$(dir $(RUN_DIR))" -a "$(CHECK_RUN_DIR)" == 1 ]; then \
++ @if [ ! -d "$(dir $(RUN_DIR))" -a "$(CHECK_RUN_DIR)" = 1 ]; then \
+ echo "***** Parent of $(RUN_DIR) does not exist. Maybe set different RUN_DIR="; \
+ echo "***** e.g. make RUN_DIR=/dev/.mdadm" ; \
+ echo "***** or set CHECK_RUN_DIR=0"; exit 1; \
diff --git a/debian/patches/series b/debian/patches/series
new file mode 100644
index 00000000..fb9bff85
--- /dev/null
+++ b/debian/patches/series
@@ -0,0 +1,5 @@
+debian-conffile-location.diff
+debian-no-Werror.diff
+sha1-includes.diff
+remove-bashism-from-makefile.patch
+use-external-blkid.diff
diff --git a/debian/patches/sha1-includes.diff b/debian/patches/sha1-includes.diff
new file mode 100644
index 00000000..0dfd7daf
--- /dev/null
+++ b/debian/patches/sha1-includes.diff
@@ -0,0 +1,40 @@
+From: Michael Tokarev <mjt@tls.msk.ru>
+Subject: do not #include ansidecl.h from sha1.h, use system headers
+
+In 3.2.5 version of mdadm, new sha1 implementation has been included
+which tries to include ansidecl.h header which is internal to some
+other project. But this #include isn't really necessary, since this
+implementation does not actually use any defines from ansidecl.h. So
+just remove the #include, instead of adding a new external dependency.
+
+References: http://www.spinics.net/lists/raid/msg38859.html
+
+While at it, unconditionally include system headers like limits.h and
+stdint.h, since on a Linux system these headers are available, and
+these contains definitive information about real system types than
+any guesses.
+
+--- a/sha1.h
++++ b/sha1.h
+@@ -22,7 +22,7 @@
+
+ #include <stdio.h>
+
+-#if defined HAVE_LIMITS_H || _LIBC
++#if 1 /* defined HAVE_LIMITS_H || _LIBC */
+ # include <limits.h>
+ #endif
+
+@@ -33,9 +33,9 @@
+ the resulting executable. Locally running cross-compiled executables
+ is usually not possible. */
+
+-#ifdef _LIBC
+-# include <sys/types.h>
+-typedef u_int32_t sha1_uint32;
++#if 1 /* def _LIBC */
++# include <stdint.h>
++typedef uint32_t sha1_uint32;
+ typedef uintptr_t sha1_uintptr;
+ #else
+ # define INT_MAX_32_BITS 2147483647
diff --git a/debian/patches/use-external-blkid.diff b/debian/patches/use-external-blkid.diff
new file mode 100644
index 00000000..637f7c3a
--- /dev/null
+++ b/debian/patches/use-external-blkid.diff
@@ -0,0 +1,16 @@
+From: Michael Tokarev <mjt@tls.msk.ru>
+Subject: blkid is not udev builtin, use /sbin/blkid
+
+--- a/udev-md-raid-arrays.rules
++++ b/udev-md-raid-arrays.rules
+@@ -26,9 +26,7 @@ ENV{DEVTYPE}=="partition", ENV{MD_UUID}=
+ ENV{DEVTYPE}=="partition", ENV{MD_DEVNAME}=="*[^0-9]", SYMLINK+="md/$env{MD_DEVNAME}%n"
+ ENV{DEVTYPE}=="partition", ENV{MD_DEVNAME}=="*[0-9]", SYMLINK+="md/$env{MD_DEVNAME}p%n"
+
+-IMPORT{builtin}="blkid"
+-OPTIONS+="link_priority=100"
+-OPTIONS+="watch"
++IMPORT{program}="/sbin/blkid -o udev -p -u noraid $tempnode"
+ ENV{ID_FS_USAGE}=="filesystem|other|crypto", ENV{ID_FS_UUID_ENC}=="?*", SYMLINK+="disk/by-uuid/$env{ID_FS_UUID_ENC}"
+ ENV{ID_FS_USAGE}=="filesystem|other", ENV{ID_FS_LABEL_ENC}=="?*", SYMLINK+="disk/by-label/$env{ID_FS_LABEL_ENC}"
+
diff --git a/debian/po/POTFILES.in b/debian/po/POTFILES.in
new file mode 100644
index 00000000..04922385
--- /dev/null
+++ b/debian/po/POTFILES.in
@@ -0,0 +1 @@
+[type: gettext/rfc822deb] mdadm.templates
diff --git a/debian/po/ca.po b/debian/po/ca.po
new file mode 100644
index 00000000..89103b2d
--- /dev/null
+++ b/debian/po/ca.po
@@ -0,0 +1,250 @@
+# mdadm Catalan translation.
+# Copyright (C) 2004-2006 Software in the Public Interest
+# This file is distributed under the same license as the squid package.
+# Innocent De Marchi <tangram.peces@gmail.com>, 2011.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: 3.1.4-1+8efb9d1\n"
+"Report-Msgid-Bugs-To: mdadm@packages.debian.org\n"
+"POT-Creation-Date: 2012-05-22 00:50+0100\n"
+"PO-Revision-Date: 2011-05-17 16:54+0100\n"
+"Last-Translator: Innocent De Marchi <tangram.peces@gmail.com>\n"
+"Language-Team: Catalan <debian-l10n-catalan@lists.debian.org>\n"
+"Language: ca\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Poedit-Language: Catalan\n"
+"X-Poedit-Country: SPAIN\n"
+
+#. Type: string
+#. Description
+#: ../mdadm.templates:2001
+msgid "MD arrays needed for the root file system:"
+msgstr "Les matrius MD necessaris per al sistema de fitxers arrel:"
+
+#. Type: string
+#. Description
+#: ../mdadm.templates:2001
+msgid ""
+"Please enter 'all', 'none', or a space-separated list of devices such as "
+"'md0 md1' or 'md/1 md/d0' (the leading '/dev/' can be omitted)."
+msgstr ""
+"Escriviu «all» (tots), «none» (cap) o una llista separada per espais dels "
+"dispositius com «md0 md1» o «md/1 md/d0» (podeu ometre el «/dev/» inicial)."
+
+#. Type: text
+#. Description
+#: ../mdadm.templates:3001
+msgid "for internal use - only the long description is needed."
+msgstr "per a ús intern, només és necessària la descripció llarga. "
+
+#. Type: text
+#. Description
+#: ../mdadm.templates:3001
+msgid ""
+"If the system's root file system is located on an MD array (RAID), it needs "
+"to be started early during the boot sequence. If it is located on a logical "
+"volume (LVM), which is on MD, all constituent arrays need to be started."
+msgstr ""
+"Si el sistema de fitxers arrel del sistema està en un conjunt MD (RAID), cal "
+"que s'iniciï al principi de la seqüència d'arrencada. Si està en un volum "
+"lògic (LVM), que està definit sobre un MD, cal iniciar totes les matrius que "
+"el constitueixen."
+
+#. Type: text
+#. Description
+#: ../mdadm.templates:3001
+msgid ""
+"If you know exactly which arrays are needed to bring up the root file "
+"system, and you want to postpone starting all other arrays to a later point "
+"in the boot sequence, enter the arrays to start here. Alternatively, enter "
+"'all' to simply start all available arrays."
+msgstr ""
+"Si sabeu exactament quines matrius són necessàries per arrencar el sistema "
+"de fitxers arrel, i vol ajornar l'arrencada de la resta de conjunts a un "
+"punt posterior de la seqüència d'arrencada, Introduïu aquí els conjunts que "
+"voleu arrencar. També podeu seleccionar «all» per, simplement, arrencar tots "
+"els disponibles."
+
+#. Type: text
+#. Description
+#: ../mdadm.templates:3001
+msgid ""
+"If you do not need or want to start any arrays for the root file system, "
+"leave the answer blank (or enter 'none'). This may be the case if you are "
+"using kernel autostart or do not need any arrays to boot."
+msgstr ""
+"Si no necessita o vol arrencar qualsevol matriu per al sistema de fitxers "
+"arrel, deixau en blanc la resposta (o escriviu «none»). Pot ésser el seu cas "
+"si fa servir l'auto-arrencada del nucli o no necessiteu cap matriu en "
+"l'arrencada."
+
+#. Type: text
+#. Description
+#: ../mdadm.templates:4001
+msgid "An error occurred: device node does not exist"
+msgstr "S'ha produït un error: el node de dispositiu no existeix."
+
+#. Type: text
+#. Description
+#: ../mdadm.templates:5001
+msgid "An error occurred: not a block device"
+msgstr "S'ha produït un error: no és un dispositiu de blocs."
+
+#. Type: text
+#. Description
+#: ../mdadm.templates:6001
+msgid "An error occurred: not an MD array"
+msgstr "S'ha produït un error: no és un conjunt («array») MD."
+
+#. Type: text
+#. Description
+#: ../mdadm.templates:7001
+msgid "An error occurred: array not listed in mdadm.conf file"
+msgstr ""
+"S'ha produït un error: la matriu («array») no apareix llistada en el fitxer "
+"de configuració «mdadm.conf»."
+
+#. Type: boolean
+#. Description
+#: ../mdadm.templates:8001
+msgid "Start arrays not listed in mdadm.conf?"
+msgstr "Voleu arrencar les matrius no llistats en el fitxer «mdadm.conf»?"
+
+#. Type: boolean
+#. Description
+#: ../mdadm.templates:8001
+msgid ""
+"The specified array (${array}) is not listed in the configuration file "
+"(${config}). Therefore, it cannot be started during boot, unless you correct "
+"the configuration file and recreate the initial ramdisk."
+msgstr ""
+"La matriu («array») especificada (${array}) no apareix llistada en el "
+"fitxer de configuració (${config}). Per tant, no es pot iniciar la matriu "
+"durant l'arrencada del sistema, llevat que corregeixi el fitxer de "
+"configuració i regenereu el disc RAM inicial."
+
+#. Type: boolean
+#. Description
+#: ../mdadm.templates:8001
+msgid ""
+"This warning is only relevant if you need arrays to be started from the "
+"initial ramdisk to be able to boot. If you use kernel autostarting, or do "
+"not need any arrays to be started as early as the initial ramdisk is loaded, "
+"you can simply continue. Alternatively, choose not to continue and enter "
+"'none' when prompted which arrays to start from the initial ramdisk."
+msgstr ""
+"Aquest avís només és important si necessiteu que les matrius s'arrenquin en "
+"el disc RAM inicial per poder arrencar el sistema. Si feu servir l'arrencada "
+"automàtica del nucli o no necessiteu que les matrius estiguin arrencats "
+"quan es carregui el disc RAM, podeu continuar. També podeu decidir no "
+"continuar i introduir «none» quan se li demani quines matrius cal iniciar "
+"del disc RAM inicial."
+
+#. Type: boolean
+#. Description
+#: ../mdadm.templates:9001
+msgid "Do you want to start MD arrays automatically?"
+msgstr "Voleu arrencar automàticament les matrius MD?"
+
+#. Type: boolean
+#. Description
+#: ../mdadm.templates:9001
+msgid ""
+"Once the base system has booted, mdadm can start all MD arrays (RAIDs) "
+"specified in /etc/mdadm/mdadm.conf which have not yet been started. This is "
+"recommended unless multiple device (MD) support is compiled into the kernel "
+"and all partitions are marked as belonging to MD arrays, with type 0xfd (as "
+"those and only those will be started automatically by the kernel)."
+msgstr ""
+"«mdadm» pot iniciar totes les matrius MD (RAIDs) especificades a «/etc/mdadm/"
+"mdadm.conf» quan s'hagi arrancat el sistema base, i en el ben entès que "
+"encara no s'hagin arrancat. Això és recomanable a no ser que el suport de "
+"dispositiu múltiple (MD) sigui compilat en el nucli i totes les particions "
+"que formen la matriu MD siguin marcades amb el tipus «0xfd» (donat que "
+"només aquestes seran arrancades de forma automàtica pel nucli)."
+
+#. Type: boolean
+#. Description
+#: ../mdadm.templates:10001
+msgid "Should mdadm run monthly redundancy checks of the MD arrays?"
+msgstr ""
+"Voleu que «mdadm» executi comprovacions de redundància mensuals de les "
+"matrius MD?"
+
+#. Type: boolean
+#. Description
+#: ../mdadm.templates:10001
+msgid ""
+"If the kernel supports it (versions greater than 2.6.14), mdadm can "
+"periodically check the redundancy of MD arrays (RAIDs). This may be a "
+"resource-intensive process, depending on the local setup, but it could help "
+"prevent rare cases of data loss. Note that this is a read-only check unless "
+"errors are found; if errors are found, mdadm will try to correct them, which "
+"may result in write access to the media."
+msgstr ""
+"Si el nucli ho accepta (versions superiors a la 2.6.14), «mdadm» pot fer "
+"comprovacions periòdiques de la redundància de les matrius MD (RAIDs). Pot "
+"ésser que aquest procés consumeixi molts recursos del sistema, depenent de "
+"la configuració, però pot ajudar a prevenir casos poc freqüents de pèrdua de "
+"dades. Teniu present que aquestes comprovacions es fan en mode lectura "
+"llevat que es detectin errors: si hi ha errors, «mdadm» els corregirà i per "
+"això, caldrà que tengui accés d'escriptura als mitjans físics. "
+
+#. Type: boolean
+#. Description
+#: ../mdadm.templates:10001
+msgid ""
+"The default, if turned on, is to check on the first Sunday of every month at "
+"01:06."
+msgstr ""
+"El valor predeterminat, si s'activa, es fer la comprovació el primer "
+"diumenge de cada mes a les 01:06 am."
+
+#. Type: boolean
+#. Description
+#: ../mdadm.templates:11001
+msgid "Do you want to start the MD monitoring daemon?"
+msgstr "Desitjau arrencar el dimoni monitor MD?"
+
+#. Type: boolean
+#. Description
+#: ../mdadm.templates:11001
+msgid ""
+"The MD (RAID) monitor daemon sends email notifications in response to "
+"important MD events (such as a disk failure)."
+msgstr ""
+"El dimoni monitor de MD (RAID) envia notificacions per correu electrònic "
+"quan es produeixen esdeveniments importants en els dispositius MD (com un "
+"error de disc)."
+
+#. Type: boolean
+#. Description
+#: ../mdadm.templates:11001
+msgid "Enabling this option is recommended."
+msgstr "Es recomana l'activació d'aquesta opció."
+
+#. Type: string
+#. Description
+#: ../mdadm.templates:12001
+msgid "Recipient for email notifications:"
+msgstr "Destinatari de les notificacions de correu electrònic:"
+
+#. Type: string
+#. Description
+#: ../mdadm.templates:12001
+msgid ""
+"Please enter the email address of the user who should get the email "
+"notifications for important MD events."
+msgstr ""
+"Introduïu l'adreça de correu electrònic de l'usuari que ha de rebre les "
+"notificacions de correu electrònic per a esdeveniments MD rellevants."
+
+#~ msgid ""
+#~ "Please refer to /usr/share/doc/mdadm/README.upgrading-2.5.3.gz if you "
+#~ "intend to continue."
+#~ msgstr ""
+#~ "Si voleu continuar, us aconsellam la lectura de «/usr/share/doc/mdadm/"
+#~ "README.upgrading-2.5.3.gz»."
diff --git a/debian/po/cs.po b/debian/po/cs.po
new file mode 100644
index 00000000..4f3d0a6f
--- /dev/null
+++ b/debian/po/cs.po
@@ -0,0 +1,294 @@
+#
+# Translators, if you are not familiar with the PO format, gettext
+# documentation is worth reading, especially sections dedicated to
+# this format, e.g. by running:
+# info -n '(gettext)PO Files'
+# info -n '(gettext)Header Entry'
+#
+# Some information specific to po-debconf are available at
+# /usr/share/doc/po-debconf/README-trans
+# or http://www.debian.org/intl/l10n/po-debconf/README-trans
+#
+# Developers do not need to manually edit POT or PO files.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: mdadm\n"
+"Report-Msgid-Bugs-To: mdadm@packages.debian.org\n"
+"POT-Creation-Date: 2012-05-22 00:50+0100\n"
+"PO-Revision-Date: 2008-02-17 21:10+0100\n"
+"Last-Translator: Miroslav Kure <kurem@debian.cz>\n"
+"Language-Team: Czech <debian-l10n-czech@lists.debian.org>\n"
+"Language: cs\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Type: string
+#. Description
+#: ../mdadm.templates:2001
+msgid "MD arrays needed for the root file system:"
+msgstr "MD pole vyžadovaná pro kořenový souborový systém:"
+
+#. Type: string
+#. Description
+#: ../mdadm.templates:2001
+msgid ""
+"Please enter 'all', 'none', or a space-separated list of devices such as "
+"'md0 md1' or 'md/1 md/d0' (the leading '/dev/' can be omitted)."
+msgstr ""
+"Zadejte prosím mezerami oddělený seznam zařízení, případně „all“ nebo "
+"„none“. Počáteční „/dev/“ můžete vynechat a zadat jen např. „md0 md1“ nebo "
+"„md/1 md/d0“."
+
+#. Type: text
+#. Description
+#: ../mdadm.templates:3001
+msgid "for internal use - only the long description is needed."
+msgstr "pro vnitřní použití - pouze kvůli zobrazení dlouhého popisu."
+
+#. Type: text
+#. Description
+#: ../mdadm.templates:3001
+msgid ""
+"If the system's root file system is located on an MD array (RAID), it needs "
+"to be started early during the boot sequence. If it is located on a logical "
+"volume (LVM), which is on MD, all constituent arrays need to be started."
+msgstr ""
+"Pokud je kořenový souborový systém umístěn na MD (RAID) svazku, musí být "
+"tento spuštěn během zavádění systému co nejdříve. Pokud se kořenový "
+"souborový systém nachází na logickém svazku LVM, který je vytvořen nad MD "
+"polem, musí se spustit všechna související pole."
+
+#. Type: text
+#. Description
+#: ../mdadm.templates:3001
+msgid ""
+"If you know exactly which arrays are needed to bring up the root file "
+"system, and you want to postpone starting all other arrays to a later point "
+"in the boot sequence, enter the arrays to start here. Alternatively, enter "
+"'all' to simply start all available arrays."
+msgstr ""
+"Jestliže přesně víte, která pole jsou potřeba pro připojení kořenového "
+"souborového systému a zároveň chcete pozdržet spuštění ostatních polí na "
+"pozdější dobu, zadejte zde prosím pole, která se mají spustit. Chcete-li "
+"spustit všechna dostupná pole, můžete zadat „all“."
+
+#. Type: text
+#. Description
+#: ../mdadm.templates:3001
+msgid ""
+"If you do not need or want to start any arrays for the root file system, "
+"leave the answer blank (or enter 'none'). This may be the case if you are "
+"using kernel autostart or do not need any arrays to boot."
+msgstr ""
+"Nepotřebujete-li nebo nechcete-li spouštět pole pro kořenový souborový "
+"systém, ponechte odpověď prázdnou, případně zadejte „none“. To může nastat "
+"třeba v případě, že používáte automatický start přímo v jádře, nebo pokud k "
+"zavedení systému žádná pole nepotřebujete."
+
+#. Type: text
+#. Description
+#: ../mdadm.templates:4001
+msgid "An error occurred: device node does not exist"
+msgstr "Vyskytla se chyba: uzel zařízení neexistuje"
+
+#. Type: text
+#. Description
+#: ../mdadm.templates:5001
+msgid "An error occurred: not a block device"
+msgstr "Vyskytla se chyba: není blokovým zařízením"
+
+#. Type: text
+#. Description
+#: ../mdadm.templates:6001
+msgid "An error occurred: not an MD array"
+msgstr "Vyskytla se chyba: není MD polem"
+
+#. Type: text
+#. Description
+#: ../mdadm.templates:7001
+msgid "An error occurred: array not listed in mdadm.conf file"
+msgstr "Vyskytla se chyba: pole není uvedeno v souboru mdadm.conf"
+
+#. Type: boolean
+#. Description
+#: ../mdadm.templates:8001
+msgid "Start arrays not listed in mdadm.conf?"
+msgstr "Spustit pole neuvedená v mdadm.conf?"
+
+#. Type: boolean
+#. Description
+#: ../mdadm.templates:8001
+msgid ""
+"The specified array (${array}) is not listed in the configuration file "
+"(${config}). Therefore, it cannot be started during boot, unless you correct "
+"the configuration file and recreate the initial ramdisk."
+msgstr ""
+"Zadané pole (${array}) není uvedeno v konfiguračním souboru ${config} a tím "
+"pádem nemůže být spuštěno při zavádění systému. Napravit to můžete opravou "
+"konfiguračního souboru a znovuvytvořením počátečního ramdisku."
+
+#. Type: boolean
+#. Description
+#: ../mdadm.templates:8001
+msgid ""
+"This warning is only relevant if you need arrays to be started from the "
+"initial ramdisk to be able to boot. If you use kernel autostarting, or do "
+"not need any arrays to be started as early as the initial ramdisk is loaded, "
+"you can simply continue. Alternatively, choose not to continue and enter "
+"'none' when prompted which arrays to start from the initial ramdisk."
+msgstr ""
+"Toto varování je relevantní pouze pokud k zavedení systému potřebujete, aby "
+"se pole spustila z počátečního ramdisku. Používáte-li automatické spouštění "
+"přímo v jádře, nebo pokud nepotřebujete pouštět žádná pole ještě z "
+"počátečního ramdisku, můžete jednoduše pokračovat. Jinou možností je "
+"nepokračovat dále a při dotazu na seznam polí, která se mají spouštět z "
+"počátečního ramdisku, zadat 'none'."
+
+#. Type: boolean
+#. Description
+#: ../mdadm.templates:9001
+msgid "Do you want to start MD arrays automatically?"
+msgstr "Chcete spouštět MD pole automaticky?"
+
+#. Type: boolean
+#. Description
+#: ../mdadm.templates:9001
+msgid ""
+"Once the base system has booted, mdadm can start all MD arrays (RAIDs) "
+"specified in /etc/mdadm/mdadm.conf which have not yet been started. This is "
+"recommended unless multiple device (MD) support is compiled into the kernel "
+"and all partitions are marked as belonging to MD arrays, with type 0xfd (as "
+"those and only those will be started automatically by the kernel)."
+msgstr ""
+"Po zavedení základního systému může mdadm spustit všechna dosud nespuštěná "
+"MD (RAID) pole uvedená v souboru /etc/mdadm/mdadm.conf. Pokud nemáte "
+"zakompilovanou podporu multiple device (MD) přímo v jádře (kdy se všechna MD "
+"pole označená typem oblasti 0xfd spustí zcela automaticky), pravděpodobně "
+"budete chtít tuto možnost povolit."
+
+#. Type: boolean
+#. Description
+#: ../mdadm.templates:10001
+msgid "Should mdadm run monthly redundancy checks of the MD arrays?"
+msgstr "Má mdadm spouštět měsíční kontroly redundance MD polí?"
+
+#. Type: boolean
+#. Description
+#: ../mdadm.templates:10001
+msgid ""
+"If the kernel supports it (versions greater than 2.6.14), mdadm can "
+"periodically check the redundancy of MD arrays (RAIDs). This may be a "
+"resource-intensive process, depending on the local setup, but it could help "
+"prevent rare cases of data loss. Note that this is a read-only check unless "
+"errors are found; if errors are found, mdadm will try to correct them, which "
+"may result in write access to the media."
+msgstr ""
+"Pokud to vaše jádro podporuje (verze větší než 2.6.14), může mdadm "
+"pravidelně kontrolovat redundanci MD polí (RAIDů). Podle konfigurace "
+"počítače to může být proces velmi náročný na prostředky, ovšem může předejít "
+"vzácným případům ztráty dat. Pokud nejsou nalezeny chyby, používá tato "
+"kontrola v zásadě jen čtecí operace. Při nalezení chyb se je mdadm pokusí "
+"opravit, což může znamenat zápis na médium."
+
+#. Type: boolean
+#. Description
+#: ../mdadm.templates:10001
+msgid ""
+"The default, if turned on, is to check on the first Sunday of every month at "
+"01:06."
+msgstr ""
+"Pokud kontrolu povolíte, bude se dle výchozího nastavení spouštět každou "
+"první neděli v měsíci v 01:06 ráno."
+
+#. Type: boolean
+#. Description
+#: ../mdadm.templates:11001
+msgid "Do you want to start the MD monitoring daemon?"
+msgstr "Chcete spustit daemon pro monitorování MD?"
+
+#. Type: boolean
+#. Description
+#: ../mdadm.templates:11001
+msgid ""
+"The MD (RAID) monitor daemon sends email notifications in response to "
+"important MD events (such as a disk failure)."
+msgstr ""
+"Daemon pro monitorování MD (RAIDu) zasílá emailová upozornění na významné MD "
+"události, jako je selhání disku."
+
+#. Type: boolean
+#. Description
+#: ../mdadm.templates:11001
+msgid "Enabling this option is recommended."
+msgstr "Povolení této možnosti je doporučeno."
+
+#. Type: string
+#. Description
+#: ../mdadm.templates:12001
+msgid "Recipient for email notifications:"
+msgstr "Příjemce emailových upozornění:"
+
+#. Type: string
+#. Description
+#: ../mdadm.templates:12001
+msgid ""
+"Please enter the email address of the user who should get the email "
+"notifications for important MD events."
+msgstr ""
+"Zadejte prosím emailovou adresu uživatele, který má dostávat emailová "
+"upozornění při výskytu významných MD událostí."
+
+#~ msgid ""
+#~ "Please refer to /usr/share/doc/mdadm/README.upgrading-2.5.3.gz if you "
+#~ "intend to continue."
+#~ msgstr ""
+#~ "Hodláte-li pokračovat, přečtěte si prosím /usr/share/doc/mdadm/README."
+#~ "upgrading-2.5.3.gz."
+
+#~ msgid "Initialise the superblock if you reuse hard disks"
+#~ msgstr "Při znovupoužití starších disků inicializujte superblok"
+
+#~ msgid ""
+#~ "WARNING! If you are using hard disks which have RAID superblocks from "
+#~ "earlier installations in different RAID arrays, you MUST zero each "
+#~ "superblock *before* activating the autostart feature."
+#~ msgstr ""
+#~ "VAROVÁNÍ! Používáte-li pevné disky, které obsahují RAID superbloky z "
+#~ "dřívější instalace v jiném RAID poli, MUSÍTE všechny superbloky před "
+#~ "použitím automatického spouštění vynulovat."
+
+#~ msgid ""
+#~ "To do this, do not start the RAID devices automatically. First, zero the "
+#~ "superblock (mdadm --zero-superblock /dev/mdX). Next, use `dpkg-"
+#~ "reconfigure mdadm` to reactivate the autostart feature."
+#~ msgstr ""
+#~ "Chcete-li to provést, nespouštějte RAID zařízení automaticky. Nejprve "
+#~ "vynulujte superblok příkazem 'mdadm --zero-superblock /dev/mdX' a teprve "
+#~ "poté můžete povolit automatické spouštění RAIDu příkazem 'dpkg-"
+#~ "reconfigure mdadm'."
+
+#~ msgid ""
+#~ "You have the option to start all other arrays (those not needed for the "
+#~ "root filesystem) later in the boot sequence. Doing so will give you "
+#~ "greater control over the arrays with the mdadm configuration file. "
+#~ "Starting all arrays at boot-time may be safer though."
+#~ msgstr ""
+#~ "Všechna ostatní pole (ta, která nejsou potřeba pro kořenový souborový "
+#~ "systém) můžete spustit později. Pokud tak učiníte, budete mít v "
+#~ "konfiguračním souboru mdadm nad poli větší kontrolu. Na druhou stranu je "
+#~ "spouštění všech polí hned na začátku zavádění o něco jistější volbou."
+
+#~ msgid ""
+#~ "If RAID devices are started automatically, all RAID devices are "
+#~ "discovered and assembled automatically at system startup. This option "
+#~ "should only be used if the md driver is compiled as a module. If it is "
+#~ "compiled into your kernel, the automatic startup will be performed at "
+#~ "boot time by the kernel and therefore you should not choose this option."
+#~ msgstr ""
+#~ "Jestliže jsou RAID zařízení spouštěna automaticky, jsou všechna RAID "
+#~ "zařízení rozpoznána a poskládána automaticky při zavádění systému. Tuto "
+#~ "volbu byste měli použít pouze v případě, že jste ovladač md zakompilovali "
+#~ "jako modul. Pokud jste jej zakompilovali přímo do jádra, o automatické "
+#~ "spuštění se postará samotné jádro a tedy tuto možnost nepotřebujete."
diff --git a/debian/po/da.po b/debian/po/da.po
new file mode 100644
index 00000000..d1bf69c6
--- /dev/null
+++ b/debian/po/da.po
@@ -0,0 +1,240 @@
+# Danish translation mdadm.
+# Copyright (C) 2011 mdadm & nedenstående oversættere.
+# This file is distributed under the same license as the mdadm package.
+# Joe Hansen <joedalton2@yahoo.dk>, 2011.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: mdadm\n"
+"Report-Msgid-Bugs-To: mdadm@packages.debian.org\n"
+"POT-Creation-Date: 2012-05-22 00:50+0100\n"
+"PO-Revision-Date: 2011-04-03 17:30+01:00\n"
+"Last-Translator: Joe Hansen <joedalton2@yahoo.dk>\n"
+"Language-Team: Danish <debian-l10n-danish@lists.debian.org> \n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Type: string
+#. Description
+#: ../mdadm.templates:2001
+msgid "MD arrays needed for the root file system:"
+msgstr "MD arrays krævet for rodfilsystemet:"
+
+#. Type: string
+#. Description
+#: ../mdadm.templates:2001
+msgid ""
+"Please enter 'all', 'none', or a space-separated list of devices such as "
+"'md0 md1' or 'md/1 md/d0' (the leading '/dev/' can be omitted)."
+msgstr ""
+"Indtast venligst »all«, »none« eller en mellemrumsadskilt liste af enheder "
+"såsom »md0 md1« eller »md/1 md/d0« (det foranstillede »/dev/« kan udelades)."
+
+#. Type: text
+#. Description
+#: ../mdadm.templates:3001
+msgid "for internal use - only the long description is needed."
+msgstr "for intern brug - kun den lange beskrivelse er krævet."
+
+#. Type: text
+#. Description
+#: ../mdadm.templates:3001
+msgid ""
+"If the system's root file system is located on an MD array (RAID), it needs "
+"to be started early during the boot sequence. If it is located on a logical "
+"volume (LVM), which is on MD, all constituent arrays need to be started."
+msgstr ""
+"Hvis systemets rodfilsystem er placeret på en MD-array (RAID), skal det "
+"startes tidligt under opstartssekvensen. Hvis den er placeret på en logisk "
+"diskenhed (LVM), som er på MD, skal alle indgående arrays startes."
+
+#. Type: text
+#. Description
+#: ../mdadm.templates:3001
+msgid ""
+"If you know exactly which arrays are needed to bring up the root file "
+"system, and you want to postpone starting all other arrays to a later point "
+"in the boot sequence, enter the arrays to start here. Alternatively, enter "
+"'all' to simply start all available arrays."
+msgstr ""
+"Hvis du ved præcis hvilke arrays som er krævet, for at få rodfilsystemet op, "
+"og du ønsker at udsætte start af alle andre arrays til et senere tidspunkt i "
+"opstartssekvensen, så indtast her de arrays som skal startes. Alternativt "
+"kan du indtaste »all« for at starte alle tilgængelige arrays."
+
+#. Type: text
+#. Description
+#: ../mdadm.templates:3001
+msgid ""
+"If you do not need or want to start any arrays for the root file system, "
+"leave the answer blank (or enter 'none'). This may be the case if you are "
+"using kernel autostart or do not need any arrays to boot."
+msgstr ""
+"Hvis du ikke har brug for eller ønsker at starte nogen arrays for "
+"rodfilsystemet, så efterlad svaret tomt (eller indtast »none«). Dette kan "
+"være tilfældet, hvis du bruger automatisk start af kernen eller ikke skal "
+"bruge arrays til at starte op med."
+
+#. Type: text
+#. Description
+#: ../mdadm.templates:4001
+msgid "An error occurred: device node does not exist"
+msgstr "Der opstod en fejl: Enhedsknude findes ikke"
+
+#. Type: text
+#. Description
+#: ../mdadm.templates:5001
+msgid "An error occurred: not a block device"
+msgstr "Der opstod en fejl: Ikke en blokenhed"
+
+#. Type: text
+#. Description
+#: ../mdadm.templates:6001
+msgid "An error occurred: not an MD array"
+msgstr "Der opstod en fejl: Ikke en MD array"
+
+#. Type: text
+#. Description
+#: ../mdadm.templates:7001
+msgid "An error occurred: array not listed in mdadm.conf file"
+msgstr "Der opstod en fejl: Array er ikke anført i mdadm.conf-filen"
+
+#. Type: boolean
+#. Description
+#: ../mdadm.templates:8001
+msgid "Start arrays not listed in mdadm.conf?"
+msgstr "Start arrays er ikke anført i mdadm.conf?"
+
+#. Type: boolean
+#. Description
+#: ../mdadm.templates:8001
+msgid ""
+"The specified array (${array}) is not listed in the configuration file "
+"(${config}). Therefore, it cannot be started during boot, unless you correct "
+"the configuration file and recreate the initial ramdisk."
+msgstr ""
+"Den angivne array (${array}) er ikke anført i konfigurationsfilen "
+"(${config}). Den kan derfor ikke startes under opstarten, med mindre du "
+"retter i konfigurationsfilen og gendanner den oprindleige ramdisk."
+
+#. Type: boolean
+#. Description
+#: ../mdadm.templates:8001
+msgid ""
+"This warning is only relevant if you need arrays to be started from the "
+"initial ramdisk to be able to boot. If you use kernel autostarting, or do "
+"not need any arrays to be started as early as the initial ramdisk is loaded, "
+"you can simply continue. Alternatively, choose not to continue and enter "
+"'none' when prompted which arrays to start from the initial ramdisk."
+msgstr ""
+"Denne advarsel er kun relevant hvis du skal have arrays til at blive startet "
+"fra den oprindelige ramdisk for at kunne starte op. Hvis du bruger den "
+"automatiske opstart i kernen, eller ikke skal bruge at arrays startes så "
+"tidligt som den oprindelige ramdisk indlæses, så kan du bare fortsætte. "
+"Alternativt så vælg at fortsætte og indtaste »none« når du bliver spurgt om "
+"hvilke arrays, der skal startes fra den oprindelige ramdisk."
+
+#. Type: boolean
+#. Description
+#: ../mdadm.templates:9001
+msgid "Do you want to start MD arrays automatically?"
+msgstr "Ønsker du at starte MD arrays automatisk?"
+
+#. Type: boolean
+#. Description
+#: ../mdadm.templates:9001
+msgid ""
+"Once the base system has booted, mdadm can start all MD arrays (RAIDs) "
+"specified in /etc/mdadm/mdadm.conf which have not yet been started. This is "
+"recommended unless multiple device (MD) support is compiled into the kernel "
+"and all partitions are marked as belonging to MD arrays, with type 0xfd (as "
+"those and only those will be started automatically by the kernel)."
+msgstr ""
+"Når først basissystemet er startet op, kan mdadm starte alle MD arrays "
+"(RAID'er) angivet i /etc/mdadm/mdadm.conf, som endnu ikke er blevet startet. "
+"Dette anbefales med mindre understøttelse af flere enheder (MD) er "
+"kompileret ind i kernen og alle partitioner er markeret som tilhørende MD "
+"arrays, med type 0xfd (da disse og kun disse vil blive startet op automatisk "
+"af kernen)."
+
+#. Type: boolean
+#. Description
+#: ../mdadm.templates:10001
+msgid "Should mdadm run monthly redundancy checks of the MD arrays?"
+msgstr "Skal mdadm køre månedlig redundanskontrol af MD arrays?"
+
+#. Type: boolean
+#. Description
+#: ../mdadm.templates:10001
+msgid ""
+"If the kernel supports it (versions greater than 2.6.14), mdadm can "
+"periodically check the redundancy of MD arrays (RAIDs). This may be a "
+"resource-intensive process, depending on the local setup, but it could help "
+"prevent rare cases of data loss. Note that this is a read-only check unless "
+"errors are found; if errors are found, mdadm will try to correct them, which "
+"may result in write access to the media."
+msgstr ""
+"Hvis kernen understøtter det (versioner større end 2.6.14), kan mdadm "
+"periodisk kontrollere redundansen på MD arrays (RAID'er). Det kan være en "
+"ressourcekrævende proces, afhængig af den lokale opsætning, men det kan "
+"hjælpe med at forhindre at du i sjældne tilfælde får datatab. Bemærk at "
+"dette er en skrivebeskyttet kontrol med mindre at der findes fejl; hvis der "
+"registreres fejl vil mdadm forsøge at rette dem, hvilket kan medføre "
+"skriveadgang til mediet."
+
+#. Type: boolean
+#. Description
+#: ../mdadm.templates:10001
+msgid ""
+"The default, if turned on, is to check on the first Sunday of every month at "
+"01:06."
+msgstr ""
+"Standarden - hvis aktiveret - er at kontrollere på den første søndag i hver "
+"måned klokken 01:06."
+
+#. Type: boolean
+#. Description
+#: ../mdadm.templates:11001
+msgid "Do you want to start the MD monitoring daemon?"
+msgstr "Ønsker du at starte MD-overvågningsdæmonen?"
+
+#. Type: boolean
+#. Description
+#: ../mdadm.templates:11001
+msgid ""
+"The MD (RAID) monitor daemon sends email notifications in response to "
+"important MD events (such as a disk failure)."
+msgstr ""
+"MD-overvågningsdæmonem (RAID) sender e-post-påmindelser udløst af vigtige MD-"
+"hændelser (såsom en diskfejl)."
+
+#. Type: boolean
+#. Description
+#: ../mdadm.templates:11001
+msgid "Enabling this option is recommended."
+msgstr "Aktivering af denne indstilling anbefales."
+
+#. Type: string
+#. Description
+#: ../mdadm.templates:12001
+msgid "Recipient for email notifications:"
+msgstr "Modtager af e-post-påmindelser:"
+
+#. Type: string
+#. Description
+#: ../mdadm.templates:12001
+msgid ""
+"Please enter the email address of the user who should get the email "
+"notifications for important MD events."
+msgstr ""
+"Indtast venligst e-post-adressen på brugeren, som skal modtage e-post-"
+"påmindelser for vigtige MD-hændelser."
+
+#~ msgid ""
+#~ "Please refer to /usr/share/doc/mdadm/README.upgrading-2.5.3.gz if you "
+#~ "intend to continue."
+#~ msgstr ""
+#~ "Referer venligst til /usr/share/doc/mdadm/README.upgrading-2.5.3.gz hvis "
+#~ "du agter at fortsætte."
diff --git a/debian/po/de.po b/debian/po/de.po
new file mode 100644
index 00000000..e76cddf6
--- /dev/null
+++ b/debian/po/de.po
@@ -0,0 +1,317 @@
+# Translators, if you are not familiar with the PO format, gettext
+# documentation is worth reading, especially sections dedicated to
+# this format, e.g. by running:
+# info -n '(gettext)PO Files'
+# info -n '(gettext)Header Entry'
+# Some information specific to po-debconf are available at
+# /usr/share/doc/po-debconf/README-trans
+# or http://www.debian.org/intl/l10n/po-debconf/README-trans
+# Developers do not need to manually edit POT or PO files.
+#
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: mdadm 2.6.9-3\n"
+"Report-Msgid-Bugs-To: mdadm@packages.debian.org\n"
+"POT-Creation-Date: 2012-05-22 00:50+0100\n"
+"PO-Revision-Date: 2009-06-24 17:35+0200\n"
+"Last-Translator: Mario Joussen <joussen@debian.org>\n"
+"Language-Team: German <debian-l10n-german@lists.debian.org>\n"
+"Language: de\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=ISO-8859-1\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Type: string
+#. Description
+#: ../mdadm.templates:2001
+msgid "MD arrays needed for the root file system:"
+msgstr "Fr das Wurzeldateisystem bentigte MD folgende Verbnde:"
+
+#. Type: string
+#. Description
+#: ../mdadm.templates:2001
+msgid ""
+"Please enter 'all', 'none', or a space-separated list of devices such as "
+"'md0 md1' or 'md/1 md/d0' (the leading '/dev/' can be omitted)."
+msgstr ""
+"Bitte geben Sie all, none oder eine leerzeichenseparierte Gerteliste "
+"wie zum Beispiel md0 md1 oder md/1 md/d0 ein (das fhrende /dev kann "
+"weggelassen werden)."
+
+#. Type: text
+#. Description
+#: ../mdadm.templates:3001
+msgid "for internal use - only the long description is needed."
+msgstr ""
+"fr internen Gebrauch - es wird nur die ausfhrliche Beschreibung bentigt."
+
+#. Type: text
+#. Description
+#: ../mdadm.templates:3001
+msgid ""
+"If the system's root file system is located on an MD array (RAID), it needs "
+"to be started early during the boot sequence. If it is located on a logical "
+"volume (LVM), which is on MD, all constituent arrays need to be started."
+msgstr ""
+"Wenn das Wurzeldateisystem Ihres Systems auf einem MD-Verbund (RAID) liegt, "
+"muss es frhzeitig whrend des Bootvorgangs gestartet werden. Wenn sich Ihr "
+"Wurzeldateisystem auf einem logischen Laufwerk (LVM) befindet, das sich "
+"wiederum auf einem MD Verbund befindet, mssen alle zugehrigen Verbnde "
+"gestartet werden."
+
+#. Type: text
+#. Description
+#: ../mdadm.templates:3001
+msgid ""
+"If you know exactly which arrays are needed to bring up the root file "
+"system, and you want to postpone starting all other arrays to a later point "
+"in the boot sequence, enter the arrays to start here. Alternatively, enter "
+"'all' to simply start all available arrays."
+msgstr ""
+"Wenn Sie genau wissen, welche Verbnde bentigt werden, um das "
+"Wurzeldateisystem zu starten, und Sie den Start der anderen Verbnde auf "
+"einen spteren Zeitpunkt in der Bootreihenfolge verschieben wollen, geben "
+"Sie die zu startenden Verbnde hier ein. Alternativ geben Sie all ein, um "
+"alle verfgbaren Verbnde zu starten."
+
+#. Type: text
+#. Description
+#: ../mdadm.templates:3001
+msgid ""
+"If you do not need or want to start any arrays for the root file system, "
+"leave the answer blank (or enter 'none'). This may be the case if you are "
+"using kernel autostart or do not need any arrays to boot."
+msgstr ""
+"Falls Sie keine RAID-Verbnde fr das Wurzeldateisystem bentigen oder "
+"starten wollen, lassen Sie die Antwort leer (oder geben none ein). Dies "
+"knnte der Fall sein, wenn Sie entweder die Autostartfunktion des Kernels "
+"verwenden oder keine Verbnde zum Booten bentigen."
+
+#. Type: text
+#. Description
+#: ../mdadm.templates:4001
+msgid "An error occurred: device node does not exist"
+msgstr "Ein Fehler ist aufgetreten: Gerteknoten existiert nicht"
+
+#. Type: text
+#. Description
+#: ../mdadm.templates:5001
+msgid "An error occurred: not a block device"
+msgstr "Ein Fehler ist aufgetreten: kein Blockgert"
+
+#. Type: text
+#. Description
+#: ../mdadm.templates:6001
+msgid "An error occurred: not an MD array"
+msgstr "Ein Fehler ist aufgetreten: kein RAID-Verbund"
+
+#. Type: text
+#. Description
+#: ../mdadm.templates:7001
+msgid "An error occurred: array not listed in mdadm.conf file"
+msgstr ""
+"Ein Fehler ist aufgetreten: Verbund nicht in der Datei mdadm.conf aufgefhrt"
+
+#. Type: boolean
+#. Description
+#: ../mdadm.templates:8001
+msgid "Start arrays not listed in mdadm.conf?"
+msgstr "Nicht in mdadm.conf aufgefhrte Verbnde starten?"
+
+#. Type: boolean
+#. Description
+#: ../mdadm.templates:8001
+msgid ""
+"The specified array (${array}) is not listed in the configuration file "
+"(${config}). Therefore, it cannot be started during boot, unless you correct "
+"the configuration file and recreate the initial ramdisk."
+msgstr ""
+"Der angegebene Verbund (${array}) ist in der Konfigurationsdatei ${config} "
+"nicht aufgefhrt. Deshalb kann er whrend des Bootvorgangs nicht gestartet "
+"werden, es sei denn, Sie korrigieren die Konfigurationsdatei und erzeugen "
+"die initiale Ramdisk neu."
+
+#. Type: boolean
+#. Description
+#: ../mdadm.templates:8001
+msgid ""
+"This warning is only relevant if you need arrays to be started from the "
+"initial ramdisk to be able to boot. If you use kernel autostarting, or do "
+"not need any arrays to be started as early as the initial ramdisk is loaded, "
+"you can simply continue. Alternatively, choose not to continue and enter "
+"'none' when prompted which arrays to start from the initial ramdisk."
+msgstr ""
+"Diese Warnung ist nur von Bedeutung, wenn Sie RAID-Verbnde, die von der "
+"initialen Ramdisk gestartet werden, bentigen, um booten zu knnen. Falls "
+"Sie die Autostartfunktion des Kernels verwenden oder kein RAID-Verbund zum "
+"frhen Zeitpunkt des Ladens der initialen Ramdisk gestartet werden muss, "
+"knnen Sie einfach fortfahren. Alternativ whlen Sie, nicht fortzufahren und "
+"geben none ein, wenn Sie gefragt werden, welche RAID-Verbnde von der "
+"initialen Ramdisk gestartet werden sollen."
+
+#. Type: boolean
+#. Description
+#: ../mdadm.templates:9001
+msgid "Do you want to start MD arrays automatically?"
+msgstr "Mchten Sie die RAID-Verbnde automatisch starten?"
+
+#. Type: boolean
+#. Description
+#: ../mdadm.templates:9001
+msgid ""
+"Once the base system has booted, mdadm can start all MD arrays (RAIDs) "
+"specified in /etc/mdadm/mdadm.conf which have not yet been started. This is "
+"recommended unless multiple device (MD) support is compiled into the kernel "
+"and all partitions are marked as belonging to MD arrays, with type 0xfd (as "
+"those and only those will be started automatically by the kernel)."
+msgstr ""
+"Sobald das Grundsystem hochgefahren ist, kann mdadm alle in /etc/mdadm/mdadm."
+"conf angegebenen MD-Verbnde (RAID) starten, die noch nicht gestartet "
+"wurden. Dies ist empfohlen, es sei denn, die MD-Untersttzung wurde in den "
+"Kernel einkompiliert und alle Partitionen, die zu MD-Verbnden gehren, "
+"wurden mit dem Typ 0xfd markiert (weil diese und nur diese automatisch vom "
+"Kernel gestartet werden)."
+
+#. Type: boolean
+#. Description
+#: ../mdadm.templates:10001
+msgid "Should mdadm run monthly redundancy checks of the MD arrays?"
+msgstr ""
+"Soll mdadm monatlich die Redundanzberprfung auf den RAID-Verbnden "
+"ausfhren?"
+
+#. Type: boolean
+#. Description
+#: ../mdadm.templates:10001
+msgid ""
+"If the kernel supports it (versions greater than 2.6.14), mdadm can "
+"periodically check the redundancy of MD arrays (RAIDs). This may be a "
+"resource-intensive process, depending on the local setup, but it could help "
+"prevent rare cases of data loss. Note that this is a read-only check unless "
+"errors are found; if errors are found, mdadm will try to correct them, which "
+"may result in write access to the media."
+msgstr ""
+"Falls Ihr Kernel es untersttzt (Versionen grer als 2.6.14) kann mdadm "
+"regelmig die Redundanz Ihrer MD-Verbnde (RAID) berprfen. Dies kann "
+"abhngig von Ihrer Installation ein resourcenintensiver Vorgang sein, der "
+"aber helfen kann, seltene Flle von Datenverlust zu vermeiden. Bitte "
+"beachten Sie, dass diese berprfung nur lesend erfolgt, solange keine "
+"Fehler gefunden werden. Falls Fehler gefunden werden, wird mdadm versuchen, "
+"diese zu beheben, was zu schreibendem Zugriff auf das Medium fhren kann."
+
+#. Type: boolean
+#. Description
+#: ../mdadm.templates:10001
+msgid ""
+"The default, if turned on, is to check on the first Sunday of every month at "
+"01:06."
+msgstr ""
+"Die Voreinstellung ist, falls eingeschaltet, die berprfung am ersten "
+"Sonntag jedes Monats um 01:06 Uhr durchzufhren."
+
+#. Type: boolean
+#. Description
+#: ../mdadm.templates:11001
+msgid "Do you want to start the MD monitoring daemon?"
+msgstr "Mchten Sie den RAID-berwachungsdmon starten?"
+
+#. Type: boolean
+#. Description
+#: ../mdadm.templates:11001
+msgid ""
+"The MD (RAID) monitor daemon sends email notifications in response to "
+"important MD events (such as a disk failure)."
+msgstr ""
+"Der MD- (RAID-)berwachungsdmon verschickt Benachrichtigungen als Reaktion "
+"auf wichtige RAID-Ereignisse (wie zum Beispiel Festplattenfehler)."
+
+#. Type: boolean
+#. Description
+#: ../mdadm.templates:11001
+msgid "Enabling this option is recommended."
+msgstr "Das Aktivieren dieser Option ist empfohlen."
+
+#. Type: string
+#. Description
+#: ../mdadm.templates:12001
+msgid "Recipient for email notifications:"
+msgstr "Empfnger der E-Mail-Benachrichtungen:"
+
+#. Type: string
+#. Description
+#: ../mdadm.templates:12001
+msgid ""
+"Please enter the email address of the user who should get the email "
+"notifications for important MD events."
+msgstr ""
+"Geben Sie bitte die E-Mail-Adresse des Benutzers an, der die E-Mail-"
+"Benachrichtigung fr wichtigen MD-Ereignisse erhalten soll."
+
+#~ msgid ""
+#~ "Please refer to /usr/share/doc/mdadm/README.upgrading-2.5.3.gz if you "
+#~ "intend to continue."
+#~ msgstr ""
+#~ "Bitte lesen Sie /usr/share/doc/mdadm/README.upgrading-2.5.3.gz falls Sie "
+#~ "beabsichtigen fortzufahren."
+
+#~ msgid "${msg}"
+#~ msgstr "${msg}"
+
+#~ msgid "Initialise the superblock if you reuse hard disks"
+#~ msgstr ""
+#~ "Initialisieren Sie den Superblock, wenn Sie Festplatten wieder verwenden."
+
+#~ msgid ""
+#~ "WARNING! If you are using hard disks which have RAID superblocks from "
+#~ "earlier installations in different RAID arrays, you MUST zero each "
+#~ "superblock *before* activating the autostart feature."
+#~ msgstr ""
+#~ "WARNUNG! Wenn Sie Festplatten verwenden, die bereits einen md-Superblock "
+#~ "von einer vorherigen Installation in einem anderen RAID-Verbund besitzen, "
+#~ "so MSSEN Sie diesen lschen, *bevor* Sie die Autostart-Funktion "
+#~ "aktivieren."
+
+#~ msgid ""
+#~ "To do this, do not start the RAID devices automatically. First, zero the "
+#~ "superblock (mdadm --zero-superblock /dev/mdX). Next, use `dpkg-"
+#~ "reconfigure mdadm` to reactivate the autostart feature."
+#~ msgstr ""
+#~ "Dazu starten Sie die RAID-Laufwerke nicht automatisch und lschen dann "
+#~ "erst den Superblock (mdadm --zero-superblock /dev/mdX). Danach knnen Sie "
+#~ "mit dpkg-reconfigure mdadm die Autostart-Funktion aktivieren."
+
+#~ msgid ""
+#~ "You have the option to start all other arrays (those not needed for the "
+#~ "root filesystem) later in the boot sequence. Doing so will give you "
+#~ "greater control over the arrays with the mdadm configuration file. "
+#~ "Starting all arrays at boot-time may be safer though."
+#~ msgstr ""
+#~ "Sie haben die Option, alle anderen Verbnde (diese die nicht fr das "
+#~ "Wurzeldateisystem bentigt werden) spter whrend des Bootvorgangs zu "
+#~ "starten. Damit haben Sie grere Kontrolle ber die Verbnde mit Hilfe "
+#~ "der mdadm-Konfigurationsdatei. Es ist jedoch sicherer, alle Verbnde beim "
+#~ "Booten zu starten."
+
+#~ msgid ""
+#~ "If RAID devices are started automatically, all RAID devices are "
+#~ "discovered and assembled automatically at system startup. This option "
+#~ "should only be used if the md driver is compiled as a module. If it is "
+#~ "compiled into your kernel, the automatic startup will be performed at "
+#~ "boot time by the kernel and therefore you should not choose this option."
+#~ msgstr ""
+#~ "Wenn die RAID-Laufwerke automatisch gestartet werden, werden alle RAID-"
+#~ "Laufwerke beim Systemstart automatisch gefunden und gestartet. Diese "
+#~ "Option sollte nur benutzt werden, falls der md-Treiber als Modul "
+#~ "kompiliert wurde. Falls er in den Kernel einkompiliert wurde, fhrt der "
+#~ "Kernel den automatischen Start beim Booten durch und Sie sollten diese "
+#~ "Option deshalb nicht auswhlen."
+
+#~ msgid ""
+#~ "When the RAID monitor daemon runs, email notifications are sent when a "
+#~ "disk belonging to a RAID array fails or changes its status for some "
+#~ "reason."
+#~ msgstr ""
+#~ "Wird der RAID-berwachungsdaemon gestartet, so werden E-Mail-"
+#~ "Benachrichtigungen verschickt, falls ein zum RAID gehrendes Laufwerk "
+#~ "ausfllt oder den Status ndert."
diff --git a/debian/po/es.po b/debian/po/es.po
new file mode 100644
index 00000000..e0efcc92
--- /dev/null
+++ b/debian/po/es.po
@@ -0,0 +1,288 @@
+# mdadm po-debconf translation to spanish
+# Copyright (C) 2006 Software in the Public Interest, SPI Inc.
+# This file is distributed under the same license as the mdadm package.
+#
+# Changes:
+# - Initial translation
+# Javier Fernndez-Sanguino , 2006
+# - Revision
+# Fernando Cerezal
+#
+#
+# Traductores, si no conoce el formato PO, merece la pena leer la
+# documentacin de gettext, especialmente las secciones dedicadas a este
+# formato, por ejemplo ejecutando:
+# info -n '(gettext)PO Files'
+# info -n '(gettext)Header Entry'
+#
+# Equipo de traduccin al espaol, por favor lean antes de traducir
+# los siguientes documentos:
+#
+# - El proyecto de traduccin de Debian al espaol
+# http://www.debian.org/intl/spanish/
+# especialmente las notas y normas de traduccin en
+# http://www.debian.org/intl/spanish/notas
+#
+# - La gua de traduccin de po's de debconf:
+# /usr/share/doc/po-debconf/README-trans
+# o http://www.debian.org/intl/l10n/po-debconf/README-trans
+#
+# Si tiene dudas o consultas sobre esta traduccin consulte con el ltimo
+# traductor (campo Last-Translator) y ponga en copia a la lista de
+# traduccin de Debian al espaol (<debian-l10n-spanish@lists.debian.org>)
+#
+# Notas:
+# - 'array' no est traducido an. La traduccin como 'arreglo' suena
+# fatal (y es poco conocida) [ cambiar cuando se cambie en d-i ]
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: mdadm 2.5.6-6\n"
+"Report-Msgid-Bugs-To: mdadm@packages.debian.org\n"
+"POT-Creation-Date: 2012-05-22 00:50+0100\n"
+"PO-Revision-Date: 2008-04-25 17:47+0200\n"
+"Last-Translator: Javier Fernndez-Sanguino <jfs@debian.org>\n"
+"Language-Team: Debian Spanish <debian-l10n-spanish@lists.debian.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=ISO-8859-15\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Type: string
+#. Description
+#: ../mdadm.templates:2001
+msgid "MD arrays needed for the root file system:"
+msgstr "Arrays MD necesarios para el sistema de ficheros raz:"
+
+# No se traduce all y none porque no aparecen en la plantilla para traducir los elementos individuales
+#. Type: string
+#. Description
+#: ../mdadm.templates:2001
+msgid ""
+"Please enter 'all', 'none', or a space-separated list of devices such as "
+"'md0 md1' or 'md/1 md/d0' (the leading '/dev/' can be omitted)."
+msgstr ""
+"Introduzca all (todos), none (ninguno) o una lista de dispositivos "
+"separados por espacios como por ejemplo puede slo introducir md0 md1 o "
+"md/1 md/d0 (no tiene que preceder los nombres de dispositivos con /dev)."
+
+#. Type: text
+#. Description
+#: ../mdadm.templates:3001
+msgid "for internal use - only the long description is needed."
+msgstr "para uso interno. Slo se utiliza la descripcin larga."
+
+#. Type: text
+#. Description
+#: ../mdadm.templates:3001
+msgid ""
+"If the system's root file system is located on an MD array (RAID), it needs "
+"to be started early during the boot sequence. If it is located on a logical "
+"volume (LVM), which is on MD, all constituent arrays need to be started."
+msgstr ""
+"Si el sistema de ficheros raz de su sistema est en un array MD (RAID) "
+"tiene que inicializarse antes durante de la secuencia de arranque. Si est "
+"en un volumen lgico (LVM), que est definido sobre un MD, todos los arrays "
+"que lo forman tienen que haberse inicializado."
+
+#. Type: text
+#. Description
+#: ../mdadm.templates:3001
+msgid ""
+"If you know exactly which arrays are needed to bring up the root file "
+"system, and you want to postpone starting all other arrays to a later point "
+"in the boot sequence, enter the arrays to start here. Alternatively, enter "
+"'all' to simply start all available arrays."
+msgstr ""
+"Introduzca los arrays a iniciar aqu, si sabe con exactitud cules son "
+"necesarios para arrancar el sistema de ficheros raz y quiere posponer el "
+"arranque de todos los dems arrays a un punto posterior de la secuencia de "
+"arranque. Tambin puede introducir all (todos) para, sencillamente, "
+"iniciar todos los arrays disponibles."
+
+#. Type: text
+#. Description
+#: ../mdadm.templates:3001
+msgid ""
+"If you do not need or want to start any arrays for the root file system, "
+"leave the answer blank (or enter 'none'). This may be the case if you are "
+"using kernel autostart or do not need any arrays to boot."
+msgstr ""
+"Puede dejar la respuesta en blanco (o introducir none) si no necesita o "
+"desea arrancar los arrays para el sistema de ficheros raz. Este puede ser "
+"su caso si est utilizando el autoarranque del ncleo o no necesita ningn "
+"array para el arranque."
+
+#. Type: text
+#. Description
+#: ../mdadm.templates:4001
+msgid "An error occurred: device node does not exist"
+msgstr "Se produjo un error: el nodo de dispositivo no existe"
+
+#. Type: text
+#. Description
+#: ../mdadm.templates:5001
+msgid "An error occurred: not a block device"
+msgstr "Se produjo un error: no es un dispositivo de bloques"
+
+#. Type: text
+#. Description
+#: ../mdadm.templates:6001
+msgid "An error occurred: not an MD array"
+msgstr "Se produjo un error: no es un array MD"
+
+#. Type: text
+#. Description
+#: ../mdadm.templates:7001
+msgid "An error occurred: array not listed in mdadm.conf file"
+msgstr ""
+"Se produjo un error: el array no est en la lista definida en el archivo "
+"mdadm.conf"
+
+#. Type: boolean
+#. Description
+#: ../mdadm.templates:8001
+msgid "Start arrays not listed in mdadm.conf?"
+msgstr "Desea arrancar los arrays no listados en mdadm.conf?"
+
+#. Type: boolean
+#. Description
+#: ../mdadm.templates:8001
+msgid ""
+"The specified array (${array}) is not listed in the configuration file "
+"(${config}). Therefore, it cannot be started during boot, unless you correct "
+"the configuration file and recreate the initial ramdisk."
+msgstr ""
+"El array que ha especificado (${array}) no est listado en el fichero de "
+"configuracin ${config}. Este array no podr iniciarse durante el arranque "
+"del sistema a no ser que corrija el fichero de configuracin y regenere el "
+"disco de ram inicial."
+
+#. Type: boolean
+#. Description
+#: ../mdadm.templates:8001
+msgid ""
+"This warning is only relevant if you need arrays to be started from the "
+"initial ramdisk to be able to boot. If you use kernel autostarting, or do "
+"not need any arrays to be started as early as the initial ramdisk is loaded, "
+"you can simply continue. Alternatively, choose not to continue and enter "
+"'none' when prompted which arrays to start from the initial ramdisk."
+msgstr ""
+"Este aviso slo es relevante si necesita que los arrays se inicien en el "
+"disco de RAM inicial para poder arrancar el sistema. Si utiliza el "
+"autoarranque del ncleo o no necesita que los arrays estn arrancados tan "
+"pronto como se cargue el disco de RAM, puede continuar simplemente. Tambin "
+"puede decidir no continuar e introducir none cuando se le pregunte qu "
+"arrays deberan arrancarse del disco de RAM inicial."
+
+#. Type: boolean
+#. Description
+#: ../mdadm.templates:9001
+msgid "Do you want to start MD arrays automatically?"
+msgstr "Desea iniciar los arrays MD de forma automtica?"
+
+#. Type: boolean
+#. Description
+#: ../mdadm.templates:9001
+msgid ""
+"Once the base system has booted, mdadm can start all MD arrays (RAIDs) "
+"specified in /etc/mdadm/mdadm.conf which have not yet been started. This is "
+"recommended unless multiple device (MD) support is compiled into the kernel "
+"and all partitions are marked as belonging to MD arrays, with type 0xfd (as "
+"those and only those will be started automatically by the kernel)."
+msgstr ""
+"Mdadm puede iniciar todos los arrays MD (RAIDs) especificados en /etc/mdadm/"
+"mdadm.conf una vez se haya arrancado el sistema base, siempre que stos no "
+"se hayan arrancado an. Esto es probablemente lo que desea a no ser que haya "
+"compilado el soporte de dispositivos mltiples (MD, multiple devices) en "
+"el ncleo y marcado todas las particiones que son parte de los arrays MD con "
+"el tipo 0xfd (ya que stas, y slo stas, se arrancarn de forma "
+"automtica por el ncleo)."
+
+#. Type: boolean
+#. Description
+#: ../mdadm.templates:10001
+msgid "Should mdadm run monthly redundancy checks of the MD arrays?"
+msgstr ""
+"Debera mdadm ejecutar comprobaciones de redundancia mensuales de los "
+"arrays MD?"
+
+#. Type: boolean
+#. Description
+#: ../mdadm.templates:10001
+msgid ""
+"If the kernel supports it (versions greater than 2.6.14), mdadm can "
+"periodically check the redundancy of MD arrays (RAIDs). This may be a "
+"resource-intensive process, depending on the local setup, but it could help "
+"prevent rare cases of data loss. Note that this is a read-only check unless "
+"errors are found; if errors are found, mdadm will try to correct them, which "
+"may result in write access to the media."
+msgstr ""
+"Mdadm puede comprobar de forma peridica la redundancia de sus arrays MD "
+"(RAIDs) si el ncleo lo soporta (si su versin es superior a la 2.6.14). "
+"Esto puede ser un proceso que consuma muchos recursos, dependiendo de su "
+"configuracin, pero podra ayudar a prevenir casos raros de prdida de "
+"datos. Tenga en cuenta que estas comprobaciones se hacen en modo lectura "
+"salvo que se detecten errores, en cuyo caso mdadm necesitar corregirlos, lo "
+"que significa que ser necesario tener acceso de escritura a los medios "
+"fsicos."
+
+#. Type: boolean
+#. Description
+#: ../mdadm.templates:10001
+msgid ""
+"The default, if turned on, is to check on the first Sunday of every month at "
+"01:06."
+msgstr ""
+"El valor por omisio, si se activa, es comprobar el primer Domingo de cada "
+"mes a las 01:06 am."
+
+#. Type: boolean
+#. Description
+#: ../mdadm.templates:11001
+msgid "Do you want to start the MD monitoring daemon?"
+msgstr "Desea arrancar el demonio de monitorizacin MD?"
+
+#. Type: boolean
+#. Description
+#: ../mdadm.templates:11001
+msgid ""
+"The MD (RAID) monitor daemon sends email notifications in response to "
+"important MD events (such as a disk failure)."
+msgstr ""
+"El demonio de monitorizacin MD (RAID) enva notificaciones por correo "
+"electrnico cuando se producen eventos importantes en los dispositivos MD "
+"(como pueda ser el caso de un fallo de un disco)."
+
+#. Type: boolean
+#. Description
+#: ../mdadm.templates:11001
+msgid "Enabling this option is recommended."
+msgstr "Es opcional habilitar esta opcin."
+
+#. Type: string
+#. Description
+#: ../mdadm.templates:12001
+msgid "Recipient for email notifications:"
+msgstr "Destinatario de las notificaciones por correo:"
+
+#. Type: string
+#. Description
+#: ../mdadm.templates:12001
+msgid ""
+"Please enter the email address of the user who should get the email "
+"notifications for important MD events."
+msgstr ""
+"Introduzca la direccin de correo electrnico del usuario que debera "
+"recibir las notificaciones por correo de eventos relevantes en los "
+"dispositivos MD."
+
+#~ msgid ""
+#~ "Please refer to /usr/share/doc/mdadm/README.upgrading-2.5.3.gz if you "
+#~ "intend to continue."
+#~ msgstr ""
+#~ "Si desea continuar debera leer /usr/share/doc/mdadm/README."
+#~ "upgrading-2.5.3.gz."
+
+#~ msgid "${msg}"
+#~ msgstr "${msg}"
diff --git a/debian/po/eu.po b/debian/po/eu.po
new file mode 100644
index 00000000..cdd27325
--- /dev/null
+++ b/debian/po/eu.po
@@ -0,0 +1,241 @@
+# mdadm debconf templates basque translation
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# Piarres Beobide <pi@beobide.net>, 2008.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: mdadm-debconf\n"
+"Report-Msgid-Bugs-To: mdadm@packages.debian.org\n"
+"POT-Creation-Date: 2012-05-22 00:50+0100\n"
+"PO-Revision-Date: Y2008-04-30 11:00+0100\n"
+"Last-Translator: Piarres Beobide <pi@beobide.net>\n"
+"Language-Team: Euskara <debian-l10n-basque@lists.debian.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Type: string
+#. Description
+#: ../mdadm.templates:2001
+msgid "MD arrays needed for the root file system:"
+msgstr "Erro fitxategi-sistemarentzat beharrezko MD array-ak:"
+
+#. Type: string
+#. Description
+#: ../mdadm.templates:2001
+msgid ""
+"Please enter 'all', 'none', or a space-separated list of devices such as "
+"'md0 md1' or 'md/1 md/d0' (the leading '/dev/' can be omitted)."
+msgstr ""
+"Mesedez idatzi 'denak', 'batez', edo zuriunez bereziriko gailuen zerrenda, "
+"adibidez 'md0 md1' edo 'md/1 md/d0' (hasierako '/dev/' baztertu daiteke)."
+
+#. Type: text
+#. Description
+#: ../mdadm.templates:3001
+msgid "for internal use - only the long description is needed."
+msgstr "barne erabilerako - deskribapen luzea bakarrik behar da."
+
+#. Type: text
+#. Description
+#: ../mdadm.templates:3001
+msgid ""
+"If the system's root file system is located on an MD array (RAID), it needs "
+"to be started early during the boot sequence. If it is located on a logical "
+"volume (LVM), which is on MD, all constituent arrays need to be started."
+msgstr ""
+"Sistemaren erro fitxategi-sistema MD array (RAID) batetan kokaturik badago, "
+"berau abio sekuentziaren hasieran abiarazi behar da. MD batetan kokaturiko "
+"bolumen logiko (LVM) batetan badago osatzen duten array guztiak abiarazi "
+"behar dira."
+
+#. Type: text
+#. Description
+#: ../mdadm.templates:3001
+msgid ""
+"If you know exactly which arrays are needed to bring up the root file "
+"system, and you want to postpone starting all other arrays to a later point "
+"in the boot sequence, enter the arrays to start here. Alternatively, enter "
+"'all' to simply start all available arrays."
+msgstr ""
+"Erro fitxategi-sistema erabiltzeko beharrezkoak diren arrayak zehazki jakin "
+"eta beste array-en abiaraztea abioaren beranduagoko puntu batetara atzeratu "
+"nahi baduzu, idatzi abiarazi beharreko array-ak hemen. Bestela idatzi "
+"'denak' array erabilgarri guztiak abiarazteko."
+
+#. Type: text
+#. Description
+#: ../mdadm.templates:3001
+msgid ""
+"If you do not need or want to start any arrays for the root file system, "
+"leave the answer blank (or enter 'none'). This may be the case if you are "
+"using kernel autostart or do not need any arrays to boot."
+msgstr ""
+"Ez baduzu erro fitxategi sistemarako array-rik abiarazi behar, hutsik utzi "
+"ezazu (edo 'batez' idatzi). Hau abioan array-rik behar ez duzulako edo "
+"kernel auto-abioa erabiltzen duzulako izan daiteke."
+
+#. Type: text
+#. Description
+#: ../mdadm.templates:4001
+msgid "An error occurred: device node does not exist"
+msgstr "Errore bat gertatu da: gailu nodoa ez dago"
+
+#. Type: text
+#. Description
+#: ../mdadm.templates:5001
+msgid "An error occurred: not a block device"
+msgstr "Errore bat gertatu da: ez da bloke gailu bat"
+
+#. Type: text
+#. Description
+#: ../mdadm.templates:6001
+msgid "An error occurred: not an MD array"
+msgstr "Errore bat gertatu da: ez da MD array bat"
+
+#. Type: text
+#. Description
+#: ../mdadm.templates:7001
+msgid "An error occurred: array not listed in mdadm.conf file"
+msgstr ""
+"Errore bat gertatu da: array-a ez dago mdadm.conf fitxategian zerrendaturik"
+
+#. Type: boolean
+#. Description
+#: ../mdadm.templates:8001
+msgid "Start arrays not listed in mdadm.conf?"
+msgstr "Abiarazi mdadm.conf fitxategian ez dauden array-ak?"
+
+#. Type: boolean
+#. Description
+#: ../mdadm.templates:8001
+msgid ""
+"The specified array (${array}) is not listed in the configuration file "
+"(${config}). Therefore, it cannot be started during boot, unless you correct "
+"the configuration file and recreate the initial ramdisk."
+msgstr ""
+"Zehazturiko (${array}) array-a ez dago (${config}) konfigurazio fitxategian "
+"zerrendaturiko. Horregatik ezin da abioan abiarazi zuk konfigurazio "
+"fitxategia konpondu eta abio ramdiskoa bersortu arte."
+
+#. Type: boolean
+#. Description
+#: ../mdadm.templates:8001
+msgid ""
+"This warning is only relevant if you need arrays to be started from the "
+"initial ramdisk to be able to boot. If you use kernel autostarting, or do "
+"not need any arrays to be started as early as the initial ramdisk is loaded, "
+"you can simply continue. Alternatively, choose not to continue and enter "
+"'none' when prompted which arrays to start from the initial ramdisk."
+msgstr ""
+"Abisu hau abiarazi ahal izateko ramdisk.etik array-ak baiaraztea behar "
+"baduzu bakarrik da garrantzitsua. Kernel auto-abioa erabiltzen baduzu edo ez "
+"baduzu ramdisk-etik hasieran array-rik kargatzea behar aurrera jarraitu "
+"dezakezu. Bestela ez jarraitzea hautatu eta 'batez' idatzi hasierako ramdisk-"
+"etik kargatu beharreko array-ez galdetzean."
+
+#. Type: boolean
+#. Description
+#: ../mdadm.templates:9001
+msgid "Do you want to start MD arrays automatically?"
+msgstr "MD array-ak automatikoki abiarazi nahi al dituzu?"
+
+#. Type: boolean
+#. Description
+#: ../mdadm.templates:9001
+msgid ""
+"Once the base system has booted, mdadm can start all MD arrays (RAIDs) "
+"specified in /etc/mdadm/mdadm.conf which have not yet been started. This is "
+"recommended unless multiple device (MD) support is compiled into the kernel "
+"and all partitions are marked as belonging to MD arrays, with type 0xfd (as "
+"those and only those will be started automatically by the kernel)."
+msgstr ""
+"Behin oinarri sistema abiarazi denean, mdadm-ek /etc/mdadm/mdadm.conf-en "
+"konfiguraturiko eta oraindik abiarazi ez diren MD array (RAID) guztiak "
+"abiarazi ditzake. Hau gomendagarria da ez bada gailu anitzeko (MD) onarpena "
+"kernelan konpilaturik eta partizio guztiak MD array partaide bezala "
+"markaturik badaude, 0xfd mota erabiliaz (horrela hauek eta hauek bakarrik "
+"abiaraziko ditu automatikoki kernelak)."
+
+#. Type: boolean
+#. Description
+#: ../mdadm.templates:10001
+msgid "Should mdadm run monthly redundancy checks of the MD arrays?"
+msgstr ""
+"Mdadm-ek hilabetero egin behar al du MD array-en erredundantzia egiaztapena?"
+
+#. Type: boolean
+#. Description
+#: ../mdadm.templates:10001
+msgid ""
+"If the kernel supports it (versions greater than 2.6.14), mdadm can "
+"periodically check the redundancy of MD arrays (RAIDs). This may be a "
+"resource-intensive process, depending on the local setup, but it could help "
+"prevent rare cases of data loss. Note that this is a read-only check unless "
+"errors are found; if errors are found, mdadm will try to correct them, which "
+"may result in write access to the media."
+msgstr ""
+"Kernelak onartzen badu (2.6.14 baino bertsio berriagoak), mdadm-ek aldiro MD "
+"array-en (RAID-en) erredundantzia aldiro egiazta dezake. Hau errekurtso-"
+"behar handiko prozesu bat izan daiteke, konfigurazio lokalaren arabera, "
+"baina datu galera kasuak saihesten lagundu dezake. Kontutan izan errorerik "
+"aurkitzen ez bada irakurketa-soileko egiaztapen bat dela; errorerik "
+"arukituko balitz mdadm konpontzen saiatuko da, honetarako euskarrian idaztea "
+"beharrezko izan daitekeelarik."
+
+#. Type: boolean
+#. Description
+#: ../mdadm.templates:10001
+msgid ""
+"The default, if turned on, is to check on the first Sunday of every month at "
+"01:06."
+msgstr ""
+"Lehenespen bezala gaiturik dago, egiaztapena hilabete bakoitzeko lehenengo "
+"asteleheneko 01:06-etan egingo da."
+
+#. Type: boolean
+#. Description
+#: ../mdadm.templates:11001
+msgid "Do you want to start the MD monitoring daemon?"
+msgstr "MD monitorizazio deabrua abiarazi nahi al duzu?"
+
+#. Type: boolean
+#. Description
+#: ../mdadm.templates:11001
+msgid ""
+"The MD (RAID) monitor daemon sends email notifications in response to "
+"important MD events (such as a disk failure)."
+msgstr ""
+"MD (RAID) monitore deabruak eposta bidezko berri-emateak bidaltzen ditu "
+"gertaera garrantzitsuetan (disko erroreen antzerakoetan)."
+
+#. Type: boolean
+#. Description
+#: ../mdadm.templates:11001
+msgid "Enabling this option is recommended."
+msgstr "Aukera hau gaitzea gomendagarria da."
+
+#. Type: string
+#. Description
+#: ../mdadm.templates:12001
+msgid "Recipient for email notifications:"
+msgstr "Eposta berri-emateen hartzailea:"
+
+#. Type: string
+#. Description
+#: ../mdadm.templates:12001
+msgid ""
+"Please enter the email address of the user who should get the email "
+"notifications for important MD events."
+msgstr ""
+"Mesedez idatzi MD gertaera garrantzitsuen berri emate mezuak jaso behar "
+"dituen erabiltzailearen eposta helbidea."
+
+#~ msgid ""
+#~ "Please refer to /usr/share/doc/mdadm/README.upgrading-2.5.3.gz if you "
+#~ "intend to continue."
+#~ msgstr ""
+#~ "Mesedez irakurri /usr/share/doc/mdadm/README.upgrading-2.5.3.gz aurrera "
+#~ "jarraitu nahi baduzu."
diff --git a/debian/po/fi.po b/debian/po/fi.po
new file mode 100644
index 00000000..05a86c64
--- /dev/null
+++ b/debian/po/fi.po
@@ -0,0 +1,236 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: mdadm\n"
+"Report-Msgid-Bugs-To: mdadm@packages.debian.org\n"
+"POT-Creation-Date: 2012-05-22 00:50+0100\n"
+"PO-Revision-Date: 2008-02-14 11:24+0200\n"
+"Last-Translator: Esko Arajärvi <edu@iki.fi>\n"
+"Language-Team: Finnish <debian-l10n-finnish@lists.debian.org>\n"
+"Language: fi\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Poedit-Language: Finnish\n"
+"X-Poedit-Country: FINLAND\n"
+
+#. Type: string
+#. Description
+#: ../mdadm.templates:2001
+msgid "MD arrays needed for the root file system:"
+msgstr "Juuritiedostojärjestelmän tarvitsemat MD-pakat:"
+
+#. Type: string
+#. Description
+#: ../mdadm.templates:2001
+msgid ""
+"Please enter 'all', 'none', or a space-separated list of devices such as "
+"'md0 md1' or 'md/1 md/d0' (the leading '/dev/' can be omitted)."
+msgstr ""
+"Syötä ”all” (kaikki), ”none” (ei mitään) tai välilyönnein eroteltu lista "
+"laitteista, esimerkiksi ”md0 md1” tai ”md/1 md/d0” (edeltävä /dev/ voidaan "
+"jättää pois)."
+
+#. Type: text
+#. Description
+#: ../mdadm.templates:3001
+msgid "for internal use - only the long description is needed."
+msgstr "vain sisäiseen käyttöön - vain pitkä kuvaus on tarpeellinen."
+
+#. Type: text
+#. Description
+#: ../mdadm.templates:3001
+msgid ""
+"If the system's root file system is located on an MD array (RAID), it needs "
+"to be started early during the boot sequence. If it is located on a logical "
+"volume (LVM), which is on MD, all constituent arrays need to be started."
+msgstr ""
+"Jos järjestelmän juuritiedostojärjestelmä sijaitsee MD-levypakassa (RAID), "
+"pakka tulee käynnistää aikaisessa vaiheessa käynnistettäessä järjestelmää. "
+"Jos se sijaitsee loogisella taltiolla (LVM), joka on MD-pakassa, kaikki "
+"taltioon liittyvät pakat tulee käynnistää."
+
+#. Type: text
+#. Description
+#: ../mdadm.templates:3001
+msgid ""
+"If you know exactly which arrays are needed to bring up the root file "
+"system, and you want to postpone starting all other arrays to a later point "
+"in the boot sequence, enter the arrays to start here. Alternatively, enter "
+"'all' to simply start all available arrays."
+msgstr ""
+"Jos tiedät tarkalleen mitä pakkoja tarvitaan juuritiedostojärjestelmän "
+"käynnistämiseen ja haluat viivästyttää muiden pakkojen käynnistystä, syötä "
+"käynnistettävät pakat tähän. Vaihtoehtoisesti voit käynnistää kaikki pakat "
+"syöttämällä ”all”."
+
+#. Type: text
+#. Description
+#: ../mdadm.templates:3001
+msgid ""
+"If you do not need or want to start any arrays for the root file system, "
+"leave the answer blank (or enter 'none'). This may be the case if you are "
+"using kernel autostart or do not need any arrays to boot."
+msgstr ""
+"Jos mitään pakkoja ei tarvitse käynnistää juuritiedostojärjestelmän "
+"käyttämiseksi, jätä kenttä tyhjäksi (tai syötä ”none”). Tämä voi olla "
+"tilanne, jos käytät ytimen autokäynnistystä tai et tarvitse mitään pakkoja "
+"käynnistykseen."
+
+#. Type: text
+#. Description
+#: ../mdadm.templates:4001
+msgid "An error occurred: device node does not exist"
+msgstr "Tapahtui virhe: laitetiedostoa ei ole olemassa"
+
+#. Type: text
+#. Description
+#: ../mdadm.templates:5001
+msgid "An error occurred: not a block device"
+msgstr "Tapahtui virhe: ei lohkolaite"
+
+#. Type: text
+#. Description
+#: ../mdadm.templates:6001
+msgid "An error occurred: not an MD array"
+msgstr "Tapahtui virhe: ei MD-pakka"
+
+#. Type: text
+#. Description
+#: ../mdadm.templates:7001
+msgid "An error occurred: array not listed in mdadm.conf file"
+msgstr "Tapahtui virhe: pakkaa ei ole listattu tiedostossa mdadm.conf"
+
+#. Type: boolean
+#. Description
+#: ../mdadm.templates:8001
+msgid "Start arrays not listed in mdadm.conf?"
+msgstr "Käynnistetäänkö pakat, joita ei ole listattu tiedostossa mdadm.conf?"
+
+#. Type: boolean
+#. Description
+#: ../mdadm.templates:8001
+msgid ""
+"The specified array (${array}) is not listed in the configuration file "
+"(${config}). Therefore, it cannot be started during boot, unless you correct "
+"the configuration file and recreate the initial ramdisk."
+msgstr ""
+"Annettua pakkaa (${array}) ei ole listattu asetustiedostossa (${config}). "
+"Niinpä sitä ei voida käynnistää käynnistettäessä järjestelmä, ellei "
+"asetustiedostoa korjata ja käynnistysmuistilevyä (initrd) luoda uudelleen."
+
+#. Type: boolean
+#. Description
+#: ../mdadm.templates:8001
+msgid ""
+"This warning is only relevant if you need arrays to be started from the "
+"initial ramdisk to be able to boot. If you use kernel autostarting, or do "
+"not need any arrays to be started as early as the initial ramdisk is loaded, "
+"you can simply continue. Alternatively, choose not to continue and enter "
+"'none' when prompted which arrays to start from the initial ramdisk."
+msgstr ""
+"Tämä varoitus on aiheellinen vain, jos järjestelmän käynnistäminen vaatii "
+"pakkojen käynnistämistä käynnistysmuistilevyltä. Jos ytimen autokäynnistys "
+"on käytössä tai pakkoja ei tarvita siinä vaiheessa, kun käynnistysmuistilevy "
+"ladataan, voit jatkaa. Vaihtoehtoisesti voit olla jatkamatta ja syöttää "
+"”none” kysyttäessä käynnistysmuistilevyltä käynnistettäviä pakkoja."
+
+#. Type: boolean
+#. Description
+#: ../mdadm.templates:9001
+msgid "Do you want to start MD arrays automatically?"
+msgstr "Tulisiko MD-pakat käynnistää automaattisesti?"
+
+#. Type: boolean
+#. Description
+#: ../mdadm.templates:9001
+msgid ""
+"Once the base system has booted, mdadm can start all MD arrays (RAIDs) "
+"specified in /etc/mdadm/mdadm.conf which have not yet been started. This is "
+"recommended unless multiple device (MD) support is compiled into the kernel "
+"and all partitions are marked as belonging to MD arrays, with type 0xfd (as "
+"those and only those will be started automatically by the kernel)."
+msgstr ""
+"Kun perusjärjestelmä on käynnistynyt, mdadm voi käynnistää kaikki "
+"tiedostossa /etc/mdadm/mdadm.conf luetellut MD-pakat (RAIDit), joita ei ole "
+"vielä käynnistetty. Tämä on suositeltavaa, paitsi jos MD-tuki on käännetty "
+"ytimeen ja kaikki osiot on merkitty kuulumaan MD-pakkoihin tyypillä 0xfd "
+"(koska ydin käynnistää automaattisesti nämä ja vain nämä)."
+
+#. Type: boolean
+#. Description
+#: ../mdadm.templates:10001
+msgid "Should mdadm run monthly redundancy checks of the MD arrays?"
+msgstr "Tulisiko mdadm:n tarkistaa kuukausittain MD-pakkojen eheys?"
+
+#. Type: boolean
+#. Description
+#: ../mdadm.templates:10001
+msgid ""
+"If the kernel supports it (versions greater than 2.6.14), mdadm can "
+"periodically check the redundancy of MD arrays (RAIDs). This may be a "
+"resource-intensive process, depending on the local setup, but it could help "
+"prevent rare cases of data loss. Note that this is a read-only check unless "
+"errors are found; if errors are found, mdadm will try to correct them, which "
+"may result in write access to the media."
+msgstr ""
+"Ohjelma mdadm voi säännöllisesti tarkistaa MD-pakkojen (RAIDien) tietojen "
+"monistuksen, jos ydin tukee tätä (versiosta 2.6.14 eteenpäin). Tämä prosessi "
+"voi paikallisesta kokoonpanosta riippuen kuluttaa paljon resursseja, mutta "
+"saattaa ehkäistä tietojen menetyksiä tietyissä harvinaisissa tapauksissa. "
+"Tarkistus vaatii vain tietojen lukemista, jos virheitä ei löyty. Jos "
+"virheitä löytyy, mdadm yrittää korjata ne, jolloin levylle saatetaan myös "
+"kirjoittaa."
+
+#. Type: boolean
+#. Description
+#: ../mdadm.templates:10001
+msgid ""
+"The default, if turned on, is to check on the first Sunday of every month at "
+"01:06."
+msgstr ""
+"Oletuksena, jos tarkistus on käytössä, se tehdään kuukauden ensimmäisenä "
+"sunnuntaina kello 01.06."
+
+#. Type: boolean
+#. Description
+#: ../mdadm.templates:11001
+msgid "Do you want to start the MD monitoring daemon?"
+msgstr "Haluatko käynnistää MD-seurannan?"
+
+#. Type: boolean
+#. Description
+#: ../mdadm.templates:11001
+msgid ""
+"The MD (RAID) monitor daemon sends email notifications in response to "
+"important MD events (such as a disk failure)."
+msgstr ""
+"MD-pakkoja (RAIDeja) seuraava taustaohjelma lähettää tietoja sähköpostiin "
+"tärkeiden MD-tapahtumien (kuten levyrikon) sattuessa."
+
+#. Type: boolean
+#. Description
+#: ../mdadm.templates:11001
+msgid "Enabling this option is recommended."
+msgstr "Tämän valitseminen on suositeltavaa."
+
+#. Type: string
+#. Description
+#: ../mdadm.templates:12001
+msgid "Recipient for email notifications:"
+msgstr "Sähköpostiviestien vastaanottaja:"
+
+#. Type: string
+#. Description
+#: ../mdadm.templates:12001
+msgid ""
+"Please enter the email address of the user who should get the email "
+"notifications for important MD events."
+msgstr ""
+"Anna sähköpostiosoite, johon sähköpostitiedotteet tärkeistä MD-tapahtumista "
+"lähetetään."
+
+#~ msgid ""
+#~ "Please refer to /usr/share/doc/mdadm/README.upgrading-2.5.3.gz if you "
+#~ "intend to continue."
+#~ msgstr ""
+#~ "Lue /usr/share/doc/mdadm/README.upgrading-2.5.3.gz, jos aiot jatkaa."
diff --git a/debian/po/fr.po b/debian/po/fr.po
new file mode 100644
index 00000000..a4295f24
--- /dev/null
+++ b/debian/po/fr.po
@@ -0,0 +1,252 @@
+# Translation of mdadm debconf templates to French
+# Copyright (C) 2008 Florentin Duneau <fduneau@gmail.com>
+# This file is distributed under the same license as the lurker package.
+#
+#
+# Éric Madesclair <eric-m@wanadoo.fr>, 2005, 2006.
+# Jean-Luc Coulon (f5ibh) <jean-luc.coulon@wanadoo.fr>, 2006.
+# Florentin Duneau <fduneau@gmail.com>, 2006, 2007, 2008.
+msgid ""
+msgstr ""
+"Project-Id-Version: mdadm\n"
+"Report-Msgid-Bugs-To: mdadm@packages.debian.org\n"
+"POT-Creation-Date: 2012-05-22 00:50+0100\n"
+"PO-Revision-Date: 2008-02-15 20:42+0100\n"
+"Last-Translator: Florentin Duneau <fduneau@gmail.com>\n"
+"Language-Team: French <debian-l10n-french@lists.debian.org>\n"
+"Language: fr\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Type: string
+#. Description
+#: ../mdadm.templates:2001
+msgid "MD arrays needed for the root file system:"
+msgstr "Ensembles MD requis par le système de fichiers racine :"
+
+#. Type: string
+#. Description
+#: ../mdadm.templates:2001
+msgid ""
+"Please enter 'all', 'none', or a space-separated list of devices such as "
+"'md0 md1' or 'md/1 md/d0' (the leading '/dev/' can be omitted)."
+msgstr ""
+"Veuillez indiquer « all », « none » ou une liste de périphériques, séparés "
+"par des espaces, par exemple, « md0 md1 » ou « md/1 md/d0 » (vous pouvez "
+"omettre « /dev/ »)."
+
+#. Type: text
+#. Description
+#: ../mdadm.templates:3001
+msgid "for internal use - only the long description is needed."
+msgstr ""
+"Pour une utilisation interne - seule la description longue est nécessaire"
+
+#. Type: text
+#. Description
+#: ../mdadm.templates:3001
+msgid ""
+"If the system's root file system is located on an MD array (RAID), it needs "
+"to be started early during the boot sequence. If it is located on a logical "
+"volume (LVM), which is on MD, all constituent arrays need to be started."
+msgstr ""
+"Si le système de fichiers racine se trouve sur un ensemble MD (RAID), il "
+"doit être lancé au début de la procédure de démarrage. Si le système de "
+"fichiers racine se trouve sur un volume logique (« LVM »), qui se trouve "
+"aussi sur un volume MD, tous les composants de l'ensemble doivent être "
+"démarrés."
+
+#. Type: text
+#. Description
+#: ../mdadm.templates:3001
+msgid ""
+"If you know exactly which arrays are needed to bring up the root file "
+"system, and you want to postpone starting all other arrays to a later point "
+"in the boot sequence, enter the arrays to start here. Alternatively, enter "
+"'all' to simply start all available arrays."
+msgstr ""
+"Si vous savez exactement quels sont les ensembles RAID nécessaires au "
+"démarrage du système de fichiers racine et si vous souhaitez différer le "
+"démarrage de tous les autres ensembles, veuillez les indiquer ici. Vous "
+"pouvez aussi indiquer « all » pour démarrer tous les ensembles existants."
+
+#. Type: text
+#. Description
+#: ../mdadm.templates:3001
+msgid ""
+"If you do not need or want to start any arrays for the root file system, "
+"leave the answer blank (or enter 'none'). This may be the case if you are "
+"using kernel autostart or do not need any arrays to boot."
+msgstr ""
+"Si vous n'avez pas besoin ou ne souhaitez pas démarrer d'ensemble RAID pour "
+"le système de fichiers racine, veuillez laissez l'entrée vide (ou entrez "
+"« none »). Ceci peut être le cas si vous utilisez l'option de démarrage "
+"automatique (« autostart ») du noyau ou si vous n'avez besoin d'aucun "
+"ensemble pour démarrer."
+
+#. Type: text
+#. Description
+#: ../mdadm.templates:4001
+msgid "An error occurred: device node does not exist"
+msgstr "Erreur : périphérique inconnu"
+
+#. Type: text
+#. Description
+#: ../mdadm.templates:5001
+msgid "An error occurred: not a block device"
+msgstr "Erreur : ce n'est pas un périphérique en mode bloc"
+
+#. Type: text
+#. Description
+#: ../mdadm.templates:6001
+msgid "An error occurred: not an MD array"
+msgstr "Erreur : ce n'est pas un ensemble RAID"
+
+#. Type: text
+#. Description
+#: ../mdadm.templates:7001
+msgid "An error occurred: array not listed in mdadm.conf file"
+msgstr "Erreur : ensemble non mentionné dans le fichier mdadm.conf"
+
+#. Type: boolean
+#. Description
+#: ../mdadm.templates:8001
+msgid "Start arrays not listed in mdadm.conf?"
+msgstr "Faut-il démarrer les ensembles RAID non mentionnés dans mdadm.conf ?"
+
+#. Type: boolean
+#. Description
+#: ../mdadm.templates:8001
+msgid ""
+"The specified array (${array}) is not listed in the configuration file "
+"(${config}). Therefore, it cannot be started during boot, unless you correct "
+"the configuration file and recreate the initial ramdisk."
+msgstr ""
+"L'ensemble (${array}) que vous avez spécifié n'est pas mentionné dans le "
+"fichier de configuration ${config}. Il ne sera donc pas démarré à moins que "
+"vous corrigiez le fichier de configuration et que vous génériez de nouveau "
+"le disque mémoire initial (« ramdisk »)."
+
+#. Type: boolean
+#. Description
+#: ../mdadm.templates:8001
+msgid ""
+"This warning is only relevant if you need arrays to be started from the "
+"initial ramdisk to be able to boot. If you use kernel autostarting, or do "
+"not need any arrays to be started as early as the initial ramdisk is loaded, "
+"you can simply continue. Alternatively, choose not to continue and enter "
+"'none' when prompted which arrays to start from the initial ramdisk."
+msgstr ""
+"Cet avertissement n'a de signification que si des ensembles RAID doivent "
+"être lancés à partir du disque mémoire initial afin de pouvoir démarrer le "
+"système. Si vous utilisez le démarrage automatique par le noyau, ou si vous "
+"n'avez pas besoin de lancer d'ensemble RAID depuis le disque mémoire "
+"initial, vous pouvez simplement poursuivre. Vous pouvez aussi choisir de ne "
+"pas poursuivre et entrer « none » lorsqu'il vous sera demandé le nom des "
+"ensembles RAID à démarrer à partir du disque mémoire initial."
+
+#. Type: boolean
+#. Description
+#: ../mdadm.templates:9001
+msgid "Do you want to start MD arrays automatically?"
+msgstr "Faut-il démarrer automatiquement les ensembles RAID ?"
+
+#. Type: boolean
+#. Description
+#: ../mdadm.templates:9001
+msgid ""
+"Once the base system has booted, mdadm can start all MD arrays (RAIDs) "
+"specified in /etc/mdadm/mdadm.conf which have not yet been started. This is "
+"recommended unless multiple device (MD) support is compiled into the kernel "
+"and all partitions are marked as belonging to MD arrays, with type 0xfd (as "
+"those and only those will be started automatically by the kernel)."
+msgstr ""
+"Lorsque le système de base a démarré, mdadm peut démarrer tous les ensembles "
+"(RAID) indiqués dans /etc/mdadm/mdadm.conf qui n'ont pas encore été "
+"démarrés. Cela est recommandé, sauf si la gestion MD a été compilée dans le "
+"noyau et que toutes les partitions faisant partie d'un ensemble RAID ont été "
+"marquées avec le type 0xfd (car seul ce type de partition sera démarré "
+"automatiquement par le noyau)."
+
+#. Type: boolean
+#. Description
+#: ../mdadm.templates:10001
+msgid "Should mdadm run monthly redundancy checks of the MD arrays?"
+msgstr "Faut-il vérifier chaque mois la redondance des ensembles RAID ?"
+
+#. Type: boolean
+#. Description
+#: ../mdadm.templates:10001
+msgid ""
+"If the kernel supports it (versions greater than 2.6.14), mdadm can "
+"periodically check the redundancy of MD arrays (RAIDs). This may be a "
+"resource-intensive process, depending on the local setup, but it could help "
+"prevent rare cases of data loss. Note that this is a read-only check unless "
+"errors are found; if errors are found, mdadm will try to correct them, which "
+"may result in write access to the media."
+msgstr ""
+"Si le noyau le gère (à partir de la version 2.6.14), mdadm peut vérifier "
+"périodiquement la redondance des ensembles RAID. Cette action peut demander "
+"beaucoup de ressources selon la configuration, mais cela aide à prévenir les "
+"rares cas de pertes de données. Notez que ce test est réalisé en lecture "
+"seule à moins que des erreurs ne soient rencontrées. Si des erreurs sont "
+"détectées, mdadm essayera de les corriger, ce qui entraînera des écritures "
+"sur le média."
+
+#. Type: boolean
+#. Description
+#: ../mdadm.templates:10001
+msgid ""
+"The default, if turned on, is to check on the first Sunday of every month at "
+"01:06."
+msgstr ""
+"Par défaut, la vérification s'effectuera tous les premiers dimanche du mois "
+"à 01 h 06."
+
+#. Type: boolean
+#. Description
+#: ../mdadm.templates:11001
+msgid "Do you want to start the MD monitoring daemon?"
+msgstr "Faut-il démarrer le démon de surveillance MD ?"
+
+#. Type: boolean
+#. Description
+#: ../mdadm.templates:11001
+msgid ""
+"The MD (RAID) monitor daemon sends email notifications in response to "
+"important MD events (such as a disk failure)."
+msgstr ""
+"Le démon de surveillance MD envoie des notifications par courriel lors "
+"d'importants événements MD (comme une panne de disque dur)."
+
+#. Type: boolean
+#. Description
+#: ../mdadm.templates:11001
+msgid "Enabling this option is recommended."
+msgstr "Il est recommandé d'activer cette option."
+
+#. Type: string
+#. Description
+#: ../mdadm.templates:12001
+msgid "Recipient for email notifications:"
+msgstr "Destinataire des notifications par courriel :"
+
+#. Type: string
+#. Description
+#: ../mdadm.templates:12001
+msgid ""
+"Please enter the email address of the user who should get the email "
+"notifications for important MD events."
+msgstr ""
+"Veuillez indiquer l'adresse électronique de l'utilisateur qui doit recevoir "
+"les notifications lors d'importants événements MD."
+
+#~ msgid ""
+#~ "Please refer to /usr/share/doc/mdadm/README.upgrading-2.5.3.gz if you "
+#~ "intend to continue."
+#~ msgstr ""
+#~ "Veuillez consulter /usr/share/doc/mdadm/README.upgrading-2.5.3.gz si vous "
+#~ "souhaitez continuer."
diff --git a/debian/po/gl.po b/debian/po/gl.po
new file mode 100644
index 00000000..f65796ef
--- /dev/null
+++ b/debian/po/gl.po
@@ -0,0 +1,243 @@
+# Galician translation of mdadm's debconf templates
+# This file is distributed under the same license as the mdadm package.
+# Jacobo Tarrio <jtarrio@debian.org>, 2007, 2008.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: mdadm\n"
+"Report-Msgid-Bugs-To: mdadm@packages.debian.org\n"
+"POT-Creation-Date: 2012-05-22 00:50+0100\n"
+"PO-Revision-Date: 2008-02-06 23:45+0000\n"
+"Last-Translator: Jacobo Tarrio <jtarrio@debian.org>\n"
+"Language-Team: Galician <proxecto@trasno.net>\n"
+"Language: gl\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Type: string
+#. Description
+#: ../mdadm.templates:2001
+msgid "MD arrays needed for the root file system:"
+msgstr "Arrays MD necesarios para o sistema de ficheiros raíz"
+
+#. Type: string
+#. Description
+#: ../mdadm.templates:2001
+msgid ""
+"Please enter 'all', 'none', or a space-separated list of devices such as "
+"'md0 md1' or 'md/1 md/d0' (the leading '/dev/' can be omitted)."
+msgstr ""
+"Introduza \"all\" (todos), \"none\" (ningún) ou unha lista de dispositivos "
+"separados por espazos, tales coma \"md0 md1\" ou \"md/1 md/0\" (pódese "
+"omitir o \"/dev/\" do principio)."
+
+#. Type: text
+#. Description
+#: ../mdadm.templates:3001
+msgid "for internal use - only the long description is needed."
+msgstr "para uso interno - só se precisa da descrición longa."
+
+#. Type: text
+#. Description
+#: ../mdadm.templates:3001
+msgid ""
+"If the system's root file system is located on an MD array (RAID), it needs "
+"to be started early during the boot sequence. If it is located on a logical "
+"volume (LVM), which is on MD, all constituent arrays need to be started."
+msgstr ""
+"Se o sistema de ficheiros raíz do sistema está ubicado nun array MD (RAID), "
+"hai que o iniciar no principio da secuencia de inicio. Se está ubicado nun "
+"volume lóxico (LVM) que está nun MD, hai que iniciar os arrays constituíntes."
+
+#. Type: text
+#. Description
+#: ../mdadm.templates:3001
+msgid ""
+"If you know exactly which arrays are needed to bring up the root file "
+"system, and you want to postpone starting all other arrays to a later point "
+"in the boot sequence, enter the arrays to start here. Alternatively, enter "
+"'all' to simply start all available arrays."
+msgstr ""
+"Se sabe exactamente que arrays son necesarios para erguer o sistema de "
+"ficheiros raíz, e se quere pospor o inicio dos demáis arrays ata un punto "
+"posterior da secuencia de inicio, introduza aquí os arrays a iniciar. "
+"Alternativamente, introduza \"all\" para iniciar tódolos arrays dispoñibles."
+
+#. Type: text
+#. Description
+#: ../mdadm.templates:3001
+msgid ""
+"If you do not need or want to start any arrays for the root file system, "
+"leave the answer blank (or enter 'none'). This may be the case if you are "
+"using kernel autostart or do not need any arrays to boot."
+msgstr ""
+"Se non quere ou precisa de iniciar ningún array para o sistema de ficheiros "
+"raíz, deixe a resposta en branco (ou introduza \"none\"). Este pode ser o "
+"caso se está a empregar o autoinicio do núcleo ou non precisa de ningún "
+"array para o inicio."
+
+#. Type: text
+#. Description
+#: ../mdadm.templates:4001
+msgid "An error occurred: device node does not exist"
+msgstr "Houbo un erro: o nodo do dispositivo non existe"
+
+#. Type: text
+#. Description
+#: ../mdadm.templates:5001
+msgid "An error occurred: not a block device"
+msgstr "Houbo un erro: non é un dispositivo de bloques"
+
+#. Type: text
+#. Description
+#: ../mdadm.templates:6001
+msgid "An error occurred: not an MD array"
+msgstr "Houbo un erro: non é un array MD"
+
+#. Type: text
+#. Description
+#: ../mdadm.templates:7001
+msgid "An error occurred: array not listed in mdadm.conf file"
+msgstr "Houbo un erro: o array non figura no ficheiro mdadm.conf"
+
+#. Type: boolean
+#. Description
+#: ../mdadm.templates:8001
+msgid "Start arrays not listed in mdadm.conf?"
+msgstr "¿Iniciar os arrays que non figuran en mdadm.conf?"
+
+#. Type: boolean
+#. Description
+#: ../mdadm.templates:8001
+msgid ""
+"The specified array (${array}) is not listed in the configuration file "
+"(${config}). Therefore, it cannot be started during boot, unless you correct "
+"the configuration file and recreate the initial ramdisk."
+msgstr ""
+"O array indicado (${array}) non figura no ficheiro de configuración "
+"(${config}). Polo tanto, non se pode arrincar no inicio do sistema, a menos "
+"que corrixa o ficheiro de configuración e volva crear o disco RAM inicial."
+
+#. Type: boolean
+#. Description
+#: ../mdadm.templates:8001
+msgid ""
+"This warning is only relevant if you need arrays to be started from the "
+"initial ramdisk to be able to boot. If you use kernel autostarting, or do "
+"not need any arrays to be started as early as the initial ramdisk is loaded, "
+"you can simply continue. Alternatively, choose not to continue and enter "
+"'none' when prompted which arrays to start from the initial ramdisk."
+msgstr ""
+"Este aviso só é relevante se precisa de iniciar arrays desde o disco RAM "
+"inicial para poder iniciar o sistema. Se emprega autoinicio do núcleo ou non "
+"precisa de iniciar arrays tan pronto como se cargue o disco RAM inicial, "
+"pode continuar. De xeito alternativo, escolla non continuar e introduza "
+"\"none\" cando se lle pregunte que arrays quere iniciar do disco RAM inicial."
+
+#. Type: boolean
+#. Description
+#: ../mdadm.templates:9001
+msgid "Do you want to start MD arrays automatically?"
+msgstr "¿Quere iniciar os arrays MD automaticamente?"
+
+#. Type: boolean
+#. Description
+#: ../mdadm.templates:9001
+msgid ""
+"Once the base system has booted, mdadm can start all MD arrays (RAIDs) "
+"specified in /etc/mdadm/mdadm.conf which have not yet been started. This is "
+"recommended unless multiple device (MD) support is compiled into the kernel "
+"and all partitions are marked as belonging to MD arrays, with type 0xfd (as "
+"those and only those will be started automatically by the kernel)."
+msgstr ""
+"Despois do inicio do sistema base, mdadm pode iniciar tódolos arrays MD "
+"(RAIDs) especificados en /etc/mdadm/mdadm.conf que non estean aínda "
+"iniciados. Recoméndase isto a menos que o soporte de dispositivos múltiples "
+"(MD) estea compilado no núcleo e tódalas particións estean marcadas coma "
+"parte de arrays MD, con tipo 0xfd (xa que esas, e só esas, as ha iniciar "
+"automaticamente o núcleo)."
+
+#. Type: boolean
+#. Description
+#: ../mdadm.templates:10001
+msgid "Should mdadm run monthly redundancy checks of the MD arrays?"
+msgstr ""
+"¿Debería mdadm facer comprobacións mensuais de redundancia dos arrays MD?"
+
+#. Type: boolean
+#. Description
+#: ../mdadm.templates:10001
+msgid ""
+"If the kernel supports it (versions greater than 2.6.14), mdadm can "
+"periodically check the redundancy of MD arrays (RAIDs). This may be a "
+"resource-intensive process, depending on the local setup, but it could help "
+"prevent rare cases of data loss. Note that this is a read-only check unless "
+"errors are found; if errors are found, mdadm will try to correct them, which "
+"may result in write access to the media."
+msgstr ""
+"Se o núcleo ten soporte para iso (en versións superiores á 2.6.14), mdadm "
+"pode facer comprobacións periódicas de redundancia dos arrays MD (RAIDs). "
+"Este pode ser un proceso intensivo en recursos, dependendo da configuración "
+"local, pero pode axudar a evitar algúns casos raros de perdas de datos. Teña "
+"en conta que esta é unha comprobación de só lectura a menos que se atopen "
+"erros; se se atopan erros, mdadm ha tratar de os arranxar, o que pode "
+"producir accesos de escritura aos soportes."
+
+#. Type: boolean
+#. Description
+#: ../mdadm.templates:10001
+msgid ""
+"The default, if turned on, is to check on the first Sunday of every month at "
+"01:06."
+msgstr ""
+"A opción por defecto, se se activa, é facer as comprobacións o primeiro "
+"domingo de cada mes ás 01:16."
+
+#. Type: boolean
+#. Description
+#: ../mdadm.templates:11001
+msgid "Do you want to start the MD monitoring daemon?"
+msgstr "¿Quere iniciar o servizo de monitorización de MD?"
+
+#. Type: boolean
+#. Description
+#: ../mdadm.templates:11001
+msgid ""
+"The MD (RAID) monitor daemon sends email notifications in response to "
+"important MD events (such as a disk failure)."
+msgstr ""
+"O servizo de monitorización de MD (RAID) envía avisos por email en resposta "
+"a eventos importantes de MD (coma fallos nos discos)."
+
+#. Type: boolean
+#. Description
+#: ../mdadm.templates:11001
+msgid "Enabling this option is recommended."
+msgstr "Recoméndase activar esta opción."
+
+#. Type: string
+#. Description
+#: ../mdadm.templates:12001
+msgid "Recipient for email notifications:"
+msgstr "Destinatario para os avisos por email:"
+
+#. Type: string
+#. Description
+#: ../mdadm.templates:12001
+msgid ""
+"Please enter the email address of the user who should get the email "
+"notifications for important MD events."
+msgstr ""
+"Introduza o enderezo de email do usuario que debe recibir os avisos por "
+"email de eventos importantes de MD."
+
+#~ msgid ""
+#~ "Please refer to /usr/share/doc/mdadm/README.upgrading-2.5.3.gz if you "
+#~ "intend to continue."
+#~ msgstr ""
+#~ "Consulte /usr/share/doc/mdadm/README.upgrading-2.5.3.gz se quere "
+#~ "continuar."
+
+#~ msgid "${msg}"
+#~ msgstr "${msg}"
diff --git a/debian/po/it.po b/debian/po/it.po
new file mode 100644
index 00000000..502ee977
--- /dev/null
+++ b/debian/po/it.po
@@ -0,0 +1,243 @@
+# Italian (it) translation of debconf templates for mdadm
+# Copyright (C) 2008 Software in the Public Interest
+# This file is distributed under the same license as the mdadm package.
+# Luca Monducci <luca.mo@tiscali.it>, 2008.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: mdadm italian debconf\n"
+"Report-Msgid-Bugs-To: mdadm@packages.debian.org\n"
+"POT-Creation-Date: 2012-05-22 00:50+0100\n"
+"PO-Revision-Date: 2008-11-19 11:02+0100\n"
+"Last-Translator: Luca Monducci <luca.mo@tiscali.it>\n"
+"Language-Team: Italian <debian-l10n-italian@lists.debian.org>\n"
+"Language: it\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Type: string
+#. Description
+#: ../mdadm.templates:2001
+msgid "MD arrays needed for the root file system:"
+msgstr "Array MD necessari per il file system di root:"
+
+#. Type: string
+#. Description
+#: ../mdadm.templates:2001
+msgid ""
+"Please enter 'all', 'none', or a space-separated list of devices such as "
+"'md0 md1' or 'md/1 md/d0' (the leading '/dev/' can be omitted)."
+msgstr ""
+"Inserire \"all\", \"none\" oppure un elenco dei device separati da uno "
+"spazio, per esempio \"md0 md1\" o \"md/1 md/d0\" (il \"/dev/\" iniziale può "
+"essere omesso)."
+
+#. Type: text
+#. Description
+#: ../mdadm.templates:3001
+msgid "for internal use - only the long description is needed."
+msgstr "uso interno - è necessaria solo la descrizione lunga."
+
+#. Type: text
+#. Description
+#: ../mdadm.templates:3001
+msgid ""
+"If the system's root file system is located on an MD array (RAID), it needs "
+"to be started early during the boot sequence. If it is located on a logical "
+"volume (LVM), which is on MD, all constituent arrays need to be started."
+msgstr ""
+"Se il file system di root è su un array MD (RAID), è necessario attivare "
+"tale array all'inizio della sequenza d'avvio. Se è su un volume logico "
+"(LVM), il quale è su un MD, è necessario attivare tutti gli array che "
+"costituiscono il volume."
+
+#. Type: text
+#. Description
+#: ../mdadm.templates:3001
+msgid ""
+"If you know exactly which arrays are needed to bring up the root file "
+"system, and you want to postpone starting all other arrays to a later point "
+"in the boot sequence, enter the arrays to start here. Alternatively, enter "
+"'all' to simply start all available arrays."
+msgstr ""
+"Se si conoscono esattamente quali sono gli array da attivare per il file "
+"system di root e si vuole rimandare l'attivazione di tutti gli altri array a "
+"una fase successiva della sequenza d'avvio, inserire adesso gli array da "
+"attivare. In alternativa, inserire \"all\" per attivare tutti gli array "
+"disponibili."
+
+#. Type: text
+#. Description
+#: ../mdadm.templates:3001
+msgid ""
+"If you do not need or want to start any arrays for the root file system, "
+"leave the answer blank (or enter 'none'). This may be the case if you are "
+"using kernel autostart or do not need any arrays to boot."
+msgstr ""
+"Se non si ha bisogno o non si vuole attivare nessun array per il file system "
+"di root, lasciare la risposta in bianco (oppure inserire \"none\"). Questo "
+"potrebbe essere il caso se si utilizza l'attivazione automatica da kernel "
+"oppure se non si ha bisogno di alcun array per l'avvio."
+
+#. Type: text
+#. Description
+#: ../mdadm.templates:4001
+msgid "An error occurred: device node does not exist"
+msgstr "Errore: il nodo del device non esiste"
+
+#. Type: text
+#. Description
+#: ../mdadm.templates:5001
+msgid "An error occurred: not a block device"
+msgstr "Errore: non è un device a blocchi"
+
+#. Type: text
+#. Description
+#: ../mdadm.templates:6001
+msgid "An error occurred: not an MD array"
+msgstr "Errore: non è un array MD"
+
+#. Type: text
+#. Description
+#: ../mdadm.templates:7001
+msgid "An error occurred: array not listed in mdadm.conf file"
+msgstr "Errore: array non elencato nel file mdadm.conf"
+
+#. Type: boolean
+#. Description
+#: ../mdadm.templates:8001
+msgid "Start arrays not listed in mdadm.conf?"
+msgstr "Avviare gli array non elencati in mdadm.conf?"
+
+#. Type: boolean
+#. Description
+#: ../mdadm.templates:8001
+msgid ""
+"The specified array (${array}) is not listed in the configuration file "
+"(${config}). Therefore, it cannot be started during boot, unless you correct "
+"the configuration file and recreate the initial ramdisk."
+msgstr ""
+"L'array specificato (${array}) non è presente nel file di configurazione "
+"(${config}): quindi non può essere attivato durante l'avvio senza correggere "
+"il file di configurazione e ricreare il ramdisk iniziale."
+
+#. Type: boolean
+#. Description
+#: ../mdadm.templates:8001
+msgid ""
+"This warning is only relevant if you need arrays to be started from the "
+"initial ramdisk to be able to boot. If you use kernel autostarting, or do "
+"not need any arrays to be started as early as the initial ramdisk is loaded, "
+"you can simply continue. Alternatively, choose not to continue and enter "
+"'none' when prompted which arrays to start from the initial ramdisk."
+msgstr ""
+"Questo avviso è pertinente solo se è necessario attivare gli array dal "
+"ramdisk iniziale per permettere l'avvio. Con l'avvio automatico da kernel o "
+"se non è necessario attivare gli array così presto come al caricamento del "
+"ramdisk iniziale, si può proseguire. In alternativa, scegliere di non "
+"continuare e inserire \"none\" quando viene chiesto quali array attivare dal "
+"ramdisk iniziale."
+
+#. Type: boolean
+#. Description
+#: ../mdadm.templates:9001
+msgid "Do you want to start MD arrays automatically?"
+msgstr "Avviare gli array MD automaticamente?"
+
+#. Type: boolean
+#. Description
+#: ../mdadm.templates:9001
+msgid ""
+"Once the base system has booted, mdadm can start all MD arrays (RAIDs) "
+"specified in /etc/mdadm/mdadm.conf which have not yet been started. This is "
+"recommended unless multiple device (MD) support is compiled into the kernel "
+"and all partitions are marked as belonging to MD arrays, with type 0xfd (as "
+"those and only those will be started automatically by the kernel)."
+msgstr ""
+"Una volta avviato il sistema di base, mdadm può attivare tutti gli array MD "
+"(RAID) specificati in /etc/mdadm/mdadm.conf non ancora attivi. Questa è la "
+"configurazione consigliata tranne quando il supporto per i device multidisco "
+"(MD) è compilato nel kernel e tutte le partizioni appartenenti agli array MD "
+"sono marcate con tipo 0xfd (come quelle che sono attivate automaticamente "
+"dal kernel)."
+
+#. Type: boolean
+#. Description
+#: ../mdadm.templates:10001
+msgid "Should mdadm run monthly redundancy checks of the MD arrays?"
+msgstr "Far eseguire a mdadm i controlli mensili di ridondanza sugli array MD?"
+
+#. Type: boolean
+#. Description
+#: ../mdadm.templates:10001
+msgid ""
+"If the kernel supports it (versions greater than 2.6.14), mdadm can "
+"periodically check the redundancy of MD arrays (RAIDs). This may be a "
+"resource-intensive process, depending on the local setup, but it could help "
+"prevent rare cases of data loss. Note that this is a read-only check unless "
+"errors are found; if errors are found, mdadm will try to correct them, which "
+"may result in write access to the media."
+msgstr ""
+"Se il kernel lo supporta (tutte le versioni successive la 2.6.14), mdadm può "
+"effettuare delle verifiche periodiche sulla ridondanza degli array MD "
+"(RAID). Questo è un processo che potrebbe richiedere molte risorse, in base "
+"alle impostazioni locali, ma può prevenire i rari casi di perdita di dati. "
+"Notare che questa verifica è di sola-lettura tranne quando riscontra degli "
+"errori; quando ci sono errori, mdadm prova a correggerli e potrebbe accedere "
+"in scrittura al supporto."
+
+#. Type: boolean
+#. Description
+#: ../mdadm.templates:10001
+msgid ""
+"The default, if turned on, is to check on the first Sunday of every month at "
+"01:06."
+msgstr ""
+"Se attivo, la configurazione predefinita prevede che il controllo sia "
+"eseguito la prima domenica di ogni mese alle 01.06."
+
+#. Type: boolean
+#. Description
+#: ../mdadm.templates:11001
+msgid "Do you want to start the MD monitoring daemon?"
+msgstr "Avviare il demone di monitoraggio MD?"
+
+#. Type: boolean
+#. Description
+#: ../mdadm.templates:11001
+msgid ""
+"The MD (RAID) monitor daemon sends email notifications in response to "
+"important MD events (such as a disk failure)."
+msgstr ""
+"Il demone di monitoraggio MD (RAID) invia delle notifiche via email quando "
+"si verificano eventi importanti (come la rottura di un disco)."
+
+#. Type: boolean
+#. Description
+#: ../mdadm.templates:11001
+msgid "Enabling this option is recommended."
+msgstr "Si raccomanda l'attivazione di questa funzione."
+
+#. Type: string
+#. Description
+#: ../mdadm.templates:12001
+msgid "Recipient for email notifications:"
+msgstr "Destinatario delle email di notifica:"
+
+#. Type: string
+#. Description
+#: ../mdadm.templates:12001
+msgid ""
+"Please enter the email address of the user who should get the email "
+"notifications for important MD events."
+msgstr ""
+"Inserire l'indirizzo email dell'utente che deve ricevere le notifiche di "
+"eventi importanti legati al MD."
+
+#~ msgid ""
+#~ "Please refer to /usr/share/doc/mdadm/README.upgrading-2.5.3.gz if you "
+#~ "intend to continue."
+#~ msgstr ""
+#~ "Fare riferimento a /usr/share/doc/mdadm/README.upgrading-2.5.3.gz se si "
+#~ "intende proseguire."
diff --git a/debian/po/ja.po b/debian/po/ja.po
new file mode 100644
index 00000000..242378fc
--- /dev/null
+++ b/debian/po/ja.po
@@ -0,0 +1,297 @@
+#
+# Translators, if you are not familiar with the PO format, gettext
+# documentation is worth reading, especially sections dedicated to
+# this format, e.g. by running:
+# info -n '(gettext)PO Files'
+# info -n '(gettext)Header Entry'
+#
+# Some information specific to po-debconf are available at
+# /usr/share/doc/po-debconf/README-trans
+# or http://www.debian.org/intl/l10n/po-debconf/README-trans
+#
+# Developers do not need to manually edit POT or PO files.
+#
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: mdadm 2.6.3+200709292116+4450e59-4\n"
+"Report-Msgid-Bugs-To: mdadm@packages.debian.org\n"
+"POT-Creation-Date: 2012-05-22 00:50+0100\n"
+"PO-Revision-Date: 2008-02-07 05:52+0900\n"
+"Last-Translator: Hideki Yamane (Debian-JP) <henrich@debian.or.jp>\n"
+"Language-Team: Japanese <debian-japanese@lists.debian.org>\n"
+"Language: ja\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Type: string
+#. Description
+#: ../mdadm.templates:2001
+msgid "MD arrays needed for the root file system:"
+msgstr "ルートファイルシステムに必要な MD アレイ:"
+
+#. Type: string
+#. Description
+#: ../mdadm.templates:2001
+msgid ""
+"Please enter 'all', 'none', or a space-separated list of devices such as "
+"'md0 md1' or 'md/1 md/d0' (the leading '/dev/' can be omitted)."
+msgstr ""
+"'all' または 'none'、あるいはデバイスのリストを 'md0 md1' や 'md/1 md/d0' の"
+"ようにスペースで区切って入力してください (前に付く '/dev/' は省略可能です)。"
+
+#. Type: text
+#. Description
+#: ../mdadm.templates:3001
+msgid "for internal use - only the long description is needed."
+msgstr "内部での利用について - でも、長い説明が必要です。"
+
+#. Type: text
+#. Description
+#: ../mdadm.templates:3001
+msgid ""
+"If the system's root file system is located on an MD array (RAID), it needs "
+"to be started early during the boot sequence. If it is located on a logical "
+"volume (LVM), which is on MD, all constituent arrays need to be started."
+msgstr ""
+"あなたのシステムのルートファイルシステムが MD アレイ (RAID) 上に配置されてい"
+"るならば、ブートシーケンスの初期段階で MD アレイを開始する必要があります。"
+"ルートファイルシステムが MD のような論理ボリューム (LVM) 上にある場合は、構成"
+"しているアレイ全ての開始が必要です。"
+
+#. Type: text
+#. Description
+#: ../mdadm.templates:3001
+msgid ""
+"If you know exactly which arrays are needed to bring up the root file "
+"system, and you want to postpone starting all other arrays to a later point "
+"in the boot sequence, enter the arrays to start here. Alternatively, enter "
+"'all' to simply start all available arrays."
+msgstr ""
+"どのアレイがルートファイルシステムの立ち上げに必要かを正確に知っており、ブー"
+"トシーケンスの後の時点まで意図しているもの以外全てのアレイ起動を遅らせたい場"
+"合、ここで最初に起動するアレイを入力してください。そうでない場合、'all' と入"
+"力して単に全ての利用可能なアレイを最初に立ち上げてください。"
+
+#. Type: text
+#. Description
+#: ../mdadm.templates:3001
+msgid ""
+"If you do not need or want to start any arrays for the root file system, "
+"leave the answer blank (or enter 'none'). This may be the case if you are "
+"using kernel autostart or do not need any arrays to boot."
+msgstr ""
+"ルートファイルシステムのために、どのアレイも必要ない、あるいはどのアレイも起"
+"動したくは無いという場合は、空白のままに (あるいは 'none' と入力) してくださ"
+"い。これは、カーネルで自動的に起動される場合や起動時にはアレイは不要であると"
+"いう場合です。"
+
+#. Type: text
+#. Description
+#: ../mdadm.templates:4001
+msgid "An error occurred: device node does not exist"
+msgstr "エラーが発生しました: デバイスノードが存在しません"
+
+#. Type: text
+#. Description
+#: ../mdadm.templates:5001
+msgid "An error occurred: not a block device"
+msgstr "エラーが発生しました: ブロックデバイスではありません"
+
+#. Type: text
+#. Description
+#: ../mdadm.templates:6001
+msgid "An error occurred: not an MD array"
+msgstr "エラーが発生しました: MD アレイではありません"
+
+#. Type: text
+#. Description
+#: ../mdadm.templates:7001
+msgid "An error occurred: array not listed in mdadm.conf file"
+msgstr "エラーが発生しました: mdadm.conf ファイルに記述されていないアレイです"
+
+#. Type: boolean
+#. Description
+#: ../mdadm.templates:8001
+msgid "Start arrays not listed in mdadm.conf?"
+msgstr "mdadm.conf に記述されていないアレイを起動しますか?"
+
+#. Type: boolean
+#. Description
+#: ../mdadm.templates:8001
+msgid ""
+"The specified array (${array}) is not listed in the configuration file "
+"(${config}). Therefore, it cannot be started during boot, unless you correct "
+"the configuration file and recreate the initial ramdisk."
+msgstr ""
+"指定したアレイ (${array}) は設定ファイル (${config}) に記述されていません。そ"
+"のため、設定ファイルを修正して initrd を再生成しなければブート時に起動できま"
+"せん。"
+
+#. Type: boolean
+#. Description
+#: ../mdadm.templates:8001
+msgid ""
+"This warning is only relevant if you need arrays to be started from the "
+"initial ramdisk to be able to boot. If you use kernel autostarting, or do "
+"not need any arrays to be started as early as the initial ramdisk is loaded, "
+"you can simply continue. Alternatively, choose not to continue and enter "
+"'none' when prompted which arrays to start from the initial ramdisk."
+msgstr ""
+"この警告は、ブートできるようにアレイを initrd から起動する必要がある場合だけ"
+"関係します。カーネルで自動的にアレイを起動するようにしている場合、あるいは "
+"initrd がロードされる程早い段階でどのアレイも起動したくはない場合はそのまま続"
+"行できます。他の選択肢としては、起動の続行を中止し、どのアレイを initrd から"
+"起動するかを尋ねられた際に 'none' と入力します。"
+
+#. Type: boolean
+#. Description
+#: ../mdadm.templates:9001
+msgid "Do you want to start MD arrays automatically?"
+msgstr "MD アレイを自動的に起動しますか?"
+
+#. Type: boolean
+#. Description
+#: ../mdadm.templates:9001
+msgid ""
+"Once the base system has booted, mdadm can start all MD arrays (RAIDs) "
+"specified in /etc/mdadm/mdadm.conf which have not yet been started. This is "
+"recommended unless multiple device (MD) support is compiled into the kernel "
+"and all partitions are marked as belonging to MD arrays, with type 0xfd (as "
+"those and only those will be started automatically by the kernel)."
+msgstr ""
+"一旦ベースシステムが起動すると、mdadm は /etc/mdadm/mdadm.conf で指定されたま"
+"だ起動していない全ての MD アレイ (RAID) を起動できます。複数のデバイス (MD) "
+"をサポートするようにカーネルをコンパイルしており、MD アレイのすべてのパーティ"
+"ションをパーティションタイプ 0xfd と設定しない限り、これを推奨します (このよ"
+"うな設定にした場合のみ、アレイは自動的にカーネルから起動されます) 。"
+
+#. Type: boolean
+#. Description
+#: ../mdadm.templates:10001
+msgid "Should mdadm run monthly redundancy checks of the MD arrays?"
+msgstr "mdadm は、毎月 MD アレイの冗長性チェックを行いますか?"
+
+#. Type: boolean
+#. Description
+#: ../mdadm.templates:10001
+msgid ""
+"If the kernel supports it (versions greater than 2.6.14), mdadm can "
+"periodically check the redundancy of MD arrays (RAIDs). This may be a "
+"resource-intensive process, depending on the local setup, but it could help "
+"prevent rare cases of data loss. Note that this is a read-only check unless "
+"errors are found; if errors are found, mdadm will try to correct them, which "
+"may result in write access to the media."
+msgstr ""
+"カーネルがサポートしている場合 (バージョン 2.6.14 以降)、mdadm は定期的に MD "
+"アレイ (RAID) の冗長性チェックをすることが可能です。これは、設定に依存します"
+"がリソースを集中的に使用する動作です。しかし、稀なデータ消失をあらかじめ避け"
+"るのに役立つでしょう。これは、エラーが見つからない限りは読み込みチェックのみ"
+"であるのに注意してください。エラーが発見された場合、mdadm は修正しようとし"
+"て、結果的にメディアへ書き込みを行います。"
+
+#. Type: boolean
+#. Description
+#: ../mdadm.templates:10001
+msgid ""
+"The default, if turned on, is to check on the first Sunday of every month at "
+"01:06."
+msgstr ""
+"有効にした場合、デフォルトでは毎月第一日曜 01:06 にチェックが実行されます。"
+
+#. Type: boolean
+#. Description
+#: ../mdadm.templates:11001
+msgid "Do you want to start the MD monitoring daemon?"
+msgstr "MD 監視デーモンを起動しますか?"
+
+#. Type: boolean
+#. Description
+#: ../mdadm.templates:11001
+msgid ""
+"The MD (RAID) monitor daemon sends email notifications in response to "
+"important MD events (such as a disk failure)."
+msgstr ""
+"MD (RAID) 監視デーモンは、重大な MD 関連のイベント (ディスク障害など) に対し"
+"てメールで通知を送ります。"
+
+#. Type: boolean
+#. Description
+#: ../mdadm.templates:11001
+msgid "Enabling this option is recommended."
+msgstr "この機能を有効にするのをお勧めします。"
+
+#. Type: string
+#. Description
+#: ../mdadm.templates:12001
+msgid "Recipient for email notifications:"
+msgstr "メール通知の宛先:"
+
+#. Type: string
+#. Description
+#: ../mdadm.templates:12001
+msgid ""
+"Please enter the email address of the user who should get the email "
+"notifications for important MD events."
+msgstr ""
+"MD 関連の重大なイベントが発生した際、メールでの通知を受け取る必要があるユーザ"
+"のメールアドレスを入力してください。"
+
+#~ msgid ""
+#~ "Please refer to /usr/share/doc/mdadm/README.upgrading-2.5.3.gz if you "
+#~ "intend to continue."
+#~ msgstr ""
+#~ "続行したい場合は、/usr/share/doc/mdadm/README.upgrading-2.5.3.gz を参照し"
+#~ "てください。"
+
+#~ msgid ""
+#~ "WARNING! If you are using hard disks which have RAID superblocks from "
+#~ "earlier installations in different RAID arrays, you MUST zero each "
+#~ "superblock *before* activating the autostart feature."
+#~ msgstr ""
+#~ "警告! 以前のインストールによって他の RAID アレイに対する RAID superblock "
+#~ "を保持しているハードディスクを使っている場合、自動起動機能を有効にする"
+#~ "「前」に、その superblock をゼロで上書きすることが「必要」です。"
+
+#~ msgid ""
+#~ "To do this, do not start the RAID devices automatically. First, zero the "
+#~ "superblock (mdadm --zero-superblock /dev/mdX). Next, use `dpkg-"
+#~ "reconfigure mdadm` to reactivate the autostart feature."
+#~ msgstr ""
+#~ "これを行うには、RAID デバイスを自動的に起動してはいけません。まず、 "
+#~ "superblock をゼロで上書きします (mdadm --zero-superblock /dev/xxx)。 そし"
+#~ "て、自動起動機能を有効にするため、'dpkg-reconfigure mdadm' コマンドを実行"
+#~ "します。"
+
+#~ msgid ""
+#~ "You have the option to start all other arrays (those not needed for the "
+#~ "root filesystem) later in the boot sequence. Doing so will give you "
+#~ "greater control over the arrays with the mdadm configuration file. "
+#~ "Starting all arrays at boot-time may be safer though."
+#~ msgstr ""
+#~ "ブートシーケンスの後ろの方で (root ファイルシステムには必要ない) 他のアレ"
+#~ "イ全てを起動するという選択肢もあります。これを選べば、mdadm の設定ファイル"
+#~ "を使って、アレイについて様々な設定が出来るようになるでしょう。もっとも、起"
+#~ "動時に全てのアレイを起動するほうが安全ではあります。"
+
+#~ msgid ""
+#~ "If RAID devices are started automatically, all RAID devices are "
+#~ "discovered and assembled automatically at system startup. This option "
+#~ "should only be used if the md driver is compiled as a module. If it is "
+#~ "compiled into your kernel, the automatic startup will be performed at "
+#~ "boot time by the kernel and therefore you should not choose this option."
+#~ msgstr ""
+#~ "RAID デバイスが自動的に起動するようにすると、システム起動時に全ての RAID "
+#~ "デバイスが検出され、自動的に構成されます。このオプションは md ドライバがモ"
+#~ "ジュールとしてコンパイルされている場合のみに利用します。カーネルに組み込ん"
+#~ "でコンパイルしていた場合、システム起動時にカーネルによって自動起動が実行さ"
+#~ "れるので、このオプションでの選択はできません。"
+
+#~ msgid ""
+#~ "When the RAID monitor daemon runs, email notifications are sent when a "
+#~ "disk belonging to a RAID array fails or changes its status for some "
+#~ "reason."
+#~ msgstr ""
+#~ "RAID 監視デーモンが動作している場合、RAID アレイに属しているディスクが故障"
+#~ "するか何らかの理由で変化した際にメールで通知が送られます。"
diff --git a/debian/po/nl.po b/debian/po/nl.po
new file mode 100644
index 00000000..6f9e7dbe
--- /dev/null
+++ b/debian/po/nl.po
@@ -0,0 +1,253 @@
+# translation of mdadm_2.6.3+200709292116+4450e59-4.po to Dutch
+#
+# Translators, if you are not familiar with the PO format, gettext
+# documentation is worth reading, especially sections dedicated to
+# this format, e.g. by running:
+# info -n '(gettext)PO Files'
+# info -n '(gettext)Header Entry'
+# Some information specific to po-debconf are available at
+# /usr/share/doc/po-debconf/README-trans
+# or http://www.debian.org/intl/l10n/po-debconf/README-trans#
+# Developers do not need to manually edit POT or PO files.
+#
+# Frans Pop <aragorn@tiscali.nl>, 2005, 2006.
+# Frans Pop <elendil@planet.nl>, 2008.
+msgid ""
+msgstr ""
+"Project-Id-Version: mdadm_2.6.3+200709292116+4450e59-4\n"
+"Report-Msgid-Bugs-To: mdadm@packages.debian.org\n"
+"POT-Creation-Date: 2012-05-22 00:50+0100\n"
+"PO-Revision-Date: 2008-02-19 14:04+0100\n"
+"Last-Translator: Frans Pop <elendil@planet.nl>\n"
+"Language-Team: Dutch <debian-l10n-dutch@lists.debian.org>\n"
+"Language: nl\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Type: string
+#. Description
+#: ../mdadm.templates:2001
+msgid "MD arrays needed for the root file system:"
+msgstr "Voor het basisbestandssysteem benodigde RAID-reeksen:"
+
+#. Type: string
+#. Description
+#: ../mdadm.templates:2001
+msgid ""
+"Please enter 'all', 'none', or a space-separated list of devices such as "
+"'md0 md1' or 'md/1 md/d0' (the leading '/dev/' can be omitted)."
+msgstr ""
+"Geef in 'all' (alle), 'none' (geen) of één of meerdere apparaatbestanden "
+"(gescheiden door spaties), bijvoorbeeld \"md0 md1\" of \"md/1 md/d0\" (de "
+"prefix '/dev/' kan dus worden weggelaten)."
+
+#. Type: text
+#. Description
+#: ../mdadm.templates:3001
+msgid "for internal use - only the long description is needed."
+msgstr "Voor intern gebruik - alleen de lange omschrijving wordt gebruikt."
+
+#. Type: text
+#. Description
+#: ../mdadm.templates:3001
+msgid ""
+"If the system's root file system is located on an MD array (RAID), it needs "
+"to be started early during the boot sequence. If it is located on a logical "
+"volume (LVM), which is on MD, all constituent arrays need to be started."
+msgstr ""
+"Als het basisbestandssysteem van uw systeem zich op een RAID-volume bevindt, "
+"dient dit vroeg in de opstartcyclus geactiveerd te worden. Als het zich op "
+"een logisch volume (LVM) op RAID bevindt, dienen alle betrokken reeksen "
+"geactiveerd te worden."
+
+#. Type: text
+#. Description
+#: ../mdadm.templates:3001
+msgid ""
+"If you know exactly which arrays are needed to bring up the root file "
+"system, and you want to postpone starting all other arrays to a later point "
+"in the boot sequence, enter the arrays to start here. Alternatively, enter "
+"'all' to simply start all available arrays."
+msgstr ""
+"Als u precies weet welke reeksen benodigd zijn voor het basisbestandssysteem "
+"en u het activeren van alle overige reeksen wilt uitstellen tot later in de "
+"opstartprocedure, geef dan hier de te activeren reeksen in. Anders kunt u "
+"'all' ingeven om alle beschikbare reeksen te activeren."
+
+#. Type: text
+#. Description
+#: ../mdadm.templates:3001
+msgid ""
+"If you do not need or want to start any arrays for the root file system, "
+"leave the answer blank (or enter 'none'). This may be the case if you are "
+"using kernel autostart or do not need any arrays to boot."
+msgstr ""
+"Als u geen reeksen hoeft of wenst te activeren voor het "
+"basisbestandssysteem, laat dan het antwoord leeg (of geef 'none' in). Dit "
+"kan het geval zijn als u \"kernel autostart\" gebruikt of geen reeksen nodig "
+"heeft om uw systeem op te starten."
+
+#. Type: text
+#. Description
+#: ../mdadm.templates:4001
+msgid "An error occurred: device node does not exist"
+msgstr "Er is een fout opgetreden: apparaatbestand bestaat niet"
+
+#. Type: text
+#. Description
+#: ../mdadm.templates:5001
+msgid "An error occurred: not a block device"
+msgstr "Er is een fout opgetreden: geen blokapparaat"
+
+#. Type: text
+#. Description
+#: ../mdadm.templates:6001
+msgid "An error occurred: not an MD array"
+msgstr "Er is een fout opgetreden: geen RAID reeks"
+
+#. Type: text
+#. Description
+#: ../mdadm.templates:7001
+msgid "An error occurred: array not listed in mdadm.conf file"
+msgstr "Er is een fout opgetreden: reeks komt niet voor in bestand mdadm.conf"
+
+#. Type: boolean
+#. Description
+#: ../mdadm.templates:8001
+msgid "Start arrays not listed in mdadm.conf?"
+msgstr "Reeksen activeren die niet in mdadm.conf voorkomen?"
+
+#. Type: boolean
+#. Description
+#: ../mdadm.templates:8001
+msgid ""
+"The specified array (${array}) is not listed in the configuration file "
+"(${config}). Therefore, it cannot be started during boot, unless you correct "
+"the configuration file and recreate the initial ramdisk."
+msgstr ""
+"De reeks die u heeft opgegeven (${array}) komt niet voor in het "
+"configuratiebestand (${config}). Tenzij u het configuratiebestand corrigeert "
+"en de initiële ramdisk opnieuw aanmaakt, kan deze reeks tijdens het "
+"opstarten van het systeem niet worden geactiveerd."
+
+#. Type: boolean
+#. Description
+#: ../mdadm.templates:8001
+msgid ""
+"This warning is only relevant if you need arrays to be started from the "
+"initial ramdisk to be able to boot. If you use kernel autostarting, or do "
+"not need any arrays to be started as early as the initial ramdisk is loaded, "
+"you can simply continue. Alternatively, choose not to continue and enter "
+"'none' when prompted which arrays to start from the initial ramdisk."
+msgstr ""
+"Deze waarschuwing is alleen relevant als de reeksen geactiveerd moeten "
+"worden vanuit een initiële ramdisk om het systeem te kunnen opstarten. Als u "
+"\"kernel autostart\" gebruikt of er geen reeksen zijn die vanuit de initiële "
+"ramdisk gestart moeten worden, kunt u gewoon doorgaan. Kies anders nu om "
+"niet door te gaan en geef 'none' in bij de vraag welke reeksen vanuit de "
+"initiële ramdisk gestart moeten worden."
+
+#. Type: boolean
+#. Description
+#: ../mdadm.templates:9001
+msgid "Do you want to start MD arrays automatically?"
+msgstr "RAID-apparaten automatisch activeren?"
+
+#. Type: boolean
+#. Description
+#: ../mdadm.templates:9001
+msgid ""
+"Once the base system has booted, mdadm can start all MD arrays (RAIDs) "
+"specified in /etc/mdadm/mdadm.conf which have not yet been started. This is "
+"recommended unless multiple device (MD) support is compiled into the kernel "
+"and all partitions are marked as belonging to MD arrays, with type 0xfd (as "
+"those and only those will be started automatically by the kernel)."
+msgstr ""
+"Nadat het basissysteem eenmaal is opgestart, kan mdadm zorgdragen voor het "
+"activeren van alle RAID-reeksen die voorkomen in /etc/mdadm/mdadm.conf, maar "
+"nog niet zijn geactiveerd. Dit wordt aanbevolen tenzij \"multiple device"
+"\" (MD) ondersteuning is meegecompileerd in de kernel en alle partities die "
+"deel uitmaken van RAID-reeksen zijn gedefinieerd als type 0xfd (aangezien ze "
+"alleen dan automatisch door de kernel geactiveerd zullen worden)."
+
+#. Type: boolean
+#. Description
+#: ../mdadm.templates:10001
+msgid "Should mdadm run monthly redundancy checks of the MD arrays?"
+msgstr "Maandelijkse redundantiecontrole van RAID-reeksen uitvoeren?"
+
+#. Type: boolean
+#. Description
+#: ../mdadm.templates:10001
+msgid ""
+"If the kernel supports it (versions greater than 2.6.14), mdadm can "
+"periodically check the redundancy of MD arrays (RAIDs). This may be a "
+"resource-intensive process, depending on the local setup, but it could help "
+"prevent rare cases of data loss. Note that this is a read-only check unless "
+"errors are found; if errors are found, mdadm will try to correct them, which "
+"may result in write access to the media."
+msgstr ""
+"Als uw kernel dit ondersteunt (versies groter dan 2.6.14), kan mdadm "
+"periodiek de redundantie van uw RAID reeksen controleren. Afhankelijk van uw "
+"configuratie kan dit een intensief proces zijn, maar het kan wel helpen om "
+"uitzonderlijke gevallen van gegevensverlies te voorkomen. Zolang geen fouten "
+"worden gevonden, zal het proces alleen gegevens lezen; als echter wel fouten "
+"worden gevonden zal mdadm deze proberen te corrigeren."
+
+#. Type: boolean
+#. Description
+#: ../mdadm.templates:10001
+msgid ""
+"The default, if turned on, is to check on the first Sunday of every month at "
+"01:06."
+msgstr ""
+"Standaard wordt de controle, indien geactiveerd, uitgevoerd om 01:06 op elke "
+"eerste zondag van de maand."
+
+#. Type: boolean
+#. Description
+#: ../mdadm.templates:11001
+msgid "Do you want to start the MD monitoring daemon?"
+msgstr "Wilt u de achtergronddienst voor de RAID-monitor starten?"
+
+#. Type: boolean
+#. Description
+#: ../mdadm.templates:11001
+msgid ""
+"The MD (RAID) monitor daemon sends email notifications in response to "
+"important MD events (such as a disk failure)."
+msgstr ""
+"De achtergronddienst voor de RAID-monitor stuurt per e-mail berichten bij "
+"belangrijke gebeurtenissen die betrekking hebben op RAID (zoals een falende "
+"harde schijf)."
+
+#. Type: boolean
+#. Description
+#: ../mdadm.templates:11001
+msgid "Enabling this option is recommended."
+msgstr "Gebruik van deze optie wordt aanbevolen."
+
+#. Type: string
+#. Description
+#: ../mdadm.templates:12001
+msgid "Recipient for email notifications:"
+msgstr "Adres voor e-mailberichten:"
+
+#. Type: string
+#. Description
+#: ../mdadm.templates:12001
+msgid ""
+"Please enter the email address of the user who should get the email "
+"notifications for important MD events."
+msgstr ""
+"Wat is het e-mailadres van de gebruiker die de e-mailberichten voor "
+"belangrijke gebeurtenissen met betrekking tot RAID dient te ontvangen."
+
+#~ msgid ""
+#~ "Please refer to /usr/share/doc/mdadm/README.upgrading-2.5.3.gz if you "
+#~ "intend to continue."
+#~ msgstr ""
+#~ "Zie /usr/share/doc/mdadm/README.upgrading-2.5.3.gz als u van plan bent "
+#~ "verder te gaan."
diff --git a/debian/po/pt.po b/debian/po/pt.po
new file mode 100644
index 00000000..4961e24b
--- /dev/null
+++ b/debian/po/pt.po
@@ -0,0 +1,247 @@
+# Portuguese translation for mdadm debconf messages.
+# Copyright (C) 2008 Pedro Ribeiro <p.m42.ribeiro@gmail.com>
+# This file is distributed under the same license as the mdadm package.
+# Pedro Ribeiro <p.m42.ribeiro@gmail.com>, 2008
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: mdadm 2.6.3+200709292116+4450e59-4\n"
+"Report-Msgid-Bugs-To: mdadm@packages.debian.org\n"
+"POT-Creation-Date: 2012-05-22 00:50+0100\n"
+"PO-Revision-Date: 2008-02-21 00:15+0000\n"
+"Last-Translator: Pedro Ribeiro <p.m42.ribeiro@gmail.com>\n"
+"Language-Team: Portuguese <traduz@debianpt.org>\n"
+"Language: pt\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Type: string
+#. Description
+#: ../mdadm.templates:2001
+msgid "MD arrays needed for the root file system:"
+msgstr "Grupos MD necessários para o sistema de ficheiros raiz:"
+
+#. Type: string
+#. Description
+#: ../mdadm.templates:2001
+msgid ""
+"Please enter 'all', 'none', or a space-separated list of devices such as "
+"'md0 md1' or 'md/1 md/d0' (the leading '/dev/' can be omitted)."
+msgstr ""
+"Por favor, introduza 'all', 'none', ou uma lista de dispositivos separados "
+"por espaços, tais como 'md0 md1' ou 'md/1 md/d0' (o '/dev/' inicial pode ser "
+"omitido)."
+
+#. Type: text
+#. Description
+#: ../mdadm.templates:3001
+msgid "for internal use - only the long description is needed."
+msgstr "para uso interno - apenas a descrição longa é necessária"
+
+#. Type: text
+#. Description
+#: ../mdadm.templates:3001
+msgid ""
+"If the system's root file system is located on an MD array (RAID), it needs "
+"to be started early during the boot sequence. If it is located on a logical "
+"volume (LVM), which is on MD, all constituent arrays need to be started."
+msgstr ""
+"Se o sistema de ficheiros de raiz do sistema estiver num grupo MD (RAID), "
+"necessita de ser iniciado mais cedo na sequência de arranque. Se o seu "
+"sistema de ficheiros de raiz estiver num volume lógico (LVM) que está no MD, "
+"todos os grupos constituintes necessitam de ser iniciados."
+
+#. Type: text
+#. Description
+#: ../mdadm.templates:3001
+msgid ""
+"If you know exactly which arrays are needed to bring up the root file "
+"system, and you want to postpone starting all other arrays to a later point "
+"in the boot sequence, enter the arrays to start here. Alternatively, enter "
+"'all' to simply start all available arrays."
+msgstr ""
+"Se souber exactamente que grupos são necessários para iniciar o sistema de "
+"ficheiros raiz, e quiser adiar o inicio de todos os outros grupos para mais "
+"tarde no processo de arranque, introduza os grupos aqui. Alternativamente, "
+"introduza 'all' para iniciar todos os grupos disponíveis."
+
+#. Type: text
+#. Description
+#: ../mdadm.templates:3001
+msgid ""
+"If you do not need or want to start any arrays for the root file system, "
+"leave the answer blank (or enter 'none'). This may be the case if you are "
+"using kernel autostart or do not need any arrays to boot."
+msgstr ""
+"Se não necessita ou deseja iniciar grupos para o sistema de ficheiros raiz, "
+"deixe a resposta em branco (ou introduza 'none'). Isto vale no caso de usar "
+"o auto-arranque do kernel ou não necessitar de grupos para o arranque do "
+"sistema."
+
+#. Type: text
+#. Description
+#: ../mdadm.templates:4001
+msgid "An error occurred: device node does not exist"
+msgstr "Ocorreu um erro: o nó do dispositivo não existe"
+
+#. Type: text
+#. Description
+#: ../mdadm.templates:5001
+msgid "An error occurred: not a block device"
+msgstr "Ocorreu um erro: não é um dispositivo de bloco"
+
+#. Type: text
+#. Description
+#: ../mdadm.templates:6001
+msgid "An error occurred: not an MD array"
+msgstr "Ocorreu um erro: não é um grupo MD"
+
+#. Type: text
+#. Description
+#: ../mdadm.templates:7001
+msgid "An error occurred: array not listed in mdadm.conf file"
+msgstr "Ocorreu um erro: o grupo não está listado no ficheiro mdadm.conf"
+
+#. Type: boolean
+#. Description
+#: ../mdadm.templates:8001
+msgid "Start arrays not listed in mdadm.conf?"
+msgstr "Iniciar grupos não listados no mdadm.conf?"
+
+#. Type: boolean
+#. Description
+#: ../mdadm.templates:8001
+msgid ""
+"The specified array (${array}) is not listed in the configuration file "
+"(${config}). Therefore, it cannot be started during boot, unless you correct "
+"the configuration file and recreate the initial ramdisk."
+msgstr ""
+"O grupo especificado (${array}) não está listado no ficheiro de configuração "
+"(${config}). Portanto, não pode ser iniciado durante o processo de arranque, "
+"a não ser que corrija o ficheiro de configuração e recrie o ramdisk inicial."
+
+#. Type: boolean
+#. Description
+#: ../mdadm.templates:8001
+msgid ""
+"This warning is only relevant if you need arrays to be started from the "
+"initial ramdisk to be able to boot. If you use kernel autostarting, or do "
+"not need any arrays to be started as early as the initial ramdisk is loaded, "
+"you can simply continue. Alternatively, choose not to continue and enter "
+"'none' when prompted which arrays to start from the initial ramdisk."
+msgstr ""
+"Este aviso só é relevante se houver necessidade de iniciar grupos a partir "
+"do ramdisk durante o arranque do sistema. Se usar o auto-arranque do kernel, "
+"ou não necessitar de iniciar os grupos tão cedo no processo de arranque do "
+"sistema, pode simplesmente continuar. Em alternativa, escolha não continuar "
+"e introduza 'none' quando perguntado sobre quais grupos iniciar a partir do "
+"ramdisk inicial."
+
+#. Type: boolean
+#. Description
+#: ../mdadm.templates:9001
+msgid "Do you want to start MD arrays automatically?"
+msgstr "Quer iniciar os grupos MD automaticamente?"
+
+#. Type: boolean
+#. Description
+#: ../mdadm.templates:9001
+msgid ""
+"Once the base system has booted, mdadm can start all MD arrays (RAIDs) "
+"specified in /etc/mdadm/mdadm.conf which have not yet been started. This is "
+"recommended unless multiple device (MD) support is compiled into the kernel "
+"and all partitions are marked as belonging to MD arrays, with type 0xfd (as "
+"those and only those will be started automatically by the kernel)."
+msgstr ""
+"Após o arranque do sistema de base, o mdadm pode iniciar todos os grupos MD "
+"(RAIDs) especificados em /etc/mdadm/mdadm.conf, que ainda não tiverem sido "
+"iniciados. Isto é o recomendado a não ser que tenha compilado o suporte para "
+"dispositivos múltiplos (MD) no kernel e marcado todas as partições que são "
+"parte de grupos MD com o tipo 0xfd (apenas estas serão iniciadas "
+"automaticamente pelo kernel)."
+
+#. Type: boolean
+#. Description
+#: ../mdadm.templates:10001
+msgid "Should mdadm run monthly redundancy checks of the MD arrays?"
+msgstr ""
+"O mdadm deve correr verificações de redundância nos grupos MD mensalmente?"
+
+#. Type: boolean
+#. Description
+#: ../mdadm.templates:10001
+msgid ""
+"If the kernel supports it (versions greater than 2.6.14), mdadm can "
+"periodically check the redundancy of MD arrays (RAIDs). This may be a "
+"resource-intensive process, depending on the local setup, but it could help "
+"prevent rare cases of data loss. Note that this is a read-only check unless "
+"errors are found; if errors are found, mdadm will try to correct them, which "
+"may result in write access to the media."
+msgstr ""
+"Se o kernel suportar (versões mais recentes que 2.6.14) o mdadm pode "
+"verificar periodicamente a redundância dos grupos MD (RAIDs). Isto pode ser "
+"um processo que requer muitos recursos, dependendo da sua configuração, mas "
+"pode prevenir casos raros de perda de dados. Notar que esta verificação é "
+"feita em modo de leitura a não ser que sejam encontrados erros; se forem "
+"encontrados erros, o mdadm tenta corrigi-los, o que pode resultar em "
+"acessosde escrita aos discos."
+
+#. Type: boolean
+#. Description
+#: ../mdadm.templates:10001
+msgid ""
+"The default, if turned on, is to check on the first Sunday of every month at "
+"01:06."
+msgstr ""
+"O pré-definido, se ligado, é os testes serem executados no primeiro Domingo "
+"de cada mês às 01:06."
+
+#. Type: boolean
+#. Description
+#: ../mdadm.templates:11001
+msgid "Do you want to start the MD monitoring daemon?"
+msgstr "Quer iniciar o deamon de monitorização do MD?"
+
+#. Type: boolean
+#. Description
+#: ../mdadm.templates:11001
+msgid ""
+"The MD (RAID) monitor daemon sends email notifications in response to "
+"important MD events (such as a disk failure)."
+msgstr ""
+"O daemon monitor MD(RAID) envia notificações por email no caso de eventos "
+"importantes (tais como falha de um disco). Provavelmente quer activar esta "
+"opção."
+
+#. Type: boolean
+#. Description
+#: ../mdadm.templates:11001
+msgid "Enabling this option is recommended."
+msgstr "É recomendado activar esta opção."
+
+#. Type: string
+#. Description
+#: ../mdadm.templates:12001
+msgid "Recipient for email notifications:"
+msgstr "Destinatário de email para notificações:"
+
+#. Type: string
+#. Description
+#: ../mdadm.templates:12001
+msgid ""
+"Please enter the email address of the user who should get the email "
+"notifications for important MD events."
+msgstr ""
+"Por favor, introduza o endereço de email do utilizador que deve receber as "
+"notificações de eventos MD importantes."
+
+#~ msgid ""
+#~ "Please refer to /usr/share/doc/mdadm/README.upgrading-2.5.3.gz if you "
+#~ "intend to continue."
+#~ msgstr ""
+#~ "Por favor leia o ficheiro /usr/share/doc/mdadm/README.upgrading-2.5.3.gz "
+#~ "se quiser continuar."
+
+#~ msgid "${msg}"
+#~ msgstr "${msg}"
diff --git a/debian/po/pt_BR.po b/debian/po/pt_BR.po
new file mode 100644
index 00000000..7b0e8db2
--- /dev/null
+++ b/debian/po/pt_BR.po
@@ -0,0 +1,381 @@
+#
+# Translators, if you are not familiar with the PO format, gettext
+# documentation is worth reading, especially sections dedicated to
+# this format, e.g. by running:
+# info -n '(gettext)PO Files'
+# info -n '(gettext)Header Entry'
+#
+# Some information specific to po-debconf are available at
+# /usr/share/doc/po-debconf/README-trans
+# or http://www.debian.org/intl/l10n/po-debconf/README-trans
+#
+# Developers do not need to manually edit POT or PO files.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: mdadm\n"
+"Report-Msgid-Bugs-To: mdadm@packages.debian.org\n"
+"POT-Creation-Date: 2012-05-22 00:50+0100\n"
+"PO-Revision-Date: 2006-09-24 19:22-0300\n"
+"Last-Translator: Felipe Augusto van de Wiel (faw) <faw@cathedrallabs.org>\n"
+"Language-Team: l10n portuguese <debian-l10n-portuguese@lists.debian.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"pt_BR utf-8\n"
+
+#. Type: string
+#. Description
+#: ../mdadm.templates:2001
+#, fuzzy
+#| msgid "MD arrays needed for the root filesystem:"
+msgid "MD arrays needed for the root file system:"
+msgstr "Dispositivos MD necessários para o sistema de arquivos raiz:"
+
+#. Type: string
+#. Description
+#: ../mdadm.templates:2001
+#, fuzzy
+#| msgid ""
+#| "Please enter a space-separated list of devices, 'all', or 'none'. You may "
+#| "omit the leading '/dev/' and just enter e.g. \"md0 md1\", or \"md/1 md/"
+#| "d0\"."
+msgid ""
+"Please enter 'all', 'none', or a space-separated list of devices such as "
+"'md0 md1' or 'md/1 md/d0' (the leading '/dev/' can be omitted)."
+msgstr ""
+"Por favor, informe uma lista separada por espaços dos dispositivos, 'all' ou "
+"'none'. Você pode omitir a parte inicial '/dev/' e apenas informar, por "
+"exemplo, \"md0 md1\", ou \"md/1 md/d0\"."
+
+#. Type: text
+#. Description
+#: ../mdadm.templates:3001
+msgid "for internal use - only the long description is needed."
+msgstr "para uso interno - apenas a descrição longa é necessária."
+
+#. Type: text
+#. Description
+#: ../mdadm.templates:3001
+#, fuzzy
+#| msgid ""
+#| "If your system has its root filesystem on an MD array (RAID), it needs to "
+#| "be started early during the boot sequence. If your root filesystem is on "
+#| "a logical volume (LVM), which is on MD, all constituent arrays need to be "
+#| "started."
+msgid ""
+"If the system's root file system is located on an MD array (RAID), it needs "
+"to be started early during the boot sequence. If it is located on a logical "
+"volume (LVM), which is on MD, all constituent arrays need to be started."
+msgstr ""
+"Se o seu sistema tem o sistema de arquivos raiz em um dispositivo MD (RAID), "
+"este precisa ser iniciado mais cedo durante a seqüência de inicialização. Se "
+"o sistema de arquivos raiz está em um volume lógico (LVM), que está em um "
+"MD, todos os dispositivos que o constituem precisam ser iniciados."
+
+#. Type: text
+#. Description
+#: ../mdadm.templates:3001
+#, fuzzy
+#| msgid ""
+#| "If you know exactly which arrays are needed to bring up the root "
+#| "filesystem, and you want to postpone starting all other arrays to a later "
+#| "point in the boot sequence, enter the arrays to start here. "
+#| "Alternatively, enter 'all' to simply start all available arrays."
+msgid ""
+"If you know exactly which arrays are needed to bring up the root file "
+"system, and you want to postpone starting all other arrays to a later point "
+"in the boot sequence, enter the arrays to start here. Alternatively, enter "
+"'all' to simply start all available arrays."
+msgstr ""
+"Se você sabe exatamente quais dispositivos são necessários para ativar o "
+"sistema de arquivos raiz, e você deseja adiar o início de todos os outros "
+"dispositivos para um ponto posterior na seqüência de inicialização, informe "
+"os dispositivos a serem iniciados aqui. Como alternativa, informe 'all' para "
+"simplesmente iniciar todos os dispositivos disponíveis."
+
+#. Type: text
+#. Description
+#: ../mdadm.templates:3001
+#, fuzzy
+#| msgid ""
+#| "If you do not need or want to start any arrays for the root filesystem, "
+#| "leave the answer blank (or enter 'none'). This may be the case if you are "
+#| "using kernel autostart or do not need any arrays to boot."
+msgid ""
+"If you do not need or want to start any arrays for the root file system, "
+"leave the answer blank (or enter 'none'). This may be the case if you are "
+"using kernel autostart or do not need any arrays to boot."
+msgstr ""
+"Se você não precisa ou não quer iniciar quaisquer dispositivos para o "
+"sistema de arquivos raiz, deixe a resposta em branco (ou informe 'none'). "
+"Este pode ser o caso se você está usando \"kernel autostart\" ou não precisa "
+"de quaisquer dispositivos para a inicialização."
+
+#. Type: text
+#. Description
+#: ../mdadm.templates:4001
+msgid "An error occurred: device node does not exist"
+msgstr "Um erro ocorreu: o dispositivo (\"device node\") não existe"
+
+#. Type: text
+#. Description
+#: ../mdadm.templates:5001
+msgid "An error occurred: not a block device"
+msgstr "Um erro ocorreu: não é um dispositivo de blocos"
+
+#. Type: text
+#. Description
+#: ../mdadm.templates:6001
+msgid "An error occurred: not an MD array"
+msgstr "Um erro ocorreu: não é um dispositivo MD"
+
+#. Type: text
+#. Description
+#: ../mdadm.templates:7001
+msgid "An error occurred: array not listed in mdadm.conf file"
+msgstr "Um erro ocorreu: dispositivo não listado no arquivo mdadm.conf"
+
+#. Type: boolean
+#. Description
+#: ../mdadm.templates:8001
+#, fuzzy
+#| msgid "Proceed with starting arrays not listed in mdadm.conf?"
+msgid "Start arrays not listed in mdadm.conf?"
+msgstr "Continuar com o início de dispositivos não listados no mdadm.conf?"
+
+#. Type: boolean
+#. Description
+#: ../mdadm.templates:8001
+#, fuzzy
+#| msgid ""
+#| "The array you have specified (${array}) is not listed in the "
+#| "configuration file ${config}. Therefore it cannot be started during boot, "
+#| "unless you correct the configuration file and recreate the initial "
+#| "ramdisk."
+msgid ""
+"The specified array (${array}) is not listed in the configuration file "
+"(${config}). Therefore, it cannot be started during boot, unless you correct "
+"the configuration file and recreate the initial ramdisk."
+msgstr ""
+"O dispositivo que você especificou (${array}) não está listado no arquivo de "
+"configuração ${config}. Portanto não pode ser iniciado durante a "
+"inicialização, a menos que você corrija o arquivo de configuração e recrie o "
+"\"ramdisk\" inicial."
+
+#. Type: boolean
+#. Description
+#: ../mdadm.templates:8001
+msgid ""
+"This warning is only relevant if you need arrays to be started from the "
+"initial ramdisk to be able to boot. If you use kernel autostarting, or do "
+"not need any arrays to be started as early as the initial ramdisk is loaded, "
+"you can simply continue. Alternatively, choose not to continue and enter "
+"'none' when prompted which arrays to start from the initial ramdisk."
+msgstr ""
+"Este aviso só é relevante se você precisa de dispositivos que sejam "
+"iniciados a partir do \"ramdisk\" inicial para que seja possível inicializar "
+"o computador. Se você usa \"kernel autostarting\", ou não precisa de "
+"quaisquer dispositivos sendo iniciados tão logo o \"ramdisk\" inicial seja "
+"carregado, você pode simplesmente continuar. Alternativamente, escolha não "
+"continuar e informe 'none' quando perguntado quais dispositivos iniciar a "
+"partir do \"ramdisk\" inicial."
+
+#. Type: boolean
+#. Description
+#: ../mdadm.templates:9001
+msgid "Do you want to start MD arrays automatically?"
+msgstr "Você deseja iniciar os dispositivos MD automaticamente?"
+
+#. Type: boolean
+#. Description
+#: ../mdadm.templates:9001
+#, fuzzy
+#| msgid ""
+#| "Once the base system has come up, mdadm can start all MD arrays (RAIDs) "
+#| "specified in /etc/mdadm/mdadm.conf, which have not yet been started. "
+#| "Unless you have compiled multiple device (MD) support into the kernel and "
+#| "marked all partitions part of MD arrays with type 0xfd (as those and only "
+#| "those will be started automatically by the kernel), this is probably what "
+#| "you want."
+msgid ""
+"Once the base system has booted, mdadm can start all MD arrays (RAIDs) "
+"specified in /etc/mdadm/mdadm.conf which have not yet been started. This is "
+"recommended unless multiple device (MD) support is compiled into the kernel "
+"and all partitions are marked as belonging to MD arrays, with type 0xfd (as "
+"those and only those will be started automatically by the kernel)."
+msgstr ""
+"Uma vez que o sistema básico esteja disponível, mdadm pode iniciar todos os "
+"dispositivos MD (RAID) especificados em /etc/mdadm/mdadm.conf, que ainda não "
+"foram iniciados. A menos que você tenha compilado o suporte a múltiplos "
+"dispositivos (MD) embutido no kernel e marcado todas as partições que fazem "
+"parte de dispositivos MD com o tipo 0xfd (como as únicas a serem iniciadas "
+"automaticamente pelo kernel), você provavelmente quer ativar esta opção."
+
+#. Type: boolean
+#. Description
+#: ../mdadm.templates:10001
+msgid "Should mdadm run monthly redundancy checks of the MD arrays?"
+msgstr ""
+"O mdadm deve, mensalmente, executar checagens de redundância dos "
+"dispositivos MD?"
+
+#. Type: boolean
+#. Description
+#: ../mdadm.templates:10001
+#, fuzzy
+#| msgid ""
+#| "If your kernel supports it (>> 2.6.14), mdadm can periodically check the "
+#| "redundancy of your MD arrays (RAIDs). This may be a resource-intensive "
+#| "process, depending on your setup, but it could help prevent rare cases of "
+#| "data loss. Note that this is a read-only check unless errors are found; "
+#| "if errors are found, mdadm will try to correct them, which may result in "
+#| "write access to the media."
+msgid ""
+"If the kernel supports it (versions greater than 2.6.14), mdadm can "
+"periodically check the redundancy of MD arrays (RAIDs). This may be a "
+"resource-intensive process, depending on the local setup, but it could help "
+"prevent rare cases of data loss. Note that this is a read-only check unless "
+"errors are found; if errors are found, mdadm will try to correct them, which "
+"may result in write access to the media."
+msgstr ""
+"Se o seu kernel suporta isto (>> 2.6.14), mdadm pode periodicamente checar a "
+"redundância dos seus dispositivos MD (RAIDs). Isto pode ser um processo com "
+"uso intensivo dos recursos, dependendo da sua configuração, mas pode ajudar "
+"a previnir casos raros de perdas de dados. Note que esta é uma checagem "
+"somente-leitura a menos que erros sejam encontrados; se erros são "
+"encontrados, mdadm tentará corrigí-los, o que poderá resultar em acesso de "
+"escrita na mídia."
+
+#. Type: boolean
+#. Description
+#: ../mdadm.templates:10001
+#, fuzzy
+#| msgid ""
+#| "The default, if turned on, is to run the checks on the first Sunday of "
+#| "every month at 01:06 o'clock."
+msgid ""
+"The default, if turned on, is to check on the first Sunday of every month at "
+"01:06."
+msgstr ""
+"O padrão, se ativado, é executar checagens no primeiro Domingo de cada mês "
+"às 01:06 em ponto."
+
+#. Type: boolean
+#. Description
+#: ../mdadm.templates:11001
+msgid "Do you want to start the MD monitoring daemon?"
+msgstr "Você deseja iniciar o \"daemon\" de monitoramento MD?"
+
+#. Type: boolean
+#. Description
+#: ../mdadm.templates:11001
+#, fuzzy
+#| msgid ""
+#| "The MD (RAID) monitor daemon sends email notifications in response to "
+#| "important MD events (such as a disk failure). You probably want to enable "
+#| "it."
+msgid ""
+"The MD (RAID) monitor daemon sends email notifications in response to "
+"important MD events (such as a disk failure)."
+msgstr ""
+"O \"daemon\" de monitoramento MD (RAID) envia e-mails de notificações em "
+"resposta a eventos MD importantes (como uma falha de disco). Você "
+"provavelmente quer habilitar esta opção."
+
+#. Type: boolean
+#. Description
+#: ../mdadm.templates:11001
+msgid "Enabling this option is recommended."
+msgstr ""
+
+#. Type: string
+#. Description
+#: ../mdadm.templates:12001
+msgid "Recipient for email notifications:"
+msgstr "Destinatário para os e-mails de notificações:"
+
+#. Type: string
+#. Description
+#: ../mdadm.templates:12001
+#, fuzzy
+#| msgid ""
+#| "Please enter the email address of the user who should get the email "
+#| "notification for important MD events."
+msgid ""
+"Please enter the email address of the user who should get the email "
+"notifications for important MD events."
+msgstr ""
+"Por favor, informe o endereço de e-mail do usuário que deverá receber os e-"
+"mails de notificações para estes eventos MD importantes."
+
+#~ msgid ""
+#~ "Please refer to /usr/share/doc/mdadm/README.upgrading-2.5.3.gz if you "
+#~ "intend to continue."
+#~ msgstr ""
+#~ "Por favor, veja /usr/share/doc/mdadm/README.upgrading-2.5.3.gz se você "
+#~ "pretende continuar."
+
+#~ msgid "${msg}"
+#~ msgstr "${msg}"
+
+#~ msgid "Initialise the superblock if you reuse hard disks"
+#~ msgstr "Inicialize o superbloco caso você reutilize discos rígidos"
+
+#~ msgid ""
+#~ "WARNING! If you are using hard disks which have RAID superblocks from "
+#~ "earlier installations in different RAID arrays, you MUST zero each "
+#~ "superblock *before* activating the autostart feature."
+#~ msgstr ""
+#~ "AVISO! Se você estiver usando discos rígidos que já contêm superblocos "
+#~ "RAID de instalações anteriores em \"arrays\" RAID diferentes, você DEVE "
+#~ "zerar o superbloco *antes* de ativar o recurso de \"autostart\"."
+
+#~ msgid ""
+#~ "To do this, do not start the RAID devices automatically. First, zero the "
+#~ "superblock (mdadm --zero-superblock /dev/mdX). Next, use `dpkg-"
+#~ "reconfigure mdadm` to reactivate the autostart feature."
+#~ msgstr ""
+#~ "Para fazê-lo, não inicie os dispositivos RAID automaticamente. Primeiro, "
+#~ "zere os superblocos (mdadm --zero-superblock /dev/mdX). Em seguida, use "
+#~ "`dpkg-reconfigure mdadm` para reativar o recurso de \"autostart\"."
+
+#~ msgid ""
+#~ "You have the option to start all other arrays (those not needed for the "
+#~ "root filesystem) later in the boot sequence. Doing so will give you "
+#~ "greater control over the arrays with the mdadm configuration file. "
+#~ "Starting all arrays at boot-time may be safer though."
+#~ msgstr ""
+#~ "Você tem a opção de iniciar todos os \"arrays\" (aqueles que não são "
+#~ "necessários pelo sistema de arquivos raiz) posteriormente na seqüência de "
+#~ "inicialização. Fazendo isto, você terá um controle maior sobre os \"arrays"
+#~ "\" com o arquivo de configuração mdadm. No entanto, iniciar todos os "
+#~ "\"arrays\" durante a inicialização pode ser mais seguro."
+
+#~ msgid ""
+#~ "If RAID devices are started automatically, all RAID devices are "
+#~ "discovered and assembled automatically at system startup. This option "
+#~ "should only be used if the md driver is compiled as a module. If it is "
+#~ "compiled into your kernel, the automatic startup will be performed at "
+#~ "boot time by the kernel and therefore you should not choose this option."
+#~ msgstr ""
+#~ "Caso os dispositivos RAID sejam iniciados automaticamente, todos os "
+#~ "dispositivos RAID serão detectados e montados automaticamente na "
+#~ "inicialização do sistema operacional. Esta opção deverá ser usada somente "
+#~ "caso o driver md esteja compilado como módulo. Caso o mesmo esteja "
+#~ "compilado embutido em seu kernel, a inicialização automática será "
+#~ "executada em tempo de inicialização pelo próprio kernel e, portanto, você "
+#~ "não deverá e nem precisará escolher esta opção."
+
+#~ msgid ""
+#~ "When the RAID monitor daemon runs, email notifications are sent when a "
+#~ "disk belonging to a RAID array fails or changes its status for some "
+#~ "reason."
+#~ msgstr ""
+#~ "Quando o daemon monitorador RAID é executado, notificações via e-mail são "
+#~ "enviadas quando um disco pertencente a uma array RAID falha ou muda seu "
+#~ "status por qualquer razão."
+
+#~ msgid "Which user should get the email notification?"
+#~ msgstr "Qual usuário deve receber o e-mail de notificação ?"
diff --git a/debian/po/ru.po b/debian/po/ru.po
new file mode 100644
index 00000000..b70c414c
--- /dev/null
+++ b/debian/po/ru.po
@@ -0,0 +1,253 @@
+# translation of ru.po to Russian
+#
+# Translators, if you are not familiar with the PO format, gettext
+# documentation is worth reading, especially sections dedicated to
+# this format, e.g. by running:
+# info -n '(gettext)PO Files'
+# info -n '(gettext)Header Entry'
+# Some information specific to po-debconf are available at
+# /usr/share/doc/po-debconf/README-trans
+# or http://www.debian.org/intl/l10n/po-debconf/README-trans#
+# Developers do not need to manually edit POT or PO files.
+#
+# Yuri Kozlov <kozlov.y@gmail.com>, 2006, 2008.
+msgid ""
+msgstr ""
+"Project-Id-Version: 2.6.3+200709292116+4450e59-4\n"
+"Report-Msgid-Bugs-To: mdadm@packages.debian.org\n"
+"POT-Creation-Date: 2012-05-22 00:50+0100\n"
+"PO-Revision-Date: 2008-02-07 21:02+0300\n"
+"Last-Translator: Yuri Kozlov <kozlov.y@gmail.com>\n"
+"Language-Team: Russian <debian-l10n-russian@lists.debian.org>\n"
+"Language: ru\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
+"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+
+#. Type: string
+#. Description
+#: ../mdadm.templates:2001
+msgid "MD arrays needed for the root file system:"
+msgstr "MD-массивы, необходимые для корневой файловой системы:"
+
+#. Type: string
+#. Description
+#: ../mdadm.templates:2001
+msgid ""
+"Please enter 'all', 'none', or a space-separated list of devices such as "
+"'md0 md1' or 'md/1 md/d0' (the leading '/dev/' can be omitted)."
+msgstr ""
+"Введите список устройств через пробел, слово 'all' или 'none'. Вы можете не "
+"указывать начальную часть пути типа '/dev/', а просто вводить имена "
+"устройств, например 'md0 md1' или 'md/1 md/d0'."
+
+#. Type: text
+#. Description
+#: ../mdadm.templates:3001
+msgid "for internal use - only the long description is needed."
+msgstr ""
+"для внутреннего пользования - нужно использовать только длинное описание."
+
+#. Type: text
+#. Description
+#: ../mdadm.templates:3001
+msgid ""
+"If the system's root file system is located on an MD array (RAID), it needs "
+"to be started early during the boot sequence. If it is located on a logical "
+"volume (LVM), which is on MD, all constituent arrays need to be started."
+msgstr ""
+"Если в системе корневая файловая система расположена на MD-массиве (RAID), "
+"он должен быть запущен в самом начале процесса загрузки. Если корневая "
+"файловая система расположена на логическом томе (LVM), который расположен на "
+"MD, то должны быть запущены все составляющие массивы."
+
+#. Type: text
+#. Description
+#: ../mdadm.templates:3001
+msgid ""
+"If you know exactly which arrays are needed to bring up the root file "
+"system, and you want to postpone starting all other arrays to a later point "
+"in the boot sequence, enter the arrays to start here. Alternatively, enter "
+"'all' to simply start all available arrays."
+msgstr ""
+"Если вы точно знаете, какие массивы требуются для получения работоспособной "
+"корневой файловой системы и хотите отложить запуск остальных массивов на "
+"более поздний момент в процессе загрузки, то введите их здесь. Иначе, "
+"введите слово 'all', чтобы просто запустить все доступные массивы."
+
+#. Type: text
+#. Description
+#: ../mdadm.templates:3001
+msgid ""
+"If you do not need or want to start any arrays for the root file system, "
+"leave the answer blank (or enter 'none'). This may be the case if you are "
+"using kernel autostart or do not need any arrays to boot."
+msgstr ""
+"Если вам это не нужно, или вы хотите запускать все массивы для корневой "
+"файловой системы, оставьте это поле пустым (или введите слово 'none'). Этот "
+"вариант подходит, если вы используете автоматический запуск из ядра или если "
+"для загрузки массивы ненужны."
+
+#. Type: text
+#. Description
+#: ../mdadm.templates:4001
+msgid "An error occurred: device node does not exist"
+msgstr "Произошла ошибка: нода устройства не существует"
+
+#. Type: text
+#. Description
+#: ../mdadm.templates:5001
+msgid "An error occurred: not a block device"
+msgstr "Произошла ошибка: устройство не является блочным"
+
+#. Type: text
+#. Description
+#: ../mdadm.templates:6001
+msgid "An error occurred: not an MD array"
+msgstr "Произошла ошибка: это не MD-массив"
+
+#. Type: text
+#. Description
+#: ../mdadm.templates:7001
+msgid "An error occurred: array not listed in mdadm.conf file"
+msgstr "Произошла ошибка: массив не описан в файле mdadm.conf"
+
+#. Type: boolean
+#. Description
+#: ../mdadm.templates:8001
+msgid "Start arrays not listed in mdadm.conf?"
+msgstr "Запустить массивы, неописанные в mdadm.conf?"
+
+#. Type: boolean
+#. Description
+#: ../mdadm.templates:8001
+msgid ""
+"The specified array (${array}) is not listed in the configuration file "
+"(${config}). Therefore, it cannot be started during boot, unless you correct "
+"the configuration file and recreate the initial ramdisk."
+msgstr ""
+"Указанный вами массив (${array}) не описан в конфигурационном файле "
+"(${config}). Поэтому он не может быть запущен при старте машины, пока вы не "
+"исправите конфигурационный файл и не пересоздадите первоначальный ramdisk."
+
+#. Type: boolean
+#. Description
+#: ../mdadm.templates:8001
+msgid ""
+"This warning is only relevant if you need arrays to be started from the "
+"initial ramdisk to be able to boot. If you use kernel autostarting, or do "
+"not need any arrays to be started as early as the initial ramdisk is loaded, "
+"you can simply continue. Alternatively, choose not to continue and enter "
+"'none' when prompted which arrays to start from the initial ramdisk."
+msgstr ""
+"Данное предупреждение уместно только, если вам требуется запускать массивы "
+"из первоначального ramdisk для загрузки машины. Если вы используете "
+"автоматический запуск из ядра или вам не нужны массивы для загрузки на этапе "
+"загрузки первоначального ramdisk, вы можете просто продолжить. Иначе, "
+"выберите не продолжать и введите 'none', когда вам предложат выбрать массивы "
+"для запуска из первоначального ramdisk."
+
+#. Type: boolean
+#. Description
+#: ../mdadm.templates:9001
+msgid "Do you want to start MD arrays automatically?"
+msgstr "Запускать MD-массивы автоматически?"
+
+#. Type: boolean
+#. Description
+#: ../mdadm.templates:9001
+msgid ""
+"Once the base system has booted, mdadm can start all MD arrays (RAIDs) "
+"specified in /etc/mdadm/mdadm.conf which have not yet been started. This is "
+"recommended unless multiple device (MD) support is compiled into the kernel "
+"and all partitions are marked as belonging to MD arrays, with type 0xfd (as "
+"those and only those will be started automatically by the kernel)."
+msgstr ""
+"После старта базовой системы, mdadm может запустить все MD-массивы (RAIDы), "
+"указанные в файле /etc/mdadm/mdadm.conf, которые ещё не запущены. Нужно "
+"ответить утвердительно, если вы не включили поддержку MD в ядро (в противном "
+"случае ядро само выполняет автоматический запуск MD-массивов из разделов с "
+"типом 0xfd и только с ним)."
+
+#. Type: boolean
+#. Description
+#: ../mdadm.templates:10001
+msgid "Should mdadm run monthly redundancy checks of the MD arrays?"
+msgstr ""
+"Должен ли mdadm запускать ежемесячную проверку избыточности на MD-массивах?"
+
+#. Type: boolean
+#. Description
+#: ../mdadm.templates:10001
+msgid ""
+"If the kernel supports it (versions greater than 2.6.14), mdadm can "
+"periodically check the redundancy of MD arrays (RAIDs). This may be a "
+"resource-intensive process, depending on the local setup, but it could help "
+"prevent rare cases of data loss. Note that this is a read-only check unless "
+"errors are found; if errors are found, mdadm will try to correct them, which "
+"may result in write access to the media."
+msgstr ""
+"Если это поддерживается ядром (>> 2.6.14), mdadm может периодически "
+"проверять избыточность MD массивов (RAID-ов). Это может стать ресурсоёмким "
+"процессом в зависимости от настройки, но он может помочь предотвратить "
+"редкие случаи потери данных. Заметим, что пока не обнаружено ошибок, работа "
+"ведётся в режиме только чтение; если обнаруживается ошибка, mdadm попытается "
+"исправить её, что может потребовать прав записи на носитель."
+
+#. Type: boolean
+#. Description
+#: ../mdadm.templates:10001
+msgid ""
+"The default, if turned on, is to check on the first Sunday of every month at "
+"01:06."
+msgstr ""
+"Если ответить утвердительно, то по умолчанию проверка выполняется в первое "
+"воскресенье каждого месяца в 01:06."
+
+#. Type: boolean
+#. Description
+#: ../mdadm.templates:11001
+msgid "Do you want to start the MD monitoring daemon?"
+msgstr "Запускать демон-монитор MD?"
+
+#. Type: boolean
+#. Description
+#: ../mdadm.templates:11001
+msgid ""
+"The MD (RAID) monitor daemon sends email notifications in response to "
+"important MD events (such as a disk failure)."
+msgstr ""
+"Демон-монитор MD (RAID) посылает почтовые уведомления в случае возникновения "
+"важных событий с MD (таких как отказ диска)."
+
+#. Type: boolean
+#. Description
+#: ../mdadm.templates:11001
+msgid "Enabling this option is recommended."
+msgstr "Рекомендуется ответить утвердительно."
+
+#. Type: string
+#. Description
+#: ../mdadm.templates:12001
+msgid "Recipient for email notifications:"
+msgstr "Получатель уведомительных писем:"
+
+#. Type: string
+#. Description
+#: ../mdadm.templates:12001
+msgid ""
+"Please enter the email address of the user who should get the email "
+"notifications for important MD events."
+msgstr ""
+"Введите адрес электронной почты пользователя, который будет получать "
+"почтовые уведомления о важных изменениях в состоянии MD."
+
+#~ msgid ""
+#~ "Please refer to /usr/share/doc/mdadm/README.upgrading-2.5.3.gz if you "
+#~ "intend to continue."
+#~ msgstr ""
+#~ "Если вы намерены продолжить, прочитайте /usr/share/doc/mdadm/README."
+#~ "upgrading-2.5.3.gz."
diff --git a/debian/po/sk.po b/debian/po/sk.po
new file mode 100644
index 00000000..e902aa8a
--- /dev/null
+++ b/debian/po/sk.po
@@ -0,0 +1,241 @@
+# Slovak translations for mdadm package
+# Slovenské preklady pre balík mdadm.
+# Copyright (C) 2011 THE mdadm'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the mdadm package.
+# Automatically generated, 2011.
+# Slavko <linux@slavino.sk>, 2011.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: mdadm 3.2.2-1\n"
+"Report-Msgid-Bugs-To: mdadm@packages.debian.org\n"
+"POT-Creation-Date: 2012-05-22 00:50+0100\n"
+"PO-Revision-Date: 2011-09-18 11:22+0200\n"
+"Last-Translator: Slavko <linux@slavino.sk>\n"
+"Language-Team: Slovak <debian-l10n-slovak@lists.debian.org>\n"
+"Language: sk\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
+
+#. Type: string
+#. Description
+#: ../mdadm.templates:2001
+msgid "MD arrays needed for the root file system:"
+msgstr "Polia MD, potrebné pre koreň súborového systému:"
+
+#. Type: string
+#. Description
+#: ../mdadm.templates:2001
+msgid ""
+"Please enter 'all', 'none', or a space-separated list of devices such as "
+"'md0 md1' or 'md/1 md/d0' (the leading '/dev/' can be omitted)."
+msgstr ""
+"Prosím, zadajte „all”, „none” alebo medzerou oddelený zoznam zariadení, "
+"napr. „md0 md1” alebo „md/1 md/d0” (počiatočné „/dev/” môže byť vynechané)."
+
+#. Type: text
+#. Description
+#: ../mdadm.templates:3001
+msgid "for internal use - only the long description is needed."
+msgstr "na interné použitie – potrebný je len dlhý popis."
+
+#. Type: text
+#. Description
+#: ../mdadm.templates:3001
+msgid ""
+"If the system's root file system is located on an MD array (RAID), it needs "
+"to be started early during the boot sequence. If it is located on a logical "
+"volume (LVM), which is on MD, all constituent arrays need to be started."
+msgstr ""
+"Ak je koreň súborového systému umiestnený na poli MD (RAID), musí byť "
+"spustený počas zavádzania systému. Ak je koreň umiestnený na logickom zväzku "
+"(LVM), ktorý je na MD, musia byť spustené všetky súvisiace polia."
+
+#. Type: text
+#. Description
+#: ../mdadm.templates:3001
+msgid ""
+"If you know exactly which arrays are needed to bring up the root file "
+"system, and you want to postpone starting all other arrays to a later point "
+"in the boot sequence, enter the arrays to start here. Alternatively, enter "
+"'all' to simply start all available arrays."
+msgstr ""
+"Ak viete presne, ktoré polia sú potrebné na pripojenie koreňa súborového "
+"systému a chcete odložiť štart všetkých ostatných polí na neskorší okamih "
+"zavádzania, zadajte tu polia, ktoré majú byť spustené. Alebo zadajte „all”, "
+"čím budú jednoducho spustené všetky dostupné polia."
+
+#. Type: text
+#. Description
+#: ../mdadm.templates:3001
+msgid ""
+"If you do not need or want to start any arrays for the root file system, "
+"leave the answer blank (or enter 'none'). This may be the case if you are "
+"using kernel autostart or do not need any arrays to boot."
+msgstr ""
+"Ak pre koreň súborového systému nepotrebujete alebo nechcete spúšťať žiadne "
+"polia, nechajte odpoveď prázdnu (alebo zadajte „none”). Tento prípad môže "
+"nastať, ak používate automatický štart polí priamo v jadre alebo "
+"nepotrebujete pri zavádzaní žiadne polia."
+
+#. Type: text
+#. Description
+#: ../mdadm.templates:4001
+msgid "An error occurred: device node does not exist"
+msgstr "Nastala chyba: uzol zariadenia neexistuje"
+
+#. Type: text
+#. Description
+#: ../mdadm.templates:5001
+msgid "An error occurred: not a block device"
+msgstr "Nastala chyba: nie je blokové zariadenie"
+
+#. Type: text
+#. Description
+#: ../mdadm.templates:6001
+msgid "An error occurred: not an MD array"
+msgstr "Nastala chyba: nie je pole MD"
+
+#. Type: text
+#. Description
+#: ../mdadm.templates:7001
+msgid "An error occurred: array not listed in mdadm.conf file"
+msgstr "Nastala chyba: pole nie je uvedené v súbore mdadm.conf"
+
+#. Type: boolean
+#. Description
+#: ../mdadm.templates:8001
+msgid "Start arrays not listed in mdadm.conf?"
+msgstr "Spustiť polia, ktoré nie sú uvedené v mdadm.conf?"
+
+#. Type: boolean
+#. Description
+#: ../mdadm.templates:8001
+msgid ""
+"The specified array (${array}) is not listed in the configuration file "
+"(${config}). Therefore, it cannot be started during boot, unless you correct "
+"the configuration file and recreate the initial ramdisk."
+msgstr ""
+"Zadané pole (${array}) nie je uvedené v konfiguračnom súbore (${config}), a "
+"preto nemôže byť spustené počas zavádzania, až kým neopravíte konfiguračný "
+"súbor a nevytvoríte nový počiatočný ramdisk (initrd)."
+
+#. Type: boolean
+#. Description
+#: ../mdadm.templates:8001
+msgid ""
+"This warning is only relevant if you need arrays to be started from the "
+"initial ramdisk to be able to boot. If you use kernel autostarting, or do "
+"not need any arrays to be started as early as the initial ramdisk is loaded, "
+"you can simply continue. Alternatively, choose not to continue and enter "
+"'none' when prompted which arrays to start from the initial ramdisk."
+msgstr ""
+"Toto varovanie je dôležité, len ak potrebujete aby boli polia spúšťané z "
+"počiatočného ramdisku, aby boli dostupné počas zavádzania. Ak používate "
+"automatické spúšťanie polí priamo z jadra, alebo ak nepotrebujte aby boli "
+"polia spúšťané tak skoro (z počiatočného ramdisku), môžete prosto "
+"pokračovať. Alebo môžete zvoliť nepokračovať a odpovedať „none” na otázku, "
+"ktoré polia majú byť spúšťané z počiatočného ramdisku."
+
+#. Type: boolean
+#. Description
+#: ../mdadm.templates:9001
+msgid "Do you want to start MD arrays automatically?"
+msgstr "Chcete spúšťať polia MD automaticky?"
+
+#. Type: boolean
+#. Description
+#: ../mdadm.templates:9001
+msgid ""
+"Once the base system has booted, mdadm can start all MD arrays (RAIDs) "
+"specified in /etc/mdadm/mdadm.conf which have not yet been started. This is "
+"recommended unless multiple device (MD) support is compiled into the kernel "
+"and all partitions are marked as belonging to MD arrays, with type 0xfd (as "
+"those and only those will be started automatically by the kernel)."
+msgstr ""
+"Po zavedení základného systému môže mdadm spustiť všetky polia MD (RAIDy) "
+"definované v /etc/mdadm/mdadm.conf, ktoré ešte neboli spustené. Toto je "
+"odporúčané, ibaže máte v jadre zakompilovanú podporu multiple device (MD) a "
+"všetky partície sú označené ako patriace do polí MD s typom 0xfd (pretože "
+"tieto a len tieto budú automaticky spúšťané jadrom)."
+
+#. Type: boolean
+#. Description
+#: ../mdadm.templates:10001
+msgid "Should mdadm run monthly redundancy checks of the MD arrays?"
+msgstr "Má mdadm spúšťať mesačnú kontrolu redundancie polí MD?"
+
+#. Type: boolean
+#. Description
+#: ../mdadm.templates:10001
+msgid ""
+"If the kernel supports it (versions greater than 2.6.14), mdadm can "
+"periodically check the redundancy of MD arrays (RAIDs). This may be a "
+"resource-intensive process, depending on the local setup, but it could help "
+"prevent rare cases of data loss. Note that this is a read-only check unless "
+"errors are found; if errors are found, mdadm will try to correct them, which "
+"may result in write access to the media."
+msgstr ""
+"Ak to jadro podporuje (verzie novšie ako 2.6.14), mdadm môže periodicky "
+"kontrolovať redundanciu polí MD (RAIDov). Tento proces môže byť (v "
+"závislosti od lokálneho nastavenia) náročný na zdroje systému, ale môže "
+"pomôcť pri predchádzaní vzácnym prípadom straty dát. Pamätajte, že, pokiaľ "
+"nie sú nájdené chyby, je to kontrola read-only, až keď sú nájdené chyby, "
+"pokúsi sa ich mdadm opraviť, čo môže mať za následok zápis na médium."
+
+#. Type: boolean
+#. Description
+#: ../mdadm.templates:10001
+msgid ""
+"The default, if turned on, is to check on the first Sunday of every month at "
+"01:06."
+msgstr ""
+"Predvolene je vypnuté, ak túto možnosť zapnete, bude kontrola vykonávaná "
+"každú prvú nedeľu mesiaca o 01:06."
+
+#. Type: boolean
+#. Description
+#: ../mdadm.templates:11001
+msgid "Do you want to start the MD monitoring daemon?"
+msgstr "Chcete spustiť démona monitorovania MD?"
+
+#. Type: boolean
+#. Description
+#: ../mdadm.templates:11001
+msgid ""
+"The MD (RAID) monitor daemon sends email notifications in response to "
+"important MD events (such as a disk failure)."
+msgstr ""
+"Monitorovací démon MD (RAID) posiela upozornenia emailom, ako reakcie na "
+"dôležité udalosti MD (napr. zlyhanie disku)."
+
+#. Type: boolean
+#. Description
+#: ../mdadm.templates:11001
+msgid "Enabling this option is recommended."
+msgstr "Povolenie tejto možnosti je odporúčané."
+
+#. Type: string
+#. Description
+#: ../mdadm.templates:12001
+msgid "Recipient for email notifications:"
+msgstr "Príjemca emailových upozornení:"
+
+#. Type: string
+#. Description
+#: ../mdadm.templates:12001
+msgid ""
+"Please enter the email address of the user who should get the email "
+"notifications for important MD events."
+msgstr ""
+"Prosím, zadajte emailovú adresu používateľa, ktorý má dostávať emailové "
+"upozornenia na dôležité udalosti MD."
+
+#~ msgid ""
+#~ "Please refer to /usr/share/doc/mdadm/README.upgrading-2.5.3.gz if you "
+#~ "intend to continue."
+#~ msgstr ""
+#~ "Ak chcete pokračovať, prečítajte si /usr/share/doc/mdadm/README."
+#~ "upgrading-2.5.3.gz."
diff --git a/debian/po/sv.po b/debian/po/sv.po
new file mode 100644
index 00000000..7f8ed70c
--- /dev/null
+++ b/debian/po/sv.po
@@ -0,0 +1,248 @@
+# translation of mdadm_2.6.7-3_sv.po to Swedish
+# Translators, if you are not familiar with the PO format, gettext
+# documentation is worth reading, especially sections dedicated to
+# this format, e.g. by running:
+# info -n '(gettext)PO Files'
+# info -n '(gettext)Header Entry'
+# Some information specific to po-debconf are available at
+# /usr/share/doc/po-debconf/README-trans
+# or http://www.debian.org/intl/l10n/po-debconf/README-trans
+# Developers do not need to manually edit POT or PO files.
+#
+# Martin gren <martin.agren@gmail.com>, 2008.
+msgid ""
+msgstr ""
+"Project-Id-Version: mdadm_2.6.7-3_sv\n"
+"Report-Msgid-Bugs-To: mdadm@packages.debian.org\n"
+"POT-Creation-Date: 2012-05-22 00:50+0100\n"
+"PO-Revision-Date: 2008-07-23 18:34+0200\n"
+"Last-Translator: Martin gren <martin.agren@gmail.com>\n"
+"Language-Team: Swedish <debian-l10n-swedish@lists.debian.org>\n"
+"Language: sv\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=ISO-8859-1\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#. Type: string
+#. Description
+#: ../mdadm.templates:2001
+msgid "MD arrays needed for the root file system:"
+msgstr "MD-kedjor som behvs fr rotfilsystemet:"
+
+#. Type: string
+#. Description
+#: ../mdadm.templates:2001
+msgid ""
+"Please enter 'all', 'none', or a space-separated list of devices such as "
+"'md0 md1' or 'md/1 md/d0' (the leading '/dev/' can be omitted)."
+msgstr ""
+"Ange \"all\", \"none\" eller en blankstegsseparerad lista p enheter, ssom "
+"\"md0 md1\" eller \"md/1 md/0\" (det inledande \"/dev\" kan uteslutas)."
+
+#. Type: text
+#. Description
+#: ../mdadm.templates:3001
+msgid "for internal use - only the long description is needed."
+msgstr "fr intern anvndning - endast den lnga beskrivningen behvs."
+
+#. Type: text
+#. Description
+#: ../mdadm.templates:3001
+msgid ""
+"If the system's root file system is located on an MD array (RAID), it needs "
+"to be started early during the boot sequence. If it is located on a logical "
+"volume (LVM), which is on MD, all constituent arrays need to be started."
+msgstr ""
+"Om ditt system har sitt rotfilsystem p en MD-kedja (RAID) behver den "
+"startas upp tidigt under uppstartssekvensen. Om ditt rotfilsystem finns p "
+"en logisk volym (LVM), vilket r p MD, behver alla bestende kedjor "
+"startas."
+
+#. Type: text
+#. Description
+#: ../mdadm.templates:3001
+msgid ""
+"If you know exactly which arrays are needed to bring up the root file "
+"system, and you want to postpone starting all other arrays to a later point "
+"in the boot sequence, enter the arrays to start here. Alternatively, enter "
+"'all' to simply start all available arrays."
+msgstr ""
+"Om du vet exakt vilka kedjor som behvs fr att ta upp rotfilsystemet, och "
+"du vill skjuta upp uppstarten fr alla andra kedjor till en senare tidspunkt "
+"i uppstartssekvensen, ange vilka kedjor som ska starta hr. Alternativt, "
+"ange \"all\" fr att helt enkelt starta alla tillgngliga kedjor."
+
+#. Type: text
+#. Description
+#: ../mdadm.templates:3001
+msgid ""
+"If you do not need or want to start any arrays for the root file system, "
+"leave the answer blank (or enter 'none'). This may be the case if you are "
+"using kernel autostart or do not need any arrays to boot."
+msgstr ""
+"Om du inte behver eller vill starta ngra kedjor fr rotfilsystemet, lmna "
+"svaret blankt (eller ange \"none\"). Detta kan vara fallet om du anvnder "
+"krnans automatstart eller inte behver ngra kedjor fr att starta upp."
+
+#. Type: text
+#. Description
+#: ../mdadm.templates:4001
+msgid "An error occurred: device node does not exist"
+msgstr "Ett fel intrffade: enhetsnoden finns inte"
+
+#. Type: text
+#. Description
+#: ../mdadm.templates:5001
+msgid "An error occurred: not a block device"
+msgstr "Ett fel intrffade: inte en blockenhet"
+
+#. Type: text
+#. Description
+#: ../mdadm.templates:6001
+msgid "An error occurred: not an MD array"
+msgstr "Ett fel intrffade: inte en MD-kedja"
+
+#. Type: text
+#. Description
+#: ../mdadm.templates:7001
+msgid "An error occurred: array not listed in mdadm.conf file"
+msgstr "Ett fel intrffade: kedjan r inte listad i filen mdadm.conf"
+
+#. Type: boolean
+#. Description
+#: ../mdadm.templates:8001
+msgid "Start arrays not listed in mdadm.conf?"
+msgstr "Starta kedjor som inte r listade i mdadm.conf?"
+
+#. Type: boolean
+#. Description
+#: ../mdadm.templates:8001
+msgid ""
+"The specified array (${array}) is not listed in the configuration file "
+"(${config}). Therefore, it cannot be started during boot, unless you correct "
+"the configuration file and recreate the initial ramdisk."
+msgstr ""
+"Kedjan du har angivit (${array}) r inte listad i konfigurationsfilen "
+"(${config}). Drfr kan den inte startas under systemets uppstart, svida du "
+"inte rttar till konfigurationsfilen och terskapar den initiala ramdisken."
+
+#. Type: boolean
+#. Description
+#: ../mdadm.templates:8001
+msgid ""
+"This warning is only relevant if you need arrays to be started from the "
+"initial ramdisk to be able to boot. If you use kernel autostarting, or do "
+"not need any arrays to be started as early as the initial ramdisk is loaded, "
+"you can simply continue. Alternatively, choose not to continue and enter "
+"'none' when prompted which arrays to start from the initial ramdisk."
+msgstr ""
+"Den hr varningen r endast relevant om du behver kedjor som ska startas "
+"frn den initiala ramdisken fr att kunna starta upp systemet. Om du "
+"anvnder krnans automatstart, eller inte behver starta ngra kedjor s "
+"tidigt som nr de initiala ramdisken lses in, kan du helt enkelt fortstta. "
+"Alternativt, vlj att inte fortstta och ange \"none\" nr frgan om vilka "
+"kedjor som ska startas frn den initiala ramdisken stlls."
+
+#. Type: boolean
+#. Description
+#: ../mdadm.templates:9001
+msgid "Do you want to start MD arrays automatically?"
+msgstr "Vill du starta MD-kedjor automatiskt?"
+
+#. Type: boolean
+#. Description
+#: ../mdadm.templates:9001
+msgid ""
+"Once the base system has booted, mdadm can start all MD arrays (RAIDs) "
+"specified in /etc/mdadm/mdadm.conf which have not yet been started. This is "
+"recommended unless multiple device (MD) support is compiled into the kernel "
+"and all partitions are marked as belonging to MD arrays, with type 0xfd (as "
+"those and only those will be started automatically by the kernel)."
+msgstr ""
+"Nr grundsystemet har startats upp kan mdadm starta alla MD-kedjor (RAID) "
+"som har angivits i /etc/mdadm/mdadm.conf och som nnu inte har startats. "
+"Detta rekommenderas svida inte std fr multipla enheter (MD) har byggts in "
+"i krnan och alla partitioner markerats som del av MD-kedjor med typen 0xfd "
+"(eftersom de och endast de kommer att startas upp automatiskt av krnan)."
+
+#. Type: boolean
+#. Description
+#: ../mdadm.templates:10001
+msgid "Should mdadm run monthly redundancy checks of the MD arrays?"
+msgstr "Ska mdadm kra mnatliga redundanskontroller av MD-kedjorna?"
+
+#. Type: boolean
+#. Description
+#: ../mdadm.templates:10001
+msgid ""
+"If the kernel supports it (versions greater than 2.6.14), mdadm can "
+"periodically check the redundancy of MD arrays (RAIDs). This may be a "
+"resource-intensive process, depending on the local setup, but it could help "
+"prevent rare cases of data loss. Note that this is a read-only check unless "
+"errors are found; if errors are found, mdadm will try to correct them, which "
+"may result in write access to the media."
+msgstr ""
+"Om din krna har std fr det (versioner senare n 2.6.14), kan mdadm "
+"periodvis kontrollera redundansen fr dina MD-kedjor (RAID). Det hr kan "
+"vara en resurskrvande process, beroende p din konfiguration, men den kan "
+"hjlpa till att frhindra ovanliga fall av datafrluster. Observera att det "
+"r en skrivskyddad kontroll svida inte fel ptrffas; om fel hittas kommer "
+"mdadm frska att rtta till dem, vilket kan leda till skrivtkomst till "
+"mediet."
+
+#. Type: boolean
+#. Description
+#: ../mdadm.templates:10001
+msgid ""
+"The default, if turned on, is to check on the first Sunday of every month at "
+"01:06."
+msgstr ""
+"Standardvrdet, om pslagen, r att kontrollera p den frsta sndagen i "
+"varje mnad klockan 01.06."
+
+#. Type: boolean
+#. Description
+#: ../mdadm.templates:11001
+msgid "Do you want to start the MD monitoring daemon?"
+msgstr "Vill du starta MD-vervakningsdemonen?"
+
+#. Type: boolean
+#. Description
+#: ../mdadm.templates:11001
+msgid ""
+"The MD (RAID) monitor daemon sends email notifications in response to "
+"important MD events (such as a disk failure)."
+msgstr ""
+"MD-vervakningsdemonen (RAID) skickar e-postnotifieringar fr viktiga MD-"
+"hndelser (ssom ett diskfel)."
+
+#. Type: boolean
+#. Description
+#: ../mdadm.templates:11001
+msgid "Enabling this option is recommended."
+msgstr "Att aktivera denna funktion rekommenderas."
+
+#. Type: string
+#. Description
+#: ../mdadm.templates:12001
+msgid "Recipient for email notifications:"
+msgstr "Mottagare av e-postnotifieringar:"
+
+#. Type: string
+#. Description
+#: ../mdadm.templates:12001
+msgid ""
+"Please enter the email address of the user who should get the email "
+"notifications for important MD events."
+msgstr ""
+"Ange e-postadressen till den anvndare som ska ta emot e-postnotifieringar "
+"fr dessa viktiga MD-hndelser."
+
+#~ msgid ""
+#~ "Please refer to /usr/share/doc/mdadm/README.upgrading-2.5.3.gz if you "
+#~ "intend to continue."
+#~ msgstr ""
+#~ "Referera till /usr/share/doc/mdadm/README.upgrading-2.5.3.gz om du tnker "
+#~ "fortstta."
diff --git a/debian/po/templates.pot b/debian/po/templates.pot
new file mode 100644
index 00000000..a4a46f8b
--- /dev/null
+++ b/debian/po/templates.pot
@@ -0,0 +1,193 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: mdadm\n"
+"Report-Msgid-Bugs-To: mdadm@packages.debian.org\n"
+"POT-Creation-Date: 2012-05-22 00:50+0100\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=CHARSET\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Type: string
+#. Description
+#: ../mdadm.templates:2001
+msgid "MD arrays needed for the root file system:"
+msgstr ""
+
+#. Type: string
+#. Description
+#: ../mdadm.templates:2001
+msgid ""
+"Please enter 'all', 'none', or a space-separated list of devices such as "
+"'md0 md1' or 'md/1 md/d0' (the leading '/dev/' can be omitted)."
+msgstr ""
+
+#. Type: text
+#. Description
+#: ../mdadm.templates:3001
+msgid "for internal use - only the long description is needed."
+msgstr ""
+
+#. Type: text
+#. Description
+#: ../mdadm.templates:3001
+msgid ""
+"If the system's root file system is located on an MD array (RAID), it needs "
+"to be started early during the boot sequence. If it is located on a logical "
+"volume (LVM), which is on MD, all constituent arrays need to be started."
+msgstr ""
+
+#. Type: text
+#. Description
+#: ../mdadm.templates:3001
+msgid ""
+"If you know exactly which arrays are needed to bring up the root file "
+"system, and you want to postpone starting all other arrays to a later point "
+"in the boot sequence, enter the arrays to start here. Alternatively, enter "
+"'all' to simply start all available arrays."
+msgstr ""
+
+#. Type: text
+#. Description
+#: ../mdadm.templates:3001
+msgid ""
+"If you do not need or want to start any arrays for the root file system, "
+"leave the answer blank (or enter 'none'). This may be the case if you are "
+"using kernel autostart or do not need any arrays to boot."
+msgstr ""
+
+#. Type: text
+#. Description
+#: ../mdadm.templates:4001
+msgid "An error occurred: device node does not exist"
+msgstr ""
+
+#. Type: text
+#. Description
+#: ../mdadm.templates:5001
+msgid "An error occurred: not a block device"
+msgstr ""
+
+#. Type: text
+#. Description
+#: ../mdadm.templates:6001
+msgid "An error occurred: not an MD array"
+msgstr ""
+
+#. Type: text
+#. Description
+#: ../mdadm.templates:7001
+msgid "An error occurred: array not listed in mdadm.conf file"
+msgstr ""
+
+#. Type: boolean
+#. Description
+#: ../mdadm.templates:8001
+msgid "Start arrays not listed in mdadm.conf?"
+msgstr ""
+
+#. Type: boolean
+#. Description
+#: ../mdadm.templates:8001
+msgid ""
+"The specified array (${array}) is not listed in the configuration file "
+"(${config}). Therefore, it cannot be started during boot, unless you correct "
+"the configuration file and recreate the initial ramdisk."
+msgstr ""
+
+#. Type: boolean
+#. Description
+#: ../mdadm.templates:8001
+msgid ""
+"This warning is only relevant if you need arrays to be started from the "
+"initial ramdisk to be able to boot. If you use kernel autostarting, or do "
+"not need any arrays to be started as early as the initial ramdisk is loaded, "
+"you can simply continue. Alternatively, choose not to continue and enter "
+"'none' when prompted which arrays to start from the initial ramdisk."
+msgstr ""
+
+#. Type: boolean
+#. Description
+#: ../mdadm.templates:9001
+msgid "Do you want to start MD arrays automatically?"
+msgstr ""
+
+#. Type: boolean
+#. Description
+#: ../mdadm.templates:9001
+msgid ""
+"Once the base system has booted, mdadm can start all MD arrays (RAIDs) "
+"specified in /etc/mdadm/mdadm.conf which have not yet been started. This is "
+"recommended unless multiple device (MD) support is compiled into the kernel "
+"and all partitions are marked as belonging to MD arrays, with type 0xfd (as "
+"those and only those will be started automatically by the kernel)."
+msgstr ""
+
+#. Type: boolean
+#. Description
+#: ../mdadm.templates:10001
+msgid "Should mdadm run monthly redundancy checks of the MD arrays?"
+msgstr ""
+
+#. Type: boolean
+#. Description
+#: ../mdadm.templates:10001
+msgid ""
+"If the kernel supports it (versions greater than 2.6.14), mdadm can "
+"periodically check the redundancy of MD arrays (RAIDs). This may be a "
+"resource-intensive process, depending on the local setup, but it could help "
+"prevent rare cases of data loss. Note that this is a read-only check unless "
+"errors are found; if errors are found, mdadm will try to correct them, which "
+"may result in write access to the media."
+msgstr ""
+
+#. Type: boolean
+#. Description
+#: ../mdadm.templates:10001
+msgid ""
+"The default, if turned on, is to check on the first Sunday of every month at "
+"01:06."
+msgstr ""
+
+#. Type: boolean
+#. Description
+#: ../mdadm.templates:11001
+msgid "Do you want to start the MD monitoring daemon?"
+msgstr ""
+
+#. Type: boolean
+#. Description
+#: ../mdadm.templates:11001
+msgid ""
+"The MD (RAID) monitor daemon sends email notifications in response to "
+"important MD events (such as a disk failure)."
+msgstr ""
+
+#. Type: boolean
+#. Description
+#: ../mdadm.templates:11001
+msgid "Enabling this option is recommended."
+msgstr ""
+
+#. Type: string
+#. Description
+#: ../mdadm.templates:12001
+msgid "Recipient for email notifications:"
+msgstr ""
+
+#. Type: string
+#. Description
+#: ../mdadm.templates:12001
+msgid ""
+"Please enter the email address of the user who should get the email "
+"notifications for important MD events."
+msgstr ""
diff --git a/debian/po/vi.po b/debian/po/vi.po
new file mode 100644
index 00000000..03a94827
--- /dev/null
+++ b/debian/po/vi.po
@@ -0,0 +1,245 @@
+# Vietnamese Translation for mdadm.
+# Copyright © 2008 Free Software Foundation, Inc.
+# Clytie Siddall <clytie@riverland.net.au>, 2005-2008.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: mdadm 2.6.3+200709292116+4450e59-4\n"
+"Report-Msgid-Bugs-To: mdadm@packages.debian.org\n"
+"POT-Creation-Date: 2012-05-22 00:50+0100\n"
+"PO-Revision-Date: 2008-02-23 17:40+1030\n"
+"Last-Translator: Clytie Siddall <clytie@riverland.net.au>\n"
+"Language-Team: Vietnamese <vi-VN@googlegroups.com>\n"
+"Language: vi\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"X-Generator: LocFactoryEditor 1.7b3\n"
+
+#. Type: string
+#. Description
+#: ../mdadm.templates:2001
+msgid "MD arrays needed for the root file system:"
+msgstr "Các mảng MD cần thiết cho hệ thống tập tin gốc:"
+
+#. Type: string
+#. Description
+#: ../mdadm.templates:2001
+msgid ""
+"Please enter 'all', 'none', or a space-separated list of devices such as "
+"'md0 md1' or 'md/1 md/d0' (the leading '/dev/' can be omitted)."
+msgstr ""
+"Hãy nhập « all » (tất cả), « none » (không có), hoặc một danh sách các thiết "
+"bị định giới bằng dấu cách như « md0 md1 » hoặc « md/1 md/d0 » (có thể bỏ "
+"sót phần « /dev/ » đi trước)."
+
+#. Type: text
+#. Description
+#: ../mdadm.templates:3001
+msgid "for internal use - only the long description is needed."
+msgstr "để sử dụng nội bộ — chỉ cần thiết mô tả dài."
+
+#. Type: text
+#. Description
+#: ../mdadm.templates:3001
+msgid ""
+"If the system's root file system is located on an MD array (RAID), it needs "
+"to be started early during the boot sequence. If it is located on a logical "
+"volume (LVM), which is on MD, all constituent arrays need to be started."
+msgstr ""
+"Nếu hệ thống tập tin gốc của hệ thống nằm trên một mảng MD (RAID) thì cần "
+"phải khởi chạy nó sớm trong tiến trình khởi động. Nếu nó nằm trên một khối "
+"tin hợp lý (LVM) mà lần lượt nằm trên một MD thì cần phải khởi chạy tất cả "
+"các mảng thành phần."
+
+#. Type: text
+#. Description
+#: ../mdadm.templates:3001
+msgid ""
+"If you know exactly which arrays are needed to bring up the root file "
+"system, and you want to postpone starting all other arrays to a later point "
+"in the boot sequence, enter the arrays to start here. Alternatively, enter "
+"'all' to simply start all available arrays."
+msgstr ""
+"Nếu bạn biết chính xác những mảng nào cần thiết để kích hoạt hệ thống tập "
+"tin gốc, và bạn muốn hoãn việc khởi chạy các mảng khác tới một điểm sau "
+"trong dãy khởi động, hãy nhập vào đây các mảng cần khởi chạy. Hoặc nhập « "
+"all » (tất cả) để khởi chạy đơn giản tất cả các mảng sẵn sàng. "
+
+#. Type: text
+#. Description
+#: ../mdadm.templates:3001
+msgid ""
+"If you do not need or want to start any arrays for the root file system, "
+"leave the answer blank (or enter 'none'). This may be the case if you are "
+"using kernel autostart or do not need any arrays to boot."
+msgstr ""
+"Nếu bạn không cần hoặc muốn khởi chạy mảng nào cho hệ thống tập tin gốc, hãy "
+"bỏ trống câu trả lời này (hoặc nhập « none » [không có]). Trường hợp này có "
+"thể xảy ra nếu bạn sử dụng khả năng tự động khởi động hạt nhân (kernel "
+"autostart), hoặc không cần mảng nào để khởi động máy tính."
+
+#. Type: text
+#. Description
+#: ../mdadm.templates:4001
+msgid "An error occurred: device node does not exist"
+msgstr "Gặp lỗi: nút thiết bị không tồn tại"
+
+#. Type: text
+#. Description
+#: ../mdadm.templates:5001
+msgid "An error occurred: not a block device"
+msgstr "Gặp lỗi: không phải là một thiết bị khối"
+
+#. Type: text
+#. Description
+#: ../mdadm.templates:6001
+msgid "An error occurred: not an MD array"
+msgstr "Gặp lỗi: không phải là một mảng MD"
+
+#. Type: text
+#. Description
+#: ../mdadm.templates:7001
+msgid "An error occurred: array not listed in mdadm.conf file"
+msgstr "Gặp lỗi: mảng không được liệt kê trong tập tin cấu hình « mdadm.conf »"
+
+#. Type: boolean
+#. Description
+#: ../mdadm.templates:8001
+msgid "Start arrays not listed in mdadm.conf?"
+msgstr ""
+"Khởi chạy các mảng không được liệt kê trong tập tin cấu hình « mdadm.conf » "
+"không?"
+
+#. Type: boolean
+#. Description
+#: ../mdadm.templates:8001
+msgid ""
+"The specified array (${array}) is not listed in the configuration file "
+"(${config}). Therefore, it cannot be started during boot, unless you correct "
+"the configuration file and recreate the initial ramdisk."
+msgstr ""
+"Mảng bạn đã xác định (${array}) không được liệt kê trong tập tin cấu hình "
+"${config}. Vì vậy nó không thể được khởi chạy trong khi khởi động, nếu bạn "
+"không sửa tập tin cấu hình và tạo lại đĩa RAM đầu tiên."
+
+#. Type: boolean
+#. Description
+#: ../mdadm.templates:8001
+msgid ""
+"This warning is only relevant if you need arrays to be started from the "
+"initial ramdisk to be able to boot. If you use kernel autostarting, or do "
+"not need any arrays to be started as early as the initial ramdisk is loaded, "
+"you can simply continue. Alternatively, choose not to continue and enter "
+"'none' when prompted which arrays to start from the initial ramdisk."
+msgstr ""
+"Cảnh báo này chỉ là thích hợp nếu bạn cần thiết mảng được khởi chạy từ đĩa "
+"RAM đầu tiên, để có thể khởi động được. Nếu bạn sử dụng khả năng tự động "
+"khởi chạy hạt nhân (kernel autostart), hoặc không cần mảng nào được khởi "
+"chạy một khi nạp đĩa RAM đầu tiên, bạn đơn giản có thể tiếp tục lại. Hoặc "
+"chọn không tiếp tục, và nhập « none » (không có) khi được nhắc nhập những "
+"mảng nào cần khởi chạy từ đĩa RAM đầu tiên."
+
+#. Type: boolean
+#. Description
+#: ../mdadm.templates:9001
+msgid "Do you want to start MD arrays automatically?"
+msgstr "Bạn có muốn tự động khởi chạy các mảng MD không?"
+
+#. Type: boolean
+#. Description
+#: ../mdadm.templates:9001
+msgid ""
+"Once the base system has booted, mdadm can start all MD arrays (RAIDs) "
+"specified in /etc/mdadm/mdadm.conf which have not yet been started. This is "
+"recommended unless multiple device (MD) support is compiled into the kernel "
+"and all partitions are marked as belonging to MD arrays, with type 0xfd (as "
+"those and only those will be started automatically by the kernel)."
+msgstr ""
+"Một khi hệ thống cơ bản được khởi động thì mdadm có khả năng khởi chạy tất "
+"cả các mảng MD (RAID) được xác định trong tập tin cấu hinh « /etc/mdadm/"
+"mdadm.conf » mà chưa được khởi chạy. Thủ tục này khuyến khích nếu hỗ trợ đa "
+"thiết bị (MD) không được biên dịch vào hát nhân và tất cả các phân vùng được "
+"đánh dấu là thuộc về mảng MD, với kiểu 0xfd (vì chúng, và chỉ chúng sẽ được "
+"tự động khởi chạy bởi hạt nhân).r"
+
+#. Type: boolean
+#. Description
+#: ../mdadm.templates:10001
+msgid "Should mdadm run monthly redundancy checks of the MD arrays?"
+msgstr ""
+"mdadm có nên chạy việc kiểm tra thừa hàng tháng trên những mảng MD không?"
+
+#. Type: boolean
+#. Description
+#: ../mdadm.templates:10001
+msgid ""
+"If the kernel supports it (versions greater than 2.6.14), mdadm can "
+"periodically check the redundancy of MD arrays (RAIDs). This may be a "
+"resource-intensive process, depending on the local setup, but it could help "
+"prevent rare cases of data loss. Note that this is a read-only check unless "
+"errors are found; if errors are found, mdadm will try to correct them, which "
+"may result in write access to the media."
+msgstr ""
+"Nếu hạt nhân có phải hỗ trợ (các phiên bản sau 2.6.14) thì mdadm có thể kiểm "
+"tra theo chu kỳ tình thừa của các mảng MD (RAID). Tiến trình này có thể "
+"chiếm nhiều tài nguyên hệ thống, phụ thuộc vào thiết lập cục bộ, nhưng nó có "
+"thể giúp ngăn cản trường hợp mất dữ liệu (ít có). Ghi chú rằng việc kiểm tra "
+"này là chỉ đọc: gặp lỗi thì mdadm sẽ thử sửa chữa, mà có thể gây ra truy cập "
+"ghi vào vật chứa."
+
+#. Type: boolean
+#. Description
+#: ../mdadm.templates:10001
+msgid ""
+"The default, if turned on, is to check on the first Sunday of every month at "
+"01:06."
+msgstr ""
+"Giá trị mặc định, nếu được bật, là chạy những việc kiểm tra vào ngày hôm Chủ "
+"Nhật thứ nhất của mỗi tháng, vào lúc 01:06 giờ (giờ ti)."
+
+#. Type: boolean
+#. Description
+#: ../mdadm.templates:11001
+msgid "Do you want to start the MD monitoring daemon?"
+msgstr "Bạn có muốn khởi chạy trình nền theo dõi MD không?"
+
+#. Type: boolean
+#. Description
+#: ../mdadm.templates:11001
+msgid ""
+"The MD (RAID) monitor daemon sends email notifications in response to "
+"important MD events (such as a disk failure)."
+msgstr ""
+"Trình nền theo dõi MD (RAID) gửi thư thông báo hưởng ứng dữ kiện MD quan "
+"trọng (v.d. đĩa bị hỏng)."
+
+#. Type: boolean
+#. Description
+#: ../mdadm.templates:11001
+msgid "Enabling this option is recommended."
+msgstr "Khuyên bạn hiệu lực tùy chọn này."
+
+#. Type: string
+#. Description
+#: ../mdadm.templates:12001
+msgid "Recipient for email notifications:"
+msgstr "Người nhận thư thông báo :"
+
+#. Type: string
+#. Description
+#: ../mdadm.templates:12001
+msgid ""
+"Please enter the email address of the user who should get the email "
+"notifications for important MD events."
+msgstr ""
+"Hãy nhập địa chỉ thư của người dùng nên nhận thư thông báo về dữ kiện MD "
+"quan trọng."
+
+#~ msgid ""
+#~ "Please refer to /usr/share/doc/mdadm/README.upgrading-2.5.3.gz if you "
+#~ "intend to continue."
+#~ msgstr ""
+#~ "Hãy tham chiếu đến tài liệu Đọc Đi « /usr/share/doc/mdadm/README."
+#~ "upgrading-2.5.3.gz » nếu bạn định tiếp tục."
diff --git a/debian/presubj b/debian/presubj
new file mode 100644
index 00000000..103208df
--- /dev/null
+++ b/debian/presubj
@@ -0,0 +1,32 @@
+Reporting bugs against mdadm
+============================
+Before reporting bugs against mdadm, please read the README documents, as well
+as the FAQ in /usr/share/doc/mdadm . Most issues that are reported against the
+mdadm package are adequately answered therein.
+
+In particular, please do not file bugs about mdadm assembling arrays too
+early, e.g. when the driver is not yet ready and device nodes do not exist.
+Check FAQ item 27 about use of the rootdelay parameter instead.
+
+Also, please check out http://bugs.debian.org/mdadm and make sure that the
+issue you are facing has not already been reported.
+
+If you are not sure that the answer you are seeking is in those files, or you
+are not sure that you are facing a genuine bug, please approach
+debian-user@lists.debian.org or linux-raid@vger.kernel.org with your
+question(s).
+
+Gathering information relevant to mdadm as root
+===============================================
+If you are not reporting bugs as root (which you should not), you will be
+prompted to give permission to run a script to collect relevant information
+from your system as the root user. Only the root user has access to some
+information that might be relevant to the bug report you are about to file.
+
+** Please give permission to run the script as root when asked momentarily.
+
+If you would rather obtain the same information manually, you can run
+ /usr/share/bug/mdadm/script 3>&1
+as root and include or attach the output.
+
+ -- martin f. krafft <madduck@debian.org> Mon, 20 Jul 2009 15:02:48 +0200
diff --git a/debian/rules b/debian/rules
new file mode 100755
index 00000000..769ea1b4
--- /dev/null
+++ b/debian/rules
@@ -0,0 +1,117 @@
+#!/usr/bin/make -f
+# Copyright © 2001-2005 Mario Jou/3en <joussen@debian.org>
+# Copyright © 2005-2008 Martin F. Krafft <madduck@debian.org>
+# Distributable under the terms of the GNU GPL version 2.
+#
+
+#export DH_VERBOSE=1
+
+CXFLAGS = -ggdb
+CXFLAGS_UDEB := $(CXFLAGS) -fomit-frame-pointer
+ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS)))
+ CXFLAGS += -O0
+ CXFLAGS_UDEB += -O0
+else
+ CXFLAGS += -O2
+ CXFLAGS_UDEB += -Os
+endif
+
+.PHONY: configure
+configure:
+
+debian/mdadm-startall.8: debian/mdadm-startall.sgml
+ docbook-to-man $< > $@.tmp
+ mv $@.tmp $@
+
+build: configure build-stamp
+build-stamp: debian/mdadm-startall.8
+ dh_testdir
+ $(MAKE) -f debian/rules mdadm.udeb DEBIAN=yes
+ $(MAKE) clean
+ $(MAKE) -f debian/rules mdadm DEBIAN=yes
+ touch $@
+
+mdadm.udeb: FLAGS = CXFLAGS="$(CXFLAGS_UDEB)" CONFFILE=/tmp/mdadm.conf
+mdadm.udeb: configure
+ dh_testdir
+ $(MAKE) $(FLAGS) all
+ mv mdadm mdadm.udeb
+ mv mdmon mdmon.udeb
+.PHONY: mdadm.udeb mdmon.udeb
+
+mdadm: FLAGS = CXFLAGS="$(CXFLAGS)" CONFFILE=/etc/mdadm/mdadm.conf CONFFILE2=/etc/mdadm.conf
+mdadm: configure
+ dh_testdir
+ $(MAKE) $(FLAGS) all
+.PHONY: mdadm
+
+INTERPOLATED_FILES = debian/bugscript debian/mkconf
+
+clean:
+ dh_testdir
+ rm -f $(INTERPOLATED_FILES)
+ rm -f build-stamp
+ [ ! -f Makefile ] || $(MAKE) clean
+ rm -f mdadm.udeb mdmon.udeb mdadm debian/mdadm-startall.8
+ dh_clean
+ debconf-updatepo
+
+debian/%: VERSION=$(shell dpkg-parsechangelog | sed -ne 's,^Version: ,,p')
+debian/%: debian/%.in
+ sed -re 's,%VERSION%,$(VERSION),g' < $< > $@
+
+install: DESTDIR=$(CURDIR)/debian/mdadm
+install: DESTDIR_UDEB=$(DESTDIR)-udeb
+install: build $(INTERPOLATED_FILES)
+ dh_testdir
+ dh_clean -k
+ dh_installdirs
+
+ $(MAKE) install DESTDIR=$(DESTDIR)
+
+ install -m0755 debian/initramfs/hook \
+ $(DESTDIR)/usr/share/initramfs-tools/hooks/mdadm
+ install -m0755 debian/initramfs/script.local-top \
+ $(DESTDIR)/usr/share/initramfs-tools/scripts/local-top/mdadm
+
+ install -m0755 debian/mkconf $(DESTDIR)/usr/share/mdadm
+ install -m0755 debian/checkarray $(DESTDIR)/usr/share/mdadm
+ install -m0755 debian/bugscript $(DESTDIR)/usr/share/bug/mdadm/script
+ install -m0644 debian/presubj $(DESTDIR)/usr/share/bug/mdadm
+
+ install -m0755 debian/mdadm-startall $(DESTDIR)/sbin
+
+ install -m0755 mdadm.udeb $(DESTDIR_UDEB)/sbin/mdadm
+ install -m0755 mdmon.udeb $(DESTDIR_UDEB)/sbin/mdmon
+ install -m0644 udev-md-raid-arrays.rules $(DESTDIR_UDEB)/lib/udev/rules.d/63-md-raid-arrays.rules
+
+binary-indep: build install
+
+binary-arch: build install
+ dh_testdir
+ dh_testroot
+ dh_lintian
+ dh_installdebconf
+ dh_installdocs
+ dh_installexamples debian/mdadd.sh
+ dh_installinit --init-script=mdadm-raid --no-restart-on-upgrade -- start 25 S . start 60 0 6 .
+ dh_installinit --init-script=mdadm-waitidle --no-start -- stop 98 0 6 .
+ dh_installinit -- defaults 25
+ dh_installman
+ dh_installcron
+ dh_installchangelogs ChangeLog
+ dh_installlogcheck
+ dh_link
+ dh_strip
+ dh_compress -Xmdadd.sh
+ dh_fixperms
+ dh_installdeb
+ dh_shlibdeps
+ dh_gencontrol
+ dh_md5sums
+ dh_builddeb
+
+binary: binary-indep binary-arch
+build-indep:
+build-arch: build
+.PHONY: build build-indep build-arch clean binary-indep binary-arch binary install configure
diff --git a/debian/source/format b/debian/source/format
new file mode 100644
index 00000000..163aaf8d
--- /dev/null
+++ b/debian/source/format
@@ -0,0 +1 @@
+3.0 (quilt)
diff --git a/debian/watch b/debian/watch
new file mode 100644
index 00000000..1b1172a0
--- /dev/null
+++ b/debian/watch
@@ -0,0 +1,2 @@
+version=3
+http://www.kernel.org/pub/linux/utils/raid/mdadm/mdadm-([.[:digit:]]+).tar.gz