Загрузка линукс по сети

Сетевая установка Linux

Недавно столкнулся с установкой Centos 7 в необычных условиях.

Во-первых, дома. То есть имел дело с локальными компьютером, а не с сервером с IPMI.

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

В моем распоряжении осталась сеть. Приведу пример установки Centos 7 по PXE и iPXE

Итак, начнем.

Как установить Linux через ipxe?
Как установить Linux через pxe?

Установка через PXE

Соединим ethernet кабелем компьютер1 — на котором будут DHCP, TFTP и компьютер2 — на который должна быть установлена ОС.

Добавим статичные настройки сетевого адаптера на компьютер1. Мой адрес 192.168.1.50.

Скачаем и установим TFTP. В этой программе настроим DHCP и TFTP сервер с которого отдадим IP адрес и установочные файлы компьютеру2.

Отключим брандмауэр и запустим tftpd с правами администратора. Выставим аналогичные установки, как на картинках. Возможно потребуется перезапуск tftpd.

На компьютере2 в boot меню выберем сетевой адаптер. В окне tftpd на компьютере1 будет отображаться шкала прогресса.

После этого, на компьютере2 загрузится окно инсталлятора ОС.

Установка Linux через iPXE

Скачаем образ ipxe.iso. Rufus-ом создадим загрузочную флешку на основе этого образа.

Выложим скрипт install.ipxe на любой веб сервер. О том, как поднять веб сервер на локальном компьютере можно узнать тут. Адрес моего скрипта будет таким sitename.ru/install.ipxe

Содержимое скрипта install.ipxe для установки Centos 7

По аналогии с этим скриптом для установки Centos 7, можете подготовить свой скрипт для установки другой ОС.

Соединим компьютер, на который необходимо установить Linux, и роутер ethernet кабелем. Вставим флешку и загрузимся с нее. После нажатия F12 появится ipxe консоль. Используем следующие команды для получения IP адреса и скачивания скрипта

После этого загрузится окно инсталлятора ОС.

Источник

Бездисковая загрузка по сети и жизнь после нее

История

Теория

По сути, для того, чтобы система загрузилась ей необходимо 3 компонента — ядро, начальное окружение initramfs и корневой каталог, в котором система будет работать.

Практика

Все действия проводятся на машине с ubuntu precise.

Для начала настроим PXE. Мануалов на эту тему уйма, поэтому я расскажу только самую суть.
Ставим ваш любимый dhcp сервер, например isc-dhcp-server, который будет раздавать машинкам ip адреса и указывать путь к файлу pxelinux.0, который будет отдавать tftp сервер (tftp-hpa или же atftp).

Пример конфига dhcp сервера. В примере pxe-сервер находится по адресу 10.0.0.1.

Запускаем tftp сервер (в ubuntu он имеет init-скрипт, но вполне вероятно, что вам придется запускать его и через inetd/xinetd).
Проверяем работоспособность. Кладем файл в каталог /var/lib/tftpboot и пробуем стянуть его tftp клиентом.

В принципе неважно, где вы возьмете файл pxelinux.0, так как он является просто начальным загрузчиком, в который мы передаем то, что надо грузить дальше.
Вы можете сделать красивую менюшку в загрузчике, но сейчас нам это не нужно, поэтому мой pxelinux.cfg/default выглядит так

rootfs

Образ rootfs собираем через debootstrap, чрутимся в него и ставим необходимые программы. Настраиваем сеть, hostname, фаервол и прочее, чем больше сделаем настроек, тем больше будет образ. Главное не забудьте сменить пароль на рута.

С нашим минимальным набором система получилась весом 200Мб.

Initramfs

В этом примере мы будем забирать образ корневой фс с веб-сервера, расположенного на нашем сервере сетевой загрузки, то есть на 10.0.0.1. Решение было таким просто потому, что в нашем initramfs была утилита wget. Чтобы не тянуть большой объем данных по сети, мы решили сжать образ. Это можно было бы сделать и обычным tar, но можно попробовать squashfs, тем более, что обычно в initramfs tar не встроен, с другой стороны, ничего не мешает его туда добавить.

Squashfs
Squashfs — это сжимающая файловая система, которая включена в ядро с версии 2.6.29. С ее помощью можно заархивировать каталог, примонтировать на loop устройство и читать с него, для записи же необходимо провести процедуру добавления файлов в архив. Так как при обращении к squashfs, вы читаете из архива, то это дает дополнительную нагрузку на cpu.

