NetInstall start

Материал из ALT Linux Wiki
Stub.png
Данная страница находится в разработке.
Эта страница ещё не закончена. Информация, представленная здесь, может оказаться неполной или неверной.
Примечание: Обратите внимание, что это не официальная документация, а попытка начинающего админа объяснить материал начинающим админам.
Официальная и более подробная документация здесь.

Установка по сети

Техническая часть

Многие компьютеры и серверы поддерживают установку системы не только с 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.5
Адрес с DHCP-сервером (в примере тот же компьютер) 10.0.2.5

Настраиваем на компьютере/сервере статический адрес

См. Etcnet_start

Устанавливаем пакеты

# apt-get install dhcp-server tftp-server-xinetd syslinux

Настраиваем DHCP-сервер

DHCP-сервер для автоматической настройки сетевых интерфейсов в локальной сети, именно он присваивает каждому устройству в локальной сети IP-адреса (если настроена раздача таких адресов автоматически). Нам же нужно настроить этот сервер таким образом, чтобы компьютер при запуске загрузки по сети автоматически получил адрес TFTP-сервера и загрузил с него образ системы.

В качестве DHCP-сервера выбран dhcpd. Настраиваем его через файл - /etc/dhcp/dhcpd.conf.

# mcedit /etc/dhcp/dhcpd.conf

Скопируйте в файл следующие значения, обратив внимание на комментарии.

Примечание: Адреса сети вы должны заменить на свои
Внимание! Опция option root-path указывает путь в файловой системе и относительный путь для сетевого хранилища, где будут храниться образы. Если вы прорабатываете данную инструкцию в первый раз, не меняйте ее значение, а расположите образы в указанной папке
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.5;
        # корневой каталог для образов
        option root-path "/var/lib/tftpboot";
        # адрес шлюза сети  
        option routers 10.0.2.1;
        # адрес DNS-сервера сети или внешний адрес для обслуживания DNS-имен
        option domain-name-servers 10.0.2.2;
        # Срок аренды в секундах - стандартное и максимальное
        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.

Примечание: Параметр next-server следует указывать даже если для размещения служб DHCP и TFTP используется один и тот же сервер


Настраиваем 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/

Копируем образ ОС выполнив команду

# cp -vR /mnt/iso/* /var/lib/tftpboot/images/ALT/

Отмонтируем образ:

# umount /mnt/iso/

Настройка установки в Legacy

Создаем подкаталог для хранения файлов загрузочного образа в /var/lib/tftpboot:

Примечание: Да, это каталог с именем pxelinux.cfg
# 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

Содержимое файла /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 1
  kernel images/ALT/boot/vmlinuz
  append initrd=images/ALT/boot/initrd.img fastboot changedisk automatic=method:ftp,network:dhcp,server:10.0.2.5,directory:/ALT stagename=live ramdisk_size=669397 showopts nosplash mpath lang=ru_RU

Где:

Примечание: Тут нам нужно обратить внимание на следующие параметры:
  • в kernel указывается путь images/ALT/boot/vmlinuz
  • в initrd указывается путь images/ALT/boot/initrd.img
  • server - Адрес компьютера с PXE-сервером (см. таблицу в начале)
  • directory - путь directory:/ALT - потому что мы указываем путь относительно /var/lib/tftpboot/images
  • stagename - имя большого файла, содержащего ФС образа ALT Linux, в Starterkits это live, в других он может отличаться


Содержимое файла /var/lib/tftpboot/pxelinux.cfg/default.msg.

Правим следующей командой:

# mcedit /var/lib/tftpboot/pxelinux.cfg/default.msg
Type one of:
1     - install ALT

