Найти тему
Андрей Ага

Alt Linux - сервер сетевой установки


Итак, у Альт Линукса есть сетевая установка. Она хороша тем, что можно ее настроить по принципу "выстрелил и забыл". Т.е. на компе выбираете установку по сети- и уходите
пить чай. Можно сделать, чтобы после окончания установки вам приходило письмо на почту. После окончания процесса вы получаете комп с установленной ОС, нужными вам программами, если надо- введенным в домен(насчет последнего- пока что неточно). Красота, да и только :)

Т.к. мы планируем плавный переход с винды на альт линукс, то файл автоматической настройки autoinstall.scm установит Альт на свободное место на диске, при этом будет двойная автозагрузка- в линукс и в винду. Т.е. после установки Альта можно будет зайти в винду, ну и все файлы сохранятся. Чтобы Альту было куда устанавливаться- в винде нужно зайти в Управление дисками, встать на диск С и выбрать Сжать том. Дальше- по смыслу, после этого должно появится не менее 40 Гб пустого места.

Для того, чтобы клиентские компы смогли запустить установку по сети, нужно настроить DHCP-сервер. Если он у вас под тем же Альтом- то в dhcpd.conf нужно добавить это:

next-server ip_адрес_сервера_сетевой установки;

filename "pxelinux.0";

option root-path "/srv/public/netinst/current";

Если вы хотите пока что использовать ваш виндовый DHCP, то пропишите эти параметры на нем(подсказка- можно в DHCP создать отдельную политику, прописать эти параметры там и там же прописать мас-адреса тех комп-ов, на которые мы хотим установить Альт, чтобы он случайно не установился на другие):

017 - /srv/public/netinst/current

066 - ip-адрес или имя сервера установки

067 - pxelinux.0

Настройка Сервера сетевой установки производится через ЦУС по ссылке https://ip_адрес_сервера:8080 Находим его в ЦУСе(если нет, ставим apt-get alterator-netinst), ставим точку на "Загрузить файл:", прописываем путь /distrib/Имя_образа.iso. На этом месте может быть затруднение - как вообще "протащить" файл на этот сервер? Сделаем для этого дела эту самую папку distrib, которая будет видна из сети. Создаем в корне папку distrib . Т.к. ничего ценного там не будет- даем на нее полные права командой chmod 777 /distrib Идем в /etc/samba/smb.conf Стираем там все нафиг и вместо вот этого вот всего вставляем вот это:

[global]
workgroup = xz.local
server string = xz
dos charset = CP866
netbios name = xz

log level = 1 vfs:1
full_audit:prefix = %u|%I|%S
full_audit:success = connect, open, mkdir, rmdir, unlink, write, rename
full_audit:failure = connect, open, mkdir, rmdir, unlink, write, rename
full_audit:facility = local5
full_audit:priority = notice
vfs objects = full_audit

log file = /var/log/samba4/smb.log
max log size = 5000
log level = 2
socket options = TCP_NODELAY
os level = 20
map to guest = Bad user
ntlm auth = Yes
server min protocol = NT1
#client ntlmv2 auth = Yes.

[distrib]
comment = distrib
path = /distrib
public = yes
only guest = yes
writable = yes
read only = no
create mask = 0777
directory mask = 0777
force create mode = 0777
force directory mode = 0777
vfs objects = full_audit
; browseable = yes.

Запускаем команду systemctl restart smb (или перезагружаем сервер). После этого у вас появляется папка distrib, в которую можно положить файл. Попасть в нее с виндового компа можно, например, через проводник по адресу \\ip_адрес_сервера\distrib Кладем сюда наш iso-шник, ну и в ЦУСе, ставим точку на "Загрузить файл:", прописываем руками путь /distrib/Имя_образа.iso и жмем Добавить. После того, как загрузка пройдет- встаем на загруженный образ и жмем Выбрать. Там еще внизу что-то про vnc- если есть желание- можете разобраться, зачем там и что. Я не стал ставить там галки, просто нажал Применить

Теперь, если вы на альтовском компе выберете Загрузку по сети- загрузится установщик, где можно выбрать всякие там параметры. Но нам этого ничего не надо, мы хотим, чтобы установка пошла автоматически. Поэтому мы создаем файл автоматической установки autoinstall.scm и кладем его сюда: /srv/public/metadata Содержимое файла будет в конце.

А чтобы он запускался, в файле /var/lib/tftpboot/pxelinux.cfg/default в самом начале после network:dhcp, дописываем ,ai curl=ftp://ip_адрес_сервера/metadata/ чтобы получилось так: append initrd=syslinux//boot/initrd.img fastboot changedisk stagename=altinst ramdisk_size=655417 showopts vga=normal quiet splash lowmem automatic=method:nfs,network:dhcp,ai curl=ftp://ip_адрес_сервера/metadata/ tz=Europe/Moscow lang=ru_RU vnc