Для более эфферктивного сжатия вы можете использовать опцию -comp, чтобы установить тип сжатия, по умолчанию используется gzip.

Далее надо научить init из initramfs забирать образ корня и помещать его в оперативную память.

init в initramfs — это скрипт на sh, который производит разбор опций из cmdline, монтирует фс, делает switch_root и запускает гланый init-процесс системы.
Воспользуемся этим и допишем свои опции для cmdline. Напишем скрипт ram, который будет вызываться при значении опции boot=ram.

Через параметр rooturl можно указывать откуда качать образ корневой фс. Для работы со squashfs необходимо подгрузить ее модуль в ядро. Указываем в /etc/initramfs-tools/initramfs.conf BOOT=ram и пересобираем initramfs

Включаем машинку, на которой будем тестировать, и смотрим на происходящее. После успешной загрузки мы получили бездисковую систему, которая занимает в памяти около 300Мб, при этом мы может писать в нее, но после ребута, система вернется в свое первоначальное состояние.

Читайте также:  Microsoft wifi windows 10 что это

В это примере, мы использовали squashfs просто для сжатия образа, но почему бы нам не попробовать примонтировать корневой раздел в squashfs и не посмотреть, что получится? Меняем наш скрипт, в функции do_rammount() оставляем только монтирование squashfs.

Пересобираем initramfs, запускаем, смотрим. Система загружается в режиме ro, но зато занимает в памяти всего около 180Мб.
В каких-то случаях монтирование в режиме ro это хорошо, но нас это не устраивает, но и просто так тратить оперативную память нам тоже не хочется. Выход же был найден при помощи Aufs.

Aufs
Aufs позволяет делать каскадно-объединённое монтирование файловых систем — одну в режиме только на чтение, а вторую в rw. Работает она в режиме copy-on-write, то есть все изменения записываются на rw систему и после этого чтение производится с нее же.
Опять переписываем наш скрипт.
В фукнцию mountroot() добавляем

А фукнцию do_rammount() приводим к следующему виду:

Пересобираем initramfs, запускаем, смотрим. Система занимает в памяти 181Мб, при этом мы можем менять ее, писать, читать. Все изменения хранятся отдельно в /mnt/rw, а сама система хранится в /mnt/ro.

В результате мы получили систему, которая грузится по сети, занимает небольшой объем в памяти, при этом после каждой перезагрузки пропадают все изменения (поэтому надо заранее собирать все нужные продукты жизнедеятельности системы в надежное место).

Все вышеперечисленные способы имеют право на жизнь. Надеюсь, что эта информация вам пригодится, а мне же будет интересно почитать/послушать ваши комментарии.
Спасибо за внимание.

Источник

Бездисковые рабочие станции. Загрузка по сети полноценного linux

Настройка сервера

Ставим Debian cdimage.debian.org/debian-cd/6.0.3/amd64/bt-cd
Для того чтобы система раздавала интернет пишем правило для iptables
/sbin/iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE

и сохраняем их
iptables-save > /etc/iptables.up.rules

включаем форвардинг
echo «1» > /proc/sys/net/ipv4/ip_forward

редактируем
apt-get install mc
mcedit /etc/sysctl.conf
добавляем в него строчку:
net.ipv4.ip_forward = 1

Установка pureftpd в качестве DHCP сервера

apt-get install dnsmasq

настравиваем для загрузки по сети
mcedit /etc/apt-get install dnsmasq
раскомментируем строку
dhcp-boot=pxelinux.0

и задаём диапазон раздаваемых ip-адресов
dhcp-range=192.168.100.2,192.168.100.253,12h

Установка NFS

apt-get install nfs-kernel-server

если при запуске будет выдавать ошибку Permission denied — перезагрузить сервер
создаём каталог для клиентской ос
mkdir /kubuntu32
cd /kubuntu32

устанавливаем debootstrap
wget http://ftp.debian.org/debian/pool/main/d/debootstrap/debootstrap_1.0.38_all.deb
apt-get install binutils
ar -x debootstrap_1.0.38_all.deb
cd /
zcat /kubuntu32/data.tar.gz | tar xv
скачиваем клиентскую ОС
debootstrap —arch i386 oneiric /kubuntu32 http://mirrors.uaip.org/ubuntu/

настраиваем NFS
mcedit /etc/exports

дописываем путь к клиентской файловой системе и права клиента
/kubuntu32 192.168.100.0/255.255.255.0(rw,sync,no_root_squash,no_subtree_check)

синхронизируем настройки
exportfs -rv

