# Автоматическая установка 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)


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://smwb-tech.gitbook.io/astra-linux/master.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