В конце autoinstall.scm мы видим запуск файла ust_all.sh. Этот файл запускается после первой перезагрузки после установки. Если будете что-то менять- помните, что если в процессе его работы будет выходить какой-нибудь диалог "нажмите что-нибудь"- то на экране вы его не увидите, а выполнение файла остановится навсегда. Так что лучше его заранее прогнать на тестовом компе. Положить его нужно туда, откуда установщик сможет его скачать. Т.к. мы ставим все на одном сервере, то у него такое место- это, например путь http://ip_адрес_сервера/mirror поэтому мы положим ust_all.sh в /srv/public/mirror

В этом ust_all.sh в разделе send_mess показан пример отправки письма об окончании установки. Мне пришлось написать все транслитом, потому что из-за несовпадения кодировок русские буквы приходили в виде кракозябров.

После установки можно будет войти на комп под пользователем q и паролем hjkbr900 (это ролик900 в английской раскладке). Также с этими данными можно зайти и по RDP.

В итоге мы получаем полностью настроенный комп - осталось ввести его в домен.

Содержимое файла autoinstall.scm(точка с запятой- это комментарий, т.е. все, что начинается на ; не выполняется

; установка языка операционной системы (ru_RU)
("/sysconfig-base/language" action "write" lang ("ru_RU"))
; установка переключателя расладки клавиатуры на Ctrl+Shift
("/sysconfig-base/kbd" action "write" layout "ctrl_shift_toggle")
; установка часового пояса в Europe/Moscow, время в BIOS будет храниться в UTC
("/datetime-installer" action "write" commit #t name "RU" zone "Europe/Moscow" utc #t)
; автоматическая разбивка жёсткого диска
("/evms/control" action "write" control open installer #t)
("/evms/control" action "write" control update)
;("/evms/profiles/workstation" action apply commit #f clearall #t exclude ())
("/evms/profiles/workstation" action apply commit #t exclude ())
("/evms/control" action "write" control commit)
("/evms/control" action "write" control close)
; установка пакетов операционной системы
("pkg-init" action "write")
; установка только базовой системы (дополнительные группы пакетов из pkg-groups.tar указываются по именам через пробел)
("/pkg-install" action "write" lists "" auto #t)
("/preinstall" action "write")
; установка загрузчика GRUB в MBR на первый жёсткий диск
("/grub" action "write" device "/dev/sda" passwd #f passwd_1 "*" passwd_2 "*")
; настройка сетевого интерфейса на получение адреса по DHCP
("/net-eth" action "write" reset #t)
("/net-eth" action "write" name "eth0" configuration "dhcp" default "" search "" dns "" computer_name "altcomp")
; настройка сетевого интерфейса на статический IPv4
; ("/net-eth" action "write" name "eth0" configuration "static" default "192.168.1.1" search "localhost.com" dns "192.168.1.1" computer_name "c245" ipv "4" ipv_enabled #t)
; ("/net-eth" action "add_iface_address" name "eth0" addip "192.168.1.2" addmask "24" ipv "4")
("/net-eth" action "write" commit #t)
; установка пароля суперпользователя root 'hjkbr900'
("/root/change_password" language ("ru_RU") passwd_2 "hjkbr900" passwd_1 "hjkbr900")
; задание первого пользователя 'q' с паролем 'hjkbr900'
("/users/create_account" new_name "q" gecos "" allow_su #t auto #f passwd_1 "hjkbr900" passwd_2 "hjkbr900")
("/postinstall/firsttime" run "sleep 60 && curl http://192.168.0.1/mirror/ust_all.sh -o /root/ust_all.sh && /bin/sh /root/ust_all.sh")

Содержимое файла ust_all.sh. На самом деле у меня он намного больше, тут я привел самое главное.

r=$RANDOM
apt-repo rm all
apt-repo add http://192.168.0.10/mirror/p10/branch
mkdir /distrib
chmod 777 /distrib
apt-get install cifs-utils -y
echo -e "//192.168.0.10/distrib /distrib cifs auto,username=guest,password=,rw,iocharset=utf8,file_mode=0777,dir_mode=0777" >>/etc/fstab
mount -a
apt-get update -y && apt-get dist-upgrade -y && apt-get clean
apt-get install telnet -y
apt-get install dpkg -y
#ssh
echo "ssh" >> /distrib/log/$r.log
apt-get install openssh-server -y && systemctl enable --now sshd
#Отправляем письмо об окончании установки
hostnamectl set-hostname alt-$r
{ echo "helo 192.168.0.11"; sleep 3; echo "mail from:vasya@win.local"; sleep 3; echo "rcpt to:alt@win.local"; sleep 3; echo "data"; sleep 3; echo "subject: comp-$r - ustanovka zavershena"; sleep 3 ; echo "test text"; sleep 3; echo "."; sleep 3; echo "quit"; sleep 3; } | telnet 192.168.0.11 25
reboot