Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Шаг1. Настройка параметров VM

  1. Для запуска тестов нужна виртуальная машина со следующими параметрами:

...

Как мы видим, на этой страничке свободны 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')

...

Можете ввести какое-нибудь имя для ноды, если это принципиально (если Вы введёте имя, соответствующее имени машины в vSphere, это может облегчить работу с тестами в дальнейшем). В противном случае оставьте его, как есть, для чего нажмите Enter:

...

Дальше происходит установка системы, на экране будут выводиться логи установки. По окончании установки нажимаем Enter для перезагрузки.

...

...

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

...

Дальше логинтесь под root с паролем, который Вы установили в начале процедуры установки:

...

Шаг 4. Загрузка установленной системы.

...

Шаг 4. Загрузка установленной системы.

Дальше нужно снова поменять порядок загрузки, но теперь в обратную сторону: первым загрузочным устройством поставить локальный диск вместо CD-ROM. Для этого опять идем в настройки VM и убеждаемся что включена загрузка через BIOS:

...

Expand
titleНа VM можно зайти не только через Web Console, но и удаленно по SSH

После загрузки на виртуальную машину можно зайти не только через Web Console, но и удаленно по протоколу SSH. Для этого можно в терминале зайти по ssh с пользователем, которого Вы создали при установке. У нас это og.

Возможно, Вы не создавали никаких ssh ключей, или они изменялись. Тогда у Вас появится ошибка, типа:

Ssh порекомендует, что нужно сделать для исправления ошибки. В нашем случае это

Code Block
languagebash
ssh-keygen -f "/home/olga/.ssh/known_hosts" -R "[localhost]:22117"

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

Шаг 5. Настройка apt, создание резервных BE и установка Open VM Tools

Дальнейшие действия требуют административных прав. Залогиньтесь под root:

...

Теперь нужно создать BE с образом установленной системы при помощи утилиты beadm для того, чтобы в дальнейшем можно было использовать эту версию в качестве исходной точки, т.е. чтобы можно было пропустить все шаги этой инструкции от начала до этого места:

...

В нём должен быть указан адрес репозитория, в котором лежат последниеоттестированные стабильные версии DilOS:

Code Block
languagenone
deb http://apt210.20.dilos50.org188/dilos dilos2-testing main contrib non-free

Вы можете это сделать с помощью редактора или выполнив команду:

Code Block
languagebash
cat > /etc/apt/sources.list <<EOT
deb http://10.20.50.188/dilos dilos2-testing main contrib non-free
EOT

После этого нужно заставить apt обновить информацию о репозиториях:

...

Code Block
languagebash
apt install os-upgrade
os-upgrade

После обновления устанавливаем Open VM Tools, для чего вводим команду:

Code Block
languagebash
apt install open-vm-tools

...

 -r
Expand
titleУтилита os-upgrade

Утилита os-upgrade предназначена для создания нового BE, содержащего последнюю версию системы DilOS из репозиториев, адреса которых указаны в файле /etc/apt/sources.list.

Формат команды:

Code Block
languagebash
svcadm enable open-vm-tools

Теперь перезагрузим машину, либо с помощью меню Power | Reset, либо с помощью команды

Code Block
languagebash
reboot

Если все установилось и запустилось корректно, в vSphere для Вашей машины Вы должны увидеть ее IP адреса.

Note :До выхода новой оттестированнойстабильной версии Вы можете использовать этот BE в качестве базового, т.е. все шаги, которые Вы выполнили от начала инструкции до этого места, можно будет пропустить. Для этого аналогично dilos_ISO_orig выполните команду:

beadm create dilos_BASE

А когда Вам понадобится загрузиться с этого BE, достаточно будет выполнить команды:

beadm activate dilos_BASE

reboot

Info
Expand
titleВы можете проверить, что эти BE создались.

Для этого можно выполнить команду beadm list:

Code Block
languagebash
root@dilos:~# beadm list
BE                     Active Mountpoint Space   Policy Created
dilos_2.0.3.8          NR     /          811.55M static 2023-01-12 19:05
dilos_BASE             -      -          195.50K static 2023-01-12 19:11
dilos_ISO_origos-upgrade [-f|--force-remove] [-r|--reboot] [-s|--skip-activate] [-y|--yes] [<newBE name>]
где:
-f | --force-remove     принудительно удаляет BE, если он уже существует
-r | --reboot           перезагружает систему на новый BE
-s | --skip-activate    не активирует BE
-y | --yes              предполагает, что на все вопросы ответ YES
newBE name           -   создаёт BE с -указанным именем и новую версию      2.19M   static 2023-01-12 18:20
root@dilos:~#

Шаг 6. Подготовка машины для запуска тестов

Теперь подготавливаем машину для запуска тестов (все команды также должны запускаться из под root). Для входа в режим root-а можно воспользоваться командой:

Code Block
languagebash
og@dilos:~# su -
  1. Установите версию DilOS, которую Вы будете тестировать. Для этого нужно указать менеджеру apt адреса репозиториев, аналогично тому, как Вы это делали выше. В файле /etc/apt/sources.list должны быть указаны следующие адреса для RELEASE версий:

Code Block
languagenone
deb http://apt2.dilos.org/dilos dg2-unstable main contrib non-free 
deb http://apt2.dilos.org/dilos du2-unstable main contrib non-free 

...

устанавливает туда

При запуске без параметров по умолчанию утилита пытается создать BE с именем той версии, которую она находит в репозитории. Например, dilos_2.0.2.96 или dilos_2.0.3.8-20221221-1-0+int2. Поэтому если Вы пытаетесь установить установить версию, которая уже была установлена на эту VM, Вы можете принудительно удалить её и поставить апгрейд поверх неё командой:

Code Block
languagebash
os-upgrade -f

Или оставить уже созданный BE, а новому дать другое имя. Например, если dilos_2.0.2.96 уже есть:

Code Block
languagebash
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
languagenone
deb http://apt2.dilos.org/dilos dgdbg-unstable main contrib non-free
deb http://apt2.dilos.org/dilos du2-unstable main contrib non-free

или:

Code Block
languagebash
cat > /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
languagebash
apt update
os-upgrade
reboot

После перезагрузки снова логинимся под root.

Info

Note : В этом месте можно также при желании установить пакеты, нужные для выполнения конкретных групп тестов. Какие пакеты нужны, указывается в инструкции к конкретному виду тестов (LIBC, NET, OS и т.д.). Но это можно сделать и позднее.

2. Cоздаем юзера ztest:

Code Block
languagebash
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

...

os-upgrade dilos_2.0.2.96_NEW

Если хотите перезагрузиться после установки апгрейда, просто укажите ключик -r:

Code Block
languagebash
os-upgrade -r

После обновления логинимся под root и устанавливаем Open VM Tools, для чего вводим команду:

Code Block
languagebash
apt install open-vm-tools

...

После успешной установки, запускаем Open VM Tools:

Code Block
languagebash
svcadm enable open-vm-tools

Теперь перезагрузим машину, либо с помощью меню Power | Reset, либо с помощью команды

Code Block
languagebash
reboot

Если все установилось и запустилось корректно, в vSphere для Вашей машины Вы должны увидеть ее IP адреса.

Info

Note :До выхода новой оттестированнойстабильной версии Вы можете использовать этот BE в качестве базового, т.е. все шаги, которые Вы выполнили от начала инструкции до этого места, можно будет пропустить. Для этого аналогично dilos_ISO_orig выполните команду:

beadm create dilos_BASE

А когда Вам понадобится загрузиться с этого BE, достаточно будет выполнить команды:

beadm activate dilos_BASE

reboot

Expand
titleВы можете проверить, что эти BE создались.

Для этого можно выполнить команду beadm list:

Code Block
languagebash
root@dilos:~# beadm list
BE                     Active Mountpoint Space   Policy Created
dilos_2.0.3.8          NR     /          811.55M static 2023-01-12 19:05
dilos_BASE             -      -          195.50K static 2023-01-12 19:11
dilos_ISO_orig         -      -          2.19M   static 2023-01-12 18:20
root@dilos:~#

Шаг 6. Подготовка машины для запуска тестов

Теперь подготавливаем машину для запуска тестов (все команды также должны запускаться из под root). Для входа в режим root-а можно воспользоваться командой:

Code Block
languagebash
su -
  1. Установите версию DilOS, которую Вы будете тестировать. Для этого нужно указать менеджеру apt адреса репозиториев, аналогично тому, как Вы это делали выше. В файле /etc/apt/sources.list должны быть указаны следующие адреса для RELEASE версий:

Code Block
languagenone
deb http://10.20.50.188/dilos dilos2 main contrib non-free 

Вы можете это сделать с помощью редактора или выполнив команду:

Code Block
languagebash
root@dilos:~#cat 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
Expand
titleЕсли возникли проблемы с сертификатами

при тестировании DEBUG версии, устанавливаем сертификаты:

Code Block
languagebash
root@dilos:~# apt install ca-certificates
и перезагружаемся
> /etc/apt/sources.list <<EOT
deb http://10.20.50.188/dilos dilos2 main contrib non-free 
EOT

 Для DEBUG версий эти адреса, соответственно:

Code Block
languagenone
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
languagebash
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
languagebash
root@dilos:~# reboot
apt update
os-upgrade -r

После перезагрузки

...

Проверяем, что admin создался:

Code Block
languagebash
root@dilos:~# ls /export/home
admin  og

3. Настраиваем NAT по инструкции Как настроить сеть на Виртуальной Машине для глобальной зоны с коммутатором etherstub до создания зоны, потому что для тестов нужна зона dhcp.

Шаг 7. Создание тестовых зон

  1. Создаем mountpoint, куда будут монтироваться все зоны:

Code Block
languagebash
root@dilos:~# zfs create -o mountpoint=/zones rpool/zones
root@dilos:~# mkdir /export/builds

2. Сначала создаем и запускаем зону dhcpснова логинимся под 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
languagebash
root@dilos:~# useradd cat-m > 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: []-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
titleЕсли возникли проблемы с сертификатами

при тестировании DEBUG версии, устанавливаем сертификаты:

Code Block
languagebash
apt install ca-certificates

и перезагружаемся:

Code Block
languagebash
reboot

После перезагрузки опять логинимся под root.

3. Настраиваем NAT по инструкции Как настроить сеть на Виртуальной Машине для глобальной зоны с коммутатором etherstub до создания зоны, потому что для тестов нужна зона dhcp.

Шаг 7. Создание тестовых зон

Шаги 1-3 Вы можете заменить запуском готового скрипта или выполнить их с проверками, как они описаны ниже.

  1. Создаем mountpoint, куда будут монтироваться все зоны:

Code Block
languagebash
zfs create -o mountpoint=/zones rpool/zones
mkdir /export/builds

2. Сначала создаем и запускаем зону dhcp:

Code Block
languagebash
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
 dhcp boot 2>&1 | /usr/bin/tee -a /var/tmp/dhcp-bts.log

Проверяем, что зона dhcp установилась:

Code Block
languagebash
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:' -e 'warning:' -e 'W:' -e 'error:' -e  dpkg     excl'E:' -e 'cannot' /var/tmp/dhcp-bts.log | sort -u

3. Заходим в зону, проверяем адреса и устанавливаем и запускаем сервер dhcp:

Code Block
languagebash
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
languagebash
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