Bug#718761: flash-kernel: 'root=' kernel param ignored when flash-kernel package is installed
Justification: breaks the whole system
*** Please consider answering these questions, where appropriate ***
Steps which led to the problem:
1. Installed a new kernel package on a functioning system.
2. Generated a new uImage and uInitrd using mkimage.
3. Rebooted system.
Result: System shutdown but didn't become available on network.
Steps to diagnose:
1. Obtained access to a serial console.
2. Discovered that boot was interrupted because it timed out when trying to mount the root filesystem, which was reported to be /dev/root.
3. Restored the previous uImage and uInitrd and successfully rebooted.
4. Adjusted "rootdelay=60" and tried rebooting again with the problematic uImage and uInitrd again. Rootfs still unavailable.
5. Other stuff that didn't help.
6. Found that the root= kernel param was being ignored by the initrams init scripts, even though other parameters, like rootdelay were being honored.
7. Read through startup scripts and found that the incorrect value for "root" seemed to originate in conf/param.con
8. Read through mkinitramfs scripts and found that a hook installed by the flash-kernel package was responsible for the hook script that was setting "root=/dev/root" in conf/param.con.
Steps to correct:
1. Uninstalled flash-kernel.
2. Updated problematic initramfs.
3. Confirmed that conf/param.conf wasn't in the updated initramfs.
4. Updated uInitrd image.
I expect my machine to (re)boot successfully and without intervention after the installation of a new kernel.
If flash-kernel isn't necessary/required on my device, I would expect it to detect that fact rather than rendering my system in an unbootable state.
I realize that my system (a ZyXel NSA320 modified to boot debian) isn't particularly common, but I also know that there is a community of people running debain on Kirkwood devices using the same technique, and I doubt I am the only one to think that flash-kernel might be a useful package to have installed.
Unfortunately, I don't have enough knowledge to suggest a remedy. Perhaps the logic needs to be more sophisticated, or perhaps people porting debian to these devices should be doing something so the scripts know that the bootloader provided value is trustworthy.
-- System Information:
Debian Release: 7.1
APT prefers stable
APT policy: (990, 'stable')
Architecture: armel (armv5tel)
Kernel: Linux 3.9.11-kirkwood-tld-1 (PREEMPT)
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash
Versions of packages flash-kernel depends on:
pn devio <none>
ii initramfs-tools 0.112~bpo70+1
ii linux-base 3.5
flash-kernel recommends no packages.
Versions of packages flash-kernel suggests:
ii u-boot-tools 2012.04.01-2