Установка Ubuntu Focal без монитора на Raspberry Pi 4 - инициализация облачной инициализации Wi-Fi перед первой перезагрузкой

У меня возникли проблемы с настройкой полной автономной установки для Ubuntu Server Focal (ARM) на Raspberry pi 4 с использованием конфигурации облачной инициализации. Вся цель этого - упростить замену SD-карты в случае сбоя. Я пытаюсь использовать файлы конфигурации cloud-init, чтобы применить статическую конфигурацию для lan / wlan, создать нового пользователя, добавить авторизованные ключи ssh для нового пользователя, установить докер и т. Д. Однако, что бы я ни делал, кажется, что настройки Wi-Fi не применяются перед первой перезагрузкой.

Шаг 1: запишите образ на SD-карту. Шаг 2: перезапишите sd-карту system-boot / network_config и system-boot / user-data с помощью файлов конфигурации

сетевая конфигурация

version: 2
renderer: networkd
ethernets:
  eth0:
    dhcp4: false
    optional: true
    addresses: [192.168.100.8/24]
    gateway4: 192.168.100.2
    nameservers:
      addresses: [192.168.100.2, 8.8.8.8]
wifis:
  wlan0:
    optional: true
    access-points:
      "AP-NAME":
        password: "AP-Password"
    dhcp4: false
    addresses: [192.168.100.13/24]
    gateway4: 192.168.100.2
    nameservers:
      #search: [mydomain, otherdomain]
      addresses: [192.168.100.2, 8.8.8.8]

данные пользователя

chpasswd:
  expire: true
  list:
    - ubuntu:ubuntu

# Enable password authentication with the SSH daemon
ssh_pwauth: true
groups:
  - myuser
  - docker
users:
  - default
  - name: myuser
    gecos: My Name
    primary_group: myuser
    groups: sudo
    shell: /bin/bash
    ssh_authorized_keys:
      - ssh-rsa AAAA....
    lock_passwd: false
    passwd: $6$rounds=4096$7uRxBCbz9$SPdYdqd...

packages:
  - apt-transport-https
  - ca-certificates
  - curl
  - gnupg-agent
  - software-properties-common
  - git
runcmd:
  - curl -fsSL https://download.docker.com/linux/ubuntu/gpg | apt-key add -
  - add-apt-repository "deb [arch=arm64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
  - apt-get update -y
  - apt-get install -y docker-ce docker-ce-cli containerd.io
  - systemctl start docker
  - systemctl enable docker
## TODO: add git deployment and configure folders
power_state:
  mode: reboot

Во время первой загрузки cloud-init всегда применяет конфигурацию резервной сети.

Я также попытался применить безголовую конфигурацию для Wi-Fi, как описано здесь.

Создал wpa_supplicant.conf и скопировал его в системную загрузочную папку SD.

trl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
country=RO

network={
    ssid="AP-NAME"
    psk="AP-Password"
}

Также создал пустой файл ssh и скопировал его в загрузочную систему

Команды запуска всегда завершаются ошибкой, поскольку во время первой загрузки cloud-init применяет резервную конфигурацию сети. После перезагрузки применяются настройки lan / wlan, создается пользователь, добавляются авторизованные ключи ssh. Однако мне все еще нужно использовать ssh в PI и установить остальные пакеты: докер и т. Д., И я хотел избежать этого. Я делаю что-то неправильно?


person DragosN    schedule 16.07.2020    source источник
comment
Эй, ты когда-нибудь решал это?   -  person Christopher    schedule 21.08.2020
comment
У меня тоже с этим проблемы. Его специфика использования Wi-Fi только в качестве сетевого подключения. Все работает с портом Ethernet в качестве основного   -  person cgd    schedule 08.11.2020
comment
@Christopher nope, я проверю, работает ли рекомендация chd для использования порта Ethernet в качестве основного.   -  person DragosN    schedule 17.11.2020


Ответы (1)


Я не уверен, нашли ли вы когда-нибудь обходной путь, но я поделюсь некоторой информацией, которую нашел при изучении вариантов.

Примечание: во время первой загрузки ваш Raspberry Pi попытается подключиться к этой сети. Он потерпит неудачу с первого раза. Просто перезагрузите sudo reboot, и все заработает.

В этом репозитории есть интересный обходной путь и подход.

  • В нем говорится, что он был создан для 18.04, но он должен работать с 20.04, поскольку обе версии сервера используют netplan и systemd-networkd.

Лично я пошел другим путем.

  • I create custom images that contain my settings & packages, then burn to uSD or share via a TFTP server. I was surprised at how easy this was.
    • There's a good post on creating custom images here
    • Важная дополнительная информация находится здесь
person azrobbo    schedule 29.12.2020