[Bug 2045961] [NEW] builtin: running 'curtin block-meta simple' fails on recent versions of Ubuntu installer for ZFS root

Richard Spindler 2045961 at bugs.launchpad.net
Fri Dec 8 10:03:59 UTC 2023


Public bug reported:

Hi,

Not sure where to post/look for help with this. I've had a bit of a look
and I'm unable to find something similar, so would appreciate some help.

Looks like this might be due to changed in block_meta.py in curtin.

I have a script that generates a custom ISO with ZFS root based on the
live server ISO install:

https://github.com/lateralblast/guige/

It adds the ZFS packages to the installer and installs them at install
time allowing for a ZFS root install to be done. This had been working
for all releases from 20.04 and later, but recent changes to the
installer have broken it. It still works fine with the LTS releases, but
the daily builds and 23.10/24.04 betas are now failing.

It looks like the issue with the updated installer and parsing of the
cloud init config file. It creates the ZFS pool and filesystem and
mounts it, and then fails when it hands over to phase where it copies
the base image to filesystem. It looks like is not returning the correct
volume ID for the installer when I debug the crash logs from the
installer.

This is the failure point on noble/24.04:
=========================================

finish:           subiquity/Install/install/curtin_install/run_curtin_step/cmd-install/stage-partitioning/builtin: running 'curtin block-meta simple'
finish:         subiquity/Install/install/curtin_install/run_curtin_step/cmd-install/stage-partitioning: configuring storage
finish:       subiquity/Install/install/curtin_install/run_curtin_step/cmd-install: curtin command install
finish:     subiquity/Install/install/curtin_install/run_curtin_step: Command '['systemd-run', '--wait', '--same-dir', '--property', 'SyslogIdentifier=subiquity_log.1745', '--setenv', 'PATH=/snap/subiquity/5382/bin:/snap/subiquity/5382/usr/bin:/snap/subiquity/5382/usr/sbin:/snap/subiquity/5382/usr/bin:/snap/subiquity/5382/sbin:/snap/subiquity/5382/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/snap/subiquity/5382/bin:/snap/subiquity/5382/sbin', '--setenv', 'PYTHONPATH=:/snap/subiquity/5382/lib/python3.10/site-packages', '--setenv', 'PYTHON=/snap/subiquity/5382/usr/bin/python3.10', '--setenv', 'SNAP=/snap/subiquity/5382', '--', '/snap/subiquity/5382/usr/bin/python3.10', '-m', 'curtin', '--showtrace', '-vvv', '--set', 'json:reporting={"subiquity": {"type": "journald", "identifier": "curtin_event.1745.6"}}', '-c', '/var/log/installer/curtin-install/subiquity-partitioning.conf', 'install', '--set', 'json:stages=["partitioning"]', 'cp:///tmp/tmpaf5t35ik/mount']' returned non-zero exit status 3.
finish:   subiquity/Install/install/curtin_install: Command '['systemd-run', '--wait', '--same-dir', '--property', 'SyslogIdentifier=subiquity_log.1745', '--setenv', 'PATH=/snap/subiquity/5382/bin:/snap/subiquity/5382/usr/bin:/snap/subiquity/5382/usr/sbin:/snap/subiquity/5382/usr/bin:/snap/subiquity/5382/sbin:/snap/subiquity/5382/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/snap/subiquity/5382/bin:/snap/subiquity/5382/sbin', '--setenv', 'PYTHONPATH=:/snap/subiquity/5382/lib/python3.10/site-packages', '--setenv', 'PYTHON=/snap/subiquity/5382/usr/bin/python3.10', '--setenv', 'SNAP=/snap/subiquity/5382', '--', '/snap/subiquity/5382/usr/bin/python3.10', '-m', 'curtin', '--showtrace', '-vvv', '--set', 'json:reporting={"subiquity": {"type": "journald", "identifier": "curtin_event.1745.6"}}', '-c', '/var/log/installer/curtin-install/subiquity-partitioning.conf', 'install', '--set', 'json:stages=["partitioning"]', 'cp:///tmp/tmpaf5t35ik/mount']' returned non-zero exit status 3.
finish: subiquity/Install/install: Command '['systemd-run', '--wait', '--same-dir', '--property', 'SyslogIdentifier=subiquity_log.1745', '--setenv', 'PATH=/snap/subiquity/5382/bin:/snap/subiquity/5382/usr/bin:/snap/subiquity/5382/usr/sbin:/snap/subiquity/5382/usr/bin:/snap/subiquity/5382/sbin:/snap/subiquity/5382/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/snap/subiquity/5382/bin:/snap/subiquity/5382/sbin', '--setenv', 'PYTHONPATH=:/snap/subiquity/5382/lib/python3.10/site-packages', '--setenv', 'PYTHON=/snap/subiquity/5382/usr/bin/python3.10', '--setenv', 'SNAP=/snap/subiquity/5382', '--', '/snap/subiquity/5382/usr/bin/python3.10', '-m', 'curtin', '--showtrace', '-vvv', '--set', 'json:reporting={"subiquity": {"type": "journald", "identifier": "curtin_event.1745.6"}}', '-c', '/var/log/installer/curtin-install/subiquity-partitioning.conf', 'install', '--set', 'json:stages=["partitioning"]', 'cp:///tmp/tmpaf5t35ik/mount']' returned non-zero exit status 3.
start:   subiquity/ErrorReporter/1702018983.114151001.install_fail/add_info
finish:   subiquity/ErrorReporter/1702018983.114151001.install_fail/add_info: written to /var/crash/1702018983.114151001.install_fail.crash
An error occurred. Press enter to start a shell