перегружаем NFS-сервер
/etc/init.d/nfs-kernel-server restart

корректируем список зеркал
mcedit /kubuntu32/etc/apt/sources.list
куда вписываем список зеркал которые будут доступны
пользователям клиентской Ubuntu

Настройка клиентской Ubuntu для загрузки по сети

Изменяем кореневой каталог
chroot /kubuntu32

выставляем пароль для root
passwd
настройка ядра
apt-get update
apt-get install mc
mcedit /etc/initramfs-tools/initramfs.conf

ставим
MODULES=netboot
BOOT=nfs

загружаем ядро linux (в окне при установке выбираем yes — продолжить установку без загрузчика)
apt-get install linux-image

создаём образ initramfs
mkdir /bootimg
mkinitramfs -o /bootimg/initrd.img 3.0.0-13-generic
cp /boot/vmlinuz-3.0.0-13-generic /bootimg/vmlinuz

редактируем сетевые интерфейсы
mcedit /etc/network/interfaces

добавляем
auto eth0
iface eth0 inet manual

редактируем разбивку диска
mcedit /etc/fstab
# /etc/fstab: static file system information.
#
# proc /proc proc defaults 0 0
/dev/nfs / nfs defaults 1 1

выходим из клиентской файловой системы
exit

Установка TFTP сервера

apt-get install tftpd-hpa

в появившемся диалоговом окне пишем /tftpboot
настраиваем TFTP сервер
mcedit /etc/default/tftpd-hpa

указываем кореть сервера
TFTP_DIRECTORY=»/tftpboot»

Настройка загрузки по сети

cd /tftpboot
wget http://mirrors.uaip.org/ubuntu/dists/oneiric/main/installer-i386/current/images/netboot/pxelinux.0
mkdir pxelinux.cfg
mcedit pxelinux.cfg/default

указываем пути к образам ядра и к корню подгружаемой файловой системы
DEFAULT linux
LABEL linux
KERNEL vmlinuz
APPEND root=/dev/nfs initrd=initrd.img nfsroot=192.168.100.1:/kubuntu32 ip=dhcp rw
PROMPT 0
TIMEOUT 0
скачиваем образы
cp /kubuntu32/bootimg/vmlinuz /tftpboot/vmlinuz
chmod 644 /tftpboot/vmlinuz
cp /kubuntu32/bootimg/initrd.img /tftpboot/initrd.img
chmod -R 777 /tftpboot

Настройка клиентов

в настройках BIOS выставляем загрузку по сети, мне нужная опция попадалась в таких местах:
Boot->Boot Settings Configuration->Boot From Onboard NAN=Enabled

Запускаем клиентский компьютер, заходим под root и указанным выше паролем
создаём тестового пользователя
adduser test

устанавливаем графическую среду KDE
apt-get install kubuntu-desktop

по желанию можно еще и GNOME поставить
apt-get install kubuntu-desktop

тогда пользователь при логине сможет выбрать в чём работать

Источник

Как установить Linux из сети

#Defaults for tftpd-hpa
RUN_DAEMON=»yes»
OPTIONS=»-l -s /var/lib/tftpboot»

Создаём нужный каталог: mkdir /var/lib/tftpboot, и стартуем сервис invoke-rc.d tftpd-hpa start

atftpd:
После установки обнаруживаем, что по-умолчанию этот сервис работает через inetd. Я, почему-то, не фанат этого метода, поэтому первым делом закомментировал соответствующую строку в /etc/inetd.conf. Затем редактируем /etc/default/atftpd:

USE_INETD=false
OPTIONS=»—daemon —tftpd-timeout 1500 —no-multicast —retry-timeout 20 —logfile /var/log/atftpd.log —maxthread 100 —verbose=5 /var/lib/tftpboot»

—tftpd-timeout — время жизни потока, при отсутствии запросов
—retry-timeout — таймаут отдачи файла
у меня установлены большие таймауты, т.к. сервис транслируется в городскую локальную сеть, которая периодически прогибается от обилия абонентов, и не справляется с потоком запросов.
Ну и, как и в предыдущем пункте, — создаём нужный каталог: mkdir /var/lib/tftpboot, и стартуем сервис invoke-rc.d atftpd start

