Представьте: вы настроили PXE-загрузку на Raspberry Pi 5, всё работает идеально – кроме одного. При попытке обновить пакеты через apt-get update система упорно ругается на невалидные подписи репозиториев. Эта проблема, как оказалось, связана не с самим Debian или Raspberry Pi OS, а с тонкостями настройки сетевых файловых систем. Давайте разберёмся, почему так происходит и как это исправить без переустановки всего окружения.
Почему apt не доверяет репозиториям при PXE-загрузке?
Ошибки вида «At least one invalid signature was encountered» обычно указывают на проблемы с проверкой GPG-ключей. Но если вы точно скопировали файловую систему с рабочего SD-носителя через rsync (с сохранением прав!), причина кроется глубже – в механизме монтирования NFS-шары.
Ключевой момент: при PXE-загрузке корневая файловая система монтируется с сервера, и если NFS не позволяет клиенту работать с правами root, это ломает целостность метаданных. Например, файлы в /var/lib/apt/lists/ и /etc/apt/trusted.gpg.d/ могут оказаться в состоянии, которое система считает «подозрительным».
Проверьте: сравните права на файлы в оригинальной системе (с SD-карты) и в NFS-шаре. Даже если вы использовали
rsync --perms
, настройки сервера могут «подчищать» UID/GID при монтировании.
Настройка NFS в TrueNAS Scale для PXE-загрузки
TrueNAS по умолчанию использует параметры безопасности, которые не всегда совместимы с требованиями Linux-систем для загрузки. Вот как настроить шары правильно:
1. Maproot User/Group:
В интерфейсе TrueNAS перейдите в настройки NFS-шары (Services → NFS → Shares). Для каждой из них:
– Установите Maproot User → root
– Maproot Group → wheel
2. Проверьте права на каталоги:
ls -lZ /mnt/storage/tftp/rpi-pxe/etc/apt/trusted.gpg.d/
Если владелец файлов – не root, или SELinux-контекст отличается от оригинального, это вызовет конфликты.
3. Ручная правка /etc/exports (для продвинутых):
Если вы предпочитаете конфигурацию через командную строку, добавьте опцию no_root_squash:
"/mnt/storage/tftp/rpi-pxe" 192.168.1.0/24(rw,no_root_squash,subtree_check)
# Пример (не используйте в продакшене!):
/mnt/storage/tftp/rpi-pxe 192.168.1.0/24(sec=sys,rw,no_root_squash,insecure)
Дополнительные проверки и решения
Если ошибки остаются, попробуйте:
– Обновить ключи APT вручную:
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys [ID_ключа]
ID ключей можно найти в ошибках вывода apt-get update.
– Проверить синхронизацию времени:
Некорректное время на клиенте ломает проверку подписей. Установите chrony:
sudo apt install chrony && sudo systemctl restart chronyd
– Временное отключение проверки подписей (только для тестирования!):
Создайте файл /etc/apt/apt.conf.d/99insecure:
APT::Get::AllowUnauthenticated "true";
Важно:
no_root_squash
снижает безопасность! Используйте его только в доверенных сетях и ограничьте доступ подсетью (например, 192.168.1.0/24 вместо 0.0.0.0/0).
Если вы дочитали до этого момента, скорее всего, проблема уже решена. Но если нет – проверьте, не блокирует ли брандмауэр доступ к портам 123 (NTP) или 80/443 (для загрузки пакетов). Иногда «неочевидные» сетевые ограничения становятся последним камнем преткновения в таких кейсах.