Файлы для создания iso


Основанием послужила вот эта статья:
https://habrahabr.ru/post/104029/
Будем работать с виртуальными машинами, так проще и быстрее.

1. Первое что нужно сделать – установить сервер Ubuntu 16.04_64
Качаем здесь -- http://ubuntu.ru/get
или здесь https://www.ubuntu.com/download/server.
Далее устанавливаем непосредственно сервер 1С (я использовал 8.3.8.1861) и сервер postgreSQL,
берем отсюда https://postgrespro.ru/products/1c_build.
Затем исправляем зависимости, запускаем , проверяем.
Теперь на рабочем сервере делаем (здесь лежат все пакеты установки apt):

#mkdir /var/tmp/install
#cp /var/cache/apt/archives/*.deb /var/tmp/install/

Копируем сюда пакеты установки 1С сервера:

#cp ./1c-enterprise83-common_8.3.8-1861_amd64.deb /var/tmp/install/
#cp ./1c-enterprise83-common-nls_8.3.8-1861_amd64.deb /var/tmp/install/
#cp ./1c-enterprise83-server_8.3.8-1861_amd64.deb /var/tmp/install/
#cp ./1c-enterprise83-server-nls_8.3.8-1861_amd64.deb /var/tmp/install/
#cp ./1c-enterprise83-ws_8.3.8-1861_amd64.deb /var/tmp/install/
#cp ./1c-enterprise83-ws-nls_8.3.8-1861_amd64.deb /var/tmp/install/

Файлы установки клиентской части Windows:

#cp ./8.3.8.1861_windows64.rar /var/tmp/install/
#cp ./8.3.8.1861_windows.rar /var/tmp/install/

Собираем tar архив:

#tar -cvzf install.tar.gz /var/tmp/install
#rm -R /var/tmp/install

В результате у нас будет создан файл install.tar.gz,в котором находятся все *.deb пакеты.

2. Теперь на рабочем компьютере, я использую Xubuntu 14.04 Desktop,
скачиваем iso образ сервера установки Ubuntu 16.04_64 и монтируем его :


#mkdir /media/iso
#mount /mnt/share/ubuntu-16.04-server-amd64.iso /media/iso/ -o loop 
#cd /media
#tar -cvf - iso | (cd /var/tmp/ && tar -xf - )


В данном случае образ лежит в /mnt/share/ , а монтируем мы его в /media/iso/ , но смонтирован он только на чтение и мы теперь его перенесем в /var/tmp/iso/ для дальнейшей работы.

Теперь попробуем собрать свой iso образ командой:

#mkisofs -input-charset utf-8 -boot-info-table -no-emul-boot -r -l -J -R -b isolinux/isolinux.bin -c isolinux/boot.cat -o /mnt/share/ubuntu16.04_64-1C83.1861.iso /var/tmp/iso/

После этого в /mnt/share/ должен появиться наш новый образ ubuntu16.04_64-1C83.1861.iso

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

3.Переносим пакеты.

#mkdir /var/tmp/iso/1c83
#cp ./install.tar.gz /var/tmp/iso/1c83/

Копируем все наши дополнительные пакеты в /var/tmp/iso/1c83/ . Если теперь запустить mkisofs , то в собранном iso образе будет присутствовать папка 1с83 , а в ней install.tar.gz .

4.Настройка загрузчика.

Идем в /var/tmp/iso/isolinux/ и смотрим файл isolinux.cfg .

# D-I config version 2.0 # search path for the c32 support libraries (libcom32, libutil etc.) path include menu.cfg default vesamenu.c32 prompt 0 timeout 0 ui gfxboot bootlogo

О promt и timeout писать не буду , но можно поиграть с этими параметрами . Нам интересны здесь параметры include menu.cfg и ui gfxboot bootlogo .
ui gfxboot bootlogo – честно признаюсь не совсем понял эту строку , но при ее наличие параметры начальной страницы и фон splash.png берутся из файла cpio bootlogo .
Я ее пока убираю
#ui gfxboot bootlogo


/var/tmp/iso/isolinux/menu.cfg – это собственно и есть описание меню загрузки.
Смотрим , что там написано:

menu hshift 13
menu width 49
menu margin 8
#menu color title FFFFFFFF
menu title Server 1c8.3_16.04 Lts
include stdmenu.cfg
include txt.cfg
include gtk.cfg
menu begin advanced
menu title Advanced options
include stdmenu.cfg
label mainmenu
menu label ^Back..
menu exit
include adtxt.cfg
include adgtk.cfg
menu end
label help
menu label ^Help
text help
Display help screens; type 'menu' at boot prompt to return to this menu
endtext
config prompt.cfg


Нас интересует упоминание файла include txt.cfg , все основные настройки в нем.
В отличие от статьи https://habrahabr.ru/post/104029/ можно заметить, что названия файлов меню изменились, хотя могу ошибаться.

Смотрим /var/tmp/iso/isolinux/txt.cfg

menu background splash.png
menu color screen 37;40 #80ffffff #00000000 std
menu color border 30;44 #40000000 #00000000 std
menu color title 1;36;44 #c00090f0 #00000000 std
menu color unsel 37;40 #90ffffff #00000000 std
menu color sel 7;37;40 #00000000 #ffffffff all
menu color hotsel 1;7;37;40 #00000000 #ffffffff all
menu color disabled 1;30;44 #60cccccc #00000000 std
menu color scrollbar 30;44 #40000000 #00000000 std
menu color tabmsg 31;40 #90ffff00 #00000000 std
menu color cmdmark 1;36;40 #c000ffff #00000000 std
menu color cmdline 37;40 #c0ffffff #00000000 std
menu color pwdborder 30;47 #80ffffff #20ffffff std
menu color pwdheader 31;47 #80ff8080 #20ffffff std
menu color pwdentry 30;47 #80ffffff #20ffffff std
menu color timeout_msg 37;40 #80ffffff #00000000 std
menu color timeout 1;37;40 #c0ffffff #00000000 std
menu color help 37;40 #c0ffffff #00000000 std
menu color msg07 37;40 #90ffffff #00000000 std
default fullauto
label fullauto
menu label ^1C 8.3.1861 full-auto
kernel /install/vmlinuz
append file=/cdrom/preseed/fullauto.seed auto=true keyboard-configuration/toggle=Alt+Shift locale=ru_RU.UTF-8 keymap=ru language=ru country=RU bgcolor=black vga=788 initrd=/install/initrd.gz quiet splash ---
label manualauto
menu label ^1C 8.3.1861 manual-auto
kernel /install/vmlinuz
append file=/cdrom/preseed/manualauto.seed vga=788 initrd=/install/initrd.gz --
label install
menu label ^Install Ubuntu Server
kernel /install/vmlinuz
append file=/cdrom/preseed/ubuntu-server.seed vga=788 initrd=/install/initrd.gz quiet ---
label maas
menu label ^Install MAAS Region Controller
kernel /install/vmlinuz
append modules=maas-region-udeb vga=788 initrd=/install/initrd.gz quiet ---
label maasrack
menu label ^Install MAAS Rack Controller
kernel /install/vmlinuz
append modules=maas-rack-udeb vga=788 initrd=/install/initrd.gz quiet ---
label check
menu label ^Check disc for defects
kernel /install/vmlinuz
append MENU=/bin/cdrom-checker-menu vga=788 initrd=/install/initrd.gz quiet ---
label memtest
menu label Test ^memory
kernel /install/mt86plus
label hd
menu label ^Boot from first hard disk
localboot 0x80

Это уже измененный файл настроек , поэтому немного поясню: Добавил строку и соответственно нарисовал файл splash.png , как смог
menu background splash.png
menu color – цветовые настройки меню, кому как нравится , описание в интернете присутствует.
default fullauto
– указал , что по дефолту будет грузится label fullauto , но это при установке в isolinux.cfg timeout отличный от нуля, сейчас меню выбирается руками.
label fullauto – здесь как раз и указываем все свои настройки, именно как мы хотим, остальные labels не трогаем.
menu label ^1C 8.3.1861 full-auto – название меню
kernel /install/vmlinuz – ядро
append file=/cdrom/preseed/fullauto.seed auto=true keyboard-configuration/toggle=Alt+Shift locale=ru_RU.UTF-8 keymap=ru language=ru country=RU vga=788 initrd=/install/initrd.gz quiet splash ---

