Attached a series of relatively simple patches that 1) make it possible to use a SD card to load drivers or firmware from 2) allow to install Debian on a SD card The patches have been tested for both purposes. As the patches are fairly simple and we'll have to do another kernel upload anyway, I wonder if this could still be added for Lenny. Otavio? The only missing patch in that case is one that adds the mmc-modules udeb to relevant installer images. Cheers, FJP Description of the patches -------------------------- Two of the patches are bugfixes and should be included in Lenny anyway. Note that some of the patches don't have a changelog entry yet. 01-kernel-udebs.patch New kernel udeb mmc-modules. Adds support for devices supported by sdhci and tifm_sd on amd64 and i386. Other arches can be added trivially, but I've not done so as I don't know which are relevant and cannot test them. 02-partman-base.patch Adds human readable descriptions for MMC/SD cards. To avoid breaking translations for Lenny I'd suggest adding the two new strings as untranslatable and only enabling translations post-Lenny. I think this would be acceptable as the strings are probably fairly understandable in any language and very few people will see them anyway. 03-grub-installer.patch Trivial changes for root/boot device parsing. 04-mountmedia-bugfix.patch Fixes inconsistency between check-missing-firmware (hw-detect) and mountmedia I found while testing. Should be included in Lenny anyway. 05-list-changes-bugfix.patch Without this fix 'list-devices partition' will incorrectly return the following for cciss, ida and mmcblk devices: /dev/bdi /dev/device /dev/holders /dev/mmcblk0p1 /dev/power /dev/queue /dev/slaves /dev/subsystem Reason is that for these devices matching is by name only (instead of using udevadm). Should be included in Lenny anyway. 06-list-changes.patch Makes list-changes also list MMC/SD card disks and partitions.
commit 581fef80c2c06f7986dbb6b18fd6282f37684b17 Author: Frans Pop <fjp@debian.org> Date: Sun Sep 28 15:29:47 2008 +0200 Add mmc-modules udeb to support MMC and SD cards For now support is only added for the sdhci and tifm_sd drivers on i386/amd64. The wbsd driver is excluded because it would mean adding a dependency on PCMCIA. diff --git a/packages/kernel/kernel-wedge/debian/changelog b/packages/kernel/kernel-wedge/debian/changelog index 54d05d7..0a4ffdf 100644 --- a/packages/kernel/kernel-wedge/debian/changelog +++ b/packages/kernel/kernel-wedge/debian/changelog @@ -1,3 +1,9 @@ +kernel-wedge (2.52) UNRELEASED; urgency=low + + * Add mmc-modules udeb to support MMC and SD cards. + + -- Frans Pop <fjp@debian.org> Sun, 28 Sep 2008 15:18:27 +0200 + kernel-wedge (2.51) unstable; urgency=low * Move pata-sis to sata-modules since sata-sis depends on pata-sis and diff --git a/packages/kernel/kernel-wedge/modules/mmc-modules b/packages/kernel/kernel-wedge/modules/mmc-modules new file mode 100644 index 0000000..940afe9 --- /dev/null +++ b/packages/kernel/kernel-wedge/modules/mmc-modules @@ -0,0 +1,4 @@ +mmc_block +sdhci +ricoh_mmc +tifm_sd diff --git a/packages/kernel/kernel-wedge/package-list b/packages/kernel/kernel-wedge/package-list index 3f79656..304e923 100644 --- a/packages/kernel/kernel-wedge/package-list +++ b/packages/kernel/kernel-wedge/package-list @@ -390,6 +390,13 @@ Description: ATA disk modules This package contains core ATA disk modules used by both PATA and SATA disk drivers. +Package: mmc-modules +Depends: kernel-image +Priority: extra +Description: MMC/SD card modules + This package contains modules needed to support MMC (multimedia) and + SD cards. + Package: nbd-modules Depends: kernel-image Priority: extra diff --git a/packages/kernel/linux-kernel-di-amd64-2.6/modules/amd64/mmc-modules b/packages/kernel/linux-kernel-di-amd64-2.6/modules/amd64/mmc-modules new file mode 100644 index 0000000..dadfd53 --- /dev/null +++ b/packages/kernel/linux-kernel-di-amd64-2.6/modules/amd64/mmc-modules @@ -0,0 +1 @@ +#include <mmc-modules> diff --git a/packages/kernel/linux-kernel-di-i386-2.6/modules/i386/mmc-modules b/packages/kernel/linux-kernel-di-i386-2.6/modules/i386/mmc-modules new file mode 100644 index 0000000..dadfd53 --- /dev/null +++ b/packages/kernel/linux-kernel-di-i386-2.6/modules/i386/mmc-modules @@ -0,0 +1 @@ +#include <mmc-modules>
commit bba30931a890472b5333a1a1a3ac3b4232948468 Author: Frans Pop <fjp@debian.org> Date: Sun Sep 28 15:01:42 2008 +0200 Add support for MMC/SD card devices diff --git a/packages/arch/i386/grub-installer/grub-installer b/packages/arch/i386/grub-installer/grub-installer index 501789a..81d2d3e 100755 --- a/packages/arch/i386/grub-installer/grub-installer +++ b/packages/arch/i386/grub-installer/grub-installer @@ -100,12 +100,14 @@ convert () { -e 's%\(fd[0-9]*\)$%\1%' \ -e 's%/part[0-9]*$%/disc%' \ -e 's%\(c[0-7]d[0-9]*\).*$%\1%' \ + -e 's%\(mmcblk[0-9]d[0-9]*\).*$%\1%' \ -e 's%\(/mapper/mpath[0-9]\+\)-part[0-9]\+$%\1%') tmp_part=$(echo "$1" | sed -e 's%.*/\(s\|h\|v\|xv\)d[a-z]\([0-9]*\)$%\2%' \ -e 's%.*/fd[0-9]*$%%' \ -e 's%.*/floppy/[0-9]*$%%' \ -e 's%.*/\(disc\|part\([0-9]*\)\)$%\2%' \ -e 's%.*c[0-7]d[0-9]*p*%%' \ + -e 's%.*mmcblk[0-9]d[0-9]*p%%' \ -e 's%.*/mapper/mpath[0-9]\+-part\([0-9]\+\)%\1%') ;; gnu*) @@ -249,7 +251,7 @@ esac rootfs_nodevfs=$(mapdevfs $rootfs) bootfs_nodevfs=$(mapdevfs $bootfs) prefix=$(echo "$bootfs" | \ - sed 's:\(/dev/\(cciss\|ida\)/c[0-9]d[0-9]\|/dev/[a-z]\+\).*:\1:') + sed 's:\(/dev/\(cciss\|ida\)/c[0-9]d[0-9]\|/dev/mmcblk[0-9]\|/dev/[a-z]\+\).*:\1:') case $prefix in /dev/md) @@ -258,7 +260,7 @@ case $prefix in /dev/mapper) disc_offered_devfs="$bootfs" ;; - /dev/[hsv]d[a-z]|/dev/xvd[a-z]|/dev/cciss/c[0-9]d[0-9]|/dev/ida/c[0-9]d[0-9]) + /dev/[hsv]d[a-z]|/dev/xvd[a-z]|/dev/cciss/c[0-9]d[0-9]|/dev/ida/c[0-9]d[0-9]|/dev/mmcblk[0-9]) disc_offered_devfs="$prefix" ;; *)
commit 6d337d2c9c8940b6bd570ca40c4416e232cd2f9f Author: Frans Pop <fjp@debian.org> Date: Sun Sep 28 14:57:09 2008 +0200 Add human readable descriptions for MMC/SD cards diff --git a/packages/partman/partman-base/debian/partman-base.templates b/packages/partman/partman-base/debian/partman-base.templates index a7601a0..701ec8d 100644 --- a/packages/partman/partman-base/debian/partman-base.templates +++ b/packages/partman/partman-base/debian/partman-base.templates @@ -277,6 +277,18 @@ Type: text # :sl1: _Description: SCSI%s (%s,%s,%s), partition #%s (%s) +Template: partman/text/mmc_disk +Type: text +# For example MMC/SD card #1 (mmcblk0) +# :sl3: +_Description: MMC/SD card #%s (%s) + +Template: partman/text/mmc_partition +Type: text +# For example MMC/SD card #1, partition #2 (mmcblk0p2) +# :sl3: +_Description: MMC/SD card #%s, partition #%s (%s) + Template: partman/text/raid_device Type: text # :sl3: diff --git a/packages/partman/partman-base/lib/base.sh b/packages/partman/partman-base/lib/base.sh index 0b0bff3..5a52a9e 100644 --- a/packages/partman/partman-base/lib/base.sh +++ b/packages/partman/partman-base/lib/base.sh @@ -796,6 +796,19 @@ humandev () { printf "$RET" ".CCISS" "-" "$controller" "$lun" "$part" "$linux" fi ;; + /dev/mmcblk[0-9]) + drive=$(echo $1 | sed 's,^/dev/mmcblk\([0-9]\).*,\1,') + linux=${1#/dev/} + db_metaget partman/text/mmc_disk description + printf "$RET" "$(($drive + 1))" "$linux" + ;; + /dev/mmcblk[0-9]p[0-9]*) + drive=$(echo $1 | sed 's,^/dev/mmcblk\([0-9]\).*,\1,') + part=$(echo $1 | sed 's,^/dev/mmcblk[0-9]p\([0-9][0-9]*\).*,\1,') + linux=${1#/dev/} + db_metaget partman/text/mmc_partition description + printf "$RET" "$(($drive + 1))" "$part" "$linux" + ;; /dev/md*|/dev/md/*) device=`echo "$1" | sed -e "s/.*md\/\?\(.*\)/\1/"` type=`grep "^md${device}[ :]" /proc/mdstat | sed -e "s/^.* : active raid\([[:alnum:]]\{,2\}\).*/\1/"`
commit 3b8850412a0b300e908ae618b43d97e47405e0a4 Author: Frans Pop <fjp@debian.org> Date: Sun Sep 28 17:19:31 2008 +0200 MMC/SD card devices do not have a ID_TYPE variable, so match on name diff --git a/packages/debian-installer-utils/debian/changelog b/packages/debian-installer-utils/debian/changelog index 9600b23..f5f4e47 100644 --- a/packages/debian-installer-utils/debian/changelog +++ b/packages/debian-installer-utils/debian/changelog @@ -2,6 +2,7 @@ debian-installer-utils (1.65) UNRELEASED; urgency=low * When looking for partitions, only consider device subdirectories that end with a number to avoid matching directories such as power, slaves, etc. + * MMC/SD card devices do not have a ID_TYPE variable, so match on name. -- Frans Pop <fjp@debian.org> Sun, 28 Sep 2008 17:11:40 +0200 diff --git a/packages/debian-installer-utils/list-devices b/packages/debian-installer-utils/list-devices index 46d78db..b748be9 100755 --- a/packages/debian-installer-utils/list-devices +++ b/packages/debian-installer-utils/list-devices @@ -72,7 +72,7 @@ for x in $syspaths; do fi if ! $match && [ "$TYPE" = disk ]; then case $devpath in - /block/cciss\!*|/block/ida\!*|/block/rd\!*) + /block/cciss\!*|/block/ida\!*|/block/rd\!*|/block/mmcblk*) match=: ;; esac
commit add57f3af3999f621e86b0310fc5484eb0e7927b Author: Frans Pop <fjp@debian.org> Date: Sun Sep 28 17:05:30 2008 +0200 Also look in firmware dir to match check-missing-firmware check-missing-firmware calls 'mountmedia driver' and then looks in the root directory and in a directory named firmware. This means that checkcontents() also needs to check for packages in /firmware/. diff --git a/packages/mountmedia/debian/changelog b/packages/mountmedia/debian/changelog index 5e67cb6..50a8f70 100644 --- a/packages/mountmedia/debian/changelog +++ b/packages/mountmedia/debian/changelog @@ -1,3 +1,11 @@ +mountmedia (0.18) UNRELEASED; urgency=low + + * check-missing-firmware calls 'mountmedia driver' and then looks in the + root directory and in a directory named firmware. This means that + checkcontents() also needs to check for packages in /firmware/. + + -- Frans Pop <fjp@debian.org> Sun, 28 Sep 2008 16:44:12 +0200 + mountmedia (0.17) unstable; urgency=low * The script has not used the right name for the debconf template diff --git a/packages/mountmedia/mountmedia b/packages/mountmedia/mountmedia index 489a404..09a16a2 100755 --- a/packages/mountmedia/mountmedia +++ b/packages/mountmedia/mountmedia @@ -44,7 +44,8 @@ checkcontents() { # Make sure this is driver media by checking the files on # it. Check for regular debs, udebs, and to be on the safe # side, check for *.ude files (msdos file names...) - for filename in $dir/*.deb $dir/*.udeb $dir/*.ude; do + for filename in $dir/*.deb $dir/*.udeb $dir/*.ude \ + $dir/firmware/*.deb $dir/firmware/*.udeb $dir/firmware/*.ude; do if [ -f "$filename" ]; then return 0 # success fi
commit f5b2b13389b40657c944c70d7868b52298d9f20e Author: Frans Pop <fjp@debian.org> Date: Sun Sep 28 17:16:41 2008 +0200 Avoid reporting directories that are not partitions as partitions When looking for partitions, only consider device subdirectories that end with a number to avoid matching directories such as power, slaves, etc. diff --git a/packages/debian-installer-utils/debian/changelog b/packages/debian-installer-utils/debian/changelog index c583690..9600b23 100644 --- a/packages/debian-installer-utils/debian/changelog +++ b/packages/debian-installer-utils/debian/changelog @@ -1,3 +1,10 @@ +debian-installer-utils (1.65) UNRELEASED; urgency=low + + * When looking for partitions, only consider device subdirectories that end + with a number to avoid matching directories such as power, slaves, etc. + + -- Frans Pop <fjp@debian.org> Sun, 28 Sep 2008 17:11:40 +0200 + debian-installer-utils (1.64) unstable; urgency=low [ Joey Hess ] diff --git a/packages/debian-installer-utils/list-devices b/packages/debian-installer-utils/list-devices index b86dea9..46d78db 100755 --- a/packages/debian-installer-utils/list-devices +++ b/packages/debian-installer-utils/list-devices @@ -32,7 +32,7 @@ syspaths= scan_partition=false case $TYPE in partition) - for x in /sys/block/*/*; do + for x in /sys/block/*/*[0-9]; do [ -d "$x" ] || continue syspaths="${syspaths:+$syspaths }$x" done
Attachment:
signature.asc
Description: This is a digitally signed message part.