[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#747871: mkinitramfs: breaks with LUKS root on MMC ("mkinitramfs: for root /dev/dm-0 missing mmcblk /sys/block/ entry") and MODULES=dep



Package: initramfs-tools
Version: 0.109.1
Severity: normal
File: /usr/sbin/mkinitramfs

Dear Maintainer,

on a system with the rootfs living inside LUKS on an SD card,
mkinitramfs (and thus update-initramfs) fails with:

=== Begin ===
root@mimosa:/boot# update-initramfs -k 3.0.19-mimosa-8-01603-g1b85fba -c
update-initramfs: Generating /boot/initrd.img-3.0.19-mimosa-8-01603-g1b85fba
mkinitramfs: for root /dev/dm-0 missing mmcblk /sys/block/ entry
mkinitramfs: workaround is MODULES=most
mkinitramfs: Error please report the bug
update-initramfs: failed for /boot/initrd.img-3.0.19-mimosa-8-01603-g1b85fba with 1.
=== End ===


Older versions displayed a warning (which I ignored since everything
needed for boot is built-in to the custom kernel anyway), but didn't
abort initramfs generation.

It looks like hook-functions is a bit overzealous in stripping down
the partition name to a device name, resulting in "mmcblk" rather than
"mmcblk0". There's existing special casing in dep_add_modules for
device mapper (LVM/LUKS) on top of cciss or ida and for root on cciss,
ida, mmc and a few more in place already, but not for device mapper on
top of mmc. Maybe a recursive function would be a better fit for
determining the modules needed for the rootfs?

For reference, this is a trace of mkinitramfs:

=== Begin trace ===
+ CONFDIR=/etc/initramfs-tools
+ verbose=n
+ test -e /bin/busybox
+ BUSYBOXDIR=/bin
+ test -e /usr/lib/initramfs-tools/bin/busybox
+ export BUSYBOXDIR
++ getopt -o c:d:ko:r:v -n mkinitramfs -- -o /boot/initrd.img-3.0.19-mimosa-8-01603-g1b85fba.new 3.0.19-mimosa-8-01603-g1b85fba
+ OPTIONS=' -o '\''/boot/initrd.img-3.0.19-mimosa-8-01603-g1b85fba.new'\'' -- '\''3.0.19-mimosa-8-01603-g1b85fba'\'''
+ '[' 0 '!=' 0 ']'
+ eval set -- ' -o '\''/boot/initrd.img-3.0.19-mimosa-8-01603-g1b85fba.new'\'' -- '\''3.0.19-mimosa-8-01603-g1b85fba'\'''
++ set -- -o /boot/initrd.img-3.0.19-mimosa-8-01603-g1b85fba.new -- 3.0.19-mimosa-8-01603-g1b85fba
+ true
+ case "$1" in
+ outfile=/boot/initrd.img-3.0.19-mimosa-8-01603-g1b85fba.new
+ shift 2
+ true
+ case "$1" in
+ shift
+ break
+ . /usr/share/initramfs-tools/scripts/functions
+ . /usr/share/initramfs-tools/hook-functions
+ . /etc/initramfs-tools/initramfs.conf
++ MODULES=dep
++ BUSYBOX=y
++ KEYMAP=n
++ COMPRESS=gzip
++ DEVICE=
++ NFSROOT=auto
+ EXTRA_CONF=
+ for i in '/usr/share/initramfs-tools/conf.d/*' '${CONFDIR}/conf.d/*'
+ '[' -e '/usr/share/initramfs-tools/conf.d/*' ']'
+ for i in '/usr/share/initramfs-tools/conf.d/*' '${CONFDIR}/conf.d/*'
+ '[' -e '/etc/initramfs-tools/conf.d/*' ']'
+ for i in '/usr/share/initramfs-tools/conf-hooks.d/*'
+ '[' -d /usr/share/initramfs-tools/conf-hooks.d/cryptsetup ']'
+ '[' -e /usr/share/initramfs-tools/conf-hooks.d/cryptsetup ']'
+ . /usr/share/initramfs-tools/conf-hooks.d/cryptsetup
++ KEYMAP=y
++ BUSYBOX=y
++ FRAMEBUFFER=y
+ '[' -n '' ']'
+ '[' -z /boot/initrd.img-3.0.19-mimosa-8-01603-g1b85fba.new ']'
+ touch /boot/initrd.img-3.0.19-mimosa-8-01603-g1b85fba.new
++ readlink -f /boot/initrd.img-3.0.19-mimosa-8-01603-g1b85fba.new
+ outfile=/boot/initrd.img-3.0.19-mimosa-8-01603-g1b85fba.new
+ '[' 1 -ne 1 ']'
+ version=3.0.19-mimosa-8-01603-g1b85fba
+ case "${version}" in
+ case "${version}" in
+ '[' -z '' ']'
+ compress=gzip
+ command -v gzip
+ dpkg --compare-versions 3.0.19-mimosa-8-01603-g1b85fba lt 2.6.38
+ '[' gzip = lzop ']'
+ '[' gzip = xz ']'
+ '[' -d /boot/initrd.img-3.0.19-mimosa-8-01603-g1b85fba.new ']'
+ MODULESDIR=/lib/modules/3.0.19-mimosa-8-01603-g1b85fba
+ '[' '!' -e /lib/modules/3.0.19-mimosa-8-01603-g1b85fba ']'
+ '[' '!' -e /lib/modules/3.0.19-mimosa-8-01603-g1b85fba/modules.dep ']'
+ '[' -n '' ']'
++ mktemp -d /var/tmp/mkinitramfs_XXXXXX
+ DESTDIR=/var/tmp/mkinitramfs_K8XasF
+ chmod 755 /var/tmp/mkinitramfs_K8XasF
+ NOEXEC=
++ tail -1
++ awk '{print $6}'
++ df -P /var/tmp/mkinitramfs_K8XasF
+ fs=/
+ '[' -n / ']'
+ grep -q 'on / .*noexec'
+ mount
++ mktemp /var/tmp/mkinitramfs-OL_XXXXXX
+ __TMPCPIOGZ=/var/tmp/mkinitramfs-OL_OuJNFs
++ dpkg --print-architecture
+ DPKG_ARCH=armel
+ export MODULESDIR
+ export version
+ export CONFDIR
+ export DESTDIR
+ export DPKG_ARCH
+ export verbose
+ export KEYMAP
+ export MODULES
+ export BUSYBOX
+ export __TMPCPIOGZ
+ for d in bin conf/conf.d etc lib/modules run sbin scripts '${MODULESDIR}'
+ mkdir -p /var/tmp/mkinitramfs_K8XasF/bin
+ for d in bin conf/conf.d etc lib/modules run sbin scripts '${MODULESDIR}'
+ mkdir -p /var/tmp/mkinitramfs_K8XasF/conf/conf.d
+ for d in bin conf/conf.d etc lib/modules run sbin scripts '${MODULESDIR}'
+ mkdir -p /var/tmp/mkinitramfs_K8XasF/etc
+ for d in bin conf/conf.d etc lib/modules run sbin scripts '${MODULESDIR}'
+ mkdir -p /var/tmp/mkinitramfs_K8XasF/lib/modules
+ for d in bin conf/conf.d etc lib/modules run sbin scripts '${MODULESDIR}'
+ mkdir -p /var/tmp/mkinitramfs_K8XasF/run
+ for d in bin conf/conf.d etc lib/modules run sbin scripts '${MODULESDIR}'
+ mkdir -p /var/tmp/mkinitramfs_K8XasF/sbin
+ for d in bin conf/conf.d etc lib/modules run sbin scripts '${MODULESDIR}'
+ mkdir -p /var/tmp/mkinitramfs_K8XasF/scripts
+ for d in bin conf/conf.d etc lib/modules run sbin scripts '${MODULESDIR}'
+ mkdir -p /var/tmp/mkinitramfs_K8XasF//lib/modules/3.0.19-mimosa-8-01603-g1b85fba
+ for x in modules.builtin modules.order
+ '[' -f /lib/modules/3.0.19-mimosa-8-01603-g1b85fba/modules.builtin ']'
+ cp -p /lib/modules/3.0.19-mimosa-8-01603-g1b85fba/modules.builtin /var/tmp/mkinitramfs_K8XasF/lib/modules/3.0.19-mimosa-8-01603-g1b85fba/modules.builtin
+ for x in modules.builtin modules.order
+ '[' -f /lib/modules/3.0.19-mimosa-8-01603-g1b85fba/modules.order ']'
+ cp -p /lib/modules/3.0.19-mimosa-8-01603-g1b85fba/modules.order /var/tmp/mkinitramfs_K8XasF/lib/modules/3.0.19-mimosa-8-01603-g1b85fba/modules.order
+ for x in '"${CONFDIR}/modules"' '/usr/share/initramfs-tools/modules.d/*'
+ '[' -f /etc/initramfs-tools/modules ']'
+ add_modules_from_file /etc/initramfs-tools/modules
+ '[' '!' -e /etc/initramfs-tools/modules ']'
+ read module args
+ grep '^[^#]' /etc/initramfs-tools/modules
+ for x in '"${CONFDIR}/modules"' '/usr/share/initramfs-tools/modules.d/*'
+ '[' -f '/usr/share/initramfs-tools/modules.d/*' ']'
+ case "${MODULES}" in
+ dep_add_modules
+ local block minor root FSTYPE root_dev_path
+ local modules=
+ '[' '!' -d /sys/devices/ ']'
++ read dev foo mp foo fs opts rest
++ mount
++ '[' /sys = / ']'
++ read dev foo mp foo fs opts rest
++ '[' /proc = / ']'
++ read dev foo mp foo fs opts rest
++ '[' /dev = / ']'
++ read dev foo mp foo fs opts rest
++ '[' /dev/pts = / ']'
++ read dev foo mp foo fs opts rest
++ '[' /run = / ']'
++ read dev foo mp foo fs opts rest
++ '[' / = / ']'
++ '[' ext4 '!=' rootfs ']'
++ printf 'root=/dev/disk/by-uuid/64db461f-0fe8-4ebe-b778-59e4f83a71e1\nFSTYPE=ext4'
++ break
+ eval 'root=/dev/disk/by-uuid/64db461f-0fe8-4ebe-b778-59e4f83a71e1
FSTYPE=ext4'
++ root=/dev/disk/by-uuid/64db461f-0fe8-4ebe-b778-59e4f83a71e1
++ FSTYPE=ext4
+ '[' -z /dev/disk/by-uuid/64db461f-0fe8-4ebe-b778-59e4f83a71e1 ']'
+ '[' -z /dev/disk/by-uuid/64db461f-0fe8-4ebe-b778-59e4f83a71e1 ']'
+ '[' ext4 = ubifs ']'
+ '[' /dev/disk/by-uuid/64db461f-0fe8-4ebe-b778-59e4f83a71e1 = /dev/root ']'
++ readlink -f /dev/disk/by-uuid/64db461f-0fe8-4ebe-b778-59e4f83a71e1
+ root=/dev/dm-0
++ /usr/lib/klibc/bin/fstype /dev/dm-0
+ eval 'FSTYPE=ext4
FSSIZE=78913732608'
++ FSTYPE=ext4
++ FSSIZE=78913732608
+ '[' ext4 = unknown ']'
+ modules=' ext4'
+ '[' /dev/dm-0 '!=' /dev/dm-0 ']'
+ '[' 0 '!=' /dev/dm-0 ']'
++ stat --format %T /dev/dm-0
+ minor=0
++ head -n 1
++ ls -1 /sys/block/dm-0/slaves
+ block=mmcblk0p6
+ '[' mmcblk0p6 '!=' mmcblk0p6 ']'
+ '[' mmcblk0p6 '!=' mmcblk0p6 ']'
+ '[' mmcblk0p6 '!=' mmcblk0p6 ']'
+ '[' mmcblk0p6 '!=' mmcblk0p6 ']'
+ block=mmcblk
+ '[' -z mmcblk ']'
+ '[' '!' -e /sys/block/mmcblk ']'
+ echo 'mkinitramfs: for root /dev/dm-0 missing mmcblk /sys/block/ entry'
mkinitramfs: for root /dev/dm-0 missing mmcblk /sys/block/ entry
+ echo 'mkinitramfs: workaround is MODULES=most'
mkinitramfs: workaround is MODULES=most
+ echo 'mkinitramfs: Error please report the bug'
mkinitramfs: Error please report the bug
+ exit 1
=== End trace ===


For this system, I've solved the problem by switching to
MODULES=list. As mentioned above, I don't need any module to be loaded
from within initramfs anyway.

-- Package-specific info:
-- initramfs sizes
-- /proc/cmdline
fbcon=font:SUN12x22 coherent_pool=76M ro root=UUID=64db461f-0fe8-4ebe-b778-59e4f83a71e1 rootwait rootfstype=ext4 ttyS2 console=ttyS2,115200 console=tty0 mmc_core.removable=0

-- /proc/filesystems
	ext3
	ext2
	ext4
	cramfs
	vfat
	msdos
	fuseblk

-- lsmod
Module                  Size  Used by
tun                    12949  2 
uinput                  6087  1 
rfcomm                 48378  2 
bnep                   11396  2 
bluetooth             166770  8 bnep,rfcomm
siv120d                 7819  0 
libertas_sdio          14588  0 
libertas               89023  1 libertas_sdio
ov7670                  7596  1 
mmp_camera             15015  0 
videobuf2_dma_sg        2869  1 mmp_camera
videobuf2_memops        1828  1 videobuf2_dma_sg
videobuf2_core         14599  1 mmp_camera

-- /etc/initramfs-tools/modules

-- /etc/initramfs-tools/initramfs.conf
MODULES=dep
BUSYBOX=y
KEYMAP=n
COMPRESS=gzip
DEVICE=
NFSROOT=auto

-- /etc/initramfs-tools/update-initramfs.conf
update_initramfs=yes
backup_initramfs=no

-- /etc/crypttab
# <target name>	<source device>						<key file>	<options>
dmcrypt-root	/dev/disk/by-id/memstick-SU128_0xd00455b0-part6		none		luks,discard
dmcrypt-swap	/dev/disk/by-id/memstick-SU128_0xd00455b0-part5		/dev/urandom	swap,cipher=aes-cbc-essiv:md5
#dmcrypt-swap	/dev/disk/by-id/memstick-SD32G_0x0fdce5a8-part2		/dev/urandom	swap,cipher=aes-cbc-essiv:md5

-- /proc/mdstat
Personalities : [linear] [raid0] [raid1] [raid10] [raid6] [raid5] [raid4] 
unused devices: <none>

-- /sys/block
dm-0
dm-1
mmcblk0
mmcblk1
mmcblk1boot0
mmcblk1boot1

-- mkinitramfs hooks
/etc/initramfs-tools/hooks/:

/usr/share/initramfs-tools/hooks:
busybox
cryptgnupg
cryptkeyctl
cryptopenct
cryptopensc
cryptpassdev
cryptroot
dmsetup
fuse
keymap
klibc
kmod
lvm2
ntfs_3g
thermal
udev


-- System Information:
Debian Release: 7.5
  APT prefers stable
  APT policy: (500, 'stable'), (1, 'experimental')
Architecture: armel (armv7l)

Kernel: Linux 3.0.19-mimosa-8-01601-g884ba31 (PREEMPT)
Locale: LANG=en_GB, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash

Versions of packages initramfs-tools depends on:
ii  cpio               2.11+dfsg-0.1
ii  klibc-utils        2.0.1-3.1
ii  kmod               9-3
ii  module-init-tools  9-3
ii  udev               175-7.2

Versions of packages initramfs-tools recommends:
ii  busybox  1:1.20.0-7

Versions of packages initramfs-tools suggests:
ii  bash-completion  1:2.0-1

-- Configuration Files:
/etc/initramfs-tools/initramfs.conf changed:
MODULES=dep
BUSYBOX=y
KEYMAP=n
COMPRESS=gzip
DEVICE=
NFSROOT=auto


-- no debconf information


Reply to: