Implantando o SUSE Linux Micro por meio de imagens de disco brutas em discos zFCP do IBM Z
- O QUE É?
O SUSE Linux Micro fornece imagens brutas (também chamadas de imagens predefinidas) que podem ser implantadas diretamente no armazenamento do seu dispositivo.
- POR QUÊ?
Este artigo apresenta instruções passo a passo sobre como implantar o SUSE Linux Micro em uma máquina IBM Z.
- DEDICAÇÃO
A leitura do artigo leva aproximadamente 20 minutos.
- META
O SUSE Linux Micro será implantado com êxito em seu sistema.
- REQUISITOS
Um disco com o Linux em execução.
Um disco no qual você implanta a imagem bruta e o SUSE Linux Micro será executado.
Um disco que funciona como meio de configuração.
1 Sobre as imagens predefinidas #
As imagens predefinidas são representações prontas para uso de um sistema operacional em execução. Elas não são instaladas da maneira tradicional com um instalador, mas são copiadas para o disco rígido do host de destino. O tópico inclui informações básicas sobre essas imagens predefinidas.
As imagens predefinidas devem ser configuradas na primeira inicialização usando as ferramentas incluídas nas imagens. O carregador de boot detecta a primeira inicialização conforme descrito na Seção 1.1, “Detecção de primeira inicialização”.
1.1 Detecção de primeira inicialização #
A configuração da implantação é executada apenas na primeira inicialização. Para distinguir entre a primeira inicialização e as subsequentes, o arquivo /etc/machine-id
será criado após a conclusão da primeira inicialização. Se o arquivo não estiver presente no sistema de arquivos, o sistema assumirá que esta é uma primeira inicialização e acionará o processo de configuração. Após concluir a primeira inicialização, o arquivo /etc/machine-id
será criado.
/etc/machine-id
sempre é criado.
Mesmo que a configuração não seja bem-sucedida por causa de arquivos de configuração impróprios ou ausentes, o arquivo /etc/machine-id
será criado.
1.1.1 Forçar a reconfiguração do sistema em uma inicialização subsequente #
Se você precisar reconfigurar o sistema após a primeira inicialização, poderá forçar a reconfiguração na inicialização subsequente. Há duas opções.
Você pode inserir o atributo
ignition.firstboot
oucombustion.firstboot
na linha de comando do kernel.Você pode excluir o arquivo
/etc/machine-id
e reinicializar o sistema.
2 Implantação do SUSE Linux Micro #
O procedimento de implantação do SUSE Linux Micro engloba três fases. Não ignore nenhuma das fases e siga a ordem indicada abaixo.
Verifique se todos os discos estão disponíveis e ativos. Para obter informações detalhadas, consulte a Seção 3.1, “Preparando os discos zFCP/SCSI”.
Preparação de um dispositivo de configuração: para configurar a rede, adicionar usuários e registrar o sistema, prepare a configuração de acordo com as instruções apresentadas na Seção 4, “Preparando o disco de configuração”.
Download e implantação da imagem do SUSE Linux Micro no disco. Para obter informações detalhadas, consulte a Seção 5, “Implantando a imagem de disco bruta no disco ”.
3 Preparando a máquina #
3.1 Preparando os discos zFCP/SCSI #
Para preparar a máquina para implantação em discos zFCP/SCSI, proceda conforme descrito abaixo:
Execute este comando para encontrar todos os discos:
#
lszdev zfcp
TYPE ID ON PERS NAMES zfcp-host 0.0.fa00 yes yes zfcp-host 0.0.fc00 yes yes zfcp-lun 0.0.fa00:0x500507630b181216:0x4021400a00000000 yes no sda sg0 zfcp-lun 0.0.fc00:0x500507630b101216:0x4021400b00000000 yes no sdb sg1Na saída, deve haver um dispositivo LUN, que é do tipo
zfcp-lun
. Se o comando não retornar nenhum dispositivo, habilite o disco primeiro:#
chzdev -e fa00
Se você não souber o nome do disco, contate o administrador do sistema.
Verifique se o dispositivo LUN existe:
#
lszdev zfcp
TYPE ID ON PERS NAMES zfcp-host 0.0.fa00 yes yes zfcp-host 0.0.fc00 yes yes zfcp-lun 0.0.fa00:0x500507630b181216:0x4021400a00000000 yes no sda sg0 zfcp-lun 0.0.fc00:0x500507630b101216:0x4021400b00000000 yes no sdb sg1Anote as informações sobre os dispositivos LUN. O dispositivo
/dev/sda
será usado posteriormente para implantação do SUSE Linux Micro.Mesmo que a formatação do disco em que o SUSE Linux Micro será implantado seja desnecessária, verifique se o disco está vazio e se não contém partições. Se houver partições, use o comando a seguir para removê-las. Atenção! O comando apagará os dados do dispositivo fornecido.
#
parted DEVICE_NAME rm 1
4 Preparando o disco de configuração #
Um disco virtual pode ser mais adequado para implantações de produção, enquanto um disco físico é mais adequado para desenvolvimento.
Durante o processo de instalação, você pode inserir uma configuração complexa para definir usuários, diretórios ou fornecer chaves SSH. Para fazer isso, crie um dispositivo de configuração que armazene uma configuração completa. O procedimento de exemplo a seguir descreve como criar esse tipo de dispositivo:
Identifique o disco:
#
lsdasd Bus-ID Status Name Device Type BlkSz Size Blocks ================================================================================ 0.0.0100 active dasda 94:0 ECKD 4096 30720MB 7864380 0.0.0101 active dasdc 94:8 ECKD 4096 20480MB 5243040 0.0.0102 active dasdb 94:4 ECKD 4096 5120MB 1310760Na saída acima, o valor
Bus-ID
do disco que será usado como dispositivo de configuração é 0.0.0102. Use o valor deBus-ID
ou o tamanho do disco para identificá-lo, pois o nome do dispositivo (/dev/dasdX
) pode mudar após cada reinicialização.Formate o disco. Lembre-se de que a formatação remove todos os dados desse disco.
#
dasdfmt -b 4096 -y -p /dev/dasdbCrie uma partição:
#
parted /dev/dasdb mkpart ext4 0% 100%Formate a partição:
#
mkfs.ext4 /dev/dasdbDefina o rótulo da partição como
ignition
:#
e2label /dev/dasdb1 ignitionVerifique o sistema de arquivos:
#
blkidMonte a partição:
#
mount /dev/dasdb1 /mntPrepare a estrutura de diretórios para o Ignition e/ou o Combustion. Para o Ignition:
#
mkdir -p /mnt/ignitionPara o Combustion:
#
mkdir -p /mnt/combustionCopie sua chave SSH pública para
/mnt/combustion
comossh_key.pub
.Prepare a configuração conforme descrito a seguir.
4.1 Configurando a implantação do SUSE Linux Micro com o Combustion #
Combustion é um módulo do dracut que permite configurar o sistema na primeira inicialização. Você pode usar o Combustion, por exemplo, para mudar as partições padrão, definir senhas de usuários, criar arquivos ou instalar pacotes.
4.1.1 Como funciona o Combustion? #
O Combustion é invocado depois que o argumento ignition.firstboot
é passado para a linha de comando do kernel. O Combustion lê um arquivo fornecido chamado script
, executa os comandos incluídos e, portanto, faz mudanças no sistema de arquivos. Se script
incluir o flag de rede, o Combustion tentará configurar a rede. Após a montagem de /sysroot
, o Combustion tentará ativar todos os pontos de montagem em /etc/fstab
e, em seguida, chamará transactional-update
para aplicar outras mudanças, por exemplo, definir a senha de root
ou instalar pacotes.
O arquivo de configuração script
deve residir no subdiretório combustion
da mídia de configuração chamada combustion
. A estrutura de diretórios deve ter a seguinte aparência:
<root directory> └── combustion └── script └── other files
O Combustion pode ser usado junto com o Ignition. Se você pretende fazer isso, insira ignition
como rótulo do meio de configuração e inclua o diretório ignition
com config.ign
em sua estrutura de diretórios, conforme mostrado abaixo:
<root directory> └── combustion └── script └── other files └── ignition └── config.ign
Neste cenário, o Ignition é executado antes do Combustion.
4.1.2 Exemplos de configuração do Combustion #
4.1.2.1 O arquivo de configuração script
#
O arquivo de configuração script
é um conjunto de comandos que são analisados e executados pelo Combustion em um shell transactional-update
. Este artigo mostra exemplos de tarefas de configuração executadas pelo Combustion.
Para criar o script do Combustion, você pode usar o aplicativo Web Fuel Ignition. Nele, você pode selecionar os parâmetros apropriados, e o aplicativo gera um script do Combustion para download.
Como o arquivo script
é interpretado pelo shell, inicie-o sempre com a declaração do interpretador em sua primeira linha. Por exemplo, no caso do Bash:
#!/bin/bash
Para efetuar login no sistema, inclua pelo menos a senha de root
. No entanto, é recomendável estabelecer a autenticação por meio de chaves SSH. Se você precisa usar uma senha de root
, configure uma que seja segura. Para uma senha gerada aleatoriamente, use pelo menos 10 caracteres. Se você criar a senha manualmente, use mais do que 10 caracteres e combine letras maiúsculas, letras minúsculas e números.
4.1.2.1.1 Particionamento padrão #
Cada imagem tem os seguintes subvolumes:
/home /root /opt /srv /usr/local /var
O diretório /etc
é montado como overlayFS, em que o diretório superior é montado em /var/lib/overlay/1/etc/
.
Você pode reconhecer os subvolumes montados por padrão pela opção x-initrd.mount
em /etc/fstab
. Outros subvolumes ou partições devem ser configurados por meio do Ignition ou Combustion.
Para adicionar um novo usuário ou modificar qualquer um dos arquivos em um subvolume que não esteja montado por padrão, você precisa declarar esse subvolume primeiro para que ele também seja montado.
4.1.2.1.2 Configuração de rede #
Para configurar e usar a conexão de rede durante a primeira inicialização, adicione a seguinte declaração ao script
:
# combustion: network
O uso dessa declaração transmite o argumento rd.neednet=1
para o dracut. A configuração de rede é padronizada para usar DHCP. Se uma configuração de rede diferente for necessária, proceda conforme descrito na Seção 4.1.2.1.3, “Fazendo modificações no initramfs”.
Se você não usar a declaração, o sistema permanecerá configurado sem nenhuma conexão de rede.
4.1.2.1.3 Fazendo modificações no initramfs #
Talvez seja necessário fazer mudanças no ambiente initramfs, por exemplo, para gravar uma configuração de rede personalizada para o NetworkManager em /etc/NetworkManager/system-connections/
. Para fazer isso, use a declaração prepare
.
Por exemplo, para criar uma conexão com um endereço IP estático e configurar o DNS:
#!/bin/bash # combustion: network prepare set -euxo pipefail nm_config() { umask 077 # Required for NM config mkdir -p /etc/NetworkManager/system-connections/ cat >/etc/NetworkManager/system-connections/static.nmconnection <<-EOF [connection] id=static type=ethernet autoconnect=true [ipv4] method=manual dns=192.168.100.1 address1=192.168.100.42/24,192.168.100.1 EOF } if [ "${1-}" = "--prepare" ]; then nm_config # Configure NM in the initrd exit 0 fi # Redirect output to the console exec > >(exec tee -a /dev/tty0) 2>&1 nm_config # Configure NM in the system curl example.com # Close outputs and wait for tee to finish exec 1>&- 2>&-; wait; # Leave a marker echo "Configured with combustion" > /etc/issue.d/combustion
4.1.2.1.4 Aguardando a conclusão da tarefa #
Alguns processos podem ser executados em segundo plano, por exemplo, o processo tee
que redireciona a saída para o terminal. Para garantir que todos os processos em execução sejam concluídos antes do término da execução do script
, adicione a seguinte linha:
exec 1>&- 2>&-; wait;
4.1.2.1.5 Particionamento #
As imagens brutas do SUSE Linux Micro são fornecidas com um esquema de particionamento padrão. Você pode usar um particionamento diferente. O conjunto de trechos de exemplo a seguir move /home
para uma partição diferente.
O script a seguir executa mudanças que não estão incluídas nos instantâneos. Se o script falhar e o instantâneo for descartado, algumas mudanças permanecerão visíveis e não poderão ser revertidas, por exemplo, as mudanças feitas no dispositivo /dev/vdb
.
O trecho a seguir cria um esquema de particionamento GPT com uma única partição no dispositivo /dev/vdb
:
sfdisk /dev/vdb <<EOF sleep 1 label: gpt type=linux EOF partition=/dev/vdb1
Como o comando sfdisk
pode levar mais tempo para ser concluído, adie o label
usando o comando sleep
após sfdisk
.
A partição é formatada como Btrfs:
wipefs --all ${partition} mkfs.btrfs ${partition}
O conteúdo possível de /home
é movido para o novo local da pasta /home
pelo seguinte trecho:
mount /home mount ${partition} /mnt rsync -aAXP /home/ /mnt/ umount /home /mnt
O seguinte trecho remove uma entrada antiga de /etc/fstab
e cria uma nova:
awk -i inplace '$2 != "/home"' /etc/fstab echo "$(blkid -o export ${partition} | grep ^UUID=) /home btrfs defaults 0 0" >>/etc/fstab
4.1.2.1.6 Criando novos usuários #
Como alguns serviços (por exemplo, o Cockpit) exigem login de um usuário não root, defina pelo menos um usuário sem privilégios. Se preferir, crie esse usuário de um sistema em execução conforme descrito na Seção 6.2, “Adicionando usuários”.
Para adicionar uma nova conta de usuário, primeiro crie uma string de hash que represente a senha do usuário. Use o comando openssl passwd -6
.
Após obter o hash da senha, adicione as seguintes linhas ao script
:
mount /home useradd -m EXAMPLE_USER echo 'EXAMPLE_USER:PASSWORD_HASH' | chpasswd -e
4.1.2.1.7 Definindo uma senha de root
#
Antes de definir a senha de root
, gere um hash da senha, por exemplo, usando openssl passwd
-6
. Para definir a senha, adicione a seguinte linha ao script
:
echo 'root:PASSWORD_HASH' | chpasswd -e
4.1.2.1.8 Adicionando chaves SSH #
O trecho a seguir cria um diretório para armazenar a chave SSH de root
e, em seguida, copia a chave SSH pública localizada no dispositivo de configuração para o arquivo authorized_keys
.
mkdir -pm700 /root/.ssh/ cat id_rsa_new.pub >> /root/.ssh/authorized_keys
O serviço SSH deve ser habilitado, caso você tenha que usar login remoto via SSH. Para obter informações detalhadas, consulte a Seção 4.1.2.1.9, “Habilitando serviços”.
4.1.2.1.9 Habilitando serviços #
Para habilitar serviços do sistema, como SSH, adicione a seguinte linha ao script
:
systemctl enable sshd.service
4.1.2.1.10 Instalando pacotes #
Como alguns pacotes podem exigir assinatura adicional, talvez seja necessário registrar seu sistema primeiro. Uma conexão de rede disponível também pode ser necessária para instalar pacotes adicionais.
Durante a primeira configuração de boot, você pode instalar pacotes adicionais no sistema. Por exemplo, você pode instalar o editor vim
adicionando:
zypper --non-interactive install vim-small
Lembre-se de que você não poderá usar o zypper
depois de concluir a configuração e inicializar no sistema configurado. Para executar mudanças mais tarde, você deve usar o comando transactional-update
para criar um instantâneo modificado.
4.1.2.2 Um exemplo completo do arquivo script
#
O script
a seguir fornece as configurações completas que podem servir como um guia sobre como escrever sua própria configuração do Combustion. O exemplo não requer nenhuma configuração adicional do Ignition.
#!/bin/bash # combustion: network prepare set -euxo pipefail ## The OSA subchannels to enable ZNET_SUBCHANNELS=0.0.1000,0.0.1001,0.0.1002 ## Network information to configure IPADDRESS="10.144.64.155/24" ## Formet is ipaddress/cidr GATEWAY="10.144.64.254" NAMESERVERS="10.144.53.53;10.144.53.54" ## A semicolon-separated list of name servers ## Hostname information NODE_HOSTNAME="micro6" ## Add password for root user ## Use either 'openssl passwd -6' or 'mkpasswd --method=sha-512' to encrypt the password. ROOT_USER_PASSWORD='PASSWORD_HASH' SSH_ROOT_PUBLIC_KEY=ssh_key.pub ## Add a regular user, because root login may be disallowed in some services. CREATE_NORMAL_USER=user ## Replace the "user" with a desired username here. NORMAL_USER_PASSWORD='PASSWORD_HASH' SSH_USER_PUBLIC_KEY=ssh_key.pub ## Register to SUSE Customer Center and install additional packages REG_EMAIL='tux@suse.com' ## Email address for product registration SLMICRO_REGCODE='REGISTRATIONCODE' ## A registration code required to install additional packages ADDITIONAL_PACKAGES='' ## A space separated list of additional packages to install nm_config() { umask 077 # Required for Network Manager configuration mkdir -p /etc/NetworkManager/system-connections/ cat >'/etc/NetworkManager/system-connections/Wired connection 1.nmconnection' <<EOF [connection] id=static type=ethernet autoconnect=true [ipv4] method=manual address1=$IPADDRESS gateway=$GATEWAY dns=$NAMESERVERS EOF } if [ "${1-}" = "--prepare" ]; then # Configure Network Manager in the initrd nm_config # Enable OSA network devices chzdev qeth $ZNET_SUBCHANNELS -ep chzdev qeth $ZNET_SUBCHANNELS -e exit 0 fi ## Post output on stdout exec > >(exec tee -a /dev/ttyS0) 2>&1 ## Set hostname echo $NODE_HOSTNAME > /etc/hostname ## Set root password echo root:$ROOT_USER_PASSWORD | chpasswd -e ## Add ssh public key as authorized key for the root user mkdir -pm700 /root/.ssh/ cat $SSH_ROOT_PUBLIC_KEY >> /root/.ssh/authorized_keys ## Mount /var and /home so user can be created smoothly if [ "$CREATE_NORMAL_USER" ] then mount /var && mount /home fi ## User creation if [ "$CREATE_NORMAL_USER" ] then echo "User creation is requested, creating user." useradd -m $CREATE_NORMAL_USER -s /bin/bash -g users echo $CREATE_NORMAL_USER:$NORMAL_USER_PASSWORD | chpasswd -e echo $CREATE_NORMAL_USER "ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers.d/adminusers mkdir -pm700 /home/$CREATE_NORMAL_USER/.ssh/ chown -R $CREATE_NORMAL_USER:users /home/$CREATE_NORMAL_USER/.ssh/ cat $SSH_USER_PUBLIC_KEY >> /home/$CREATE_NORMAL_USER/.ssh/authorized_keys echo "Requested user has been created, requested password has been set." else echo "No user will be created" fi # Configure NM in the system nm_config # Enable OSA network device chzdev qeth $ZNET_SUBCHANNELS -ep chzdev qeth $ZNET_SUBCHANNELS -e ## Enable services echo "Enabling services." systemctl enable cockpit.socket systemctl enable sshd ## Unmount var and home if [ "$CREATE_NORMAL_USER" ] then umount /var && umount /home fi # Close outputs and wait for tee to finish exec 1>&- 2>&-; wait; echo "Configured with Combustion at $(date)" > /etc/issue.d/combustion
4.2.1 Como funciona o Ignition? #
Quando o sistema é inicializado pela primeira vez, o Ignition é carregado como parte de um initramfs
e procura um arquivo de configuração em um diretório específico (em um disco flash USB ou você pode inserir um URL). Todas as mudanças são executadas antes que o kernel alterne do sistema de arquivos temporário para o sistema de arquivos raiz real (antes da emissão do comando switch_root
).
O Ignition usa um arquivo de configuração no formato JSON chamado config.ign
. Você pode gravar a configuração manualmente ou usar o aplicativo da Web Fuel Ignition em https://ignite.opensuse.org para gerá-la.
O Fuel Ignition ainda não abrange o vocabulário completo do Ignition, e o arquivo JSON resultante pode precisar de outros ajustes manuais.
4.2.1.1
config.ign
#
O arquivo de configuração config.ign
deve residir no subdiretório ignition
da mídia de configuração, por exemplo, um pendrive USB chamado ignition
. A estrutura de diretórios deve ter a seguinte aparência:
<root directory> └── ignition └── config.ign
Para criar uma imagem de disco com a configuração do Ignition, você pode usar o aplicativo da Web Fuel Ignition em https://ignite.opensuse.org.
O config.ign
contém vários tipos de dados: objetos, strings, números inteiros, boolianos e listas de objetos. Para obter uma especificação completa, consulte Ignition
specification v3.3.0.
O atributo version
é obrigatório e, no caso do SUSE Linux Micro, o valor dele deve ser definido como 3.4.0
ou qualquer versão anterior. Do contrário, o Ignition falhará.
Para efetuar login no sistema como root
, você deve incluir pelo menos uma senha de root
. No entanto, é recomendável estabelecer o acesso por meio de chaves SSH. Para configurar uma senha, use uma senha segura. Se você usar uma senha gerada aleatoriamente, use pelo menos 10 caracteres. Se você criar a senha manualmente, use mais do que 10 caracteres e combine letras maiúsculas, letras minúsculas e números.
4.2.2 Exemplos de configuração do Ignition #
Esta seção apresenta vários exemplos de configuração do Ignition no formato JSON incorporado.
version
é obrigatório
Cada config.ign
deve incluir a versão 3.4.0 ou inferior, que será convertida na especificação do Ignition correspondente.
4.2.2.1 Particionamento padrão #
Cada imagem tem os seguintes subvolumes:
/home /root /opt /srv /usr/local /var
O diretório /etc
é montado como overlayFS, em que o diretório superior é montado em /var/lib/overlay/1/etc/
.
Você pode reconhecer os subvolumes montados por padrão pela opção x-initrd.mount
em /etc/fstab
. Outros subvolumes ou partições devem ser configurados por meio do Ignition ou Combustion.
Para adicionar um novo usuário ou modificar qualquer um dos arquivos em um subvolume que não esteja montado por padrão, você precisa declarar esse subvolume primeiro para que ele também seja montado.
4.2.2.2 Configuração de armazenamento #
O atributo storage
é usado para configurar partições, RAID, definir sistemas de arquivos, criar arquivos etc. Para definir partições, use o atributo disks
. O atributo filesystems
é usado para formatar partições. O atributo files
pode ser usado para criar arquivos no sistema de arquivos. Cada um dos atributos mencionados está descrito nas seções a seguir.
4.2.2.2.1 O atributo disks
#
O atributo disks
é uma lista de dispositivos que permite definir partições nesses dispositivos. O atributo disks
deve conter pelo menos um device
, os outros atributos são opcionais. O seguinte exemplo usa um único dispositivo virtual e divide o disco em quatro partições:
{ "ignition": { "version": "3.0.0" }, "storage": { "disks": [ { "device": "/dev/vda", "partitions": [ { "label": "root", "number": 1, "typeGuid": "4F68BCE3-E8CD-4DB1-96E7-FBCAF984B709" }, { "label": "boot", "number": 2, "typeGuid": "BC13C2FF-59E6-4262-A352-B275FD6F7172" }, { "label": "swap", "number": 3, "typeGuid": "0657FD6D-A4AB-43C4-84E5-0933C84B4F4F" }, { "label": "home", "number": 4, "typeGuid": "933AC7E1-2EB4-4F13-B844-0E14E2AEF915" } ], "wipeTable": true } ] } }
4.2.2.2.2 O atributo raid
#
raid
é uma lista de matrizes RAID. Os seguintes atributos de raid
são obrigatórios:
- level
um nível da matriz RAID específica (linear, raid0, raid1, raid2, raid3, raid4, raid5, raid6)
- devices
uma lista de dispositivos na matriz referenciada por seus caminhos absolutos
- name
um nome que será usado para o dispositivo md
Por exemplo:
{ "ignition": { "version": "3.0.0" }, "storage": { "raid": [ { "devices": [ "/dev/sda", "/dev/sdb" ], "level": "raid1", "name": "system" } ] } }
4.2.2.2.3 O atributo filesystems
#
O atributo filesystems
não modifica as unidades de montagem. Se você adicionar uma nova partição ou remover uma partição existente, deverá ajustar manualmente as unidades de montagem.
filesystems
deve conter os seguintes atributos:
- device
o caminho absoluto para o dispositivo, normalmente
/dev/sda
, no caso de disco físico- format
o formato do sistema de arquivos (Btrfs, Ext4, xfs, vfat ou swap (troca))
NotaNo caso do SUSE Linux Micro, o sistema de arquivos
root
deve ser formatado como Btrfs.
O exemplo a seguir demonstra o uso do atributo filesystems
. O diretório /opt
será montado na partição /dev/sda1
, que está formatada como Btrfs. O dispositivo não será apagado.
Por exemplo:
{ "ignition": { "version": "3.0.0" }, "storage": { "filesystems": [ { "device": "/dev/sda1", "format": "btrfs", "path": "/opt", "wipeFilesystem": false } ] } }
Normalmente, o diretório pessoal de um usuário comum está localizado no diretório /home/USER_NAME
. Como /home
não é montado por padrão no initrd, a montagem deve ser definida claramente para que a criação do usuário seja bem-sucedida:
{ "ignition": { "version": "3.1.0" }, "passwd": { "users": [ { "name": "root", "passwordHash": "PASSWORD_HASH", "sshAuthorizedKeys": [ "ssh-rsa SSH_KEY_HASH" ] } ] }, "storage": { "filesystems": [ { "device": "/dev/sda3", "format": "btrfs", "mountOptions": [ "subvol=/@/home" ], "path": "/home", "wipeFilesystem": false } ] } }
4.2.2.2.4 O atributo files
#
Você pode usar o atributo files
para criar qualquer arquivo em sua máquina. Para criar arquivos fora do esquema de particionamento padrão, lembre-se de que você precisará definir os diretórios usando o atributo filesystems
.
No exemplo a seguir, um nome de host é criado usando o atributo files
. O arquivo /etc/hostname
será criado com o nome de host sl-micro1:
Lembre-se de que o JSON aceita modos de arquivo em números decimais, por exemplo, 420
.
JSON:
{ "ignition": { "version": "3.0.0" }, "storage": { "files": [ { "overwrite": true, "path": "/etc/hostname", "contents": { "source": "data:,sl-micro1" }, "mode": 420 } ] } }
4.2.2.2.5 O atributo directories
#
O atributo directories
é uma lista dos diretórios que serão criados no sistema de arquivos. O atributo directories
deve conter pelo menos um atributo path
.
Por exemplo:
{ "ignition": { "version": "3.0.0" }, "storage": { "directories": [ { "path": "/home/tux", "user": { "name": "tux" } } ] } }
4.2.2.3 Administração de usuários #
O atributo passwd
é usado para adicionar usuários. Como alguns serviços (por exemplo, o Cockpit) exigem login de um usuário não root, defina pelo menos um usuário sem privilégios. Se preferir, crie esse usuário de um sistema em execução conforme descrito na Seção 6.2, “Adicionando usuários”.
Para efetuar login no sistema, crie um usuário root
e um usuário comum e defina as respectivas senhas. Você precisa criar o hash das senhas, por exemplo, usando o comando openssl
:
openssl passwd -6
O comando cria um hash da senha escolhida. Use esse hash como o valor do atributo password_hash
.
Por exemplo:
{ "ignition": { "version": "3.0.0" }, "passwd": { "users": [ { "name": "root", "passwordHash": "PASSWORD_HASH", "sshAuthorizedKeys": [ "ssh-rsa SSH_KEY_HASH USER@HOST" ] } ] } }
O atributo users
deve conter pelo menos um atributo name
. ssh_authorized_keys
é uma lista de chaves SSH para o usuário.
4.2.2.4 Habilitando serviços systemd
#
Você pode habilitar serviços systemd
especificando-os no atributo systemd
.
Por exemplo:
{ "ignition": { "version": "3.0.0" }, "systemd": { "units": [ { "enabled": true, "name": "sshd.service" } ] } }
4.2.2.5 Convertendo arquivos no formato YAML em JSON #
JSON é um formato de arquivo universal para armazenamento de dados estruturados. Os aplicativos, como o Ignition, usam esse formato para armazenar e recuperar as configurações. Como a sintaxe do JSON é complexa e difícil de ler, você pode gravar a configuração em um formato mais amigável chamado YAML e convertê-la em JSON.
4.2.2.5.1 Convertendo arquivos YAML no formato JSON #
A ferramenta que converte vocabulários específicos do Ignition em arquivos YAML no formato JSON é butane
. Ela também verifica a sintaxe do arquivo YAML para detectar possíveis erros na estrutura. Para obter a versão mais recente da butane
, adicione o seguinte repositório:
>
sudo
zypper ar -f \
https://download.opensuse.org/repositories/devel:/kubic:/ignition/openSUSE_Tumbleweed/ \
devel_kubic_ignition
Substitua openSUSE_Tumbleweed
por uma destas opções (dependendo da sua distribuição):
'openSUSE_Leap_$releasever'
15.5
Agora você pode instalar a ferramenta butane
:
>
sudo
zypper ref && zypper in butane
Após a conclusão da instalação, você poderá chamar a butane
executando:
>
butane -p -o config.ign config.fcc
config.fcc
é o caminho para o arquivo de configuração YAML.config.ign
é o caminho para o arquivo de configuração JSON de saída.A opção de comando
-p
adiciona quebras de linha ao arquivo de saída e, portanto, torna-o mais legível.
5 Implantando a imagem de disco bruta no disco #
Para implantar o SUSE Linux Micro em sua máquina, faça o seguinte:
Faça download da imagem de disco bruta usando
wget
oucurl
. Por exemplo:>
curl -L0kOExtraia a imagem:
>
unpack xz -d BUILD_IDENTIFICATION.raw.xzCopie a imagem de disco bruta para o disco:
dd if=IMAGE_NAME.raw status=progress of=/dev/sda bs=4096
Verifique a configuração apropriada com o seguinte comando:
#
lsblkO comando deve retornar duas partições em
/dev/sda
.Encerre o Linux em execução:
#
init 0Abra o terminal x3270 e defina o dispositivo do qual carregar o sistema. Use o número LUN do dispositivo
/dev/sda
, mas divida-o em blocos de 8 dígitos. Por exemplo, o comando para LUN 0.0.fa00:0x500507630b181216:0x4021400a00000000 tem a seguinte aparência:#
SET LOADDEV PORTNAME 50050763 0b181216 LUN 4021400a 00000000
Inicie o SUSE Linux Micro:
#
ipl FA00
6 Etapas pós-implantação #
6.1 Registrando o SUSE Linux Micro da CLI #
Se o seu sistema não foi registrado durante o processo de implantação usando o script
do Combustion, você pode registrar do sistema em execução.
Para registrar o SUSE Linux Micro no SUSE Customer Center, faça o seguinte:
Execute
transactional-update register
da seguinte maneira:#
transactional-update register -r REGISTRATION_CODE -e EMAIL_ADDRESSPara o registro com um servidor de registro local, especifique também o URL para o servidor:
#
transactional-update register -r REGISTRATION_CODE -e EMAIL_ADDRESS \ --url "https://suse_register.example.com/"Substitua REGISTRATION_CODE pelo código de registro que você recebeu com a cópia do SUSE Linux Micro. Substitua EMAIL_ADDRESS pelo endereço de e-mail associado à conta do SUSE que você ou sua organização usa para gerenciar assinaturas.
Reinicialize o sistema para alternar para o instantâneo mais recente.
O SUSE Linux Micro agora está registrado.
Para obter informações que não fazem parte do escopo desta seção, consulte a documentação em linha com SUSEConnect --help
.
6.2 Adicionando usuários #
Como o SUSE Linux Micro, por padrão, requer um usuário sem privilégio para efetuar login por SSH ou para acessar o Cockpit, recomendamos criar uma conta.
Esta etapa é opcional se você definiu um usuário sem privilégios no Combustion.
Execute o comando
useradd
da seguinte maneira:#
useradd -m USER_NAME
Defina uma senha para essa conta:
#
passwd USER_NAMESe necessário, adicione o usuário ao grupo
wheel
:#
usermod -aG wheel USER_NAME
7 Informações legais #
Copyright © 2006-2025 SUSE LLC e colaboradores. Todos os direitos reservados.
Permissão concedida para copiar, distribuir e/ou modificar este documento sob os termos da Licença GNU de Documentação Livre, Versão 1.2 ou (por sua opção) versão 1.3; com a Seção Invariante sendo estas informações de copyright e a licença. Uma cópia da versão 1.2 da licença está incluída na seção intitulada “GNU Free Documentation License” (Licença GNU de Documentação Livre).
Para ver as marcas registradas da SUSE, visite https://www.suse.com/company/legal/. Todas as marcas comerciais de terceiros pertencem a seus respectivos proprietários. Os símbolos de marca registrada (®, ™ etc.) indicam marcas registradas da SUSE e de suas afiliadas. Os asteriscos (*) indicam marcas registradas de terceiros.
Todas as informações deste manual foram compiladas com a maior atenção possível aos detalhes. Entretanto, isso não garante uma precisão absoluta. A SUSE LLC, suas afiliadas, os autores ou tradutores não serão responsáveis por possíveis erros nem pelas consequências resultantes de tais erros.