Тонкий клиент 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.
- копия
memdisk
& ISO образы в корень TFTP Добавить пункты меню в файл конфигурации 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.
- файл - не знаю почему, просто оставил.
Вы можете добавить «тихий» и «всплеск» к «красивой загрузке».
Пример организации сервера:
IP-адрес сервера загрузки: 192.168.0.99
Рабочая папка: /pxe_home/
Образ хранится: /pxe_home/img/lubuntu-22.04.1-desktop-amd64.iso
Образ смонтирован в /pxe_home/lubuntu/
Домашний каталог tftp: /pxe_home/
Сервер NFS настроен:
/pxe_home/lubuntu/ *(ro,insecure,root_squash,subtree_check,crossmnt)
Флаг crossmnt обязателен, если образ монтируется.
Конфигурация для 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 по сети?