Informações

Virtualizador Oracle Virtual Box 6.1
Sistema Operacional Oracle Solaris 11.4 x86
Documentação utilizada para o laboratório Solaris Zones

Alerta: Não será mostrado o processo de instalação nem de criação de repositório local do Solaris 11.4 na máquina virtual para o laboratório de Oracle Solaris Zones.

Para maiores detalhes e sobre a versão, compatibilidade, estrutura consulta a documentação oficial no site da Oracle.

Confirme a versão do sistema operacional instalado e se suporte a virtualização.

root@scorpion:~# cat /etc/release
                             Oracle Solaris 11.4 X86
             Copyright (c) 1983, 2021, Oracle and/or its affiliates.
                             Assembled 22 April 2021

root@scorpion:~# virtinfo
NAME            CLASS
virtualbox      current
non-global-zone supported
kernel-zone     unsupported
root@scorpion:~#

Adicione um disco para ficar dedicado ao Solaris Zones, não é obrigatório, porém prefiro deixar as cargas separadas, fica a seu gosto!!!

root@scorpion:~# echo | format
Searching for disks...done

AVAILABLE DISK SELECTIONS:
       0. c1d0 <VBOX HAR-2c963950-811ba19-0001-31.25GB>
          /pci@0,0/pci-ide@1,1/ide@0/cmdk@0,0
          /dev/chassis/SYS/MB/hba0
       1. c1d1 <VBOX HAR-bcc3d0c9-cb1343b-0001-20.00GB>  zones
          /pci@0,0/pci-ide@1,1/ide@0/cmdk@1,0
          /dev/chassis/SYS/MB/hba0
       2. c2d0 <VBOX HAR-6eb41ced-af1a259-0001 cyl 2608 alt 2 hd 255 sec 63>
          /pci@0,0/pci-ide@1,1/ide@1/cmdk@0,0
          /dev/chassis/SYS/MB/hba0
Specify disk (enter its number): Specify disk (enter its number):
root@scorpion:~#

Crie um ZFS Pool para utilizar o disco dedicado para Solaris Zones.

root@scorpion:~# zpool create zones c1d1

root@scorpion:~# zpool status zones
  pool: zones
    id: 18272446593546317300
 state: ONLINE
  scan: none requested
config:

        NAME    STATE      READ WRITE CKSUM
        zones   ONLINE        0     0     0
          c1d1  ONLINE        0     0     0

errors: No known data errors
root@scorpion:~#
root@scorpion:~# df -h /zones
Filesystem             Size   Used  Available Capacity  Mounted on
zones                 19.6G    31K      19.6G     1%    /zones
root@scorpion:~#

Essa é topologia que vamos utilizar como base, usaremos uma interface dedicada para criar a rede para o Solaris Zone.

|--------------------------------------|
|                                      |
|    ---------------                   |
|   |      WEB      |                  |
|   |               |                  |
|   |   ---------   |                  |
|    --|  VNET1  |--                   |
|       ---------                      |
|    ------------------------------    |
|   |                              |   |
|   |  Virtual Switch              |   |
|   |                  ---------   |   |
|    -----------------|  VNET1  |--    |
|                      ---------       |
|                          |           |
|--------------------------------------|
                         |          
                      NETWORK

Verifique se a NET1 esta ativa, em seguida partimos para criação da VNET1.

root@scorpion:~# ipadm
NAME              CLASS/TYPE STATE        UNDER      ADDR
lo0               loopback   ok           --         --
lo0/v4            static     ok           --         127.0.0.1/8
lo0/v6            static     ok           --         ::1/128
net0              ip         ok           --         --
net0/v4           dhcp       ok           --         192.168.0.79/24
net0/v6           addrconf   ok           --         fe80::a00:27ff:fed1:9a6e/10
net0/v6           addrconf   ok           --         2804:14d:7e23:80f6:a00:27ff:fed1:9a6e/64
net1              ip         ok           --         --
net1/v4           dhcp       ok           --         192.168.0.80/24
root@scorpion:~#

root@scorpion:~# dladm create-vnic -l net1 vnet1

