# Автоматическая установка AstraLinux по сети

В первую очередь необходимо настроить установку по сети с сервера. Для этого на сервере нужно настроить DHCP-, TFTP-, FTP-сервисы, разместить файлы для установки системы в нужной папке. А чтобы система устанавливалась автоматически, необходим файл ответов. Обо всём этом ниже по шагам.

### **1.Установка необходимых пакетов**

```
sudo apt install isc-dhcp-server tftpd-hpa pxelinux syslinux vsftpd
```

Где:

***isc-dhcp-server*** - DНCP-сервер;\
\&#xNAN;***tftpd-hpa*** - TFTP-сервер;\
\&#xNAN;***pxelinux*** - загрузчик для сетевой загрузки PXE;\
\&#xNAN;***syslinux*** - загрузчик для сетевой загрузки DOS FAT / NTFS;\
\&#xNAN;***vsftpd*** — FTP-сервер.

Служба tftpd после установки запускается автоматически и сразу предоставляет доступ к каталогу /srv/tftp/, в котором далее и будут размещены файлы для сетевой загрузки.

### **2. Настройка DHCP**

1\) прописать сетевой интерфейс в файле **/etc/default/isc-dhcp-server:**

```
DHCPDv4_CONF=/etc/dhcp/dhcpd.conf
INTERFACESv4="eth0"
```

2\) Настроим **/etc/dhcp/dhcpd.conf.**

В данной конфигурации dhcp сервер будет определять тип клиента (UEFI или Legacy BIOS) и отдавать ему нужный загрузчик.

```
authoritative;
option domain-name "my.dom";
default-lease-time 600;
max-lease-time 7200;
log-facility local7;
option domain-name-servers 8.8.8.8;
allow booting;
allow bootp;
option fqdn.no-client-update on;
option fqdn.rcode2 255;
option pxegrub code 150 = text ;

next-server 192.168.56.1;
option architecture code 93 = unsigned integer 16 ;
if option architecture = 00:07 {
filename "bootx64.efi";
} elsif option architecture = 00:09 {
filename "bootx64.efi";
} else {
filename "pxelinux.0";
}

subnet 192.168.56.0 netmask 255.255.255.0 {
range 192.168.56.20 192.168.56.250;
option domain-name "my.dom";
option broadcast-address 192.168.56.255;
option routers 192.168.56.1;
option subnet-mask 255.255.255.0;
}
```

3\) После внесения изменений в настройки перезапустим сервис:

```
sudo service isc-dhcp-server restart
```

### **3. Настройка FTP-сервера**

1\) Пропишем настройки сервера в файле **/etc/vsftpd.conf**

```
listen=NO
listen_ipv6=YES
anonymous_enable=YES
local_enable=YES
dirmessage_enable=YES
use_localtime=YES
xferlog_enable=YES
rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
ssl_enable=NO
```

2\) Изменим домашний каталог пользователя:

```
sudo usermod -d /srv ftp
```

3\) Перезагрузим сервис:

```
sudo service vsftpd restart
```

### **4. Загрузка по сети.**

Для загрузки по сети нужны следующие файлы:

* pxelinux.0;
* библиотеки syslinux;
* ядро ОС;
* специальный initrd.

Эти файлы находятся на установочном диске в каталоге **netinst**.

1\) Создадим папку для репозитория **/srv/repo/smolensk/** и примонтируем туда дистрибутив (это может быть как образ, так и непосредственно установочный диск).

```
sudo mkdir -p /srv/repo/smolensk/
```

При использовании установочного диска:

```
sudo mount /dev/sr0 /srv/repo/smolensk/
```

Или при использовании образа:

```
sudo mount smolensk-1.6-20.06.2018_15.56.iso /srv/repo/smolensk/
```

&#x20;2\) Создадим папку **/srv/tftp/smolensk/**, куда положим ядро и initrd. И скопируем эти файлы в папку:

```
sudo mkdir -p /srv/tftp/smolensk/
sudo cp /srv/repo/smolensk/netinst/linux /srv/tftp/smolensk/
sudo cp /srv/repo/smolensk/netinst/initrd.gz /srv/tftp/smolensk/
```

&#x20;3\) Скопируем в каталог **/srv/tftp/** файл pxelinux.0 и необходимые библиотеки syslinux:

```
sudo cp /usr/lib/PXELINUX/pxelinux.0 /srv/tftp/
sudo cp /usr/lib/syslinux/modules/bios/{chain.c32,ldlinux.c32,libcom32.c32,libutil.c32,menu.c32} /srv/tftp/
```

Pxelinux -- это PXE-версия универсального загрузчика SYSLINUX. Функционал Pxelinux может быть расширен за счёт COM32 модулей SYSLINUX. Этими модулям мы и воспользовалисью

4\) Создадим каталог **/srv/tftp/pxelinux.cfg/**:

```
sudo mkdir -p /srv/tftp/pselinux.cfg
```

&#x20;5\) И создадим в этом каталоге файл меню **/srv/tftp/pxelinux.cfg/default** со следующим содержимым:

```
ui menu.c32
PROMPT 0

MENU TITLE PXE Boot menu
TIMEOUT 50
DEFAULT local

LABEL local
MENU LABEL Boot from local drive
kernel chain.c32
append hd0

# Astra Linux SE Smolensk
LABEL netinstall
MENU LABEL Start Astra Linux Smolensk net install
kernel smolensk/linux
append initrd=smolensk/initrd.gz modprobe.blacklist=evbug auto=true priority=critical debian-installer/locale=en_US console-keymaps-at/keymap=ru hostname=astra16 domain=my.dom astra-license/license=true url=tftp://192.168.56.1/smolensk/preseed.cfg interface=auto netcfg/dhcp_timeout=60
TIMEOUT 1
```

В этом файле необходимо указать свои следующие параметры:

* hostname - имя хоста, которое будет использована при автоматической установке ОС;
* domain - имя домена ;
* url - адрес, по которому должны быть доступны конфигурационные файлы.

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

### **5. Загрузчик**

Для загрузки в режиме UEFI служит специальный EFI образ загрузчика grub, который можно скачать [здесь](https://nas01.astralinux.ru/sharing/V61Pa875I)

1\)Распаковать архив netinst.tar.gz в **/srv/tftp**

```
sudo tar xvf netinst.tar.gz -C /srv/tftp
```

&#x20;2\) Конфигурационный файл **/srv/tftp/debian-installer/amd64/grub/grub.cfg** привести к виду:

```
if loadfont $prefix/font.pf2 ; then
set gfxmode=800x600
set gfxpayload=keep
insmod efi_gop
insmod efi_uga
insmod video_bochs
insmod video_cirrus
insmod gfxterm
insmod png
terminal_output gfxterm
fi

if background_image /isolinux/splash.png; then
set color_normal=light-gray/black
set color_highlight=white/black
else
set menu_color_normal=cyan/blue
set menu_color_highlight=white/blue
fi

menuentry "Boot default EFI bootloader" {
set background_color=black
regexp -s root '\((.+)\)' "$cmdpath"
chainloader /EFI/Boot/Bootx64.efi
}

# Установка Astra Linux SE Смоленск
menuentry 'Install Astra Linux SE Smolensk' {
set background_color=black
linux /smolensk/linux modprobe.blacklist=evbug debian-installer/allow_unauthenticated=true auto=true priority=critical debian-installer/locale=en_US console-keymaps-at/keymap=ru hostname=test2 domain=my.dom astra-license/license=true url=tftp://192.168.56.1/smolensk/preseed.cfg interface=auto netcfg/dhcp_timeout=60
initrd /smolensk/initrd.gz
}
```

Не забываем указать в файле правильно все необходимые параметры (имена хоста и домена, а также путь к файлам). В пути url=tftp\://192.168.56.1/smolensk/preseed.cfg указан файл ответов, который необходим для автоматической установки. В следующем пункте его и рассмотрим.

### **6. Автоматическая установка.**

1\) Для автоматической установки необходим файл preseed.cfg. Общий вид его можно скачать [*отсюда*](ttps://wiki.astralinux.ru/download/attachments/68914051/preseed_smol.cfg?version=1\&modificationDate=1581576351839\&api=v2)*.*

2\) Этот файл скопируем в каталог установочных файлов **/srv/tftp/smolensk/**, переименовав в **preseed.cfg**:

```
sudo cp preseed_smol.cfg /srv/tftp/smolensk/preseed.cfg
```

Рассмотрим этот файл и изменим нужные строки.

3\) Укажем путь к директории, где лежит репозиторий:

```
# Репозиторий для установки
# Если вы выберете ftp, то mirror/country string устанавливать не нужно.
d-i mirror/protocol string ftp
d-i mirror/country string manual
d-i mirror/ftp/hostname string 192.168.56.1
d-i mirror/ftp/directory string /repo/smolensk
```

4\) Не забудем указать учётную запись и пароли:

```
# Пароль суперпользователя, любой открытым текстом
d-i passwd/root-password password very_string_password
d-i passwd/root-password-again password very_string_password

# или в виде MD5 хеша.
#d-i passwd/root-password-crypted password [MD5 хеш]
# Создать учётную запись обычного пользователя.
d-i passwd/user-fullname string ahv
d-i passwd/username string ahv

# Пароль обычного пользователя, или открытым текстом
d-i passwd/user-password password very_string_password
d-i passwd/user-password-again password very_string_password
```

Если у вас остались вопросы, пишите нам [**ipc@nnz.ru**](mailto:ipc@nnz.ru)
