Skip to content

Old kernel boot options customization with Ignition v2 breaks booting #885

@invidian

Description

@invidian

Description

With previously working CLC config:

storage:
  filesystems:
    - name: OEM
      mount:
        device: /dev/disk/by-label/OEM
        format: ext4
  files:
  - filesystem: OEM
    path: /grub.cfg
    mode: 0644
    append: true
    contents:
      inline: |
        set linux_append="$linux_append net.ifnames=0"

Translated to:

{
  "ignition": {
    "config": {},
    "security": {
      "tls": {}
    },
    "timeouts": {},
    "version": "2.3.0"
  },
  "storage": {
    "files": [
      {
        "filesystem": "OEM",
        "path": "/grub.cfg",
        "append": true,
        "contents": {
          "source": "data:,set%20linux_append%3D%22%24linux_append%20net.ifnames%3D0%22%0A",
          "verification": {}
        },
        "mode": 420
      }
    ],
    "filesystems": [
      {
        "mount": {
          "device": "/dev/disk/by-label/OEM",
          "format": "ext4"
        },
        "name": "OEM"
      }
    ]
  }
}

Booting the machine fails. Relevant log from booting:

[    3.587145] localhost systemd[1]: Finished Root filesystem setup.
[    3.587380] localhost systemd[1]: Starting Ignition (mount)...
[    3.587606] localhost systemd[1]: Starting /sysroot/boot...
[    3.592217] localhost ignition[534]: INFO     : Ignition 2.13.0
[    3.592217] localhost ignition[534]: INFO     : Stage: mount
[    3.592217] localhost ignition[534]: INFO     : no configs at "/usr/lib/ignition/base.d"
[    3.592217] localhost ignition[534]: INFO     : no config dir at "/usr/lib/ignition/base.platform.d/metal"
[    3.595622] localhost ignition[534]: INFO     : mount: op(1): [started]  mounting "/dev/disk/by-label/OEM" at "/sysroot/tmp/OEM-ign1" with type "ext4" and options ""
[    3.596164] localhost ignition[534]: DEBUG    : mount: op(1): executing: "mount" "-o" "" "-t" "ext4" "/dev/disk/by-label/OEM" "/sysroot/tmp/OEM-ign1"
[    3.600412] localhost ignition[534]: CRITICAL : mount: op(1): [failed]   mounting "/dev/disk/by-label/OEM" at "/sysroot/tmp/OEM-ign1" with type "ext4" and options "": exit status 32: Cmd: "mount" "-o" "" "-t" "ext4" "/dev/disk/by-label/OEM" "/sysroot/tmp/OEM-ign1" Stdout: "" Stderr: "mount: /sysroot/tmp/OEM-ign1: wrong fs type, bad option, bad superblock on /dev/sda6, missing codepage or helper program, or other error.\n"
[    3.685547] localhost kernel: EXT4-fs (sda6): VFS: Can't find ext4 filesystem
[    3.602211] localhost ignition[534]: mount failed
[    3.602511] localhost ignition[534]: Full config:
[    3.602511] localhost ignition[534]: {
[    3.602511] localhost ignition[534]:   "ignition": {
[    3.602511] localhost ignition[534]:     "config": {
[    3.602511] localhost ignition[534]:       "replace": {
[    3.602511] localhost ignition[534]:         "verification": {}
[    3.602511] localhost ignition[534]:       }
[    3.602511] localhost ignition[534]:     },
[    3.602511] localhost ignition[534]:     "proxy": {},
[    3.602511] localhost ignition[534]:     "security": {
[    3.602511] localhost ignition[534]:       "tls": {}
[    3.602511] localhost ignition[534]:     },
[    3.602511] localhost ignition[534]:     "timeouts": {},
[    3.602511] localhost ignition[534]:     "version": "3.4.0-experimental"
[    3.602511] localhost ignition[534]:   },
[    3.602511] localhost ignition[534]:   "kernelArguments": {},
[    3.602511] localhost ignition[534]:   "passwd": {},
[    3.602511] localhost ignition[534]:   "storage": {
[    3.602511] localhost ignition[534]:     "files": [
[    3.602511] localhost ignition[534]:       {
[    3.602511] localhost ignition[534]:         "group": {},
[    3.602511] localhost ignition[534]:         "overwrite": false,
[    3.602511] localhost ignition[534]:         "path": "/tmp/OEM-ign1/grub.cfg",
[    3.602511] localhost ignition[534]:         "user": {},
[    3.602511] localhost ignition[534]:         "append": [
[    3.602511] localhost ignition[534]:           {
[    3.602511] localhost ignition[534]:             "source": "data:,set%20linux_append%3D%22%24linux_append%20net.ifnames%3D0%22%0A",
[    3.602511] localhost ignition[534]:             "verification": {}
[    3.602511] localhost ignition[534]:           }
[    3.602511] localhost ignition[534]:         ],
[    3.602511] localhost ignition[534]:         "contents": {
[    3.602511] localhost ignition[534]:           "verification": {}
[    3.602511] localhost ignition[534]:         },
[    3.602511] localhost ignition[534]:         "mode": 420
[    3.602511] localhost ignition[534]:       }
[    3.602511] localhost ignition[534]:     ],
[    3.602511] localhost ignition[534]:     "filesystems": [
[    3.602511] localhost ignition[534]:       {
[    3.602511] localhost ignition[534]:         "device": "/dev/disk/by-label/OEM",
[    3.602511] localhost ignition[534]:         "format": "ext4",
[    3.602511] localhost ignition[534]:         "path": "/tmp/OEM-ign1"
[    3.602511] localhost ignition[534]:       }
[    3.602511] localhost ignition[534]:     ]
[    3.602511] localhost ignition[534]:   },
[    3.602511] localhost ignition[534]:   "systemd": {}
[    3.602511] localhost ignition[534]: }
[    3.711086] localhost systemd[1]: Stopping Journal Service...
[    3.715032] localhost systemd[1]: Stopped target Initrd Root File System.
[    3.720983] localhost systemd[1]: sysroot-boot.service: Main process exited, code=killed, status=15/TERM
[    3.723724] localhost systemd[1]: sysroot-boot.service: Failed with result 'signal'.
[    3.638644] localhost audit[1]: SERVICE_START pid=1 uid=0 auid=4294967295 ses=4294967295 subj=kernel msg='unit=ignition-mount comm="systemd" exe="/usr/lib/systemd/systemd" hostname=? addr=? terminal=? res=failed'
[    3.638696] localhost audit[1]: SERVICE_START pid=1 uid=0 auid=4294967295 ses=4294967295 subj=kernel msg='unit=emergency comm="systemd" exe="/usr/lib/systemd/systemd" hostname=? addr=? terminal=? res=success'
[    3.638715] localhost ignition[534]: CRITICAL : Ignition failed: exit status 32: Cmd: "mount" "-o" "" "-t" "ext4" "/dev/disk/by-label/OEM" "/sysroot/tmp/OEM-ign1" Stdout: "" Stderr: "mount: /sysroot/tmp/OEM-ign1: wrong fs type, bad option, bad superblock on /dev/sda6, missing codepage or helper program, or other error.\n"
[    3.726128] localhost systemd[1]: Stopped /sysroot/boot.

Impact

I had to investigate and eventually it made me migrate to Butane to mitigate.

Environment and steps to reproduce

  1. Create Ubuntu 22.04 VM.
  2. Run flatcar-install.sh script with Ignition file provided above.
  3. Reboot
  4. Watch it fail.

Expected behavior

Previous CLC configs could still work or breaking changes could be better announced?

Additional information

Our discussion on Matrix pointed to commit flatcar/ign-converter@1b7c4c7.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions