跳到内容跳到页面导航:上一页 [access key p]/下一页 [access key n]
documentation.suse.com / 在 IBM Z DASD 磁盘上使用原始磁盘映像部署 SLE Micro

在 IBM Z DASD 磁盘上使用原始磁盘映像部署 SLE Micro

出版日期:2024-12-12
解释

SLE Micro 提供可直接部署到设备存储区的原始映像(也称为预构建映像)。

原因

本文为您提供了在 IBM Z 计算机上部署 SLE Micro 的分步说明。

工作量

读完本文大约需要 20 分钟。

目标

在系统上成功部署 SLE Micro

要求
  • 运行 Linux 的磁盘。

  • 将部署原始映像并运行 SLE Micro 的磁盘。

  • 充当配置媒体的磁盘。

1 关于预构建映像

预构建映像代表正在运行的操作系统,随时可供使用。它们不是通过安装程序以传统方式安装的,而是会复制到目标主机的硬盘中。本主题将介绍有关这些预构建映像的基本信息。

在首次引导时,需使用预构建映像中提供的工具对其进行配置。引导加载程序会按照第 1.2 节 “首次引导检测”中所述检测首次引导。每个映像附带默认挂载的子卷,在首次引导配置期间,这些子卷可能会发生更改。有关子卷的细节,请参见第 1.1 节 “默认分区”

1.1 默认分区

提供的预构建映像会使用默认的分区方案,在首次引导期间,可以使用 IgnitionCombustion 更改该方案。

重要
重要:根文件系统必须使用 Btrfs

如果您要对默认分区方案进行任何更改,根文件系统必须是 Btrfs。

每个映像都具有以下子卷:

/home
/root
/opt
/srv
/usr/local
/var

/etc 目录会挂载为 OverlayFS,其中上一级目录挂载到 /var/lib/overlay/1/etc/

您可以通过 /etc/fstab 中的 x-initrd.mount 选项来识别默认挂载的子卷。其他子卷或分区必须通过 Ignition 或 Combustion 进行配置。

1.2 首次引导检测

部署配置只在首次引导时运行。为了区分首次引导和后续引导,完成首次引导后,系统会创建标志文件 /boot/writable/firstboot_happened。如果文件系统中没有该文件,则会将 ignition.firstboot 属性传递给内核命令行,因而触发 Ignition 和 Combustion 的运行(在 initrd 中)。完成首次引导后,系统便会创建 /boot/writable/firstboot_happened 标志文件。

注意
注意:系统始终会创建该标志文件

即使由于配置文件错误或缺失导致配置失败,系统也会创建 /boot/writable/firstboot_happened 标志文件。

1.2.1 在后续引导时强制重配置系统

如果您需要在发生首次引导后重配置系统,可以在后续引导时强制重配置。此处可以采取两种做法。

  • 可以将 ignition.firstboot=1 属性传递给内核命令行。

  • 可以删除标志文件 /boot/writable/firstboot_happened

2 SLE Micro 部署

SLE Micro 的部署过程分为三个阶段。请勿跳过任何阶段,并按照以下顺序操作。

  1. DASD 磁盘激活 - 在开始部署之前,需要确保要使用的所有磁盘都可用且已启用。有关细节,请参见第 3 节 “准备计算机”

  2. 准备配置设备 - 要配置网络、添加用户和注册系统,请根据第 4 节 “准备配置磁盘”中提供的说明准备配置。

  3. 下载 SLE Micro 映像并将其部署到磁盘上。有关细节,请参见第 5 节 “在 DASD 磁盘上部署原始磁盘映像”

3 准备计算机

在开始部署 SLE Micro 之前,您需要检查所需的三个 DASD 磁盘是否都已启用。要检查磁盘的状态,请运行以下命令:

# 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    1310760

5 GB 磁盘将用作配置设备,20 GB 磁盘是将部署 SLE Micro 的磁盘。

如果在命令输出中看不到磁盘,则需要激活磁盘。为此,请执行如下操作:

  1. 运行 lszdev dasd 以显示完整的设备列表:

    # lszdev dasd
    
    TYPE       ID        ON   PERS  NAMES 
    dasd-eckd  0.0.0100  yes  no    dasda 
    dasd-eckd  0.0.0101  no   no    
    dasd-eckd  0.0.0102  no   no   
    dasd-eckd  0.0.0190  no   no     
    dasd-eckd  0.0.019d  no   no     
    dasd-eckd  0.0.019e  no   no     
    dasd-eckd  0.0.0592  no   no
  2. 使用以下命令激活磁盘:

    # chzdev -eDISK_ID

    例如,要激活磁盘 0.0.0101,请使用以下命令:

    # chzdev -e 0.0.0101
  3. lsdasd 命令的输出中校验磁盘是否已启用。

4 准备配置磁盘

提示
提示:虚拟磁盘与物理磁盘

虚拟磁盘可能更适合生产部署,而物理磁盘更适合开发环境。

在安装过程中,可以传递复杂的配置来定义用户、目录或提供 SSH 密钥。为此,请创建用于存储完整配置的配置设备。以下示例过程介绍了如何创建此类设备:

  1. 识别 5 GB 磁盘:

    # 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    1310760

    在上面的输出中,要用作配置设备的磁盘的 Bus-ID 值为 0.0.0102。请使用 Bus-ID 的值或磁盘大小来识别磁盘,因为设备名称 (/dev/dasdX) 在系统每次重引导后都可能会发生变化。

  2. 格式化磁盘。请记住,格式化操作会去除该磁盘上的所有数据。

    # dasdfmt -b 4096 -y -p /dev/dasdb
  3. 创建分区:

    # parted /dev/dasdb mkpart ext2 0% 100%
  4. 格式化分区:

    # mkfs.ext4 /dev/dasdb1
  5. 将分区标记为 ignition

    # e2label /dev/dasdb1 ignition
  6. 校验文件系统:

    # blkid
  7. 挂载分区:

    # mount /dev/dasdb1 /mnt
  8. 准备 Ignition 和/或 Combustion 的目录结构。对于 Ignition,请使用以下命令:

    # mkdir -p  /mnt/ignition

    对于 Combustion,请使用以下命令:

    # mkdir -p /mnt/combustion
  9. 将您的公用 SSH 密钥复制到 /mnt/combustion 并重命名为 ssh_key.pub

  10. 按照后续说明准备配置。

4.1 使用 Combustion 配置 SLE Micro 部署

Combustion 是一种 dracut 模块,可用于在首次引导时配置系统。您可以使用 Combustion 来更改默认分区、设置用户口令、创建文件、安装软件包等。

4.1.1 Combustion 的工作原理

系统将在 ignition.firstboot 参数传递给内核命令行后调用 Combustion。Combustion 会读取提供的文件(名为 script)并执行其中的命令,以对文件系统进行更改。如果 script 中包含网络标志,Combustion 会尝试配置网络。挂载 /sysroot 后,Combustion 会尝试激活 /etc/fstab 中的所有挂载点,然后调用 transactional-update 来应用其他更改,例如设置 root 口令或安装软件包。

配置文件 script 必须位于标记为 combustion 的配置媒体的 combustion 子目录中。目录结构必须如下所示:

<root directory>
└── combustion
    └── script
    └── other files
提示
提示:搭配使用 Combustion 与 Ignition

Combustion 可与 Ignition 搭配使用。如果您要将它们搭配使用,请将配置媒体标记为 ignition,并在目录结构中添加包含 config.ignignition 目录,如下所示:

<root directory>
└── combustion
    └── script
    └── other files
└── ignition
    └── config.ign

在此情况下,Ignition 会先于 Combustion 运行。

4.1.2 Combustion 配置示例

4.1.2.1 script 配置文件

script 配置文件是一组由 Combustion 在 transactional-update 外壳中分析并执行的命令。本文提供了 Combustion 执行的配置任务的一些示例。

重要
重要:包含解释器声明

script 文件由外壳解释,所以请务必在文件的第一行以解释器声明开头。例如,对于 Bash:

#!/bin/bash

为了登录系统,请至少包含 root 口令,但建议使用 SSH 密钥建立身份验证。如果您需要使用 root 口令,请务必配置安全口令。对于随机生成的口令,请至少包含 10 个字符。如果您要手动创建口令,请包含 10 个以上的字符,并结合使用大写与小写字母和数字。

4.1.2.1.1 网络配置

要在首次引导期间配置并使用网络连接,请在 script 中添加以下语句:

# combustion: network

使用此语句会将 rd.neednet=1 参数传递给 dracut。网络配置默认设为使用 DHCP。如果需要使用不同的网络配置,请按照第 4.1.2.1.2 节 “在 initramfs 中进行修改”中所述操作。

如果不使用该语句,将不会为系统配置任何网络连接。

4.1.2.1.2 在 initramfs 中进行修改

您可能需要对 initramfs 环境进行更改,例如,将 NetworkManager 的自定义网络配置写入 /etc/NetworkManager/system-connections/ 中。要执行此操作,请使用 prepare 语句。

例如,要使用静态 IP 地址创建连接并配置 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
# Leave a marker
echo "Configured with combustion" > /etc/issue.d/combustion
4.1.2.1.3 分区

提供的 SLE Micro 原始映像会使用第 1.1 节 “默认分区”中所述的默认分区方案。您可能希望使用不同的分区方式。下面一组示例代码段会将 /home 移至另一个分区。

注意
注意:在快照中包含的目录外部进行更改

以下脚本会执行快照中未包含的更改。如果脚本失败且快照被丢弃,那么某些更改将仍然可见且无法还原,例如对 /dev/vdb 设备的更改。

以下代码段会在 /dev/vdb 设备上创建仅含一个分区的 GPT 分区方案:

sfdisk /dev/vdb <<EOF
label: gpt
type=linux
EOF

partition=/dev/vdb1

该分区为 Btrfs 格式:

wipefs --all ${partition}
mkfs.btrfs ${partition}

以下代码段会将 /home 中可能包含的内容移到新的 /home 文件夹位置:

mount /home
mount ${partition} /mnt
rsync -aAXP /home/ /mnt/
umount /home /mnt

下面的代码段会去除 /etc/fstab 中的旧项并创建新项:

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.4 创建新用户

由于某些服务(例如 Cockpit)要求使用非 root 用户身份登录,因此请在此处至少定义一个非特权用户。或者,您可以按第 6.2 节 “添加用户”中所述在正在运行的系统中创建此类用户。

要添加新用户帐户,请先创建一个代表用户口令的哈希字符串。使用 openssl passwd -6 命令。

获取口令哈希后,在 script 中添加以下几行内容:

mount /home
useradd -m EXAMPLE_USER
echo 'EXAMPLE_USER:PASSWORD_HASH' | chpasswd -e
4.1.2.1.5 设置 root 的口令

在设置 root 口令前,请先生成口令的哈希,例如,使用 openssl passwd -6 来生成。要设置口令,请在 script 中添加以下几行内容:

echo 'root:PASSWORD_HASH' | chpasswd -e
4.1.2.1.6 添加 SSH 密钥

以下代码段会创建用于存储 root 的 SSH 密钥的目录,然后将位于配置设备上的公共 SSH 密钥复制到 authorized_keys 文件中。

mkdir -pm700 /root/.ssh/
cat id_rsa_new.pub >> /root/.ssh/authorized_keys
注意
注意

如果您需要通过 SSH 进行远程登录,则必须启用 SSH 服务。有关细节,请参见第 4.1.2.1.7 节 “启用服务”

4.1.2.1.7 启用服务

要启用系统服务(例如 SSH 服务),请将下面一行添加到 script 中:

systemctl enable sshd.service
4.1.2.1.8 安装软件包
重要
重要:可能需要注册您的系统并连接网络

