Здравствуйте, уважаемые читатели моего блога.

Сегодня я расскажу, как я решил проблему с установкой операционной системы Astra Linux 1.7.5 на сервере HP Proliant DL360 G7.

HP Proliant DL360 G7
Вот он — наш красавчик

Сервер старый и был поставлен нам в далёком 2011 году. Понятное дело, что ни о какой Astra Linux 1.7.5 тогда речи не шло, поэтому хотел бы заранее пресечь негативные комментарии в адрес операционной системы.

Напротив, стоит отметить качественный скачок её развития — как человек, постоянно работающий со всеми версиями данной операционной системы (кроме 1.8), могу сказать, что 1.7.5 работает намного быстрее, чем младшие версии.

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

Сначала расскажу о том, как я столкнулся с проблемой.

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

Экран установки сменился экранном загрузки ядра, после чего появился чёрный экран, а серверная консоль перешла в режим «Нет сигнала».

Установка в псевдографическом режиме успехом также не увенчалась и пошла по аналогичному сценарию.

Ознакомившись с имеющейся информацией в интернете, я принялся менять параметры загрузки ядра, используя клавишу «F2». Однако проблему с их помощью я не решил.

install_menu_astra
А дальше только чёрный экран — у Малевича К.С. есть произведение на эту тему

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

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

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

Обычно я устанавливаю операционные системы не с флешки или диска, а по сети — но в данном случае была изолированная локально-вычислительная сеть, к которой имеющуюся инфраструктуру подключить я не мог. Но никто не запрещал мне развернуть аналогичную систему установки с нуля.

Используя статьи на astra wiki, вы без труда сможете установить систему по сети, установив tftp, vsftpd/apache2, isc-dhcp-server. Также Вам понадобится файл preseed.cfg.

Мой preseed.cfg почти стандартный, вот его содержание:

# Сетевой репозиторий для установки
d-i mirror/protocol string ftp
d-i mirror/ftp/hostname string 192.168.0.99
d-i mirror/ftp/directory string /distr17
d-i mirror/ftp/proxy string

# Настройки языка
d-i mirror/country string manual
d-i debian-installer/locale string ru_RU
d-i debian-installer/locale select ru_RU.UTF-8
d-i debian-installer/language string ru
d-i debian-installer/country string RU
d-i debian-installer/keymap string ru

# Настройки клавиатуры
d-i console-tools/archs select at
d-i console-keymaps-at/keymap select ru
d-i console-setup/toggle string Alt+Shift
d-i console-setup/layoutcode string ru
d-i keyboard-configuration/toggle select Alt+Shift
d-i keyboard-configuration/layoutcode string ru
d-i keyboard-configuration/xkb-keymap select ru
d-i languagechooser/language-name-fb select Russian
d-i countrychooser/country-name select Russia

# Настройки сетевого интерфейса
d-i netcfg/choose_interface select auto

# Выбор компонент репозитория
d-i apt-setup/non-free boolean true
d-i apt-setup/contrib boolean true
d-i apt-setup/services-select none

# Настройка часов и синхронизации времени
d-i clock-setup/utc boolean true
d-i time/zone string Europe/Moscow

# Определяет, нужно ли использовать NTP для установки часов во время установки
d-i clock-setup/ntp boolean true

# Используемый сервер NTP. Значение по умолчанию указывается здесь. Для примера указан сервер ВНИИФТРИ.
d-i clock-setup/ntp-server string 192.168.0.96

# Разметка диска
d-i partman-auto/method string regular
d-i partman-auto/purge_lvm_from_device boolean true
d-i partman-lvm/confirm boolean true

# Для режима legacy bios:
d-i partman-auto/expert_recipe string myroot :: \
     30000 25384 30000 ext4 \
         $primary{ } $bootable{ } \
         method{ format } format{ } use_filesystem{ } filesystem{ ext4 } mountpoint{ /     } .\
     50000 46384 50000 ext4 \
         method{ format } format{ } use_filesystem{ } filesystem{ ext4 } mountpoint{ /var  } .\
     4000 16384 4000 linux-swap \
         method{ swap } format{ }  .\
     10096 9384 10000 ext4 \
         method{ format } format{ } use_filesystem{ } filesystem{ ext4 } mountpoint{ /tmp  } options/noexec{ noexec } options/nodev{ nodev } options/nosuid{ nosuid } .\
     500 8192 -1 ext4 \
         method{ format } format{ } use_filesystem{ } filesystem{ ext4 } mountpoint{ /home } .

d-i partman-auto/choose_recipe select myroot
#d-i partman-auto/choose_recipe select atomic

# Для режима UEFI:
# d-i   partman-auto/choose_recipe  select  /lib/partman/recipes-amd64-efi/30atomic

# Этот параметр заставляет partman выполнить разметку автоматически без подтверждения.
d-i partman/confirm_write_new_label     boolean true
d-i partman/choose_partition select finish
d-i partman/confirm boolean true
d-i partman-auto-crypto/erase_disks     boolean true
d-i partman-basicfilesystems/no_swap    boolean false
d-i partman-target/mount_failed         boolean true
d-i partman-partitioning/unknown_label  boolean true
d-i partman-auto/purge_lvm_from_device  string  true
d-i partman-lvm/vgdelete_confirm        boolean true
d-i partman/confirm_write_new_label     string  true
d-i partman-lvm/confirm boolean true
d-i partman/confirm_nooverwrite boolean true

d-i base-installer/kernel/image string linux-image-generic

d-i passwd/make-user boolean true