Теперь поясню:
file=/cdrom/preseed/fullauto.seed – сценарий установки сервера.
Странно , но остальные параметры не сходятся с указанными в https://habrahabr.ru/post/104029/ , поэтому пришлось гуглить .
auto=true – я так понял авто режим
locale=ru_RU.UTF-8 – чтобы не спрашивал локаль
keymap=ru – чтобы не спрашивал определение клавиатуры
language=ru – чтобы не спрашивал язык
country=RU – чтобы не спрашивал страну
initrd=/install/initrd.gz – загрузчик
keyboard-configuration/toggle=Alt+Shift – никак не получалось избавится от этого окна , при этом формулировка console-setup/toggle=Alt+Shift не работала.
Поставил keyboard-configuration/toggle=Alt+Shift

С предварительными настройками все, теперь сам сценарий.

5. Сценарий загрузки fullauto.seed .

Создаем файл fullauto.seed :

#touch /var/tmp/iso/preseed/fullauto.seed

в него добавляем строки, пишу краткие комментарии , так как много строк

#locale на всякий случай продублировал
d-i debian-installer/locale string ru_RU.UTF-8
d-i debian-installer/language string ru
d-i debian-installer/country string RU
d-i localechooser/supported-locales en_US.UTF-8, ru_RU.UTF-8
#keybord клавиатура , язык , локаль – вроде все понятно
d-i keyboard-configuration/xkb-keymap select ru
d-i keyboard-configuration/toggle select Alt+Shift
d-i localechooser/shortlist string RU
d-i console-setup/ask_detect boolean false
d-i console-setup/layoutcode string ru
d-i console-setup/variant select Russian
d-i console-setup/toggle select Alt+Shift
d-i keyboard-configuration/modelcode string pc105
#host
d-i netcfg/hostname string srv1cv83 # – название хоста
d-i netcfg/get_hostname string srv1cv83 #– название хоста
d-i netcfg/get_domain string workdomain.ru #– название домена
#network
d-i netcfg/enable boolean true # я так понял наличие сети
d-i netcfg/choose_interface select auto # выбрать автоматически сетевой интерфейс

d-i netcfg/dhcp_failed note # если нет dhcp , но мы настраиваем статику
# далее выбор настройки сети , я использую статику , поэтому у меня такие настройки
d-i netcfg/dhcp_options select Configure network manually
d-i netcfg/disable_autoconfig boolean true
d-i netcfg/confirm_static boolean true

#здесь все понятно
d-i netcfg/get_ipaddress string 192.168.0.182
d-i netcfg/get_netmask string 255.255.255.0
d-i netcfg/get_gateway string 192.168.0.251
d-i netcfg/get_nameservers string 192.168.0.251

# Users
#Ползователей будет два , как бы тоже все понятно
d-i passwd/make-user boolean true
# Root password, either in clear text
d-i passwd/root-password password 999
d-i passwd/root-password-again password 999
d-i passwd/root-login boolean false
d-i passwd/user-fullname string Ubuntu user
d-i passwd/username string jack
d-i passwd/user-password password 999
d-i passwd/user-password-again password 999
d-i user-setup/allow-password-weak boolean true
d-i user-setup/encrypt-home boolean false

# Clock
d-i clock-setup/utc boolean true
d-i time/zone string Europe/Moscow
d-i clock-setup/ntp boolean true

# Partitioning
# я не стал мудрить с разметкой дисков , но нужно отметить, что это очень важный момент и при настройке мощного сервера и RAID этот пункт нужно делать руками.
d-i partman-auto/disk string /dev/sda
d-i partman-auto/method string regular
d-i partman-auto/init_automatically_partition select Guided - use entire disk
#d-i partman-auto/automatically_partition select
d-i partman-auto/purge_lvm_from_device boolean true
d-i partman-md/device_remove_md boolean true

d-i partman-auto/choose_recipe select atomic
d-i partman/unmount_active boolean true
d-i preseed/early_command string umount /media