root@scorpion:~# dladm show-vnic
LINK            OVER           SPEED  MACADDRESS        MACADDRTYPE IDS
vnet1           net1           1000   2:8:20:3b:d8:cf   random      VID:0
root@scorpion:~#

root@scorpion:~# dladm show-link
LINK                CLASS     MTU    STATE    OVER
net0                phys      1500   up       --
net1                phys      1500   up       --
vnet1               vnic      1500   up       net1
root@scorpion:~#

Com a utilização da VNIC, é possível customizar interface a capacidade máxima de banda para uma determinada Zone.

root@scorpion:~# dladm show-linkprop -p max-bw vnet1
LINK     PROPERTY        PERM VALUE        EFFECTIVE    DEFAULT   POSSIBLE
vnet1    max-bw          rw   --           --           --        --
root@scorpion:~#

Vamos começar a configurar o nosso primeiro Zone!!!

root@scorpion:~# zonecfg -z web
Use 'create' to begin configuring a new zone.
zonecfg:web> create
create: Using system default template 'SYSdefault'
zonecfg:web> set zonepath=/zones/web
zonecfg:web> set autoboot=true
zonecfg:web> verify
zonecfg:web> commit
zonecfg:web> exit
root@scorpion:~#

root@scorpion:~# zonecfg -z web info
zonename: web
zonepath: /zones/web
brand: solaris
autoboot: true
anet:
        linkname: net0
        configure-allowed-address: true
root@scorpion:~#

Remova a interface que vem como padrão no Solaris Zones e adicione a VNET1 que criamos anteriormente.

root@scorpion:~# zoneadm list -cv
ID NAME             STATUS      PATH                         BRAND      IP
0 global           running     /                            solaris    shared

root@scorpion:~# zonecfg -z web
zonecfg:web> info
zonename: web
zonepath: /zones/web
brand: solaris
autoboot: true
anet 0:
        linkname: net0
        configure-allowed-address: true
zonecfg:web>
zonecfg:web> remove anet 0
zonecfg:web> info
zonename: web
zonepath: /zones/web
brand: solaris
autoboot: true
zonecfg:web>
zonecfg:web> set ip-type=exclusive
zonecfg:web> add net
zonecfg:web:net> set physical=vnet1
zonecfg:web:net> end
zonecfg:web> verify
zonecfg:web> commit
zonecfg:web> exit
root@scorpion:~#

root@scorpion:~# zonecfg -z web export
create -b
set brand=solaris
set zonepath=/zones/web
set autoboot=true
add net
set physical=vnet1
end
root@scorpion:~#

Crie o Filesystem para o Solaris Zones.

root@scorpion:~# zfs create zones/web

root@scorpion:~# df -h /zones/web
Filesystem             Size   Used  Available Capacity  Mounted on
zones/web             19.6G    31K      19.6G     1%    /zones/web
root@scorpion:~#

Antes de realizar a instalação do Solaris Zone vale lembrar que será preciso um repositório (local ou remoto) configurado no servidor. Para continuarmos esse exemplo criei um repositório local. Se seguir os passos de criação do repositório local com calma, sai de primeira!!!

Para visualizar o repositório configurado na máquina, utilizei o comando pkg.

root@scorpion:~# pkg publisher
PUBLISHER                   TYPE     STATUS P LOCATION
solaris                     origin   online F file:///repo/solaris/
root@scorpion:~#

Vamos Instalar o nosso primeiro Solaris Zonesssssss!!! Let’s Go!!!

root@scorpion:~# zoneadm list -cv
  ID NAME             STATUS      PATH                         BRAND      IP
   0 global           running     /                            solaris    shared
   - web              configured  /zones/web                   solaris    excl

root@scorpion:~# zoneadm -z web install 

Imagem-2

Enquanto a instalação estiver em andamento, o Solaris Zone ficará com o seguinte status incomplete

root@scorpion:~# zoneadm list -cv
  ID NAME             STATUS      PATH                         BRAND      IP
   0 global           running     /                            solaris    shared
   - web              incomplete  /zones/web                   solaris    excl
