* martin f krafft <madd...@debian.org> [2010-05-26 10:31]: > also sprach Neil Brown <ne...@suse.de> [2010.05.26.1016 +0200]: > > The most likely explanation for this is that /var/run/mdadm/map existed and > > contained and entry for 'md0' declaring that it could be found at /dev/md/0. > > > > Normally mdadm will write such a name there when auto-assembling an array, > > then udev will notice that the array has appeared, will use mdadm to find > > the > > path name in /var/run/mdadm/map and will create the node in /dev. > > > > So it would seem that udev is not running, but /dev/.udev exists. > > If udev was running, it would have created /dev/md/0. > > If /dev/.udev didn't exist, then mdadm would have created it when assembling > > the array. > > > > If this is correct, udev is not running but /dev/.udev exists, then you can > > force mdadm to still create the device with > > export MDADM_NO_UDEV=1 > > Martin, could you please investigate this further? I don't have much > experience with d-i, nor really the time to attain that right now.
Thanks for your explanation, Neal. So here's a description of what's going on: We boot into Debian installer. The installer creates a RAID1 device with: mdadm --create /dev/md0 --auto=yes [...] udev is running. /dev/md0 exists. /dev/md/0 does not exist. There's a file /var/run/map (not /var/run/mdadm/map) which contains this: md0 1.2 dcfdb5af:3b385a1e:def86b24:09a2527f /dev/md0 When I run: mdadm --examine --scan --config=partitions I get: ARRAY /dev/md/0 metadata=1.2 UUID=afb5fddc:1e5a383b:246bf8de:7f52a209 name=debian:0 i.e. the /dev/md/0 form. (Also note that that the UUID in the map file is different to that reported by --examine --scan; not sure why.) After creating the RAID0 and formating it, Debian installer will then install Debian to disk (in a chroot). At some point, mdadm is installed in the chroot. /dev from the real system is bind mounted in the chroot. Debian's mdadm sees that there's no mdadm config file and tries to generate one. It runs: mdadm --examine --scan --config=partitions and writes this to /etc/mdadm/mdadm.conf. The output is: ARRAY /dev/md/0 metadata=1.2 UUID=afb5fddc:1e5a383b:246bf8de:7f52a209 name=debian:0 There's no map file in /var/run at this point. /dev/md0 exists but /dev/md/0 does not. Debian then generates a ramdisk. It looks at /etc/mdadm/mdadm.conf and sees that the RAID device is /dev/md/0 and then does: mdadm --detail /dev/md/0 to determine the RAID level. This fails because /dev/md/0 does not exist. As a consequence, the ramdisk won't contain the RAID modules and will fail to boot. So my questions (the first one primarily for Neil, the second one for madduck): - Why does mdadm --examine --scan output the /dev/md/X form rather than /dev/mdX when no config and map file exists. Is /dev/md/X prefered over /dev/mdX? If so, maybe Debian installer should use mdadm --create /dev/md/X instead of mdadm --create /dev/mdX ? - Why is /dev/md/X not created? Well, I guess it's not generated because we use /dev/mdX and not even the map file mentions /dev/md/X but given that "mdadm --examine --scan" prefers /dev/md/X maybe we should add a udev rule to the installer that always ensures that /dev/md/X is created? -- Martin Michlmayr http://www.cyrius.com/ -- To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org