...
Шаг1. Настройка параметров VM
Для запуска тестов нужна виртуальная машина со следующими параметрами:
...
В SPB Labs виртуальные машины находятся в vSphere по адресу по этому адресу https://photon.spb.dilos.org/ui/#?extensionId=vsphere.core.vm.summary&objectId=urn:vmomi:VirtualMachine:vm-260:8bb8caa4-62ba-4222-ad45-7dfbbbc3502e&navigator=vsphere.core.viTree.hostsAndClustersView
...
2. Ваша машина будет доступна по некоторому IP адресу. Для этого нужно зайти на страничку /wiki/spaces/AL/pages/1936326753 и выбрать свободный IP, например:
...
...
2. Ваша машина будет доступна по некоторому IP адресу. Для этого нужно зайти на страничку /wiki/spaces/AL/pages/1936326753 и выбрать свободный IP, например:
...
Как мы видим, на этой страничке свободны 127 и 138 адреса, которые при вводе будут иметь вид 10.20.50.127 и 10.20.50.138 138 соответственно. Справа от номера нужно вписать имя своей машины и запомнить адрес.
...
Настройка сделана, можем запускать машину.
Шаг2. Запуск VM
1. Для запуска машины выбираем в меню Power | Power On
...
3. Дальше на вкладке Boot передвигаем (используя +/- для передвижения вверх/вниз)на первое место CD-ROM Drive и сохраняем по нажатию на клавишу F10 Save and Exit.
...
Шаг 3. Установка DilOS
После сохранения конфигурации BIOS происходит загрузка VM с эмулируемого CD-ROM, т.е из выбранного ISO-файла. В меню GRUB выбираем пункт Install dilos в нашем случае ('2.0.2.48')
...
Expand | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||
В некоторых версиях возможно возникновение ошибки tnf: Если она у вас появится, то нужно удалить драйвер tnf. Имя этой компоненты можно узнать командой:
У нас оно system-tnf, удаляем его командой:
|
Чтобы запустить установщик операционной системы, введите команду
Code Block | ||
---|---|---|
| ||
screen |
...
По умолчанию используется network интерфейс vmxnet3s0, но возможно, у Вас будет другой и, возможно, не один. Используйте тот, через который Вы будете подключаться к сети. У нас он один, и мы будем подключаться через него.
...
Можете ввести какое-нибудь имя для ноды, если это принципиально (если Вы введёте имя, соответствующее имени машины в vSphere, это может облегчить работу с тестами в дальнейшем). В противном случае оставьте его, как есть, для чего нажмите Enter:
...
Дальше происходит установка системы, на экране будут выводиться логи установки. По окончании установки нажимаем Enter для перезагрузки.
...
...
После перезагрузки нужно успеть быстро переключиться на загрузку с локального диска, иначе по умолчанию опять будет производиться установка системы - не теряйте времени .
...
Дальше логинтесь под root с паролем, который Вы установили в начале процедуры установки:
...
Шаг 4. Загрузка установленной системы.
Если вы не хотите все время выбирать между новой установкой системы и загрузкой в уже установленную, то нужно снова Дальше нужно снова поменять порядок загрузки, но теперь в обратную сторону: первым загрузочным устройством поставить локальный диск вместо CD-ROM. Для этого опять идем в настройки VM и убеждаемся что включена загрузка через BIOS:
...
Expand | |||||
---|---|---|---|---|---|
| |||||
После загрузки на виртуальную машину можно зайти не только через Web Console, но и удаленно по протоколу SSH. Для этого можно в терминале зайти по ssh с пользователем, которого Вы создали при установке. У нас это og. Возможно, Вы не создавали никаких ssh ключей, или они изменялись. Тогда у Вас появится ошибка, типа: Ssh порекомендует, что нужно сделать для исправления ошибки. В нашем случае это
В Вашем случае будет какая-то другая команда, можете просто ее скопировать и выполнить с терминала. Потом снова попытайтесь зайти через ssh. |
Шаг 5. Настройка apt, создание резервных BE и установка Open VM Tools
Дальнейшие действия требуют административных прав. Залогиньтесь под root:
Code Block | ||
---|---|---|
| ||
su - |
Теперь нужно создать BE с образом установленной системы при помощи утилиты beadm для того, чтобы в дальнейшем можно было использовать эту версию в качестве исходной точки без выполнения всех шагов, которые Вы проделали от начала этой инструкции, т.е. чтобы можно было пропустить все шаги этой инструкции от начала до этого места:
Code Block | ||
---|---|---|
| ||
beadm create dilos_ISO_orig |
Expand | |||||
---|---|---|---|---|---|
| |||||
к этой исходной точке, выполните следующие команды:
После перезагрузки Вы попадёте в оригинальную систему, которая была Вами установлена из ISO файла. |
Далее надо выбрать в последнюю стабильную версию системы в качестве базовой версии DilOS, на которую будут устанавливаться любые другие (тестовые) версии. Для этого прежде всего нужно настроить пакетный менеджер apt, для чего поменять файл /etc/apt/sources.list
.
В нём должен быть указан адрес репозитория, в котором лежат последниеоттестированные стабильные версии DilOS:
Code Block | ||
---|---|---|
| ||
deb http://apt2.dilos.org10.20.50.188/dilos dilos2-testing main contrib non-free |
Вы можете это сделать с помощью редактора или выполнив команду:
Code Block | ||
---|---|---|
| ||
cat > /etc/apt/sources.list <<EOT deb http://10.20.50.188/dilos dilos2-testing main contrib non-free EOT |
После этого нужно заставить apt обновить информацию о репозиториях:
Code Block | |||
---|---|---|---|
| apt
| ||
apt update |
...
Теперь обновляем пакет os-upgrade и запускаем os-upgrade:
Code Block | ||
---|---|---|
| ||
apt install os-upgrade os-upgrade |
После обновления устанавливаем Open VM Tools, для чего вводим команду:
Code Block |
---|
apt install open-vm-tools |
...
После успешной установки, запускаем Open VM Tools:
Code Block |
---|
svcadm enable open-vm-tools |
Теперь перезагрузим машину, либо с помощью меню Power | Reset, либо с помощью команды
Code Block |
---|
reboot |
Если все установилось и запустилось корректно, в vSphere для Вашей машины Вы должны увидеть ее IP адреса.
...
beadm create dilos_BASE
В дальнейшем для загрузки с этого BE выполните команды:
beadm activate dilos_BASE
reboot
Шаг 6. Подготовка машины для запуска тестов
Теперь подготавливаем машину для запуска тестов (все команды также должны запускаться из под root). Для входа в режим root-а можно воспользоваться командой:
Code Block |
---|
og@dilos:~# su - |
Установите версию DilOS, которую Вы будете тестировать. Для этого нужно указать менеджеру apt адреса репозиториев, аналогично тому, как Вы это делали выше. В файле
/etc/apt/sources.list
должны быть указаны следующие адреса для RELEASE версий:
Code Block | ||
---|---|---|
| ||
deb http://apt2.dilos.org/dilos dg2-unstable main contrib non-free
deb http://apt2.dilos.org/dilos du2-unstable main contrib non-free |
Вы можете это сделать с помощью редактора или выполнив команду:
Code Block | ||
---|---|---|
| ||
cat > /etc/apt/sources.list <<EOT
deb http://apt2.dilos.org/dilos dg2-unstable main contrib non-free
deb http://apt2.dilos.org/dilos du2-unstable main contrib non-free
EOT |
Для DEBUG адреса, соответственно:
Code Block |
---|
deb http://apt2.dilos.org/dilos dgdbg-unstable main contrib non-free
deb http://apt2.dilos.org/dilos du2-unstable main contrib non-free |
...
-r |
Expand | ||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||||||||||||
Утилита os-upgrade предназначена для создания нового BE, содержащего последнюю версию системы DilOS из репозиториев, адреса которых указаны в файле Формат команды:
При запуске без параметров по умолчанию утилита пытается создать BE с именем той версии, которую она находит в репозитории. Например,
Или оставить уже созданный BE, а новому дать другое имя. Например, если
Если хотите перезагрузиться после установки апгрейда, просто укажите ключик -r:
|
После обновления логинимся под root и устанавливаем Open VM Tools, для чего вводим команду:
Code Block | ||
---|---|---|
| ||
catapt > /etc/apt/sources.list <<EOT deb http://apt2.dilos.org/dilos dgdbg-unstable main contrib non-free deb http://apt2.dilos.org/dilos du2-unstable main contrib non-free EOT |
Затем снова запустите обновление системы:
Code Block |
---|
apt update
os-upgrade
reboot |
2. Cоздаем юзера ztest:
Code Block |
---|
root@dilos:~# useradd -m -d /var/ztest -g staff -s /bin/bash ztest
root@dilos:~# passwd ztest
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
root@dilos:~# echo "ztest ALL=(ALL:ALL) NOPASSWD: ALL" >> /etc/sudoers.d/ztest |
и юзера admin:
Code Block |
---|
root@dilos:~# useradd -m -g staff admin
root@dilos:~# passwd admin
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
root@dilos:~# echo "admin ALL=(ALL:ALL) NOPASSWD: ALL" >> /etc/sudoers.d/admin |
3. Если Вы тестируете DEBUG версию, устанавливаем сертификаты:
root@dilos:~# apt install ca-certificates
и перезагружаемся:
Code Block |
---|
root@dilos:~# reboot |
После перезагрузки опять логинимся под root. Проверяем, что admin
создался:
Code Block |
---|
root@dilos:~# ls /export/home
admin og |
4. Настраиваем NAT по инструкции Как настроить сеть на Виртуальной Машине для глобальной зоны с коммутатором etherstub до создания зоны, потому что для тестов нужна зона dhcp.
Шаг 7. Создание тестовых зон
Создаем mountpoint, куда будут монтироваться все зоны:
Code Block |
---|
root@dilos:~# zfs create -o mountpoint=/zones rpool/zones
root@dilos:~# mkdir /export/builds |
2. Сначала создаем и запускаем зону dhcp:
Code Block |
---|
root@dilos:~# cat > dhcp.cmd <<EOT create -b set zonepath=/zones/dhcp set brand=dpkg set autoboot=false set ip-type=exclusive add fs set dir="/export/home/admin" set special="/export/home/admin" set type="lofs" end add fs set dir="/export/builds" set special="/export/builds" set type="lofs" end add net set physical="iz1" set global-nic="vsw0" add property (name=ip,value="192.168.0.1") add property (name=netmask,value="255.255.255.0") add property (name=gateway,value="192.168.0.254") add property (name=primary,value="true") end add attr set name="resolvers" set type="string" set value="8.8.8.8" end verify commit EOT root@dilos:~# zonecfg -z dhcp -f dhcp.cmd root@dilos:~# zonecfg -z dhcp info zonename: dhcp zonepath: /zones/dhcp brand: dpkg autoboot: false bootargs: pool: limitpriv: scheduling-class: ip-type: exclusive hostid: fs-allowed: uuid: 46b79185-7320-4ab6-b700-15058bd49c02 fs: dir: /export/home/admin special: /export/home/admin raw not specified type: lofs options: []install open-vm-tools |
...
После успешной установки, запускаем Open VM Tools:
Code Block | ||
---|---|---|
| ||
svcadm enable open-vm-tools |
Теперь перезагрузим машину, либо с помощью меню Power | Reset, либо с помощью команды
Code Block | ||
---|---|---|
| ||
reboot |
Если все установилось и запустилось корректно, в vSphere для Вашей машины Вы должны увидеть ее IP адреса.
Info |
---|
Note :До выхода новой оттестированнойстабильной версии Вы можете использовать этот BE в качестве базового, т.е. все шаги, которые Вы выполнили от начала инструкции до этого места, можно будет пропустить. Для этого аналогично dilos_ISO_orig выполните команду:
А когда Вам понадобится загрузиться с этого BE, достаточно будет выполнить команды:
|
Expand | |||||
---|---|---|---|---|---|
| |||||
Для этого можно выполнить команду
|
Шаг 6. Подготовка машины для запуска тестов
Теперь подготавливаем машину для запуска тестов (все команды также должны запускаться из под root). Для входа в режим root-а можно воспользоваться командой:
Code Block | ||
---|---|---|
| ||
su - |
Установите версию DilOS, которую Вы будете тестировать. Для этого нужно указать менеджеру apt адреса репозиториев, аналогично тому, как Вы это делали выше. В файле
/etc/apt/sources.list
должны быть указаны следующие адреса для RELEASE версий:
Code Block | ||
---|---|---|
| ||
deb http://10.20.50.188/dilos dilos2 main contrib non-free |
Вы можете это сделать с помощью редактора или выполнив команду:
Code Block | ||
---|---|---|
| ||
cat > /etc/apt/sources.list <<EOT
deb http://10.20.50.188/dilos dilos2 main contrib non-free
EOT |
Для DEBUG версий эти адреса, соответственно:
Code Block | ||
---|---|---|
| ||
deb http://10.20.50.188/dilos dgdbg-unstable main contrib non-free
deb http://10.20.50.188/dilos dilos2 main contrib non-free |
или:
Code Block | ||
---|---|---|
| ||
cat > /etc/apt/sources.list <<EOT
deb http://10.20.50.188/dilos dgdbg-unstable main contrib non-free
deb http://10.20.50.188/dilos dilos2 main contrib non-free
EOT |
Затем снова запустите обновление системы:
Code Block | ||
---|---|---|
| ||
apt update
os-upgrade -r |
После перезагрузки снова логинимся под root.
Note |
---|
Если по каким-то причинам версия для тестирования не грузится, можно посмотреть её файлы, как описано здесь. |
Info |
---|
Note : В этом месте можно также при желании установить пакеты, нужные для выполнения конкретных групп тестов. Какие пакеты нужны, указывается в инструкции к конкретному виду тестов (LIBC, NET, OS и т.д.). Но это можно сделать и позднее. |
Тут Вы можете проверить, что установка прошла без проблем, если введёте следующую команду:
Code Block |
---|
grep -e 'WARNING:' -e 'warning:' -e 'W:' -e 'error:' -e 'E:' -e 'cannot' /var/tmp/os-upgrade.log | sort -u |
2. А здесь Вы можете запустить готовый скрипт или выполнить следующие шаги. Cоздаем юзера ztest:
Code Block | ||
---|---|---|
| ||
root@dilos:~# useradd -m -d /var/ztest -g staff -s /bin/bash ztest
root@dilos:~# passwd ztest
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
root@dilos:~# echo "ztest ALL=(ALL:ALL) NOPASSWD: ALL" >> /etc/sudoers.d/ztest |
Expand | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||
при тестировании DEBUG версии, устанавливаем сертификаты:
и перезагружаемся:
После перезагрузки опять логинимся под root. |
3. Настраиваем NAT по инструкции Как настроить сеть на Виртуальной Машине для глобальной зоны с коммутатором etherstub до создания зоны, потому что для тестов нужна зона dhcp.
Шаг 7. Создание тестовых зон
Шаги 1-3 Вы можете заменить запуском готового скрипта или выполнить их с проверками, как они описаны ниже.
Создаем mountpoint, куда будут монтироваться все зоны:
Code Block | ||
---|---|---|
| ||
zfs create -o mountpoint=/zones rpool/zones
mkdir /export/builds |
2. Сначала создаем и запускаем зону dhcp:
Code Block | ||
---|---|---|
| ||
cat > dhcp.cmd <<EOT create -b set zonepath=/zones/dhcp set brand=dpkg set autoboot=true set ip-type=exclusive add fs set dir="/export/builds" set special="/export/builds" set type="lofs" end add net set physical="iz1" set global-nic="vsw0" add property (name=ip,value="192.168.0.1") add property (name=netmask,value="255.255.255.0") add property (name=gateway,value="192.168.0.254") add property (name=primary,value="true") end add attr set name="resolvers" set type="string" set value="8.8.8.8" end verify commit EOT zonecfg -z dhcp -f dhcp.cmd zonecfg -z dhcp info zonename: dhcp zonepath: /zones/dhcp brand: dpkg autoboot: true bootargs: pool: limitpriv: scheduling-class: ip-type: exclusive hostid: fs-allowed: uuid: 46b79185-7320-4ab6-b700-15058bd49c02 fs: dir: /export/builds special: /export/builds raw not specified type: lofs options: [] net: address not specified allowed-address not specified defrouter not specified global-nic: vsw0 mac-addr not specified physical: iz1 vlan-id not specified property: (name=ip,value="192.168.0.1") property: (name=netmask,value="255.255.255.0") property: (name=gateway,value="192.168.0.254") property: (name=primary,value="true") attr: name: resolvers type: string value: 8.8.8.8 root@dilos:~# zoneadm -z dhcp install root@dilos:~# 2>&1 | /usr/bin/tee -a /var/tmp/dhcp-bts.log zoneadm -z dhcp boot 2>&1 | /usr/bin/tee -a /var/tmp/dhcp-bts.log |
Проверяем, что зона dhcp установилась:
Code Block | ||
---|---|---|
| ||
root@dilos:~# zoneadm list -civ ID NAME STATUS PATH BRAND IP 0 global running / dpkg shared 1 dhcp running /zones/dhcp dpkg excl |
Можно проверить, что установка зоны прошла успешно при помощи команды:
Code Block |
---|
grep -e 'WARNING:' dpkg excl-e 'warning:' -e 'W:' -e 'error:' -e 'E:' -e 'cannot' /var/tmp/dhcp-bts.log | sort -u |
3. Заходим в зону, проверяем адреса и устанавливаем и запускаем сервер dhcp:
Code Block | ||
---|---|---|
| ||
root@dilos:~# zlogin dhcp root@dhcp:~# ifconfig lo0: flags=2001000849<UP,LOOPBACK,RUNNING,MULTICAST,IPv4,VIRTUAL> mtu 8232 index 1 inet 127.0.0.1 netmask ff000000 iz1: flags=1000843<UP,BROADCAST,RUNNING,MULTICAST,IPv4> mtu 9000 index 2 inet 192.168.0.1 netmask ffffff00 broadcast 192.168.0.255 ether 2:8:20:92:59:94 lo0: flags=2002000849<UP,LOOPBACK,RUNNING,MULTICAST,IPv6,VIRTUAL> mtu 8252 index 1 inet6 ::1/128 root@dhcp:~# apt install isc-dhcp-server -y 2>&1 | /usr/bin/tee -a /var/tmp/dhcp-bts.log root@dhcp:~# mv /etc/dhcp/dhcpd.conf /etc/dhcp/dhcpd.conf.bckp root@dhcp:~# cat > /etc/dhcp/dhcpd.conf <<EOT # A slightly different configuration for an internal subnet. subnet 192.168.0.0 netmask 255.255.255.0 { range 192.168.0.100 192.168.0.200; option subnet-mask 255.255.255.0; option domain-name-servers 8.8.8.8; # option domain-name "internal.example.org"; option routers 192.168.0.254; option broadcast-address 192.168.0.255; default-lease-time 600; max-lease-time 7200; } EOT root@dhcp:~# ifconfig lo0: flags=2001000849<UP,LOOPBACK,RUNNING,MULTICAST,IPv4,VIRTUAL> mtu 8232 index 1 inet 127.0.0.1 netmask ff000000 iz1: flags=1000843<UP,BROADCAST,RUNNING,MULTICAST,IPv4> mtu 9000 index 2 inet 192.168.0.1 netmask ffffff00 broadcast 192.168.0.255 ether 2:8:20:92:59:94 lo0: flags=2002000849<UP,LOOPBACK,RUNNING,MULTICAST,IPv6,VIRTUAL> mtu 8252 index 1 inet6 ::1/128 root@dhcp:~# cat > /etc/default/isc-dhcp-server <<EOT # Defaults for isc-dhcp-server (sourced by /etc/init.d/isc-dhcp-server) # Path to dhcpd's config file (default: /etc/dhcp/dhcpd.conf). #DHCPDv4_CONF=/etc/dhcp/dhcpd.conf #DHCPDv6_CONF=/etc/dhcp/dhcpd6.conf # Path to dhcpd's PID file (default: /var/run/dhcpd.pid). #DHCPDv4_PID=/var/run/dhcpd.pid #DHCPDv6_PID=/var/run/dhcpd6.pid # Additional options to start dhcpd with. # Don't use options -cf or -pf here; use DHCPD_CONF/ DHCPD_PID instead #OPTIONS="" # On what interfaces should the DHCP server (dhcpd) serve DHCP requests? # Separate multiple interfaces with spaces, e.g. "eth0 eth1". INTERFACESv4="iz1" INTERFACESv6="" EOT root@dhcp:~# svcadm enable isc-dhcp-server root@dhcp:~# svcs -xv root@dhcp:~# svcs isc-dhcp-server STATE STIME FMRI online 10:46:50 svc:/network/isc-dhcp-server:default root@dhcp:~# dhcp-lease-list To get manufacturer names please download http://standards.ieee.org/regauth/oui/oui.txt to /usr/local/etc/oui.txt Reading leases from /var/lib/dhcp/dhcpd.leases MAC IP hostname valid until manufacturer =============================================================================================== root@dhcp:~# exit logout |
4. Теперь создаем клиентскую зону, если она Вам нужна (здесь приведён пример создания клиентской зоны - скорее всего Вам будет нужна какая-то другая зона или даже несколько клиентских зон):
Code Block | ||
---|---|---|
| ||
root@dilos:~# cat > zone.cmd <<EOT create set zonepath=/zones/zone set autoboot=false set ip-type=exclusive add net set physical=int1 set global-nic="vsw0" add property (name="ip",value="dhcp") add property (name="primary",value="true") end commit exit EOT root@dilos:~# zonecfg -z zone -f zone.cmd root@dilos:~# zoneadm -z zone install root@dilos:~# zoneadm -z zone boot root@dilos:~# zoneadm list -civ ID NAME STATUS PATH BRAND IP 0 global running / dpkg shared 1 dhcp running /zones/dhcp dpkg excl 2 zone running /zones/zone dpkg excl root@dilos:~# zlogin -l root dhcp dhcp-lease-list To get manufacturer names please download http://standards.ieee.org/regauth/oui/oui.txt to /usr/local/etc/oui.txt Reading leases from /var/lib/dhcp/dhcpd.leases MAC IP hostname valid until manufacturer =============================================================================================== 02:08:20:a0:5a:92 192.168.0.100 dhcp 2022-11-24 10:20:34 -NA- root@dilos:~# zlogin -l root zone ifconfig lo0: flags=2001000849<UP,LOOPBACK,RUNNING,MULTICAST,IPv4,VIRTUAL> mtu 8232 index 1 inet 127.0.0.1 netmask ff000000 int1: flags=1004843<UP,BROADCAST,RUNNING,MULTICAST,DHCP,IPv4> mtu 9000 index 2 inet 192.168.0.100 netmask ffffff00 broadcast 192.168.0.255 ether 2:8:20:a0:5a:92 lo0: flags=2002000849<UP,LOOPBACK,RUNNING,MULTICAST,IPv6,VIRTUAL> mtu 8252 index 1 inet6 ::1/128 root@dilos:~# uname -a SunOS debug221122 5.11 2.0.3.7-20221122-1-0+int2 i86pc i386 i86pc |
5. Если всё получилось, то машина готова для запуска тестов.
...
См. beadm