Тонкий клиент Lubuntu через PXE-сервер с DHCP и TFTP

У меня есть 10 старых компьютеров (например, тонкие клиенты) без жесткого диска. Поэтому я решил использовать Lubuntu в качестве операционной системы. В моей работе у нас есть PXE-сервер с DHCP и TFTP, они создали дистрибутив Debian до и для menu.cfg, они использовали boot=live, но в lubuntu они используют nfs, а boot должен быть boot=casper, поэтому здесь начинается моя проблема я попытался изменить vmlinuz и initrd, но затем я получаю ошибку паники ядра. Есть ли скрипт, который я могу объединить squashfs и initrd.gz, так что тонкие клиенты начнут прямо через initrd.gz. ИЛИ есть ли другое решение?

3 ответа

Одним из способов является использование memdisk от syslinux-common пакет для загрузки с использованием ISO-образа напрямую через TFTP.

  1. копия memdisk & ISO образы в корень TFTP
  2. Добавить пункты меню в файл конфигурации PXE, Пример:

    LABEL slitaz
        MENU LABEL ^Slitaz.iso
        TEXT HELP
    Testing boot from iso.
        ENDTEXT 
        KERNEL memdisk
        APPEND initrd=slitaz-cooking.iso
    
    LABEL mini_ubutnu
        MENU LABEL Mini-Ubuntu
        KERNEL memdisk
        APPEND initrd=ubuntu_mini.iso
    

Вполне возможно запустить Lubuntu по сети. Пришлось копаться в initrd, но удалось запустить lubuntu-22.04.1-desktop-amd64 по сети. Для запуска нужно распаковать образ и открыть к нему доступ по tftp и nfs. Нужны следующие ключи во время загрузки:

      append initrd=.../casper/initrd netboot=nfs nfsroot=... ip=dhcp file=/cdrom/preseed/lubuntu.seed
  • … - Твой путь.
  • netboot — указывает, что образ компакт-диска должен быть смонтирован через nfs.
  • ip - настроить сетевой интерфейс через dhcp.
  • файл - не знаю почему, просто оставил.

Вы можете добавить «тихий» и «всплеск» к «красивой загрузке».


Пример организации сервера:

  1. IP-адрес сервера загрузки: 192.168.0.99

  2. Рабочая папка: /pxe_home/

  3. Образ хранится: /pxe_home/img/lubuntu-22.04.1-desktop-amd64.iso

  4. Образ смонтирован в /pxe_home/lubuntu/

  5. Домашний каталог tftp: /pxe_home/

  6. Сервер NFS настроен:

    /pxe_home/lubuntu/ *(ro,insecure,root_squash,subtree_check,crossmnt)

    Флаг crossmnt обязателен, если образ монтируется.

  7. Конфигурация для pxelinux.0:

    метка
    меню lubuntu метка
    ядра lubuntu lubuntu/casper/vmlinuz
    append initrd=lubuntu/casper/initrd netboot=nfs nfsroot=192.168.0.99:/pxe_home/lubuntu ip=dhcp file=/cdrom/preseed/lubuntu.seed

Одна проблема. Почему-то при загрузке по сети DNS не настраивается, хотя DHCP эту информацию передает. Из-за этого Lubuntu не видит интернет. Однако ручная настройка DNS-адресов решает проблему.

Почему и откуда:

Далее я пройдусь по порядку загрузки initrd и покажу, откуда берутся параметры загрузки.

  • /init
    87: Включение "conf/conf.d/default-boot-to-casper.conf" устанавливает "BOOT=casper" . Отдельный загрузочный параметр "boot=casper" можно не указывать. Загрузка conf/uuid.conf для будущей проверки смонтированного диска.
    279: Файл «/scripts/nfs» — просто пустышка. Затем вызываются его функции: mount_top, mount_premount, которые ничего полезного не делают.
    285: mountroot (/scripts/casper:898) импортируется из /scripts/${BOOT} (/scripts/casper).
  • /scripts/casper
    7: mountpoint=/cdrom
    8: LIVE_MEDIA_PATH=casper
    923: Запускаются сценарии /scripts/casper-premount. Если вы установите флаг загрузки «debian-installer/driver-update=», вы сможете добавить драйверы (scripts/casper-premount/10driver_updates:94).
    935: Фактическое монтирование происходит в do_netmount (/scripts/casper:204).
    213: Для загрузки через nfs переменная NETBOOT (ключ netboot, /scripts/casper:69) должна иметь значение «nfs» или любое другое неожиданное значение. Это запустит do_nfsmount (/scripts/casper:229).
    242 Монтирование компакт-диска в $mountpoint=/cdrom (scripts/casper:7).
    243: Проверка смонтированного каталога с помощью функций is_casper_path(/scripts/casper:85) иmatch_uuid(/scripts/casper:97):
    • is_casper_path: убедитесь, что /cdrom/casper является существующим каталогом и содержит образ корневой системы (файл *.squashfs)
    • match_uuid: Проверяет, соответствует ли файл conf/uuid.conf, загруженный в /init:87, файлу /cdrom/.disk/casper-uuid-*. Чтобы игнорировать проверку, нужно установить загрузочный ключ «ignore_uuid». Мне это было нужно, потому что я потерял папку .disk при распаковке. После того, как разобрался с креплением, проблем с этой проверкой больше не было.

Дальше все загружается само.

Посмотрите в https://help.ubuntu.com/community/PXEInstallMultiDistro

Когда-то я был в состоянии успешно загрузить lubuntu по сети с легкостью (как живой CD). Я не знаю, ищете ли вы опцию live cd или вы хотите иметь настоящее решение для тонких клиентов. Однако недавно у меня возникли проблемы с поиском правильной работы NFS. См. Мой пост об этом..... Какие настройки экспорта nfs мне нужны для загрузки живых дисков Ubuntu по сети?

Другие вопросы по тегам