d-i partman-md/confirm boolean true
d-i partman-partitioning/confirm_write_new_label boolean true
d-i partman/choose_partition select finish
d-i partman/confirm boolean true
d-i partman/confirm_nooverwrite boolean true
# APT настройка apt-get чтоб не просил обновлений.
# стараюсь не делать апгрейдов работающих систем , поскольку 1С работает с определенным
#списком зависимостей и при изменении этих определенных пакетов в системе отказывается работать , в противном
#ну если хочется готовим «бубен»
d-i apt-setup/restricted boolean true
d-i apt-setup/universe boolean true
d-i apt-setup/multiverse boolean true
d-i apt-setup/non-free boolean true
# настройка прокси
d-i mirror/ftp/proxy string
d-i mirror/http/proxy string

# Only install basic language packs. Let tasksel ask about tasks.
# здесь практически ничего не менял
tasksel tasksel/first multiselect standard

# только здесь указал чтобы установил openssh-server
d-i pkgsel/include string openssh-server
d-i pkgsel/update-policy select none
d-i pkgsel/language-pack-patterns string
d-i pkgsel/install-language-support boolean false
# Verbose output and no boot splash screen.
d-i debian-installer/quiet boolean false
d-i debian-installer/splash boolean false
# Install the debconf oem-config frontend (if in OEM mode).
d-i oem-config-udeb/frontend string debconf
# Wait for two seconds in grub
d-i grub-installer/timeout string 2
d-i grub-installer/only_debian boolean true
d-i grub-installer/with_other_os boolean true
d-i finish-install/reboot_in_progress note
# Add the network and tasks oem-config steps by default.
oem-config oem-config/steps multiselect language, timezone, keyboard, user, network, tasks
#А вот и последняя строка , которая установит собственно 1С сервер
d-i preseed/late_command string mkdir /target/var/tmp/postinstall; cp -R /cdrom/1c83/* /target/var/tmp/postinstall/; chroot /target chmod +x /var/tmp/postinstall/postinstall.sh; chroot /target bash /var/tmp/postinstall/postinstall.sh

Разберем подробно команды bash:

mkdir /target/var/tmp/postinstall – создаем директорию /var/tmp/postinstall на диске сервера
cp -R /cdrom/1c83/* /target/var/tmp/postinstall/ – копируем с DVD диска из папки 1с83 все файлы ( install.tar.gz и другие) в /var/tmp/postinstall/ , имейте ввиду , что target означает корень системы «/» .
chroot /target chmod +x /var/tmp/postinstall/postinstall.sh – заходим под root и меняем атрибут на исполнение скрипта postinstall.sh
, который заранее положили в /var/tmp/iso/1с83 компьютера , на котором выполняли сборку.
chroot /target bash /var/tmp/postinstall/postinstall.sh – заходим под root и выполняем скрипт postinstall.sh

. Bash скрипт postinstall.sh :

#!/bin/sh
unset DEBCONF_REDIR
unset DEBCONF_FRONTEND
unset DEBIAN_HAS_FRONTEND
unset DEBIAN_FRONTEND

# Создать скрипт /home/jack/firstboot.sh в директории дефолтного пользователя jack
touch /home/jack/firstboot.sh

#Добавляем его в профиль пользователя , чтобы он выполнился при входе в систему
echo 'sudo /home/jack/firstboot.sh' >> /home/jack/.profile

# Строки выполнения скрипта firstboot.sh
echo '#!/bin/bash' > /home/jack/firstboot.sh
echo 'sudo cd /var/tmp/postinstall/' >> /home/jack/firstboot.sh
echo 'sudo tar -xvf /var/tmp/postinstall/install.tar.gz' >> /home/jack/firstboot.sh
echo 'echo "Start installation"' >> /home/jack/firstboot.sh
echo 'sudo dpkg -i /home/jack/install/*.deb' >> /home/jack/firstboot.sh
echo 'sudo cat /etc/postgresql/9.4/main/pg_hba.conf > /etc/postgresql/9.4/main/pg_hba.conf.bak' >> /home/jack/firstboot.sh
echo 'sudo /etc/init.d/postgresql stop' >> /home/jack/firstboot.sh
echo 'sudo sed -r 's/peer/trust/g' /etc/postgresql/9.4/main/pg_hba.conf > /etc/postgresql/9.4/main/pg_hba.conf.new' >> /home/jack/firstboot.sh
echo 'sudo cat /etc/postgresql/9.4/main/pg_hba.conf.new > /etc/postgresql/9.4/main/pg_hba.conf' >> /home/jack/firstboot.sh
echo 'sudo /etc/init.d/postgresql start' >> /home/jack/firstboot.sh
echo "sudo psql -U postgres -d template1 -c \"alter user postgres PASSWORD '999' \" " >> /home/jack/firstboot.sh
echo 'sudo /etc/init.d/postgresql stop' >> /home/jack/firstboot.sh
echo 'sudo cat /etc/postgresql/9.4/main/pg_hba.conf.bak > /etc/postgresql/9.4/main/pg_hba.conf' >> /home/jack/firstboot.sh
echo 'sudo rm /etc/postgresql/9.4/main/pg_hba.conf.new' >> /home/jack/firstboot.sh
echo 'sudo /etc/init.d/postgresql start' >> /home/jack/firstboot.sh
echo 'sudo /etc/init.d/srv1cv83 start' >> /home/jack/firstboot.sh
echo 'sudo update-rc.d srv1cv83 enable S 3 4 5' >> /home/jack/firstboot.sh
echo 'sudo update-rc.d postgresql enable S 3 4 5' >> /home/jack/firstboot.sh
echo 'cat /home/jack/.profile > /home/jack/.profile.bak' >> /home/jack/firstboot.sh
echo "sed -r 's/sudo \/home\/jack\/firstboot.sh/#/g' /home/jack/.profile > /home/jack/.profile.new" >> /home/jack/firstboot.sh
echo 'cat /home/jack/.profile.new > /home/jack/.profile' >> /home/jack/firstboot.sh
echo 'sudo reboot' >> /home/jack/firstboot.sh
#Здесь говорим что /home/jack/firstboot.sh исполняемый файл.
chmod +x /home/jack/firstboot.sh

Bash скрипт

firstboot.sh:

#!/bin/bash
# распакуем архив /home/jack/
sudo tar -xvf /var/tmp/postinstall/install.tar.gz
echo "Start installation"
# выполним установку всех файлов *.deb
sudo dpkg -i /home/jack/install/*.deb
# теперь надо установить пароль для пользователя базы данных postgres , для этого надо поменять в
# файле /etc/postgresql/9.4/main/pg_hba.conf значения peer на trust, надо сказать что в ранних версиях
# postgresql этот файл лежал в другом месте и менять надо было ident на trust
# копируем оригинал
sudo cat /etc/postgresql/9.4/main/pg_hba.conf > /etc/postgresql/9.4/main/pg_hba.conf.bak
# останавливаем postgresql если запущен
sudo /etc/init.d/postgresql stop
# меняем peer на trust и сохраняем в /etc/postgresql/9.4/main/pg_hba.conf.new
sudo sed -r 's/peer/trust/g' /etc/postgresql/9.4/main/pg_hba.conf > /etc/postgresql/9.4/main/pg_hba.conf.new
# подменяем файл конфигурации новым созданным
sudo cat /etc/postgresql/9.4/main/pg_hba.conf.new > /etc/postgresql/9.4/main/pg_hba.conf
# запускаем postgresql
sudo /etc/init.d/postgresql start
# устанавливаем пароль , в данном случае 999
sudo psql -U postgres -d template1 -c "alter user postgres PASSWORD '999'"
# останавливаем postgresql
sudo /etc/init.d/postgresql stop
# останавливаем postgresql и меняем все обратно как было
sudo cat /etc/postgresql/9.4/main/pg_hba.conf.bak > /etc/postgresql/9.4/main/pg_hba.conf
# запускаем postgresql
sudo /etc/init.d/postgresql start
# запускаем сервер 1С
sudo /etc/init.d/srv1cv83 start
# устанавливаем автозагрузку
sudo update-rc.d srv1cv83 enable S 3 4 5
sudo update-rc.d postgresql enable S 3 4 5
# убираем из профиля запуск firstboot.sh
cat /home/jack/.profile > /home/jack/.profile.bak
sed -r 's/sudo \/home\/jack\/firstboot.sh/#/g' /home/jack/.profile > /home/jack/.profile.new
cat /home/jack/.profile.new > /home/jack/.profile
#перезагрузка
sudo reboot

После перезагрузки система готова к работе , mc и htop уже установлены, остальное на свое усмотрение.
Здесь файлы из образа http://ln-group.ru/
Здесь iso https://yadi.sk/d/1cr4GXaXy3AJP