console= parameters need to be added before -- on kernel cmdline
| Affects | Status | Importance | Assigned to | Milestone | |
|---|---|---|---|---|---|
| MAAS |
High
|
Unassigned | |||
| 1.8 |
Undecided
|
Unassigned | |||
| Trunk |
High
|
Unassigned | |||
| curtin |
Medium
|
Unassigned | |||
| curtin (Ubuntu) |
High
|
Unassigned | |||
| Trusty |
High
|
Unassigned | |||
| Utopic |
Medium
|
Unassigned | |||
| Vivid |
Medium
|
Unassigned | |||
| Wily |
High
|
Unassigned | |||
| debian-installer (Debian) |
Fix Released
|
Unknown
|
|||
| debian-installer (Ubuntu) |
Undecided
|
Unassigned | |||
| Trusty |
Undecided
|
Unassigned | |||
| Utopic |
Undecided
|
Unassigned | |||
| Vivid |
Undecided
|
Unassigned | |||
| Wily |
Undecided
|
Unassigned | |||
| debian-installer-utils (Ubuntu) |
Undecided
|
Unassigned | |||
| Precise |
Undecided
|
Mathieu Trudel-Lapierre | |||
| Trusty |
Undecided
|
Mathieu Trudel-Lapierre | |||
| Utopic |
Undecided
|
Mathieu Trudel-Lapierre | |||
| Vivid |
Undecided
|
Unassigned | |||
| Wily |
Undecided
|
Unassigned | |||
| maas (Ubuntu) |
Medium
|
Unassigned | |||
| Precise |
Medium
|
Unassigned | |||
| Trusty |
Medium
|
Unassigned | |||
| Utopic |
Medium
|
Unassigned | |||
| Vivid |
Medium
|
Unassigned | |||
| Wily |
Medium
|
Unassigned | |||
Bug Description
=== Begin SRU Information ===
[Description]
In kernel version 3.15, the linux kernel began ignoring command line options that come after a '--' on the kernel command line.
Kernel documentation at https:/
| The kernel parses parameters from the kernel command line up to "--";
| if it doesn't recognize a parameter and it doesn't contain a '.', the
| parameter gets passed to init: parameters with '=' go into init's
| environment, others are passed as command line arguments to init.
| Everything after "--" is passed as an argument to init.
This change of behavior collided with Ubuntu installer's usage (both d-i and curtin). The installers would copy arguments after '--' to the installed system.
For example, booting an installer with:
kernelarg1 arg2 arg3=bar -- console=
would result in the installed system having 'console=
The problem is then that if you're booting a kernel > 3.15 for your installer (which is the case for trusty-hwe-u or utopic onward) the 'console=' flag will not be paid attention to in the install environment.
The solution used by d-i was to modify its token to be '---' or '--'.
This solution has been implmented in curtin also.
MAAS has used '--' in the past, but will now need to use '---'. However, maas can't simply use '---' as that would result in un-patched installers not copying the parameters over to the installed system. The install environment would get them, but not the installed environment.
[Impact]
The impact is that when booting an installer with a command line like:
kernelarg1 arg2 arg3=bar -- console=
the output does not go to the console. Other kernel command line parameters are also ignored, console= is just the most immediately obvious.
[Regression Potential]
The fix in curtin and in d-i honor both '--' or '---', so chance of regression is low.
The fix in MAAS is relatively ignorant as it does not make its decision to use '---' or '--' based on what it is installing. The decision would be hard to make as it would require knowing the version of debian-
With the change in place in MAAS, the failure case would show itself as arguments not being copied to the installed system.
[Other Info]
To do this properly, we really need to hold the change in MAAS until all expected installers have the fix.
Since MAAS uses curtin as the default installer in current trunk and 1.8 branches, we've made curtin expose the information of which token to use to MAAS. That does mean that d-i would broken until all SRUs are done.
=== End SRU Information ===
=== Original Bug Report ===
Kernel documentation at https:/
| The kernel parses parameters from the kernel command line up to "--";
| if it doesn't recognize a parameter and it doesn't contain a '.', the
| parameter gets passed to init: parameters with '=' go into init's
| environment, others are passed as command line arguments to init.
| Everything after "--" is passed as an argument to init.
In my experience that was never true, and I can reproduce the kernel paying
attention to a command line like:
-- root=LABEL=
and the system booting fine, and with data ton ttyS0 on a 3.13 (trusty) kernel.
The fun begins a 3.16 (utopic/hwe-u) where the kernel documentation quoted above seems to be valid.
Currently maas is takes global command line parameters (as set via 'maas admin set-config name=kernel_opts value="
The end result is that setting console=ttyS0 as kernel parameters does not work with 3.16 in the commissioning and install environment.
Curtin (in following with convention I believe to be true in 'd-i' ) will copy parameters after a '--' to the installed system. So, the installed system works fine, but the install and commissioning is 'blind'.
There are 2 solutions here:
a.) put kernel flags twice (both before and after a '--')
this could in the future make systemd unhappy as those would then turn into flags to systemd.
b.) put kernel flags only before and find another way to pass to curtin or d-i
Joy.
Related branches
- Raphaël Badin (community): Approve on 2015-07-09
-
Diff: 118 lines (+49/-6)2 files modifiedsrc/provisioningserver/kernel_opts.py (+16/-3)
src/provisioningserver/tests/test_kernel_opts.py (+33/-3)
Given that d-i was already updated to use --- as a separator for vivid (mini.iso); and that there is a change for the same thing to be true for debian-cd (building the Ubuntu isos), I believe curtin will also need to be thought to be able to handle both -- and --- as separators for the parameters to be copied on the installed system.
| Changed in debian: | |
| status: | Unknown → Fix Released |
| Scott Moser (smoser) wrote : | #3 |
I've just pushed a change to lp:~smoser/curtin/trunk.lp1402042 that will prefer the tok '---' over the tok '--'.
So this should work with new maas or old maas.
Maas will just then have to change its behavior to always add the '---'. the one issue with this is that maas will then have to either
a.) require curtin at a certain version so that the new curtin will copy over args after '---'
b.) interrogate curtin for the version to see what curtin will look for and use '--' if it has too.
clearly 'a' seems the easiest, but we'll have to SRU the curtin fix first.
| description: | updated |
| Changed in debian-installer-utils (Ubuntu): | |
| status: | New → Fix Released |
| Changed in curtin: | |
| importance: | Undecided → Medium |
| status: | New → Confirmed |
| Changed in curtin (Ubuntu Precise): | |
| status: | New → Won't Fix |
| no longer affects: | curtin (Ubuntu Precise) |
| Changed in curtin (Ubuntu Utopic): | |
| importance: | Undecided → Medium |
| status: | New → Won't Fix |
| Changed in curtin (Ubuntu Vivid): | |
| importance: | Undecided → Medium |
| status: | New → Confirmed |
| Changed in curtin (Ubuntu Wily): | |
| importance: | Undecided → High |
| status: | New → Confirmed |
| Changed in curtin (Ubuntu Trusty): | |
| importance: | Undecided → High |
| status: | New → Confirmed |
The debian-
| Changed in debian-installer-utils (Ubuntu Vivid): | |
| status: | New → Fix Released |
| Changed in debian-installer-utils (Ubuntu Utopic): | |
| status: | New → In Progress |
| Changed in debian-installer-utils (Ubuntu Trusty): | |
| assignee: | nobody → Mathieu Trudel-Lapierre (mathieu-tl) |
| status: | New → In Progress |
| Changed in debian-installer-utils (Ubuntu Precise): | |
| assignee: | nobody → Mathieu Trudel-Lapierre (mathieu-tl) |
| status: | New → In Progress |
| Changed in debian-installer-utils (Ubuntu Utopic): | |
| assignee: | nobody → Mathieu Trudel-Lapierre (mathieu-tl) |
| Changed in curtin: | |
| status: | Confirmed → Fix Committed |
| Launchpad Janitor (janitor) wrote : | #5 |
This bug was fixed in the package curtin - 0.1.0~bzr227-
---------------
curtin (0.1.0~
* New upstream snapshot.
* support '---' or '--' as token to indicate the subsequent kernel command
line parameters should be copied from install envionrment to installed
environment. (LP: #1402042)
* partition: when partitioning mbr and boot partition verify that
both partitions exist.
* partition: when creating mbr table, leave space for secondary gpt header
* fix uefi install path on nvme devices (LP: #1471928)
-- Scott Moser <email address hidden> Thu, 09 Jul 2015 16:17:20 -0400
| Changed in curtin (Ubuntu Wily): | |
| status: | Confirmed → Fix Released |
| Changed in maas (Ubuntu Precise): | |
| importance: | Undecided → Medium |
| status: | New → Confirmed |
| Launchpad Janitor (janitor) wrote : | #6 |
Status changed to 'Confirmed' because the bug affects multiple users.
| Changed in maas (Ubuntu Trusty): | |
| status: | New → Confirmed |
| Changed in maas (Ubuntu Utopic): | |
| status: | New → Confirmed |
| Changed in maas (Ubuntu Vivid): | |
| status: | New → Confirmed |
| Changed in maas (Ubuntu): | |
| status: | New → Confirmed |
Hello Scott, or anyone else affected,
Accepted debian-
Please help us by testing this new package. See https:/
If this package fixes the bug for you, please add a comment to this bug, mentioning the version of the package you tested, and change the tag from verification-needed to verification-done. If it does not fix the bug for you, please add a comment stating that, and change the tag to verification-
Further information regarding the verification process can be found at https:/
| Changed in debian-installer-utils (Ubuntu Precise): | |
| status: | In Progress → Fix Committed |
| tags: | added: verification-needed |
| Changed in debian-installer-utils (Ubuntu Trusty): | |
| status: | In Progress → Fix Committed |
| Chris J Arges (arges) wrote : | #11 |
Hello Scott, or anyone else affected,
Accepted debian-
Please help us by testing this new package. See https:/
If this package fixes the bug for you, please add a comment to this bug, mentioning the version of the package you tested, and change the tag from verification-needed to verification-done. If it does not fix the bug for you, please add a comment stating that, and change the tag to verification-
Further information regarding the verification process can be found at https:/
| Changed in debian-installer-utils (Ubuntu Utopic): | |
| status: | In Progress → Fix Committed |
| Chris J Arges (arges) wrote : | #12 |
Hello Scott, or anyone else affected,
Accepted debian-
Please help us by testing this new package. See https:/
If this package fixes the bug for you, please add a comment to this bug, mentioning the version of the package you tested, and change the tag from verification-needed to verification-done. If it does not fix the bug for you, please add a comment stating that, and change the tag to verification-
Further information regarding the verification process can be found at https:/
| Adam Conrad (adconrad) wrote : | #13 |
Hello Scott, or anyone else affected,
Accepted debian-installer into precise-proposed. The package will build now and be available at https:/
Please help us by testing this new package. See https:/
If this package fixes the bug for you, please add a comment to this bug, mentioning the version of the package you tested, and change the tag from verification-needed to verification-done. If it does not fix the bug for you, please add a comment stating that, and change the tag to verification-
Further information regarding the verification process can be found at https:/
| Changed in debian-installer (Ubuntu Utopic): | |
| status: | New → Fix Committed |
| Adam Conrad (adconrad) wrote : | #14 |
Hello Scott, or anyone else affected,
Accepted debian-installer into utopic-proposed. The package will build now and be available at https:/
Please help us by testing this new package. See https:/
If this package fixes the bug for you, please add a comment to this bug, mentioning the version of the package you tested, and change the tag from verification-needed to verification-done. If it does not fix the bug for you, please add a comment stating that, and change the tag to verification-
Further information regarding the verification process can be found at https:/
| Changed in debian-installer (Ubuntu Vivid): | |
| status: | New → Fix Released |
| Changed in debian-installer (Ubuntu Wily): | |
| status: | New → Fix Released |
| Adam Conrad (adconrad) wrote : | #15 |
Hello Scott, or anyone else affected,
Accepted debian-installer into trusty-proposed. The package will build now and be available at https:/
Please help us by testing this new package. See https:/
If this package fixes the bug for you, please add a comment to this bug, mentioning the version of the package you tested, and change the tag from verification-needed to verification-done. If it does not fix the bug for you, please add a comment stating that, and change the tag to verification-
Further information regarding the verification process can be found at https:/
| Changed in debian-installer (Ubuntu Trusty): | |
| status: | New → Fix Committed |
| Scott Moser (smoser) wrote : | #16 |
i put some code at
https:/
Ran that code, the output shows in output.log as attached.
Then, checked console logs of everything with:
$ for d in *; do [ -f "$d/serial-
=== precise-
== install ==
[ 0.000000] Command line: url=http://
== boot ==
[stdout] Mon, 20 Jul 2015 13:54:53 -0400 cmdline: BOOT_IMAGE=
=== precise-
== install ==
[ 0.000000] Command line: url=http://
== boot ==
[stdout] Mon, 20 Jul 2015 14:04:24 -0400 cmdline: BOOT_IMAGE=
=== precise-
== install ==
[ 0.000000] Command line: url=http://
== boot ==
[stdout] Mon, 20 Jul 2015 14:13:38 -0400 cmdline: BOOT_IMAGE=
=== precise-
== install ==
[ 0.000000] Command line: url=http://
== boot ==
[stdout] Mon, 20 Jul 2015 14:23:16 -0400 cmdline: BOOT_IMAGE=
=== precise-
== install ==
[ 0.000000] Command line: url=http://
== boot ==
[stdout] Mon, 20 Jul 2015 14:33:21 -0400 cmdline: BOOT_IMAGE=
=== trusty-
== install ==
[ 0.000000] Command line: url=http://
== boot ==
[stdout] Mon, 20 Jul 2015 12:59:13 -0400 cmdline: BOOT_IMAGE=
=== trusty-
== install ==
[ 0.000000] Command line: url=http://
== boot ==
[stdout] Mon, 20 Jul 2015 13:10:41 -0400 cmdline: BOOT_IMAGE=
=== trusty-
== install ==
[ 0.000000] Command line: url=http://
==...
| Scott Moser (smoser) wrote : | #17 |
The above shows that the kernel parameters after '---' are copied over, and things before it are not (foo_nocopy=1 and foo_copy specifically).
| tags: |
added: verification-done removed: verification-needed |
| Launchpad Janitor (janitor) wrote : | #18 |
This bug was fixed in the package debian-
---------------
debian-
* Add support for --- as a user-params separator (for parameters on the
kernel command-line) for parameters to pass on to the installed system.
(LP: #1402042)
-- Mathieu Trudel-Lapierre <email address hidden> Wed, 08 Jul 2015 13:50:44 -0400
| Changed in debian-installer-utils (Ubuntu Precise): | |
| status: | Fix Committed → Fix Released |
| Adam Conrad (adconrad) wrote : Update Released | #19 |
The verification of the Stable Release Update for debian-
| Launchpad Janitor (janitor) wrote : | #20 |
This bug was fixed in the package debian-
---------------
debian-
* Add support for --- as a user-params separator (for parameters on the
kernel command-line) for parameters to pass on to the installed system.
(LP: #1402042)
-- Mathieu Trudel-Lapierre <email address hidden> Wed, 08 Jul 2015 13:49:58 -0400
| Changed in debian-installer-utils (Ubuntu Trusty): | |
| status: | Fix Committed → Fix Released |
| Launchpad Janitor (janitor) wrote : | #21 |
This bug was fixed in the package debian-
---------------
debian-
* Add support for --- as a user-params separator (for parameters on the
kernel command-line) for parameters to pass on to the installed system.
(LP: #1402042)
-- Mathieu Trudel-Lapierre <email address hidden> Wed, 08 Jul 2015 13:51:24 -0400
| Changed in debian-installer-utils (Ubuntu Utopic): | |
| status: | Fix Committed → Fix Released |
| Launchpad Janitor (janitor) wrote : | #22 |
This bug was fixed in the package debian-installer - 20101020ubuntu3
---------------
debian-installer (20101020ubuntu
* Rebuild to pull in the new debian-
-- Mathieu Trudel-Lapierre <email address hidden> Fri, 17 Jul 2015 16:04:45 -0400
| Changed in debian-installer (Ubuntu Trusty): | |
| status: | Fix Committed → Fix Released |
| Launchpad Janitor (janitor) wrote : | #23 |
This bug was fixed in the package debian-installer - 20101020ubuntu352.3
---------------
debian-installer (20101020ubuntu
* Force rebuild to pick up new debian-
* Switch to '---' as option separator for all kernels (LP: #1427252)
-- Adam Conrad <email address hidden> Fri, 17 Jul 2015 09:10:34 -0600
| Changed in debian-installer (Ubuntu Utopic): | |
| status: | Fix Committed → Fix Released |
| Launchpad Janitor (janitor) wrote : | #24 |
This bug was fixed in the package maas - 1.8.2+bzr4041-
---------------
maas (1.8.2+
* New upstream bugfix release, 1.8.2 bzr 4041:
- Regenerate the connection URL on websocket client reconnect, to fix
CSRF after upgrade to 1.8.1. (LP: #1484696)
- Validate the osystem and distro_series when using the deploy action,
which fixes win2012r2 deployment issues. (LP: #1445942)
- Fix failure in MAAS startup messages by not generating dhcpd config
files when they are not in use. (LP: #1481940)
- Fix enlistment to always use the correct kernel parameters. (LP: #1459865)
* debian/control: Add missing dep on python-curtin.
* debian/
maas (1.8.1+
* New upstream release, 1.8.1 bzr4036:
- Add --username to maas-region-admin apikey command
docs. (LP: ##1481118)
- Add ListBootImagesV2 RPC command; fallback to using ListBootImages
when the ListBootImagesV2 is not handled on the cluster.
- Fix setting the default_
- Fix upgrade issue where it would remove custom DNS config,
potentially breaking DNS (LP: #1413388)
- Commissioning x86_64 node never completes, sitting at grub
prompt, pserv py tbs (LP: #1317705)
- Power monitor service hits amp.TooLong errors with > ~600
nodes to a cluster (LP: #1389007)
- Websocket server accessed over port 5240 (LP: #1436279)
- If hostname not set, sudo warning make maas throw 500 (LP: #1469305)
- Can't set a list of forwarders (BIND config) (LP: #1470585)
- UCS chassis enlist Failed to probe and enlist UCS nodes: list
index out of range (LP: #1469846)
- Add cisco snic to 3rd party driver (LP: #1470276)
- console= parameters need to be added before -- on kernel
cmdline (LP: #1402042)
- [UI] Machine details styling (LP: #1465722)
- [UI] Actions design styles (LP: #1465737)
- [UI] Replace close "X" with correct versions (LP: #1465740)
- [UI] Table design styles (LP: #1465742)
- [UI] Make table heading hover consistant with nodes/devices
tabs (LP: #1470389)
- [UI] adding between node name and save button
inconsistent (LP: #1470395)
- [UI] "Set zone" label oddly placed on node listing
page (LP: #1459710)
[ Raphaël Badin ]
* Enable proxy_wstunnel module.
* Drop dependency on python-iscpy: the code has been integrated into
MAAS. (LP: #1413388).
[ Andres Rodriguez ]
* Refactor maas-dns upgrade code so it doesn't break local DNS config
and it gets migrated (LP: #1413388)
- debian/
is always run.
* debian/control: Make maas-dns a Dependy of maas-region-
[ Scott Moser ]
* maas-proxy: sync white space changes with trunk packaging branch
* maas-proxy: sync apt specific squid config with squid-deb-proxy
(LP: #1474417)
-- Andres Rodriguez <email address hidden> Mon, 17 Aug 2015 11:31:20 +0100
| Changed in maas (Ubuntu Wily): | |
| status: | Confirmed → Fix Released |
Hello Scott, or anyone else affected,
Accepted curtin into trusty-proposed. The package will build now and be available at https:/
Please help us by testing this new package. See https:/
If this package fixes the bug for you, please add a comment to this bug, mentioning the version of the package you tested, and change the tag from verification-needed to verification-done. If it does not fix the bug for you, please add a comment stating that, and change the tag to verification-
Further information regarding the verification process can be found at https:/
| Changed in curtin (Ubuntu Trusty): | |
| status: | Confirmed → Fix Committed |
| tags: | removed: verification-done |
| tags: | added: verification-needed |
| Changed in curtin (Ubuntu Vivid): | |
| status: | Confirmed → Fix Committed |
| Chris J Arges (arges) wrote : | #26 |
Hello Scott, or anyone else affected,
Accepted curtin into vivid-proposed. The package will build now and be available at https:/
Please help us by testing this new package. See https:/
If this package fixes the bug for you, please add a comment to this bug, mentioning the version of the package you tested, and change the tag from verification-needed to verification-done. If it does not fix the bug for you, please add a comment stating that, and change the tag to verification-
Further information regarding the verification process can be found at https:/
The fix for this bug has been awaiting testing feedback in the -proposed repository for trusty for more than 90 days. Please test this fix and update the bug appropriately with the results. In the event that the fix for this bug is still not verified 15 days from now, the package will be removed from the -proposed repository.
| tags: | added: removal-candidate |
| tags: |
added: verification-done removed: removal-candidate verification-needed |
| affects: | debian → debian-installer (Debian) |
| Changed in maas (Ubuntu Utopic): | |
| importance: | Undecided → Medium |
| status: | Confirmed → Won't Fix |
| Changed in maas (Ubuntu): | |
| importance: | Undecided → Medium |
| Changed in maas (Ubuntu Wily): | |
| importance: | Undecided → Medium |
| Changed in maas (Ubuntu Vivid): | |
| importance: | Undecided → Medium |
| Changed in maas (Ubuntu Trusty): | |
| importance: | Undecided → Medium |
| Launchpad Janitor (janitor) wrote : | #28 |
This bug was fixed in the package curtin - 0.1.0~bzr227-
---------------
curtin (0.1.0~
* New upstream snapshot.
- fix uefi install path on nvme devices (LP: #1471928)
- tools/maas2roottar: (development only tool) exit failure when missing
dependency (LP: #1466099).
- partition: leave space for secondary gpt header when creating mbr disks.
- partition: when a second partition is created, assert its existance.
- partition: when second partition is created, wipe fs info.
- kernel command line: prefer the --- over -- to indicate that subsequent
arguments should be copied to installed system. (LP: #1402042)
-- Scott Moser <email address hidden> Tue, 22 Sep 2015 12:02:08 -0400
| Changed in curtin (Ubuntu Trusty): | |
| status: | Fix Committed → Fix Released |
| Launchpad Janitor (janitor) wrote : | #29 |
This bug was fixed in the package curtin - 0.1.0~bzr227-
---------------
curtin (0.1.0~
* New upstream snapshot.
- fix uefi install path on nvme devices (LP: #1471928)
- tools/maas2roottar: (development only tool) exit failure when missing
dependency (LP: #1466099).
- partition: leave space for secondary gpt header when creating mbr disks.
- partition: when a second partition is created, assert its existance.
- partition: when second partition is created, wipe fs info.
- kernel command line: prefer the --- over -- to indicate that subsequent
arguments should be copied to installed system. (LP: #1402042)
-- Scott Moser <email address hidden> Tue, 22 Sep 2015 12:21:28 -0400
| Changed in curtin (Ubuntu Vivid): | |
| status: | Fix Committed → Fix Released |
| no longer affects: | maas/1.7 |
This bug is believed to be fixed in curtin in 17.1. If this is still a problem for you, please make a comment and set the state back to New
Thank you.
| Changed in curtin: | |
| status: | Fix Committed → Fix Released |


Sorry, I hadn't seen this bug so I went ahead and implemented part of the solution in d-i (well, cherry-picking changes really).
So what will happen is rather than using "--" as a separator, we can use "---" (three dashes).
So, on request from Scott; here's a quick breakdown on how the parameters passed on the command line are handled:
This already was understood by the debian- installer- utils source package, which contains a "user-params" script which takes some user parameters (but not debconf preseeds). console= is one of the user parameters taken by user-params.
All the parameters passed on the command-line make it to the installer environment; this is done, AIUI, by the kernel.
From there, the preseed source package has an env2debconf script which will take the environment variables it recognizes (containing a slash or know as aliases to some debconf variable), and ship them to debconf for the installer to use.
From that point, the installer runs. Towards the end of the installation, the grub-installer package will ask user-params for what to add to the kernel command-line when setting up the bootloader (this is also true of yaboot-installer). Other parameters relevant to the installed system go through debconf, and will get applied based on what postinst scripts do -- for instance, console-setup will carry the keymap/model settings on to the installed system's /etc/default/ keyboard.