It looks like something in the get_path_to_storage_volume has changed (this previously worked):
==============================================================================================

 get_path_to_storage_volume for volume disk1p2fs1(None)
 An error occured handling 'disk1p2f1_rootpool': ValueError - volume with id 'di
sk1p2fs1' not found
 finish: cmd-install/stage-partitioning/builtin/cmd-block-meta: FAIL: configurin
g zpool: disk1p2f1_rootpool
 TIMED BLOCK_META: 9.727
 finish: cmd-install/stage-partitioning/builtin/cmd-block-meta: FAIL: curtin com
mand block-meta
 Traceback (most recent call last):
   File "/snap/subiquity/5382/lib/python3.10/site-packages/curtin/commands/main.
py", line 202, in main
     ret = args.func(args)
   File "/snap/subiquity/5382/lib/python3.10/site-packages/curtin/log.py", line 
97, in wrapper
     return log_time("TIMED %s: " % msg, func, *args, **kwargs)
   File "/snap/subiquity/5382/lib/python3.10/site-packages/curtin/log.py", line 
79, in log_time
     return func(*args, **kwargs)
   File "/snap/subiquity/5382/lib/python3.10/site-packages/curtin/commands/block
_meta.py", line 127, in block_meta
     return meta_custom(args)
   File "/snap/subiquity/5382/lib/python3.10/site-packages/curtin/commands/block
_meta.py", line 2248, in meta_custom
     handler(command, storage_config_dict, context)
   File "/snap/subiquity/5382/lib/python3.10/site-packages/curtin/commands/block
