Подготовка VM для запуска тестов в SPB Labs (BIOS)
Шаг1. Настройка параметров VM
Для запуска тестов нужна виртуальная машина со следующими параметрами:
4 ядра
8Gb памяти
30Gb hdd (и 3x8Gb для тестов zfs)
В SPB Labs виртуальные машины находятся в vSphere по адресу по этому адресу.
2. Ваша машина будет доступна по некоторому IP адресу. Для этого нужно зайти на страничку https://dilos-dev.atlassian.net/wiki/spaces/AL/pages/1936326753 и выбрать свободный IP, например:
Как мы видим, на этой страничке свободны 127 и 138 адреса, которые при вводе будут иметь вид 10.20.50.127 и 10.20.50.138 соответственно. Справа от номера нужно вписать имя своей машины и запомнить адрес.
3. Возвращаемся назад и настраиваем параметры машины (Edit Settings…):
В настройках нужно выбрать ISO-файл (Datastore ISO file), с которого будет осуществляться установка DilOS:
В репозитории находятся несколько версий, выбирайте ту, которая вам нужна для тестирования. Мы для примера выбираем последнюю версию.
Не забудьте поставить галочку Connected At Power On, чтобы при включении питания ISO-файл подключался автоматически.
При запуске машины ISO-файл представляется как CD-ROM, поэтому нужно чтобы загрузка осуществлялась с CD-ROM. Для этого нужно в BIOS выбрать правильную последовательность загрузки. Для эмуляции запуска BIOS нужно на закладке VM Options в Boot Options поставить галочку During the next boot, force entry into the setup screen
Настройка сделана, можем запускать машину.
Шаг2. Запуск VM
1. Для запуска машины выбираем в меню Power | Power On
2. В момент запуска открываем Web Console, для чего кликаем мышкой надпись Launch Web Console. И внутри открывшейсяконсоли попадаем в BIOS
3. Дальше на вкладке Boot передвигаем (используя +/- для передвижения вверх/вниз)на первое место CD-ROM Drive и сохраняем по нажатию на клавишу F10 Save and Exit.
Шаг 3. Установка DilOS
После сохранения конфигурации BIOS происходит загрузка VM с эмулируемого CD-ROM, т.е из выбранного ISO-файла. В меню GRUB выбираем пункт Install dilos в нашем случае ('2.0.2.48')
После загрузки следуем инструкции на экране - регистрируемся под администратором: логин root, пароль 123.
Чтобы запустить установщик операционной системы, введите команду
screen
По умолчанию используется network интерфейс vmxnet3s0, но возможно, у Вас будет другой и, возможно, не один. Используйте тот, через который Вы будете подключаться к сети. У нас он один, и мы будем подключаться через него.
Для использования статического IP адреса выбираем 2-ой пункт Using static IPv4:
и вводим адрес, который мы выбрали из таблицы и запомнили на Шаге 1. п.2:
Вводим маску подсети 255.255.255.0
Вводим адрес шлюза, в SPB Labs его адрес 10.20.50.199
Подтверждаем установки. Если что-то введено неправильно, эти настройки можно поменять.
Далее, если нет специальных требований, то лучше оставить значение MTU, как есть:
Теперь задаем пароль для root.
Root - это системный администратор, он может делать всё, что угодно, устанавливать/обновлять/удалять пакеты, редактировать конфигурационные файлы и разные другие действия. Будьте аккуратны при работе под этой учётной записью и не забывайте пароль!
Создаем свою учетную запись. Под ней Вы сможете работать для работать помимо прочего и с удаленного терминала (для примера пусть будет og) и вводим логин и пароль:
Можете ввести какое-нибудь имя для ноды, если это принципиально (если Вы введёте имя, соответствующее имени машины в vSphere, это может облегчить работу с тестами в дальнейшем). В противном случае оставьте его, как есть, для чего нажмите Enter:
и подтвердите выбор.
Если у вас машина будет подключаться к какому-нибудь домену, то можете ввести здесь его имя, в противном случае оставьте как есть, для чего просто нажмите Enter:
Дальше нужно ввести адрес nameserver-а, он у нас 8.8.8.8 и дополнительный 8.8.4.4. Эти адреса будут выставляться по умолчанию, поэтому их можно просто подтвердить. Search list можно оставить пустым. Вы сможете изменить его позже, если будет такая надобность.
Подтверждаем настройки:
Выбираем диск, на который будем устанавливать операционную систему. Здесь он у нас один - и выбор очевиден. А в конфигурации для машины с четырьмя дисками их будет 4 - выбирайте самый большой:
и подтверждаем настройки:
Дальше происходит установка системы, на экране будут выводиться логи установки. По окончании установки нажимаем Enter для перезагрузки.
Шаг 4. Загрузка установленной системы.
Дальше нужно снова поменять порядок загрузки, но теперь в обратную сторону: первым загрузочным устройством поставить локальный диск вместо CD-ROM. Для этого опять идем в настройки VM и убеждаемся что включена загрузка через BIOS:
Опять перезапускаем VM через меню Power | Reset и меняем на вкладке Boot загрузку с CD-ROM на загрузку с Hard Drive
Теперь по умолчанию VM будет загружать свежеустановленную систему.
После загрузки на виртуальную машину можно зайти не только через Web Console, но и удаленно по протоколу SSH. Для этого можно в терминале зайти по ssh с пользователем, которого Вы создали при установке. У нас это og.
Шаг 5. Настройка apt, создание резервных BE и установка Open VM Tools
Дальнейшие действия требуют административных прав. Залогиньтесь под root:
su -
Теперь нужно создать BE с образом установленной системы при помощи утилиты beadm для того, чтобы в дальнейшем можно было использовать эту версию в качестве исходной точки, т.е. чтобы можно было пропустить все шаги этой инструкции от начала до этого места:
beadm create dilos_ISO_orig
Далее надо выбрать последнюю стабильную версию системы в качестве базовой версии DilOS, на которую будут устанавливаться любые другие (тестовые) версии. Для этого прежде всего нужно настроить пакетный менеджер apt, для чего поменять файл /etc/apt/sources.list
.
В нём должен быть указан адрес репозитория, в котором лежат последние оттестированные стабильные версии DilOS:
deb http://10.20.50.188/dilos dilos2-testing main contrib non-free
Вы можете это сделать с помощью редактора или выполнив команду:
cat > /etc/apt/sources.list <<EOT
deb http://10.20.50.188/dilos dilos2-testing main contrib non-free
EOT
После этого нужно заставить apt обновить информацию о репозиториях:
apt update
Теперь обновляем пакет os-upgrade и запускаем os-upgrade:
apt install os-upgrade
os-upgrade -r
После обновления логинимся под root и устанавливаем Open VM Tools, для чего вводим команду:
apt install open-vm-tools
После успешной установки, запускаем Open VM Tools:
svcadm enable open-vm-tools
Теперь перезагрузим машину, либо с помощью меню Power | Reset, либо с помощью команды
reboot
Если все установилось и запустилось корректно, в vSphere для Вашей машины Вы должны увидеть ее IP адреса.
Note : До выхода новой оттестированной стабильной версии Вы можете использовать этот BE в качестве базового, т.е. все шаги, которые Вы выполнили от начала инструкции до этого места, можно будет пропустить. Для этого аналогично dilos_ISO_orig выполните команду:
beadm create dilos_BASE
А когда Вам понадобится загрузиться с этого BE, достаточно будет выполнить команды:
beadm activate dilos_BASE
reboot
Шаг 6. Подготовка машины для запуска тестов
Теперь подготавливаем машину для запуска тестов (все команды также должны запускаться из под root). Для входа в режим root-а можно воспользоваться командой:
su -
Установите версию DilOS, которую Вы будете тестировать. Для этого нужно указать менеджеру apt адреса репозиториев, аналогично тому, как Вы это делали выше. В файле
/etc/apt/sources.list
должны быть указаны следующие адреса для RELEASE версий:
deb http://10.20.50.188/dilos dilos2 main contrib non-free
Вы можете это сделать с помощью редактора или выполнив команду:
cat > /etc/apt/sources.list <<EOT
deb http://10.20.50.188/dilos dilos2 main contrib non-free
EOT
Для DEBUG версий эти адреса, соответственно:
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
или:
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
Затем снова запустите обновление системы:
apt update
os-upgrade -r
После перезагрузки снова логинимся под root.
Если по каким-то причинам версия для тестирования не грузится, можно посмотреть её файлы, как описано здесь.
Note : В этом месте можно также при желании установить пакеты, нужные для выполнения конкретных групп тестов. Какие пакеты нужны, указывается в инструкции к конкретному виду тестов (LIBC, NET, OS и т.д.). Но это можно сделать и позднее.
Тут Вы можете проверить, что установка прошла без проблем, если введёте следующую команду:
grep -e 'WARNING:' -e 'warning:' -e 'W:' -e 'error:' -e 'E:' -e 'cannot' /var/tmp/os-upgrade.log | sort -u
2. А здесь Вы можете запустить готовый скрипт или выполнить следующие шаги. Cоздаем юзера ztest:
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
3. Настраиваем NAT по инструкции Как настроить сеть на Виртуальной Машине для глобальной зоны с коммутатором etherstub до создания зоны, потому что для тестов нужна зона dhcp.
Шаг 7. Создание тестовых зон
Шаги 1-3 Вы можете заменить запуском готового скрипта или выполнить их с проверками, как они описаны ниже.
Создаем mountpoint, куда будут монтироваться все зоны:
zfs create -o mountpoint=/zones rpool/zones
mkdir /export/builds
2. Сначала создаем и запускаем зону dhcp:
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
zoneadm -z dhcp install 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 установилась:
root@dilos:~# zoneadm list -civ
ID NAME STATUS PATH BRAND IP
0 global running / dpkg shared
1 dhcp running /zones/dhcp dpkg excl
Можно проверить, что установка зоны прошла успешно при помощи команды:
grep -e 'WARNING:' -e 'warning:' -e 'W:' -e 'error:' -e 'E:' -e 'cannot' /var/tmp/dhcp-bts.log | sort -u
3. Заходим в зону, проверяем адреса и устанавливаем и запускаем сервер dhcp:
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. Теперь создаем клиентскую зону, если она Вам нужна (здесь приведён пример создания клиентской зоны - скорее всего Вам будет нужна какая-то другая зона или даже несколько клиентских зон):
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