Я развертывал Ubuntu (с 12.04) вместе с другими Linux с pxelinux много лет. С установщиком Debian он работает просто отлично. В эти дни я пытался развернуть 20.04, который также работает в основном. Только один вопрос, файл «user-data» никогда не был подобран. Что бы я ни делал, я всегда получаю все вопросы от установщика. Вот мое окружение:
autoinstall:
version : 1
apt:
preserve_sources_list: false
primary:
- arches: [default]
uri: [can't write since I don't have enough reputation]/images/ubuntu
удостоверение: {реальное имя: wrsadmin, имя пользователя: wrsadmin}
клавиатура: {layout: us, toggle: null, вариант: ''}
локаль: en_US
сеть :
ethernets:
enp0s3:
critical: true
dhcp-identifier: mac
dhcp4: true
nameservers:
addresses: [128.224.160.11, 128.224.160.12]
search: [wrs.com., corp.ad.wrs.com.]
version: 2
ssh:
allow-pw: true
authorized-keys: []
install-server: true
поздние команды:
- rm -f /target/etc/resolv.conf
- wget -O /target/etc/resolv.conf [can't write since I don't have enough reputation]/ubuntu/resolv.conf
- chattr +i /target/etc/resolv.conf
EOF
ЭТИКЕТКА Ubuntu 20. репутация не достаточна] / ubuntu / cloud-init /
Не могли бы вы помочь диагностировать, какую часть я сделал неправильно?
Я смог использовать эти шаги для автоматической установки на ВМ на основе BIOS. Они немного изменены из моих шагов UEFI. Надеюсь, они предоставят пример, который поможет вам разобраться в вашей проблеме. Вы можете адаптировать их к вашей среде
Все следующие шаги выполняются от имени пользователя root. Они были протестированы на сервере Ubuntu 18.04.
Установите сервер tftp, веб-сервер и файлы syslinux
apt-get -y install tftpd-hpa apache2 pxelinux
Настройте apache для обслуживания файлов из каталога tftp
cat > /etc/apache2/conf-available/tftp.conf <<EOF
<Directory /var/lib/tftpboot>
Options +FollowSymLinks +Indexes
Require all granted
</Directory>
Alias /tftp /var/lib/tftpboot
EOF
a2enconf tftp
systemctl restart apache2
Поместите файлы syslinux на место
cp /usr/lib/PXELINUX/gpxelinux.0 /var/lib/tftpboot/pxelinux.0.bios
cp /usr/lib/syslinux/modules/bios/*.c32 /var/lib/tftpboot
Загрузите live server iso
wget https://releases.ubuntu.com/20.04/ubuntu-20.04-live-server-amd64.iso -O /var/lib/tftpboot/ubuntu-20.04-live-server-amd64.iso
Извлеките ядро и initramfs из действующего сервера iso
mount /var/lib/tftpboot/ubuntu-20.04-live-server-amd64.iso /mnt/
cp /mnt/casper/vmlinuz /var/lib/tftpboot/
cp /mnt/casper/initrd /var/lib/tftpboot/
umount /mnt
Сконфигурируйте syslinux
MYIP=$(hostname --ip-address)
mkdir -p /var/lib/tftpboot/pxelinux.cfg
cat > /var/lib/tftpboot/pxelinux.cfg/default <<EOF
DEFAULT vesamenu.c32
TIMEOUT 600
ONTIMEOUT focal-live-install-autoinstall
PROMPT 0
NOESCAPE 1
LABEL focal-live-install
MENU DEFAULT
MENU label Install focal
KERNEL vmlinuz
INITRD initrd
APPEND root=/dev/ram0 ramdisk_size=1500000 ip=dhcp url=http://${MYIP}/tftp/ubuntu-20.04-live-server-amd64.iso
LABEL focal-live-install-autoinstall
MENU DEFAULT
MENU label Install focal - autoinstall
KERNEL vmlinuz
INITRD initrd
APPEND root=/dev/ram0 ramdisk_size=1500000 ip=dhcp url=http://${MYIP}/tftp/ubuntu-20.04-live-server-amd64.iso autoinstall ds=nocloud-net;s=http://${MYIP}/tftp/cloud-init-bios/
EOF
Сконфигурируйте cloud-init с помощью конфигурации автоустановки. Сначала я запустил установку вручную, чтобы получить сгенерированный файл / var / log / installer / autoinstall-user-data
для использования в качестве основы. Затем я внес изменения в зависимости от своих потребностей и обнаруженных ошибок.
mkdir -p /var/lib/tftpboot/cloud-init-bios/
cat > /var/lib/tftpboot/cloud-init-bios/meta-data <<EOF
instance-id: focal-autoinstall
EOF
cat > /var/lib/tftpboot/cloud-init-bios/user-data <<'EOF'
#cloud-config
autoinstall:
version: 1
# use interactive-sections to avoid an automatic reboot
#interactive-sections:
# - locale
apt:
# even set to no/false, geoip lookup still happens
#geoip: no
preserve_sources_list: false
primary:
- arches: [amd64, i386]
uri: http://us.archive.ubuntu.com/ubuntu
- arches: [default]
uri: http://ports.ubuntu.com/ubuntu-ports
# r00tme
identity: {hostname: focal-autoinstall, password: $6$.c38i4RIqZeF4RtR$hRu2RFep/.6DziHLnRqGOEImb15JT2i.K/F9ojBkK/79zqY30Ll2/xx6QClQfdelLe.ZjpeVYfE8xBBcyLspa/,
username: ubuntu}
keyboard: {layout: us, variant: ''}
locale: en_US.UTF-8
# interface name will probably be different
network:
network:
version: 2
ethernets:
ens192:
critical: true
dhcp-identifier: mac
dhcp4: true
ssh:
allow-pw: true
authorized-keys: []
install-server: true
# this creates an bios_grub partition, /boot partition, and root(/) lvm volume
storage:
config:
- {ptable: gpt, path: /dev/sda, wipe: superblock, preserve: false, name: '', grub_device: true,
type: disk, id: disk-sda}
- {device: disk-sda, size: 1048576, flag: bios_grub, number: 1, preserve: false,
type: partition, id: partition-0}
- {device: disk-sda, size: 1073741824, wipe: superblock, flag: '', number: 2,
preserve: false, type: partition, id: partition-1}
- {fstype: ext4, volume: partition-1, preserve: false, type: format, id: format-0}
- {device: disk-sda, size: -1, wipe: superblock, flag: '', number: 3,
preserve: false, type: partition, id: partition-2}
- name: ubuntu-vg
devices: [partition-2]
preserve: false
type: lvm_volgroup
id: lvm_volgroup-0
- {name: ubuntu-lv, volgroup: lvm_volgroup-0, size: 100%, preserve: false,
type: lvm_partition, id: lvm_partition-0}
- {fstype: ext4, volume: lvm_partition-0, preserve: false, type: format, id: format-1}
- {device: format-1, path: /, type: mount, id: mount-1}
- {device: format-0, path: /boot, type: mount, id: mount-0}
write_files:
# override the kernel package
- path: /run/kernel-meta-package
content: |
linux-virtual
owner: root:root
permissions: "0644"
# attempt to also use an answers file by providing a file at the default path. It did not seem to have any effect
#- path: /subiquity_config/answers.yaml
# content: |
# InstallProgress:
# reboot: no
# owner: root:root
# permissions: "0644"
EOF
Установите параметры DHCP 66,67 в соответствии с документацией для вашего DHCP-сервера.
На этом этапе вы должен иметь возможность загрузить сервер на основе UEFI и выполнить полностью автоматическую установку.
У меня была такая же проблема на настольном компьютере с веб-камерой USB. После обновления 20.04 там
Веб-камера появляется, когда я запускаю: $ lsusb
Веб-камера работает в Google Meet and Zoom
Первая запись показывает, что установщик загружает живое изображение, что я могу понять.
Но я не понимаю следующие две записи. И, конечно же, нет записи для загрузки файла автоустановки, что я понятия не имею, почему.
Когда я сделал это с сервером на основе UEFI (который использует grub вместо syslinux), мне пришлось экранировать точку с запятой в командной строки.
Попробуйте изменить
ds=nocloud-net;s=http://blah/ubuntu/cloud-init/
на
ds=nocloud-net\;s=http://blah/ubuntu/cloud-init/
. Я нашел, что самый простой способ проверить это в среде установщика - это использовать alt-f2
, чтобы получить консоль и использовать команду
dmesg | grep 'Command line'
Это покажет, передается ли полный аргумент ds
или если он передается только до ;