# Учетная запись и пароль пользователя
d-i passwd/user-fullname string marukhin
d-i passwd/username string marukhin
d-i passwd/user-password password 12345678
d-i passwd/user-password-again password 12345678

d-i debian-installer/allow_unauthenticated string true

# Выбор ПО для установки
tasksel tasksel/first multiselect Base packages, Fly desktop, SSH server
tasksel tasksel/astra-feat-setup multiselect

# Выбор уровня защищенности ОС
d-i astra-additional-setup/os-check select Maximum security level Smolensk

# Выбор параметров ОС
d-i astra-additional-setup/additional-settings-smolensk multiselect Enable Mandatory Integrity Control, Enable Mandatory Access Control, Disable ptrace capability, Disable ptrace capability

# Подтверждение согласия с лицензионным соглашением (обязательный параметр)
astra-license astra-license/license boolean true

popularity-contest popularity-contest/participate boolean false

d-i grub-installer/only_debian boolean true

d-i grub-installer/with_other_os boolean true

# Пароль загрузчика grub
d-i grub-installer/password password 12345678
d-i grub-installer/password-again password 12345678
grub-installer grub-installer/password-mismatch error

# Не показывать последнее сообщение о том, что установка завершена.
d-i finish-install/reboot_in_progress note
d-i finish-install/exit/poweroff boolean true

d-i preseed/late_command string in-target apt purge -y ntp ; \
                                in-target systemctl enable systemd-timesyncd.service ; \
                                in-target rm -f /etc/NetworkManager/system-connections/*; \
                                in-target systemctl disable networking NetworkManager; \
                                in-target systemctl mask networking NetworkManager; \
                                in-target ln -s /lib/systemd/system/ssh.service /etc/systemd/system/multi-user.target.wants/ssh.service; 
                               

Выдержка из файла конфигурации dhcp сервера:

subnet 192.168.1.0 netmask 255.255.255.0  {
  range 192.168.1.90 192.168.1.93;
  filename "astra17/pxelinux.0";
  option routers 192.168.1.1;
  next-server 192.168.1.99;
}

Настроив программы, приведённые выше, я запустил установку по сети, которая закончилась… снова чёрным экраном. И правда, на что я надеялся?

Astra Linux Network boot
Пример загрузки ядра и образа начальной загрузки в VBOX

Среди причин такого положения дел на сайте Astra Linux значилась «слишком старая версия ядра». Мне же становилось понятно, что моя проблема прямо противоположная — я обладатель «слишком новой версии ядра» (ведь ранее установка Astra Linux 1.5 и 1.6 проходила без проблем).

Между тем в голову мне начали приходить мысли по поводу того, что если изменить версию ядра использующуюся в установщике Astra Linux 1.7.5 на ту, что используется в установщике Astra Linux 1.6 — всё получится. Но я так никогда не делал, да и не хотелось лепить франкенштейна, установить то полбеды — как это будет работать дальше?

Но когда я упёрся в «полный тупик», я решил, что терять то мне в принципе нечего, не заработает — ну и ладно.

Для начала мне было интересно узнать, какая версия ядра операционной системы использовалась в образе установки 1.7.5.

Используя команду uname, я получил версию ядра — 6.1.50-1-generic.

То есть версия самая свежая из доступных при установке. Это вполне логично, чем свежее версия ядра, тем лучше поддержка оборудования. Но разработчики ядра не будут вечно поддерживать морально устаревшее оборудование, так что нет ничего удивительного, что поддержка старых систем со временем будет прекращена.

В установщике же 1.6 использовалось ядро 4.15.3-1-generic.

Я решил действовать «в лоб» и заменить новое ядро на старое и посмотреть, что получится.

К моей нескрываемой радости это сработало, и я увидел процесс установки, но оборудование (сетевые карты и usb клавиатура) не заработало.

И это вполне логично, так как образ начальной загрузки модулей для старого ядра не предусматривал.

Не беда! Вдохновлённый успехом, я распаковал образы начальной загрузки от 1.6 и 1.7.5:

gunzip -c /srv/tftp/astra/initrd.gz  | cpio -i --make-directories

И скопировал каталог с модулями ядра 4.15.3-1-generic в образ начальной загрузки 1.7.5 (/lib/modules/).

Далее собрал изменённый образ начальной загрузки:

find . -print | cpio -H newc -o | gzip -9 -c > ./initrd.gz

Поместил собранный образ в каталог tftp сервера /srv/tftp/astra17 и запустил установку — клавиатура и сетевая карта заработали, а установка началась в порядке стандартном для сетевой установки Astra Linux 1.7.5.

Единственный нюанс, который напоминал о моих манипуляциях — это сообщение об отсутствующих модулях ядра в начале установки, в моём случае это ни на что не повлияло.

В настоящее время сервер HP Proliant DL360 G7 стабильно работает с ядром 5.10.

Module error Astra Linux 1.7.5 initrd
И так сойдёт 🙂

Таким образом, я смог установить Astra Linux 1.7.5 на серевер HP Proliant DL360 G7.

Система работает стабильно уже несколько месяцев, чему я несказанно рад.

Если кто-то сталкивался с подобной ситуацией и решил её проще, чем я написал — пишите в комментариях, либо на электронную почту sandro331k@yandex.ru — я дополню заметку.

Я также уверен, что если у Вас есть техническая поддержка (тогда что Вы здесь делаете? :-), разработчикам ничего не стоит предоставить Вам образ для установки системы с младшей версией ядра «из коробки».

Всего доброго Вам, до новых встреч.

Если мой блог помог Вам, вы можете поддержать меня любой суммой и мотивировать на написание новых заметок 🙂


Добавить комментарий

Ваш e-mail не будет опубликован.