root@scorpion:~#

Após o término da instalação!!!

Imagem-3

root@scorpion:~# zoneadm list -cv
  ID NAME             STATUS      PATH                         BRAND      IP
   0 global           running     /                            solaris    shared
   - web              installed   /zones/web                   solaris    excl
root@scorpion:~#

Veja um mapa com todos os possíveis status de um Solaris Zone.

Imagem-4

Vamos realizar o boot/start do nosso Solaris Zones pela primeira vez!!! Ops, não esqueça de pegar a console da nossa máquina virtual para dar sequência na instalação do Solaris.

root@scorpion:~# zoneadm -z web boot ; zlogin -C web
[Connected to zone 'web' console]
Loading smf(7) service descriptions: 151/151
Booting to milestone "svc:/milestone/config:default".

Dependendo do teclado o F2 não funciona, não se preocupe utilize a sequência ESC + 2.

Imagem-5

Agora dê um nome para seu Solaris Zone, estava sem criatividade, deixei web mesmo!!! Fica a seu gosto.

Imagem-6

Escolha a interface de rede, nesse caso bem simples, só tem ela mesmo!!!

Imagem-7

Vou usar o modo DHCP, mas se você quiser usa configurar IP, Mask, DNS, Gateway coloque em modo Static.

Imagem-8

Imagem-9

Imagem-10

Imagem-11

Particularmente prefiro deixar em inglês, caso precise abrir um chamado fica mais simples para os técnicos do suporte. Se o sistema estiver em português, pode ser um problema para buscar o erro na base de conhecimento. Fica a dica!!! ;-)

Imagem-12

Para escolha de Territory eu utilizo en_US.ISO8859-1, há título de curiosidade a opção en_US.ISO8859-15 é padrão europeu!!!

Imagem-13

Ficar atento nesse ponto, houveram algumas mudanças nesse tópico, sugiro ler a documentação de segurança. Vou tentar resumir ao máximo… Se só adicionar a senha de root, será criado o usuário root. Mas se colocar a senha de root e criar um usuário, ele receberá a role de root e não existirá mais um usuário root no sistema.

Espero que tenha entendido, caso contrário leia a documentação para não ter que reconfigurar o sistema novamente, mas se precisar reconfigurar o ambiente, veja este artigo How to Configure Oracle Solaris 11 Using the sysconfig Command

Imagem-14

Imagem-15

SC profile successfully generated as:
/etc/svc/profile/incoming/config/sc_profile.xml

Exiting System Configuration Tool. Log is available at:
/system/volatile/sysconfig.20210430-162341.log.3935
Booting to milestone "all".
Hostname: web

web console login:

Para sair do Console do zlogin, utilize a sequencia digite ~.

root@web:~# ~.
[Connection to zone 'web' console closed]
root@scorpion:~#

Caso não funcione, utilize a sequência de escape do telnet, Ctrl+] para teclados em inglês, ou **Ctrl+ç** para teclados em português. Outra forma é configurar seu próprio comando de escape, como exemplo vamos utilizar **..**

root@scorpion:~# zlogin -C -e ".." web
[Connected to zone 'web' console]

web console login: root
Password:
Last login: Fri Apr 30 19:53:51 2021 on pts/2
NOTE: system has 1 active defect; run 'fmadm list' for details.
Apr 30 20:10:16 web login: ROOT LOGIN /dev/console
Oracle Corporation      SunOS 5.11      st_095.server   April 2021
root@web:~#
root@web:~#
root@web:~#
root@web:~# ..
[Connection to zone 'web' console closed]
root@scorpion:~#

Referências

Guidelines for Oracle Solaris Zones in the Oracle Solaris 11.4
Oracle Virtual Box 6.1
Oracle Solaris 11.4 x86
Introduction to Oracle® Solaris 11.4 Virtual Environments
Managing ZFS File Systems in Solaris 11.4
Solaris 11 Downloads Create a Local Repository
New Oracle Solaris Keyboard Software Support
Securing Users and Processes Solaris 11.4 How to Configure Oracle Solaris 11 Using the sysconfig Command