由于您可能需要额外订阅特定的软件包,因此可能需事先注册系统。此外,安装额外的软件包可能还需要有网络连接。

在首次引导配置期间,可以在系统上安装额外的软件包。例如,可以通过添加以下命令安装 vim 编辑器:

zypper --non-interactive install vim-small
注意
注意

请注意,在配置完毕并引导到配置的系统前,您将无法使用 zypper。如果想要在稍后进行更改,则必须使用 transactional-update 命令创建已更改快照。

4.1.2.2 script 文件的完整示例

下面的 script 提供了完整的设置,可以作为如何编写自己的 Combustion 配置的指南。该示例不需要进一步配置 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  
    
    
    echo "Configured with Combustion at $(date)" > /etc/issue.d/combustion

4.2 使用 Ignition 配置 SLE Micro 部署

Ignition 是一种预配工具,可让您在首次引导时根据您的具体要求配置系统。

4.2.1 Ignition 的工作原理

首次引导系统时,Ignition 将作为 initramfs 的一部分加载,并在特定的目录中(在 USB 闪存盘上,或者您可以提供 URL)搜索配置文件。所有更改都是在内核从临时文件系统切换到实际根文件系统前(即在 switch_root 命令发出前)进行的。

Ignition 使用名为 config.ign 的 JSON 格式配置文件。您可以手动编写配置,也可以使用 https://ignite.opensuse.org 上的 Fuel Ignition Web 应用程序生成配置。

重要
重要

Fuel Ignition 尚未涵盖完整的 Ignition 词汇,生成的 JSON 文件可能需要进行额外的手动调整。

4.2.1.1 config.ign

配置文件 config.ign 必须位于配置媒体(例如,标签为 ignition 的 USB 记忆棒)的 ignition 子目录中。目录结构必须如下所示:

<root directory>
└── ignition
    └── config.ign
提示
提示

要通过 Ignition 配置创建磁盘映像,可以使用 https://ignite.opensuse.org 上的 Fuel Ignition Web 应用程序。

config.ign 包含多种数据类型:对象、字符串、整数、布尔值和对象列表。如需完整规范,请参见 Ignition specification v3.3.0

version 属性是必需的,在 SLE Micro 中,其值必须设置为 3.3.0 或任何更低版本。否则,Ignition 将会失败。

要以 root 身份登录到系统,必须至少包含 root 的口令。但建议通过 SSH 密钥建立访问权限。要配置口令,请务必使用安全口令。如果您使用随机生成的口令,请至少包含 10 个字符。如果您要手动创建口令,请包含 10 个以上的字符,并结合使用大写与小写字母和数字。

4.2.2 Ignition 配置示例

4.2.2.1 配置示例

本部分提供内置 JSON 格式的 Ignition 配置的几个示例。

重要
重要

第 1.1 节 “默认分区”列出了在运行预构建的映像时默认挂载的子卷。如果您要在默认未挂载的子卷上添加新用户或修改任何文件,则需要先声明此类子卷,以便将其挂载。有关挂载文件系统的详细信息,请参见第 4.2.2.1.1.3 节 “filesystems 属性”

注意
注意:version 属性为必要属性

每个 config.fcc 都必须包含版本 1.4.0 或更低版本,该版本随后会转换为相应的 Ignition 规范。

4.2.2.1.1 储存配置

storage 属性用于配置分区、RAID,定义文件系统,创建文件等。要定义分区,请使用 disks 属性。filesystems 属性用于格式化分区和定义特定分区的挂载点。files 属性可用于在文件系统中创建文件。后续章节中将介绍上述每个属性。

4.2.2.1.1.1 disks 属性

disks 属性是设备列表,可用于定义这些设备上的分区。disks 属性必须至少包含一个 device,其他属性为可选属性。以下示例使用单个虚拟设备,并将磁盘划分为四个分区:

{
  "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.1.1.2 raid 属性

raid 是 RAID 阵列列表。raid 的下列属性为必要属性:

level

特定 RAID 阵列的级别(线性、raid0、raid1、raid2、raid3、raid4、raid5、raid6)

devices

阵列中设备的列表,通过绝对路径引用这些设备

name

将用于 md 设备的名称

例如:

{
  "ignition": {
    "version": "3.0.0"
  },
  "storage": {
    "raid": [
      {
        "devices": [
          "/dev/sda",
          "/dev/sdb"
        ],
        "level": "raid1",
        "name": "system"
      }
    ]
  }
}
4.2.2.1.1.3 filesystems 属性

filesystems 必须包含以下属性:

device

设备的绝对路径,如果是物理磁盘,通常为 /dev/sda

format

文件系统格式(Btrfs、Ext4、xfs、vfat 或 swap)

注意
注意

对于 SLE Microroot 文件系统必须为 Btrfs 格式。

下面的示例演示如何使用 filesystems 属性。/opt 目录将挂载到 /dev/sda1 分区,该分区为 Btrfs 格式。系统将不会擦除该设备。

例如:

{
  "ignition": {
    "version": "3.0.0"
  },
  "storage": {
    "filesystems": [
      {
        "device": "/dev/sda1",
        "format": "btrfs",
        "path": "/opt",
        "wipeFilesystem": false
      }
    ]
  }
}

普通用户的主目录通常位于 /home/USER_NAME 目录中。由于 /home 默认不会挂载到 initrd 中,因此必须明确定义挂载,才能成功创建用户:

{
  "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.1.1.4 files 属性

您可以使用 files 属性在计算机上创建任何文件。请注意,要在默认的分区方案之外创建文件,需使用 filesystems 属性定义目录。

在下面的示例中,将使用 files 属性创建一个主机名。将创建文件 /etc/hostname,其中包含 sl-micro1 主机名:

重要
重要

请记住,JSON 接受十进制数格式的文件模式,例如 420

JSON:

{
  "ignition": {
    "version": "3.0.0"
  },
  "storage": {
    "files": [
      {
        "overwrite": true,
        "path": "/etc/hostname",
        "contents": {
          "source": "data:,sl-micro1"
        },
        "mode": 420
      }
    ]
  }
}
4.2.2.1.1.5 directories 属性

directories 属性是将在文件系统中创建的目录列表。directories 属性必须至少包含一个 path 属性。

例如:

{
  "ignition": {
    "version": "3.0.0"
  },
  "storage": {
    "directories": [
      {
        "path": "/home/tux",
        "user": {
          "name": "tux"
        }
      }
    ]
  }
}
4.2.2.1.2 用户管理

passwd 属性用于添加用户。由于某些服务(例如 Cockpit)要求使用非 root 用户身份登录,因此请在此处至少定义一个非特权用户。或者,您可以按第 6.2 节 “添加用户”中所述在正在运行的系统中创建此类用户。

要登录系统,请创建 root 和一个普通用户,并设置他们的口令。您需要对口令进行哈希处理,例如使用 openssl 命令来处理:

openssl passwd -6

该命令会为您选择的口令创建哈希。使用此哈希作为 password_hash 属性的值。

例如:

{
  "ignition": {
    "version": "3.0.0"
  },
  "passwd": {
    "users": [
      {
        "name": "root",
        "passwordHash": "PASSWORD_HASH",
        "sshAuthorizedKeys": [
          "ssh-rsa SSH_KEY_HASH USER@HOST"
        ]
      }
    ]
  }
}

users 属性必须至少包含一个 name 属性。ssh_authorized_keys 是用户的 SSH 密钥列表。

4.2.2.1.3 启用 systemd 服务

您可以通过在 systemd 属性中指定 systemd 服务来启用相应服务。

例如:

{
  "ignition": {
    "version": "3.0.0"
  },
  "systemd": {
    "units": [
      {
        "enabled": true,
        "name": "sshd.service"
      }
    ]
  }
}
4.2.2.2 将 YAML 格式的文件转换为 JSON 格式

JSON 是一种用于存储结构化数据的通用文件格式,Ignition 等应用程序使用这种文件存储和检索其配置。由于 JSON 的语法复杂难懂,因此您可以使用更加直观易懂的 YAML 格式编写配置,然后将其转换为 JSON 格式。

4.2.2.2.1 将 YAML 文件转换为 JSON 格式

butane 工具可将 YAML 文件中特定于 Ignition 的词汇转换为 JSON 格式。它还会校验 YAML 文件的语法,捕获结构中可能存在的错误。若要使用最新版 butane,请添加以下储存库:

> sudo  zypper ar -f \
  https://download.opensuse.org/repositories/devel:/kubic:/ignition/openSUSE_Tumbleweed/ \
  devel_kubic_ignition

openSUSE_Tumbleweed 替换为以下其中一项(具体取决于您的发行套件):

  • 'openSUSE_Leap_$releasever'

  • 15.5

现在,您可以安装 butane 工具:

> sudo  zypper ref && zypper in butane

安装完成后,可通过运行以下命令调用 butane

>  butane -p -o config.ign config.fcc
  • config.fcc 是 YAML 配置文件的路径。

  • config.ign 是输出 JSON 配置文件的路径。

  • -p 命令选项会在输出文件中添加换行符,使其更易于阅读。

5 在 DASD 磁盘上部署原始磁盘映像

要将 SLE Micro 部署到 20 GB DASD 磁盘,请按以下步骤操作:

  1. 使用 wgetcurl 下载原始磁盘映像。例如:

    > curl -L0kO
  2. 解压缩映像:

    > unpack xz -dBUILD_IDENTIFICATION.raw.xz
  3. 导出一个用于查找并存储 20 GB 设备名称的变量。

    # export SMDASD=$(lsdasd -s | grep 20480MB | tr -s [:blank:] | cut -d' ' -f3)
  4. 格式化磁盘:

    • 如果磁盘是第一次格式化:

      # dasdfmt -b 4096 -y -p /dev/$SMDASD
    • 如果磁盘以前已格式化:

      # dasdfmt -b 4096 -M quick -y -p /dev/$SMDASD
  5. 将原始磁盘映像复制到磁盘(在本例中,设备名称为 /dev/dasdc):

    dd if=IMAGE_NAME.raw status=progress  of=/dev/dasdc bs=4k
  6. 关闭正在运行的 Linux:

    # init 0
  7. 在 x3270 终端中引导第二个 DASD 迷你磁盘,以启动 SLE Micro

    # ipl 101

6 部署后步骤

6.1 从 CLI 注册 SLE Micro

如果在部署过程中未使用 Combustion script 注册您的系统,您可以从正在运行的系统注册。

要在 SUSE Customer Center 中注册 SLE Micro,请执行以下操作:

  1. 按如下方式运行 transactional-update register

    # transactional-update register -rREGISTRATION_CODE -e EMAIL_ADDRESS

    要在本地注册服务器中注册,另请提供该服务器的 URL:

    # transactional-update register -rREGISTRATION_CODE -e EMAIL_ADDRESS \
     --url "https://suse_register.example.com/"

    REGISTRATION_CODE 替换为随您的 SLE Micro 一起收到的注册码。将 EMAIL_ADDRESS 替换为与您或贵组织管理订阅时所用 SUSE 帐户关联的电子邮件地址。

  2. 重引导您的系统以切换到最新的快照。

  3. SLE Micro 现已注册完毕。

注意
注意:其他注册选项

如果所需的信息超出了本节的范畴,请使用 SUSEConnect --help 查看内嵌文档。

6.2 添加用户

由于 SLE Micro 要求使用非特权用户身份通过 SSH 登录系统或访问 Cockpit,因此您需要创建这样的帐户。

如果已在 Combustion 中定义了非特权用户,则可以不执行此步骤。

  1. 如下所示运行 useradd 命令:

    # useradd -m USER_NAME
  2. 为该帐户设置口令:

    # passwdUSER_NAME
  3. 根据需要将用户添加到 wheel 组:

    # usermod -aG wheelUSER_NAME