Настройка установки в 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 /var/lib/tftpboot/images/ALT/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 $"ALT " {
  echo $"Loading Linux vmlinuz ..."
  linux /images/ALT/boot/vmlinuz fastboot changedisk automatic=method:ftp,network:dhcp,server:10.0.2.5,directory:/ALT/ stagename=live ramdisk_size=669397 vga=normal mpath lang=ru_RU 
  echo $"Loading initial ramdisk ..."
  initrd /images/ALT/boot/initrd.img
}
}
Примечание: Тут нам нужно обратить внимание на следующие параметры:
  • в linux указывается путь /images/ALT/boot/vmlinuz
  • server - Адрес компьютера с PXE-сервером (см. таблицу в начале)
  • directory - путь /var/lib/tftpboot/images будет указан в настройках FTP-сервера позднее, а сейчас мы указываем каталог с ОС - /ALT - путь в который мы распаковали образ ALT Linux.
  • stagename - имя большого файла, содержащего ФС образа ALT Linux, в Starterkits это live, в других он может отличаться
  • в initrd указывается путь /images/ALT/boot/initrd.img


Где:

  • default— загрузочная запись по умолчанию указывает на метку ftp;
  • timeout— загружает клиент, используя загрузочную запись по умолчанию, после таймаута в 120 секунд;
  • linux— определяет файла ядра (путь до ядра ОС относительно пути, указанного в конфигурации TFTP) и параметры, которые должны быть добавлены при загрузке ядра, например расположение установочных пакетов и способы доступа к этим пакетам;
  • initrd— путь к корневой файловой системе для начальной загрузки (относительно пути, указанного в конфигурации TFTP).

Настройка FTP

  1. Устанавливаем FTP-сервер:
    # apt-get install vsftpd
    
  2. Редактируем файл /etc/xinetd.d/vsftpd и убеждаемся что FTP-сервер включен:
    disable = no
    
  3. Перезапускаем сервис xinetd:
    # systemctl restart xinetd
    
  4. Создаем ссылку на /srv/public:
    # rm -f /var/ftp
    # ln -s /var/lib/tftpboot/images /var/ftp
    

Файловая часть

Чтобы понять, что где лежит, опишу структуру каталогов:

/var/lib/tftpboot
├── grub.cfg
├── grubx64.efi
├── images
│   └── ALT <----- директория указываемая для загрузки при PXE в MBR или UEFI
│       ├── <...> - некоторые файлы опущены
│       ├── ALTLinux
│       ├── boot
│       │   ├── grub
│       │   │   ├── bios.img
│       │   │   ├── boot.cat
│       │   │   ├── fonts
│       │   │   │   └── unicode.pf2
│       │   │   ├── grub.cfg
│       │   │   ├── i386-efi
│       │   │   ├── i386-pc
│       │   │   ├── locale
│       │   │   │   └── ru.mo
│       │   │   ├── themes
│       │   │   │   └── starterkit
│       │   │   ├── unifont.pf2
│       │   │   └── x86_64-efi
│       │   ├── initrd.img <----- файл initrd  для типа загрузки "Legacy", метки "label 1" параметра "append initrd" ИЛИ "initrd" в GRUB для UEFI. 
│       │   ├── memtest.bin
│       │   ├── memtest.efi
│       │   ├── shell.efi
│       │   └── vmlinuz <----- файл vmlinuz для типа загрузки "Legacy", метки "label 1" параметра "Kernel" ИЛИ "linux" в GRUB. 
│       ├── EFI
│       │   ├── BOOT
│       │   │   ├── bootia32.efi
│       │   │   ├── bootx64.efi
│       │   │   ├── grub.cfg
│       │   │   ├── grubia32.efi
│       │   │   ├── grubx64.efi
│       │   │   ├── mmia32.efi
│       │   │   └── mmx64.efi
│       │   └── enroll
│       │       └── altlinux.cer
│       ├── live <----- загружаемый модуль с системой, параметр "stagename="
│       └── syslinux
│           └── isolinux.cfg
├── pxelinux.0
├── pxelinux.cfg
│   ├── default
│   └── default.msg
└── shimx64.efi

Сама загрузка

  • Вы включаете компьютер (который подключен к той же сети что и PXE-сервер).
  • Выбираете загрузку по PXE
  • Компьютер получает с него адрес
  • Появляется меню загрузчика
  • Вы выбираете пункт и система загружается по сети как и с CD/DVD флешки
  • Вы работаете в LiveCD/устанавливливаете с установщика