Теперь у нас есть tftp-сервер. Один шаг мы сделали 🙂
Далее — настройка dhcp:

    dhcp3:
    В конфигурационный файл /etc/dhcp3/dhcpd.conf добавляем информацию о загрузке:

    filename «pxelinux.0»;
    next-server ;

    Если tftpd установлен на том же сервере, что и dhcpd — директиву next-server можно опустить. И перезапускаем dhcp3-server: invoke-rc.d dhcp3-server restart

    Источник

    Разбираемся с загрузкой ArchLinux по сети

    В предыдущей статье мы подготовили базовую систему. Закончим настройку в следующей статье.

    Здесь мы создадим новую систему Arch Linux, способную загружаться по сети и автоматически запускать браузер Firefox, а между делом разберёмся с необходимой функциональностью загрузочного сервера. Потом настроим сам сервер и попробуем с него загрузиться. Всё произойдёт в точности, как на картинке, которую нашёл гугл по запросу «PXE»:

    Снова устанавливаем Linux

    Archlinux выгодно отличается от готовых дистрибутивов тем, что установка новой системы из рабочей машины осуществляется точно так же, как при использовании установочного образа, и в обоих случаях вы получаете самую актуальную на данный момент версию системы. Понадобятся лишь небольшие установочные скрипты:

    Совершенно предсказуемое начало:

    Установим только базовые пакеты, поэтому:

    Далее повторите все действия вплоть до установки загрузчика согласно предыдущей статье. Вот чек-лист:

    • проведите русификацию (интернационализацию);
    • укажите часовой пояс и настройте автозапуск службы NTP;
    • добавьте пользователя username и заблокируйте его пароль от изменения.

    Сравним загрузку с диска и загрузку по сети

    В предыдущей статье мы рассматривали процесс загрузки Linux с точки зрения внутреннего накопителя. Сейчас мы представим происходящее глазами сетевой карты. Картинка из заголовка хорошо иллюстрирует события за исключением того, что все серверы в нашем случае будут работать на одном компьютере.

    Сразу после включения компьютера, срабатывает код PXE (Preboot eXecution Environment, произносится пикси — спасибо вики), разместившийся непосредственно в ПЗУ сетевой карты. Его задача — найти загрузчик и передать ему управление.

    Сетевой адаптер совершенно не представляет в какой сети сейчас находится, поэтому назначает себе адрес 0.0.0.0 и отправляет сообщение DHCPDISCOVER. К сообщению прикреплются паспортные данные, которые обязательно нам пригодятся:

    • ARCH Option 93 — архитектура PXE клиента (UEFI, BIOS);
    • Vendor-Class Option 60 — идентификатор, который у всех PXE клиентов имеет вид «PXEClient:Arch:xxxxx:UNDI:yyyzzz», где цифры xxxxx – архитектура клиента, yyyzzz – мажорная и минорная версии драйвера UNDI (Universal Network Driver Interface).

    Адаптер ожидает получить ответ от DHCP сервера по протоколу BOOTP (Bootstrap Protocol), где помимо нужного IP адреса, маски подсети и адреса шлюза, присутствует информация об адресе TFTP-сервера и названии файла загрузчика, который с него следует забрать. Сервер TFTP, в свою очередь, просто отдаёт любому желающему любые файлы, которые у него попросят.

    После получения ответа и применения сетевых настроек, дальнейшее управление загрузкой передаётся полученному файлу, размер которого не может превышать 32 кБ, поэтому используется двухстадийная загрузка. Всё необходимое для отображения на экране загрузочного меню докачивается следом по тому же протоколу TFTP. Подавляющее большинство руководств по сетевой загрузке использует загрузчик pxelinux, но GRUB умеет то же самое, и даже больше: в нём есть разные загрузчики для разных архитектур, включая UEFI.

    Далее загрузка приостанавливается на время отображения загрузочного меню, а потом по тому же протоколу TFTP докачиваются выбранные файлы vmlinuz и initramfs, которым передается дальнейшее управление загрузкой. На этом этапе уже нет вообще никакой разницы в механизме загрузки по сети или с внутреннего накопителя.

    Настраиваем загрузку по сети с помощью GRUB

    Поскольку GRUB на нашем сервере уже есть, создадим с его помощью структуру папок для сетевого клиента вот таким образом:

    В папке $root/boot появится папка grub и несколько других. Эту файловую структуру мы будем целиком «отдавать» с помощью TFTP-сервера. Сейчас мы используем 64-битный ArchLinux по той причине, что в 32-битной системе нет папки /grub/x86_64-efi/, которая требуется для загрузки систем UEFI. Можно взять эту папку с нашего 64-битного сервера и в неизменном виде перенести на 32-битный сервер, тогда в нём также появится поддержка UEFI.

    Создайте файл конфигурации загрузчика со следующим содержимым:

    Я взял файл grub.cfg с сервера и убрал из него всё то, что не участвует в отображении загрузочного меню GRUB или как-то связано с дисками.

    Обратите внимание на знакомую нам строку с параметрами ядра:

    Как и в предыдущий раз присваиваем значение переменной «ip». Напоминаю, что она используется в обработчике «net», который мы приспособили для настройки сетевой карты в загрузочном сервере. Здесь снова указывается статический IP адрес и постоянное имя сетевой карты eth0. Значения $net_default_ip и $net_default_server подставляются GRUB самостоятельно на основании данных, полученных из самого первого DHCP запроса. $net_default_ip – это выделенный для нашей машины IP адрес, а $net_default_server — IP адрес загрузочного сервера.

    Большинство руководств по сетевой загрузке (среди обнаруженных на просторах рунета), предлагают устанавливать переменную так «ip=. eth0:dhcp», что вынуждает обработчик net отправлять новый запрос DHCPDISCOVER для повторного получения сетевых настроек.

    Нет объективной причины лишний раз «спамить» DHCP-сервер и ждать, пока он откликнется, поэтому снова используем статику и не забываем указать DNS-серверы. Такую задачу мы уже решали, поэтому просто копируем нужные файлы и добавляем службу в автозагрузку:

    Возвращаемся к строке с параметрами ядра. Ещё незнакомая нам команда add_efi_memmap (EFI memory map) добавляет EFI memory map доступной RAM. В прошлый раз мы её намеренно пропустили, из-за сравнительно сложной предварительной разметки носителя для поддержки UEFI. Сейчас нам ничего размечать не нужно, потому что файловая система на загрузочном сервере уже существует и будет использоваться в неизменном виде.

    Переменная ядра — nfsroot показывает, где именно в сети нужно искать корневую файловую систему. Она выполняет ту же самую функцию, что и переменная root в загрузочном сервере. В данном случае указан адрес NFS-сервера, который в нашем случае совпадает с TFTP-сервером, но это совершенно необязательно.

    Подготавливаем initramfs

    За подключение корневой файловой системы по протоколу NFS отвечает обработчик net. В прошлый раз мы убирали из него эту функциональность, но сейчас она нам понадобится, правда, в немного доработанном виде. Дело в том, что обработчик net из коробки поддерживает подключение только по протоколу NFS версии 3. К счастью, поддержка 4-й версии добавляется очень просто.

    Сначала установим пакет, в который входит нужный нам обработчик net, а также пакет утилит для работы с NFS (модуль nfsv4 и программа mount.nfs4):

    Исправим обработчик net из папки hooks (вместо команды для монтирования nfsmount, теперь будем использовать mount.nfs4):

    С помощью установщика обработчика из папки install добавим модуль nfsv4 и программу mount.nfsv4 в iniramfs. Сначала копируем и переименовываем заготовку:

    Теперь исправляем только одну функцию build(), а всё остальное не трогаем:

    Добавляем обработчик в initramfs путём исправления строки в файле mkinitcpio.conf:

    Если ничего не трогать, то обычно для сжатия файла initramfs используется быстрый архиватор gzip. Мы не настолько торопимся, насколько хотим компрессию посильнее, поэтому воспользуемся xz. Снимаем комментарий с этой строки в файле mkinitcpio.conf:

    Архивация xz происходит значительно дольше, но файл initramfs при этом уменьшается минимум в пару раз, из-за чего гораздо быстрее передается TFTP сервером по сети. Копируем пресет с нашего сервера, чтобы в ходе работы генерировался только один файл initramfs, после чего запускаем mkinitcpio:

    Напоследок отредактируем fstab. Здесь можно подобрать опции монтирования корневой файловой системы, чтобы оптимизировать её работу, но мы ничего трогать не будем:

    Базовая установка клиентской системы на этом закончена. Но мы хотим добавить графическое окружение и автоматический запуск Firefox.

    Загружаемся в Firefox

    Для уменьшения объема памяти, занимаемого нашей системой, мы откажемся от использования экранного менеджера и остановимся на простейшем оконном менеджере, например, openbox с автоматической авторизацией пользователя username. Использование «облегченных» компонентов позволит системе замечательно запускаться и работать даже на самом древнем железе.

    Установим модули для поддержки VirtualBox, сервер X, симпатичный TTF-шрифт, openbox и firefox (все остальные модули будут установлены как зависимости):

    Включаем автозагрузку службы virtualbox:

    Добавим автоматический вход пользователя username без ввода пароля, для этого изменим строку запуска agetty:

    Сразу же после авторизации пользователя выполняется файл

    /.bash_profile, из его домашней папки, куда мы добавляем автоматический запуск графического сервера:

    За запуском X-сервера должен стартовать openbox:

    Закомментируйте следующие строки в самом конце файла (от строки twm до добавленной нами строки с запуском openbox, но не включая её):

    Копируем конфигурационные файлы openbox

    Добавляем firefox в автозагрузку в окружении openbox:

    Поскольку мы только что от имени суперпользователя хозяйничали в домашней папке пользователя username, нам нужно вернуть ему права на все файлы, расположенные в его папке:

    Подготовка системы к загрузке по сети закончена, и настала пора переходить к настройке загрузочного сервера. Теперь мы знаем, что для загрузки нам понадобятся:

    • DHCP-сервер с поддержкой протокола BOOTP для настройки сетевой карты;
    • TFTP-сервер для передачи загрузчика и файлов vmlinuz и initramfs, которые у нас находятся в папке $root/boot/grub;
    • NFS-сервер для размещения корневой файловой системы, которая лежит у нас в папке $root.

    Настраиваем загрузочный сервер

    Дальнейшие шаги с небольшими изменениями повторяют эту статью из вики, поэтому минимум комментариев с моей стороны.

    Устанавливаем DHCP сервер

    и приводим содержимое конфигурационного файла /etc/dhcpd.conf к следующему виду:

    Как видите, DHCP-сервер будет отвечать только на те запросы DHCPDISCOVER, которые придут от PXE клиентов, а остальные просто проигнорируются.

    Запускаем DHCP сервер:

    Устанавливаем TFTP сервер

    Скачиваем и устанавливаем необходимый пакет:

    Нам нужно, чтобы TFTP сервер предоставлял доступ к файлам загрузчика, которые мы разместили в папке $root/boot. Для этого модифицируем запуск службы уже проверенным способом:

    Первая строка «ExecStart=» отменяет выполнение команды, указанной в оригинальном файле $root/usr/lib/systemd/system/tftpd.service, а вместо нее выполняется «/usr/bin/in.tftpd -s /srv/nfs/diskless/boot». Только в том случае, когда служба запускается однократно (Type=oneshot), мы можем использовать несколько строк ExecStart= чтобы выполнять команды одну за другой. Это не тот случай, поэтому отменяем одну команду и выполняем другую.

    Запускаем TFTP сервер:

    Устанавливаем NFS сервер

    Добавляем папку, в которую мы установили систему, в список экспортируемых:

    Не забываем использовать синтаксис NFS v.4 указывая путь относительно папки с fsid=root (корневой по отношению ко всем остальным экспортируемым папкам, без указания которой ничего работать не будет).

    Запускаем службы, обеспечивающие работу NFS-сервера:

    На этом загрузочный сервер готов к работе.

    Пробуем загрузиться по сети

    Проследим за процессом загрузки с сервера с помощью программы tcpdump

    Первая строка «ловит» запрос DHCPDISCOVER от PXE клиента. В выводе, отфильтрованном второй строкой, будут перечислены имена всех файлов, запрашиваемых по TFTP. Третья строка показывает два tcp-syn запроса, отправляемых в самом начале подключения по протоколу NFS (первое соединение осуществляется обработчиком net, а второе переподключение происходит во время обработки файла fstab).

    Создаём новую виртуальную машину, для краткости будем называть её «клиент». В настройках сети снова указываем тип подключения «Сетевой мост» и включаем машину. Сразу же нажимаем клавишу F12 на клавиатуре для выбора загрузочного устройства, а потом клавишу l, чтобы загрузиться по сети.

    Дождитесь окончания загрузки. Если всё в порядке, то на сервере добавляем используемые службы в автозагрузку:

    Все серверы DHCP, TFTP и NFS мы запустили на одном загрузочном сервере. Делать так необязательно. Например, роутеры Mikrotik поддерживают Bootp и позволяют использовать себя в качестве TFTP — просто закачайте туда все нужные файлы и проверьте сетевые настройки.

    Сейчас графическое окружение будет работать только в VirtualBox, потому что мы не устанавливали драйверы для «железных» видеокарт. Мы решим проблему автоматического подбора нужных драйверов в следующей статье. Заодно ускорим загрузку системы и сделаем из неё «живой образ».

    Источник

    Читайте также:  Linux для обработки звука
Оцените статью