NetInstall start: различия между версиями
Строка 96: | Строка 96: | ||
{{Note|Параметр next-server следует указывать даже если для размещения служб DHCP и TFTP используется один и тот же сервер}} | {{Note|Параметр next-server следует указывать даже если для размещения служб DHCP и TFTP используется один и тот же сервер}} | ||
=== Настраиваем TFTP-сервер === | |||
TFTP-сервер - Trivial File Transfer Protocol - используется для загрузки загрузочного образа на клиентскую машину. | |||
Правим файл {{path|/etc/xinetd.d/tftp}}: | |||
# mcedit /etc/xinetd.d/tftp | |||
Приводим строчку {{path|disable}} к следующему виду: | |||
<syntaxhighlight lang="bash"> | |||
disable = no | |||
</syntaxhighlight> | |||
Правим файл {{path|/etc/xinetd.conf}}: | |||
# mcedit /etc/xinetd.conf | |||
Приводим строчку {{path|<nowiki>only_from = 127.0.0.1</nowiki>}} к следующему виду: | |||
<syntaxhighlight lang="bash"> | |||
# only_from = 127.0.0.1 | |||
</syntaxhighlight> | |||
Перезапускаем службу xinetd: | |||
<syntaxhighlight lang="bash"> | |||
# systemctl restart xinetd | |||
</syntaxhighlight> | |||
---------- | |||
====Публикация образа==== | |||
Скачиваем любой дистрибутив ALT Linux, например, Starterkit XFCE - http://nightly.altlinux.org/p10/permalink/alt-p10-xfce-latest-x86_64.iso. | |||
{{Note|Вы можете скачать и использовать любой другой дистрибутив. Стартеркит взят для примера.}} | |||
Например, образ скачан в /home/ladmin/Загрузки/alt-p10-xfce-latest-x86_64.iso. | |||
Монтируем данный ISO-образ: | |||
<syntaxhighlight lang="bash"># mkdir -p /mnt/iso/ | |||
# mount -o loop '/home/ladmin/Загрузки/alt-p10-xfce-latest-x86_64.iso' /mnt/iso</syntaxhighlight> | |||
Создаем каталог для ОС: | |||
<syntaxhighlight lang="bash"># mkdir -p /var/lib/tftpboot/images/ALT/</syntaxhighlight> | |||
Копируем каталог boot, содержащий ядро ОС и начальную файловую систему, выполнив команду | |||
<syntaxhighlight lang="bash"># cp -vR /mnt/iso/* /var/lib/tftpboot/images/ALT/</syntaxhighlight> | |||
Отмонтируем образ: | |||
<syntaxhighlight lang="bash"># umount /mnt/iso/</syntaxhighlight> | |||
==== Настройка установки в Legacy ==== | |||
Создаем подкаталог для хранения файлов загрузочного образа в /var/lib/tftpboot: | |||
{{Note|Да, это каталог с именем '''pxelinux.cfg'''}} | |||
<syntaxhighlight lang="bash"># mkdir -p /var/lib/tftpboot/pxelinux.cfg</syntaxhighlight> | |||
Копируем файл загрузчика pxelinux в каталог, указанный в конфигурации TFTP: | |||
<syntaxhighlight lang="bash"># cp /usr/lib/syslinux/pxelinux.0 /var/lib/tftpboot/ | |||
</syntaxhighlight> | |||
Создаем файл конфигурации загрузчика по умолчанию {{path|/var/lib/tftpboot/pxelinux.cfg/default}} и файл {{path|/var/lib/tftpboot/pxelinux.cfg/default.msg}} | |||
{{note|Можно скопировать файл конфигурации загрузчика {{path|/var/lib/tftpboot/pxelinux.cfg/default}} с диска: | |||
<syntaxhighlight lang="bash"># cp /var/lib/tftpboot/images/ALT/syslinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default | |||
# chmod 644 /var/lib/tftpboot/pxelinux.cfg/default | |||
</syntaxhighlight>}} | |||
Содержимое файла {{path|/var/lib/tftpboot/pxelinux.cfg/default}}. | |||
Правим следующей командой: | |||
<pre># mcedit /var/lib/tftpboot/pxelinux.cfg/default</pre> | |||
<syntaxhighlight lang="cfg"> | |||
timeout 120 | |||
prompt 1 | |||
default local | |||
display pxelinux.cfg/default.msg | |||
label ftp | |||
kernel /boot/vmlinuz | |||
append initrd=/boot/initrd.img fastboot changedisk automatic=method:ftp,network:dhcp,server:10.0.2.4,directory:/netinst/mnt/ stagename=altinst ramdisk_size=669397 showopts nosplash mpath lang=ru_RU | |||
</syntaxhighlight> | |||
Где: | |||
{{Note|Тут нам нужно обратить внимание на следующие параметры: | |||
*server - Адрес компьютера с PXE-сервером (см. таблицу в начале) | |||
*directory - | |||
*stagename - имя большого файла, содержащего ФС образа ALT Linux, в Starterkits это live, в других он может отличаться}} | |||
Содержимое файла {{path|/var/lib/tftpboot/pxelinux.cfg/default.msg}}: | |||
<syntaxhighlight lang="cfg"> | |||
Type one of: | |||
ftp - install from ftp archive | |||
</syntaxhighlight> | |||
==== Настройка установки в UEFI ==== | |||
Скопировать файлы загрузчика shimx64.efi и grubx64.efi в каталог, указанный в конфигурации TFTP: | |||
<syntaxhighlight lang="bash"># cp /usr/lib64/efi/shimx64.efi /var/lib/tftpboot | |||
# cp /usr/lib64/efi/grubx64.efi /var/lib/tftpboot</syntaxhighlight> | |||
Создать файл конфигурации загрузчика по умолчанию grub.cfg в {{path|/var/lib/tftpboot}}. | |||
{{note|Можно взять файл с диска: | |||
<syntaxhighlight lang="bash"># cp /srv/public/netinst/mnt/boot/grub/grub.cfg /var/lib/tftpboot/ | |||
# chmod 644 /var/lib/tftpboot/grub.cfg | |||
</syntaxhighlight>}} | |||
Пример файла {{path|/var/lib/tftpboot/grub.cfg}}: | |||
<syntaxhighlight lang="cfg"> | |||
set timeout=120 | |||
set default=ftp | |||
menuentry $"Install FTP "'ALT Server 10.1 x86_64'--id 'ftp' { | |||
echo $"Loading Linux vmlinuz ..." | |||
linux /boot/vmlinuz fastboot changedisk automatic=method:ftp,network:dhcp,server:192.168.0.17,directory:/netinst/mnt/ stagename=altinst ramdisk_size=669397 vga=normal mpath lang=ru_RU | |||
echo $"Loading initial ramdisk ..." | |||
initrd /boot/initrd.img | |||
} | |||
menuentry $"Install NFS "'ALT Server 10.1 x86_64' --id 'nfs' { | |||
echo $"Loading Linux vmlinuz ..." | |||
linux /boot/vmlinuz fastboot changedisk automatic=method:nfs,network:dhcp,server:192.168.0.17,directory:/srv/public/netinst/mnt/ stagename=altinst ramdisk_size=669397 vga=normal mpath lang=ru_RU | |||
echo $"Loading initial ramdisk ..." | |||
initrd /boot/initrd.img | |||
} | |||
menuentry $"Memory Test (may not work with Secure Boot)" --id 'memtest' { | |||
linux /boot/memtest.efi | |||
} | |||
</syntaxhighlight> | |||
Где: | |||
*''default''— загрузочная запись по умолчанию указывает на метку ftp; | |||
*''timeout''— загружает клиент, используя загрузочную запись по умолчанию, после таймаута в 120 секунд; | |||
*''linux''— определяет файла ядра (путь до ядра ОС относительно пути, указанного в конфигурации TFTP) и параметры, которые должны быть добавлены при загрузке ядра, например расположение установочных пакетов и способы доступа к этим пакетам; | |||
*''initrd''— путь к корневой файловой системе для начальной загрузки (относительно пути, указанного в конфигурации TFTP). | |||
=== Настройка FTP === | |||
# Установить FTP-сервер: | |||
#: <syntaxhighlight lang="bash"># apt-get install vsftpd</syntaxhighlight> | |||
# Отредактировать файл {{path|/etc/xinetd.d/vsftpd}} и убедиться что включен FTP-сервер: | |||
#: <syntaxhighlight lang="ini">disable = no</syntaxhighlight> | |||
# Перезапустить сервис xinetd: | |||
#: <syntaxhighlight lang="bash"># systemctl restart xinetd</syntaxhighlight> | |||
# Создать ссылку на {{path|/srv/public}}: | |||
#: <syntaxhighlight lang="bash"># ln -s /srv/public /var/ftp</syntaxhighlight> | |||
{{Category navigation|title=Начинающему системному администратору|category=Начинающему системному администратору|sortkey={{SUBPAGENAME}}}} | {{Category navigation|title=Начинающему системному администратору|category=Начинающему системному администратору|sortkey={{SUBPAGENAME}}}} |
Версия от 16:45, 21 апреля 2024
Установка по сети
Техническая часть
Многие компьютеры и серверы поддерживают установку системы не только с CD/DVD и флешек, но так же по сети.
Данный вариант загрузки обеспечивается с помощью технологии PXE - (Preboot eXecution Environment, произносится пикси) — среды для загрузки компьютера с помощью сетевой карты без использования локальных носителей данных (жёсткого диска, USB-накопителя и пр).
Для организации загрузки системы в PXE используются следующие протоколы:
- IP - сетевой протокол объединяющий сегменты сети в единую сеть, обеспечивая доставку пакетов данных между любыми узлами сети через произвольное число промежуточных узлов.
- UDP - сетевой протокол транспортного уровня, с ним компьютерные приложения могут посылать сообщения другим хостам по IP-сети без необходимости предварительного сообщения для установки специальных каналов передачи или путей данных.
- BOOTP - сетевой протокол прикладного уровня, используемый для автоматического получения клиентом IP-адреса. Это обычно происходит во время загрузки компьютера.
- TFTP - (Trivial File Transfer Protocol — простой протокол передачи файлов) - используется, в основном, для первоначальной загрузки бездисковых рабочих станций. TFTP, в отличие от FTP, не содержит возможностей аутентификации (хотя возможна фильтрация по IP-адресу) и основан на транспортном протоколе UDP.
PXE-код, обычно находящийся в ПЗУ сетевой карты, получает из сети по протоколу TFTP (получив адрес TFTP-сервера по BOOTP) исполняемый файл, после чего передаёт ему управление.
Параметры нашей сети (для примера) | |
---|---|
Параметр | Значение |
Сеть | 10.0.2.0 |
Маска | 255.255.255.0 |
Шлюз | 10.0.2.1 |
Адрес компьютера с PXE-сервером | 10.0.2.4 |
Адрес с DHCP-сервером (в примере тот же компьютер) | 10.0.2.4 |
Устанавливаем пакеты
# apt-get install dhcp-server tftp-server-xinitd syslinux
Настраиваем DHCP-сервер
DHCP-сервер для автоматической настройки сетевых интерфейсов в локальной сети, именно он присваивает каждому устройству в локальной сети IP-адреса (если настроена раздача таких адресов автоматически). Нам же нужно настроить этот сервер таким образом, чтобы компьютер при запуске загрузки по сети автоматически получил адрес TFTP-сервера и загрузил с него образ системы.
Наш сервер DHCP dhcpd. настраиваем его через файл - /etc/dhcp/dhcpd.conf
# mcedit /etc/dhcp/dhcpd.conf
Скопируйте в файл следующие значения, обратив внимание на комментарии.
option arch code 93 = unsigned integer 16;
if option arch = 00:06 {
# EFI IA32 => Grub2
filename "shimx64.efi";
} else if option arch = 00:07 {
# EFI BC => Grub2
filename "shimx64.efi";
} else if option arch = 00:09 {
# EFI x86-64 => Grub2
filename "shimx64.efi";
} else {
# Intel x86PC (BIOS) => PXELinux
filename "pxelinux.0";
}
# Здесь ↓ указываем адрес и маску нашей сети
subnet 10.0.2.0 netmask 255.255.255.0 {
# Здесь ↓ указываем адрес компьютера, на котором будет располагаться TFTP-сервер. В нашем примере он там же, где DHCP-сервер
next-server 10.0.2.4;
# адрес NFS-сервера для установки в Legacy
option root-path "/var/lib/tftpboot/images/ALT";
# адрес шлюза сети
option routers 10.0.2.1;
# адрес DNS-сервера сети или внешний адрес для обслуживания DNS-имен
option domain-name-servers 8.8.8.8;
# Срок аренды в секундах - стандартное и максимальное
default-lease-time 3600;
max-lease-time 3600;
# Область DHCP
range 10.0.2.70 10.0.2.80;
}
Сохраняем и закрываем файл.
Запускаем DHCP-сервер:
# systemctl enable --now dhcpd
Мы настроили DHCP-сервер с определенным диапазоном (10.0.2.70-10.0.2.80) и определенной подсетью (10.0.2.0).
Любой компьютер с поддержкой PXE получит загрузчик указанный в настройках DHCP. Для UEFI это будет shimx64.efi, для BIOS — файл pxelinux.0.
Настраиваем TFTP-сервер
TFTP-сервер - Trivial File Transfer Protocol - используется для загрузки загрузочного образа на клиентскую машину.
Правим файл /etc/xinetd.d/tftp:
# mcedit /etc/xinetd.d/tftp
Приводим строчку disable к следующему виду:
disable = no
Правим файл /etc/xinetd.conf:
# mcedit /etc/xinetd.conf
Приводим строчку only_from = 127.0.0.1 к следующему виду:
# only_from = 127.0.0.1
Перезапускаем службу xinetd:
# systemctl restart xinetd
Публикация образа
Скачиваем любой дистрибутив ALT Linux, например, Starterkit XFCE - http://nightly.altlinux.org/p10/permalink/alt-p10-xfce-latest-x86_64.iso.
Например, образ скачан в /home/ladmin/Загрузки/alt-p10-xfce-latest-x86_64.iso.
Монтируем данный ISO-образ:
# mkdir -p /mnt/iso/
# mount -o loop '/home/ladmin/Загрузки/alt-p10-xfce-latest-x86_64.iso' /mnt/iso
Создаем каталог для ОС:
# mkdir -p /var/lib/tftpboot/images/ALT/
Копируем каталог boot, содержащий ядро ОС и начальную файловую систему, выполнив команду
# cp -vR /mnt/iso/* /var/lib/tftpboot/images/ALT/
Отмонтируем образ:
# umount /mnt/iso/
Настройка установки в Legacy
Создаем подкаталог для хранения файлов загрузочного образа в /var/lib/tftpboot:
# mkdir -p /var/lib/tftpboot/pxelinux.cfg
Копируем файл загрузчика pxelinux в каталог, указанный в конфигурации TFTP:
# cp /usr/lib/syslinux/pxelinux.0 /var/lib/tftpboot/
Создаем файл конфигурации загрузчика по умолчанию /var/lib/tftpboot/pxelinux.cfg/default и файл /var/lib/tftpboot/pxelinux.cfg/default.msg
# cp /var/lib/tftpboot/images/ALT/syslinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default
# chmod 644 /var/lib/tftpboot/pxelinux.cfg/default
Содержимое файла /var/lib/tftpboot/pxelinux.cfg/default.
Правим следующей командой:
# mcedit /var/lib/tftpboot/pxelinux.cfg/default
timeout 120
prompt 1
default local
display pxelinux.cfg/default.msg
label ftp
kernel /boot/vmlinuz
append initrd=/boot/initrd.img fastboot changedisk automatic=method:ftp,network:dhcp,server:10.0.2.4,directory:/netinst/mnt/ stagename=altinst ramdisk_size=669397 showopts nosplash mpath lang=ru_RU
Где:
- server - Адрес компьютера с PXE-сервером (см. таблицу в начале)
- directory -
- stagename - имя большого файла, содержащего ФС образа ALT Linux, в Starterkits это live, в других он может отличаться
Содержимое файла /var/lib/tftpboot/pxelinux.cfg/default.msg:
Type one of:
ftp - install from ftp archive
Настройка установки в UEFI
Скопировать файлы загрузчика shimx64.efi и grubx64.efi в каталог, указанный в конфигурации TFTP:
# cp /usr/lib64/efi/shimx64.efi /var/lib/tftpboot
# cp /usr/lib64/efi/grubx64.efi /var/lib/tftpboot
Создать файл конфигурации загрузчика по умолчанию grub.cfg в /var/lib/tftpboot.
# cp /srv/public/netinst/mnt/boot/grub/grub.cfg /var/lib/tftpboot/
# chmod 644 /var/lib/tftpboot/grub.cfg
Пример файла /var/lib/tftpboot/grub.cfg:
set timeout=120
set default=ftp
menuentry $"Install FTP "'ALT Server 10.1 x86_64'--id 'ftp' {
echo $"Loading Linux vmlinuz ..."
linux /boot/vmlinuz fastboot changedisk automatic=method:ftp,network:dhcp,server:192.168.0.17,directory:/netinst/mnt/ stagename=altinst ramdisk_size=669397 vga=normal mpath lang=ru_RU
echo $"Loading initial ramdisk ..."
initrd /boot/initrd.img
}
menuentry $"Install NFS "'ALT Server 10.1 x86_64' --id 'nfs' {
echo $"Loading Linux vmlinuz ..."
linux /boot/vmlinuz fastboot changedisk automatic=method:nfs,network:dhcp,server:192.168.0.17,directory:/srv/public/netinst/mnt/ stagename=altinst ramdisk_size=669397 vga=normal mpath lang=ru_RU
echo $"Loading initial ramdisk ..."
initrd /boot/initrd.img
}
menuentry $"Memory Test (may not work with Secure Boot)" --id 'memtest' {
linux /boot/memtest.efi
}
Где:
- default— загрузочная запись по умолчанию указывает на метку ftp;
- timeout— загружает клиент, используя загрузочную запись по умолчанию, после таймаута в 120 секунд;
- linux— определяет файла ядра (путь до ядра ОС относительно пути, указанного в конфигурации TFTP) и параметры, которые должны быть добавлены при загрузке ядра, например расположение установочных пакетов и способы доступа к этим пакетам;
- initrd— путь к корневой файловой системе для начальной загрузки (относительно пути, указанного в конфигурации TFTP).
Настройка FTP
- Установить FTP-сервер:
# apt-get install vsftpd
- Отредактировать файл /etc/xinetd.d/vsftpd и убедиться что включен FTP-сервер:
disable = no
- Перезапустить сервис xinetd:
# systemctl restart xinetd
- Создать ссылку на /srv/public:
# ln -s /srv/public /var/ftp