_meta.py", line 1989, in zpool_handler
     vdevs = [get_path_to_storage_volume(v, storage_config)
   File "/snap/subiquity/5382/lib/python3.10/site-packages/curtin/commands/block
_meta.py", line 1989, in <listcomp>
     vdevs = [get_path_to_storage_volume(v, storage_config)
   File "/snap/subiquity/5382/lib/python3.10/site-packages/curtin/commands/block
_meta.py", line 576, in get_path_to_storage_volume
     raise ValueError("volume with id '%s' not found" % volume)
 ValueError: volume with id 'disk1p2fs1' not found
 volume with id 'disk1p2fs1' not found

root at ubuntu-server:/# cat /autoinstall.yaml 
===========================================

---
apt:
    disable_components: []
    geoip: true
    preferences:
    -   package: '*'
        pin: release a=noble-security
        pin-priority: 200
    preserve_sources_list: false
    primary:
    -   arches:
        - amd64
        uri: http://archive.ubuntu.com/ubuntu
    -   arches:
        - default
        uri: http://ports.ubuntu.com/ubuntu-ports
drivers:
    install: false
early-commands:
- sed -i "s/vda/$(lsblk -x TYPE|grep disk |sort |head -1 |awk '{print $1}')/g"
    /autoinstall.yaml
- sed -i "s/enp1s0/$(lshw -class network -short |awk '{print $2}' |grep ^e |head
    -1)/g" /autoinstall.yaml
- export DEBIAN_FRONTEND="noninteractive" && dpkg --force-confnew --force-overwrite
    --auto-deconfigure --force-depends -i /cdrom/autoinstall/packages/*.deb
- rm /etc/resolv.conf
- echo "nameserver 8.8.8.8" >> /etc/resolv.conf
identity:
    hostname: ubuntu
    password: $6$0HMdVn5Wf1g98AZw$1vagfgj.JWUVX/SVJVmYlfgT785K6eJpgK6uTw29Hl.yskYr6529s.mkjAQoJkrJTGKDaFb/Lxvy0OiqLp24F0
    realname: Ubuntu
    username: ubuntu
kernel:
    package: linux-generic
keyboard:
    layout: us
late-commands:
- mkdir -p /target/var/postinstall/packages
- cp /cdrom/autoinstall/packages/*.deb /target/var/postinstall/packages/
- echo '#!/bin/bash' > /target/tmp/post.sh
- echo 'export DEBIAN_FRONTEND="noninteractive" && dpkg --force-confnew --force-overwrite
    --auto-deconfigure --force-depends -i /var/postinstall/packages/*.deb' >> /target/tmp/post.sh
- chmod +x /target/tmp/post.sh
- echo 'Australia/Melbourne' > /target/etc/timezone
- rm /target/etc/localtime
- curtin in-target --target=/target -- ln -s /usr/share/zoneinfo/Australia/Melbourne
    /etc/localtime
- curtin in-target --target=/target -- /tmp/post.sh
- echo 'GRUB_TERMINAL="serial console"' >> /target/etc/default/grub
- echo 'GRUB_SERIAL_COMMAND="serial --speed=115200 --port=0x03f8"' >> /target/etc/default/grub
- echo 'GRUB_CMDLINE_LINUX="console=tty0 console=tty0 console=vt0 console=ttyS0,115200
    console=ttyS1,115200"' >> /target/etc/default/grub
- echo 'GRUB_TIMEOUT="10"' >> /target/etc/default/grub
- 'echo ''ubuntu ALL=(ALL) NOPASSWD: ALL'' >> /target/etc/sudoers.d/ubuntu'
- echo 'APT::Periodic::Update-Package-Lists "0";' > /target/etc/apt/apt.conf.d/20auto-upgrades
- echo 'APT::Periodic::Download-Upgradeable-Packages "0";' >> /target/etc/apt/apt.conf.d/20auto-upgrades
- echo 'APT::Periodic::AutocleanInterval "0";' >> /target/etc/apt/apt.conf.d/20auto-upgrades
- echo 'APT::Periodic::Unattended-Upgrade "0";' >> /target/etc/apt/apt.conf.d/20auto-upgrades
- curtin in-target --target=/target -- systemctl enable serial-getty at ttyS0.service
- curtin in-target --target=/target -- systemctl start serial-getty at ttyS0.service
- curtin in-target --target=/target -- systemctl enable serial-getty at ttyS1.service
- curtin in-target --target=/target -- systemctl start serial-getty at ttyS1.service
- curtin in-target --target=/target -- systemctl enable serial-getty at ttyS4.service
- curtin in-target --target=/target -- systemctl start serial-getty at ttyS4.service
- curtin in-target --target=/target -- update-grub
locale: en_US.UTF-8
network:
    ethernets:
        enp1s0:
            critical: true
            dhcp-identifier: mac
            dhcp4: true
    version: 2
package_update: false
package_upgrade: false
ssh:
    allow-pw: false
    authorized-keys:
    - ''
    install-server: true
storage:
    config:
    -   grub_device: true
        id: disk1
        name: ''
        path: /dev/vda
        preserve: false
        ptable: gpt
        type: disk
        wipe: superblock-recursive
    -   device: disk1
        flag: boot
        grub_device: true
        id: disk1p1
        number: 1
        preserve: false
        ptable: gpt
        size: 1127219200
        type: partition
        wipe: superblock-recursive
    -   fstype: fat32
        id: disk1p1fs1
        preserve: false
        type: format
        volume: disk1p1
    -   device: disk1p1fs1
        id: mount-2
        path: /boot/efi
        type: mount
    -   device: disk1
        flag: root
        grub_device: true
        id: disk1p2
        number: 2
        preserve: false
        size: -1
        type: partition
        wipe: superblock-recursive
    -   fstype: zfsroot
        id: disk1p2fs1
        preserve: false
        type: format
        volume: disk1p2
    -   device: disk1p2fs1
        id: disk1p2f1_rootpool
        mountpoint: /
        pool: rpool
        preserve: false
        type: zpool
        vdevs:
        - disk1p2fs1
    -   id: disk1_rootpool_container
        pool: disk1p2f1_rootpool
        preserve: false
        properties:
            canmount: 'off'
            mountpoint: none
        type: zfs
        volume: /ROOT
    -   id: disk1_rootpool_rootfs
        pool: disk1p2f1_rootpool
        preserve: false
        properties:
            canmount: noauto
            mountpoint: /
        type: zfs
        volume: /ROOT/zfsroot
    -   device: disk1p2fs1
        id: mount-disk1p2fs1
        path: /
        type: mount
    swap:
        swap: 2G
user-data:
    timezone: Australia/Melbourne
version: 1
...

** Affects: curtin
     Importance: Undecided
         Status: New

** Attachment added: "install fail crash file"
   https://bugs.launchpad.net/bugs/2045961/+attachment/5727441/+files/1702025103.204838991.install_fail.crash

-- 
You received this bug notification because you are a member of Ubuntu
Foundations Bugs, which is subscribed to curtin.
https://bugs.launchpad.net/bugs/2045961

Title:
  builtin: running 'curtin block-meta simple' fails on recent versions
  of Ubuntu installer for ZFS root

Status in curtin:
  New

Bug description:
  Hi,

  Not sure where to post/look for help with this. I've had a bit of a
  look and I'm unable to find something similar, so would appreciate
  some help.

  Looks like this might be due to changed in block_meta.py in curtin.

  I have a script that generates a custom ISO with ZFS root based on the
  live server ISO install:

  https://github.com/lateralblast/guige/

  It adds the ZFS packages to the installer and installs them at install
  time allowing for a ZFS root install to be done. This had been working
  for all releases from 20.04 and later, but recent changes to the
  installer have broken it. It still works fine with the LTS releases,
  but the daily builds and 23.10/24.04 betas are now failing.

  It looks like the issue with the updated installer and parsing of the
  cloud init config file. It creates the ZFS pool and filesystem and
  mounts it, and then fails when it hands over to phase where it copies
  the base image to filesystem. It looks like is not returning the
  correct volume ID for the installer when I debug the crash logs from
  the installer.

  This is the failure point on noble/24.04:
  =========================================

  finish:           subiquity/Install/install/curtin_install/run_curtin_step/cmd-install/stage-partitioning/builtin: running 'curtin block-meta simple'
  finish:         subiquity/Install/install/curtin_install/run_curtin_step/cmd-install/stage-partitioning: configuring storage
  finish:       subiquity/Install/install/curtin_install/run_curtin_step/cmd-install: curtin command install
  finish:     subiquity/Install/install/curtin_install/run_curtin_step: Command '['systemd-run', '--wait', '--same-dir', '--property', 'SyslogIdentifier=subiquity_log.1745', '--setenv', 'PATH=/snap/subiquity/5382/bin:/snap/subiquity/5382/usr/bin:/snap/subiquity/5382/usr/sbin:/snap/subiquity/5382/usr/bin:/snap/subiquity/5382/sbin:/snap/subiquity/5382/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/snap/subiquity/5382/bin:/snap/subiquity/5382/sbin', '--setenv', 'PYTHONPATH=:/snap/subiquity/5382/lib/python3.10/site-packages', '--setenv', 'PYTHON=/snap/subiquity/5382/usr/bin/python3.10', '--setenv', 'SNAP=/snap/subiquity/5382', '--', '/snap/subiquity/5382/usr/bin/python3.10', '-m', 'curtin', '--showtrace', '-vvv', '--set', 'json:reporting={"subiquity": {"type": "journald", "identifier": "curtin_event.1745.6"}}', '-c', '/var/log/installer/curtin-install/subiquity-partitioning.conf', 'install', '--set', 'json:stages=["partitioning"]', 'cp:///tmp/tmpaf5t35ik/mount']' returned non-zero exit status 3.
  finish:   subiquity/Install/install/curtin_install: Command '['systemd-run', '--wait', '--same-dir', '--property', 'SyslogIdentifier=subiquity_log.1745', '--setenv', 'PATH=/snap/subiquity/5382/bin:/snap/subiquity/5382/usr/bin:/snap/subiquity/5382/usr/sbin:/snap/subiquity/5382/usr/bin:/snap/subiquity/5382/sbin:/snap/subiquity/5382/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/snap/subiquity/5382/bin:/snap/subiquity/5382/sbin', '--setenv', 'PYTHONPATH=:/snap/subiquity/5382/lib/python3.10/site-packages', '--setenv', 'PYTHON=/snap/subiquity/5382/usr/bin/python3.10', '--setenv', 'SNAP=/snap/subiquity/5382', '--', '/snap/subiquity/5382/usr/bin/python3.10', '-m', 'curtin', '--showtrace', '-vvv', '--set', 'json:reporting={"subiquity": {"type": "journald", "identifier": "curtin_event.1745.6"}}', '-c', '/var/log/installer/curtin-install/subiquity-partitioning.conf', 'install', '--set', 'json:stages=["partitioning"]', 'cp:///tmp/tmpaf5t35ik/mount']' returned non-zero exit status 3.
  finish: subiquity/Install/install: Command '['systemd-run', '--wait', '--same-dir', '--property', 'SyslogIdentifier=subiquity_log.1745', '--setenv', 'PATH=/snap/subiquity/5382/bin:/snap/subiquity/5382/usr/bin:/snap/subiquity/5382/usr/sbin:/snap/subiquity/5382/usr/bin:/snap/subiquity/5382/sbin:/snap/subiquity/5382/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/snap/subiquity/5382/bin:/snap/subiquity/5382/sbin', '--setenv', 'PYTHONPATH=:/snap/subiquity/5382/lib/python3.10/site-packages', '--setenv', 'PYTHON=/snap/subiquity/5382/usr/bin/python3.10', '--setenv', 'SNAP=/snap/subiquity/5382', '--', '/snap/subiquity/5382/usr/bin/python3.10', '-m', 'curtin', '--showtrace', '-vvv', '--set', 'json:reporting={"subiquity": {"type": "journald", "identifier": "curtin_event.1745.6"}}', '-c', '/var/log/installer/curtin-install/subiquity-partitioning.conf', 'install', '--set', 'json:stages=["partitioning"]', 'cp:///tmp/tmpaf5t35ik/mount']' returned non-zero exit status 3.
  start:   subiquity/ErrorReporter/1702018983.114151001.install_fail/add_info
  finish:   subiquity/ErrorReporter/1702018983.114151001.install_fail/add_info: written to /var/crash/1702018983.114151001.install_fail.crash
  An error occurred. Press enter to start a shell

  It looks like something in the get_path_to_storage_volume has changed (this previously worked):
  ==============================================================================================

   get_path_to_storage_volume for volume disk1p2fs1(None)
   An error occured handling 'disk1p2f1_rootpool': ValueError - volume with id 'di
  sk1p2fs1' not found
   finish: cmd-install/stage-partitioning/builtin/cmd-block-meta: FAIL: configurin
  g zpool: disk1p2f1_rootpool
   TIMED BLOCK_META: 9.727
   finish: cmd-install/stage-partitioning/builtin/cmd-block-meta: FAIL: curtin com
  mand block-meta
   Traceback (most recent call last):
     File "/snap/subiquity/5382/lib/python3.10/site-packages/curtin/commands/main.
  py", line 202, in main
       ret = args.func(args)
     File "/snap/subiquity/5382/lib/python3.10/site-packages/curtin/log.py", line 
  97, in wrapper
       return log_time("TIMED %s: " % msg, func, *args, **kwargs)
     File "/snap/subiquity/5382/lib/python3.10/site-packages/curtin/log.py", line 
  79, in log_time
       return func(*args, **kwargs)
     File "/snap/subiquity/5382/lib/python3.10/site-packages/curtin/commands/block
  _meta.py", line 127, in block_meta
       return meta_custom(args)
     File "/snap/subiquity/5382/lib/python3.10/site-packages/curtin/commands/block
  _meta.py", line 2248, in meta_custom
       handler(command, storage_config_dict, context)
     File "/snap/subiquity/5382/lib/python3.10/site-packages/curtin/commands/block
  _meta.py", line 1989, in zpool_handler
       vdevs = [get_path_to_storage_volume(v, storage_config)
     File "/snap/subiquity/5382/lib/python3.10/site-packages/curtin/commands/block
  _meta.py", line 1989, in <listcomp>
       vdevs = [get_path_to_storage_volume(v, storage_config)
     File "/snap/subiquity/5382/lib/python3.10/site-packages/curtin/commands/block
  _meta.py", line 576, in get_path_to_storage_volume
       raise ValueError("volume with id '%s' not found" % volume)
   ValueError: volume with id 'disk1p2fs1' not found
   volume with id 'disk1p2fs1' not found

  root at ubuntu-server:/# cat /autoinstall.yaml 
  ===========================================

  ---
  apt:
      disable_components: []
      geoip: true
      preferences:
      -   package: '*'
          pin: release a=noble-security
          pin-priority: 200
      preserve_sources_list: false
      primary:
      -   arches:
          - amd64
          uri: http://archive.ubuntu.com/ubuntu
      -   arches:
          - default
          uri: http://ports.ubuntu.com/ubuntu-ports
  drivers:
      install: false
  early-commands:
  - sed -i "s/vda/$(lsblk -x TYPE|grep disk |sort |head -1 |awk '{print $1}')/g"
      /autoinstall.yaml
  - sed -i "s/enp1s0/$(lshw -class network -short |awk '{print $2}' |grep ^e |head
      -1)/g" /autoinstall.yaml
  - export DEBIAN_FRONTEND="noninteractive" && dpkg --force-confnew --force-overwrite
      --auto-deconfigure --force-depends -i /cdrom/autoinstall/packages/*.deb
  - rm /etc/resolv.conf
  - echo "nameserver 8.8.8.8" >> /etc/resolv.conf
  identity:
      hostname: ubuntu
      password: $6$0HMdVn5Wf1g98AZw$1vagfgj.JWUVX/SVJVmYlfgT785K6eJpgK6uTw29Hl.yskYr6529s.mkjAQoJkrJTGKDaFb/Lxvy0OiqLp24F0
      realname: Ubuntu
      username: ubuntu
  kernel:
      package: linux-generic
  keyboard:
      layout: us
  late-commands:
  - mkdir -p /target/var/postinstall/packages
  - cp /cdrom/autoinstall/packages/*.deb /target/var/postinstall/packages/
  - echo '#!/bin/bash' > /target/tmp/post.sh
  - echo 'export DEBIAN_FRONTEND="noninteractive" && dpkg --force-confnew --force-overwrite
      --auto-deconfigure --force-depends -i /var/postinstall/packages/*.deb' >> /target/tmp/post.sh
  - chmod +x /target/tmp/post.sh
  - echo 'Australia/Melbourne' > /target/etc/timezone
  - rm /target/etc/localtime
  - curtin in-target --target=/target -- ln -s /usr/share/zoneinfo/Australia/Melbourne
      /etc/localtime
  - curtin in-target --target=/target -- /tmp/post.sh
  - echo 'GRUB_TERMINAL="serial console"' >> /target/etc/default/grub
  - echo 'GRUB_SERIAL_COMMAND="serial --speed=115200 --port=0x03f8"' >> /target/etc/default/grub
  - echo 'GRUB_CMDLINE_LINUX="console=tty0 console=tty0 console=vt0 console=ttyS0,115200
      console=ttyS1,115200"' >> /target/etc/default/grub
  - echo 'GRUB_TIMEOUT="10"' >> /target/etc/default/grub
  - 'echo ''ubuntu ALL=(ALL) NOPASSWD: ALL'' >> /target/etc/sudoers.d/ubuntu'
  - echo 'APT::Periodic::Update-Package-Lists "0";' > /target/etc/apt/apt.conf.d/20auto-upgrades
  - echo 'APT::Periodic::Download-Upgradeable-Packages "0";' >> /target/etc/apt/apt.conf.d/20auto-upgrades
  - echo 'APT::Periodic::AutocleanInterval "0";' >> /target/etc/apt/apt.conf.d/20auto-upgrades
  - echo 'APT::Periodic::Unattended-Upgrade "0";' >> /target/etc/apt/apt.conf.d/20auto-upgrades
  - curtin in-target --target=/target -- systemctl enable serial-getty at ttyS0.service
  - curtin in-target --target=/target -- systemctl start serial-getty at ttyS0.service
  - curtin in-target --target=/target -- systemctl enable serial-getty at ttyS1.service
  - curtin in-target --target=/target -- systemctl start serial-getty at ttyS1.service
  - curtin in-target --target=/target -- systemctl enable serial-getty at ttyS4.service
  - curtin in-target --target=/target -- systemctl start serial-getty at ttyS4.service
  - curtin in-target --target=/target -- update-grub
  locale: en_US.UTF-8
  network:
      ethernets:
          enp1s0:
              critical: true
              dhcp-identifier: mac
              dhcp4: true
      version: 2
  package_update: false
  package_upgrade: false
  ssh:
      allow-pw: false
      authorized-keys:
      - ''
      install-server: true
  storage:
      config:
      -   grub_device: true
          id: disk1
          name: ''
          path: /dev/vda
          preserve: false
          ptable: gpt
          type: disk
          wipe: superblock-recursive
      -   device: disk1
          flag: boot
          grub_device: true
          id: disk1p1
          number: 1
          preserve: false
          ptable: gpt
          size: 1127219200
          type: partition
          wipe: superblock-recursive
      -   fstype: fat32
          id: disk1p1fs1
          preserve: false
          type: format
          volume: disk1p1
      -   device: disk1p1fs1
          id: mount-2
          path: /boot/efi
          type: mount
      -   device: disk1
          flag: root
          grub_device: true
          id: disk1p2
          number: 2
          preserve: false
          size: -1
          type: partition
          wipe: superblock-recursive
      -   fstype: zfsroot
          id: disk1p2fs1
          preserve: false
          type: format
          volume: disk1p2
      -   device: disk1p2fs1
          id: disk1p2f1_rootpool
          mountpoint: /
          pool: rpool
          preserve: false
          type: zpool
          vdevs:
          - disk1p2fs1
      -   id: disk1_rootpool_container
          pool: disk1p2f1_rootpool
          preserve: false
          properties:
              canmount: 'off'
              mountpoint: none
          type: zfs
          volume: /ROOT
      -   id: disk1_rootpool_rootfs
          pool: disk1p2f1_rootpool
          preserve: false
          properties:
              canmount: noauto
              mountpoint: /
          type: zfs
          volume: /ROOT/zfsroot
      -   device: disk1p2fs1
          id: mount-disk1p2fs1
          path: /
          type: mount
      swap:
          swap: 2G
  user-data:
      timezone: Australia/Melbourne
  version: 1
  ...

To manage notifications about this bug go to:
https://bugs.launchpad.net/curtin/+bug/2045961/+subscriptions




More information about the foundations-bugs mailing list