

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 创建基于 Linux 的映像
<a name="create-linux-based-images"></a>

您可以通过连接到 Linux 映像生成器、安装所需的 WorkSpaces 应用程序、创建默认应用程序设置和环境变量，以及使用命令行界面 (CLI) 工具或图像助手 (GUI) 工具将这些应用程序添加到应用程序目录中来创建基于 Linux 的 Amazon Applications 镜像。要打开 GUI 工具，请在应用程序列表中搜索 **Image Assistant**。

**Topics**
+ [为您的用户创建默认应用程序设置](create-default-app-settings.md)
+ [为 Linux 用户创建默认环境变量](create-default-variables-linux.md)
+ [优化 Linux 应用程序的启动性能](optimize-launch-performance.md)
+ [创建会话脚本](create-session-scripts.md)
+ [使用适用于 Linux 的 Image Assistant CLI 工具](image-assistant-cli.md)
+ [启用和禁用网络摄像头支持](webcam-support.md)
+ [为主文件夹启用和禁用大量文件同步模式](heavy-file-sync.md)
+ [教程：创建基于 Linux 的 WorkSpaces 自定义应用程序镜像](tutorial-create-linux-image.md)
+ [教程：为 Linux 映像启用日语支持](enable-japanese-support-linux.md)

# 为您的用户创建默认应用程序设置
<a name="create-default-app-settings"></a>

遵循这些步骤为用户创建默认的应用程序设置。

**Topics**
+ [步骤 1：在映像生成器上安装 Linux 应用程序](#app-settings-image-install)
+ [第 2 步：创建 TemplateUser 账户](#app-settings-template-user)
+ [步骤 3：创建默认的应用程序设置](#app-settings-image-create-default-app-settings)
+ [步骤 4：保存默认应用程序设置](#app-settings-image-save-default-app-settings)
+ [步骤 5：测试默认应用程序设置（可选）](#app-settings-image-test-applications)
+ [步骤 6：清除](#app-settings-image-finish)

## 步骤 1：在映像生成器上安装 Linux 应用程序
<a name="app-settings-image-install"></a>

在此步骤中，您将连接 Linux 映像生成器并在该映像生成器上安装您的应用程序。

**在映像生成器上安装应用程序**

1. 通过执行以下任一操作来连接到映像生成器：
   + [使用 WorkSpaces 应用程序控制台](managing-image-builders-connect-console.md)（仅适用于 Web 连接）
   + [创建直播 URL](managing-image-builders-connect-streaming-URL.md)（用于 Web 或 WorkSpaces 应用程序客户端连接）
**注意**  
您将以 ImageBuilderAdmin 用户身份登录到 Amazon Linux GNOME 桌面，并拥有根管理员权限。

1. 安装所需的应用程序。例如，要从公有 yum 存储库安装 Chromium 浏览器，请先打开终端应用程序，然后运行以下命令：

   **[ImageBuilderAdmin]\$1 sudo yum update && sudo yum install chromium.x86\$164** 

## 第 2 步：创建 TemplateUser 账户
<a name="app-settings-template-user"></a>

在此步骤中，您将创建一个 TemplateUser 帐户，该帐户将为您的直播用户创建默认的应用程序设置。

**创建 TemplateUser 账户**

1. 创建一个没有 root 权限的 TemplateUser 账户。例如，在终端窗口中，运行以下命令在映像生成器 TemplateUser 上创建：

   **[ImageBuilderAdmin]\$1 sudo useradd -m TemplateUser** 

   **[ImageBuilderAdmin]\$1 echo -e '<*password*>\$1n<*password*>\$1n' \$1 sudo passwd TemplateUser**

1. 切换到 TemplateUser 账户：

   **[ImageBuilderAdmin]\$1 su - TemplateUser** 

## 步骤 3：创建默认的应用程序设置
<a name="app-settings-image-create-default-app-settings"></a>

在此步骤中，您将为应用程序用户创建默认的 WorkSpaces 应用程序设置。这样做可以让您的用户在应用程序流式传输会话期间快速开始使用 WorkSpaces 应用程序，而无需自己创建或配置这些设置。

**为用户创建默认的应用程序设置**

1. 启动要为其创建默认设置的应用程序。例如，在终端窗口中，运行以下命令启动 Chromium 浏览器：

    **[TemplateUser]\$1 chromium-browser**

1. 配置应用程序的设置。例如，将 Chromium 浏览器的主页设置为 **https://aws.amazon.com**。

1. 关闭应用程序。

1. 注销：

   **[TemplateUser]\$1 logout** 

## 步骤 4：保存默认应用程序设置
<a name="app-settings-image-save-default-app-settings"></a>

在此步骤中，您将复制添加到 **/etc/skel/** 目录中的默认应用程序设置，并使其可供流用户使用。

**保存默认应用程序设置**
+ 在终端窗口中运行以下命令，为流用户复制默认应用程序设置：

   **[ImageBuilderAdmin]\$1 sudo cp -r -f /home/TemplateUser/. /etc/skel**

## 步骤 5：测试默认应用程序设置（可选）
<a name="app-settings-image-test-applications"></a>

在此步骤中，请验证您添加的应用程序是否正常运行，以及默认应用程序设置是否按预期运行。

**在映像生成器上测试您的应用程序和默认设置**

1. 创建一个没有根权限的测试用户。例如，在**终端**窗口中，运行以下命令以在映像生成器上创建 **test-user**：

   **[ImageBuilderAdmin]\$1 sudo useradd -m test-user**

   **[ImageBuilderAdmin]\$1 echo -e '*password*>\$1n<*password*>\$1n' \$1 sudo passwd test-user** 

1. 切换到测试用户：

   **[ImageBuilderAdmin]\$1 su - test-user**

1. 以测试用户身份启动应用程序（例如 Chromium）：

   **[test-user]\$1 /usr/bin/chromium-browser** 

1. 确认测试用户可以使用默认设置（例如，Chromium 主页为 https://aws.amazon.com/）。

1. 注销：

   **[test-user]\$1 logout**

## 步骤 6：清除
<a name="app-settings-image-finish"></a>

最后一步是进行清理。

**清理**

1. 删除 TemplateUser：

   **[ImageBuilderAdmin]\$1 sudo killall -u TemplateUser**

   **[ImageBuilderAdmin]\$1 sudo userdel -r TemplateUser**

1. 删除 test-user（如果跳过了步骤 5，则无需执行此操作）：

   **[ImageBuilderAdmin]\$1 sudo killall -u test-user**

   **ImageBuilderAdmin]\$1 sudo userdel -r test-user**

# 为 Linux 用户创建默认环境变量
<a name="create-default-variables-linux"></a>

您可以在 Linux 映像生成器实例上创建环境变量。创建环境变量后，这些变量便可用于根据该映像创建的流实例。

**注意**  
在 Linux 队列实例上，使用图像助手 (GUI) 工具设置的环境变量和默认系统环境变量通过应用程序中的/ etc/profile.d/appstream\$1system\$1vars.sh script. To access these environment variables, you must explicitly source the /etc/profile.d/appstream \$1system\$1vars.sh 脚本导出。

**为用户创建环境变量**

1. 如果文件夹 `/etc/profile` 不存在，请运行以下命令创建它：

   **[ImageBuilderAdmin]\$1 sudo mkdir -p /etc/profile.d** 

1. 要在此文件夹中创建新的 Shell 脚本文件（例如 my-environment.sh），请运行以下命令：

   **[ImageBuilderAdmin]\$1 vim my-environment.sh**

1. 在脚本文件的第一行，添加以下内容：

   **\$1\$1/bin/sh **

1. 在随后的每一行中，添加一个 **export** 命令来设置映像的环境变量。以下示例将 `$HOME/bin` 添加到 `PATH` 变量：

   **export PATH=”\$1HOME/bin:\$1PATH”**

1. 在 vim 中按 **Esc** 键返回命令模式，然后运行以下命令保存脚本并退出 vim：

   **:x**

1. 运行以下命令，让脚本作为程序运行：

   **[ImageBuilderAdmin]\$1 chmod \$1x my-environment.sh**

# 优化 Linux 应用程序的启动性能
<a name="optimize-launch-performance"></a>

如果您使用的是 Image Assistant GUI 工具，则该工具会自动优化应用程序的启动性能。

如果您使用的是 Image Assistant CLI，请使用以下步骤手动优化启动性能。当您创建文件并将其添加到应用程序优化清单后，应用程序在新实例集实例上首次启动时将更快地启动。但是，这也增加了实例集实例做好准备以供用户使用的时间。优化清单是每个应用程序的一个行分隔文本文件。

您可以手动或按照以下步骤创建清单文件（例如 < *your-app* >-manifest.txt）。

**创建清单文件**

1. 确保您尝试优化的应用程序已启动并正在运行。

1. 从 Linux 映像生成器的终端运行以下命令：

   **ps -ef \$1 grep <*application-process-name*>**

1. 从上一步的输出中搜索最小的 PID 编号。这是应用程序的根父进程的 PID。

1. 保持应用程序运行，并确保使用用户所需的初始组件。这就确保了优化过程能够捕获这些组件。

1. 使用以下内容创建脚本文件（例如 `~/getfilestool.sh`）：

   ```
   #!/bin/bash
   ## usage getfilestool.sh $pid
   lsof -p $(pstree -p $1 | grep -o '([0-9]\+)' | grep -o '[0-9]\+' | tr '\012' ,)|grep REG | sed -n '1!p' | awk '{print $9}'|awk 'NF'
   ```

1. 确保可以使用以下命令运行该文件：

   **[ImageBuilderAdmin]\$1 chmod u\$1x \$1/getfilestool.sh**

1. 运行以下命令，从步骤 3 中找到的根父进程中捕获所有正在运行的文件，并将其保存到临时清单文件。

   **[ImageBuilderAdmin]\$1 sudo \$1/getfilestool.sh <*root-parent-pid*> > /tmp/<y*our-app*>-manifest.txt **

1. 验证优化清单的内容，该清单是每个应用程序的行分隔文本文件。

您可以使用 Image Assistant 命令行界面（CLI）工具为每个应用程序指定优化清单。有关更多信息，请参阅 [使用适用于 Linux 的 Image Assistant CLI 工具](image-assistant-cli.md)。

# 创建会话脚本
<a name="create-session-scripts"></a>

WorkSpaces 应用程序在基于 Windows 和 Linux 的流媒体实例上都提供了实例会话脚本。有关会话脚本的更多信息，请参阅[使用会话脚本管理您的 Amazon WorkSpaces 应用程序用户的流媒体体验](use-session-scripts.md)。

会话脚本是在 WorkSpaces 应用程序映像中指定的。要在 Linux 实例上找到会话脚本配置文件，请导航到 `/opt/appstream/SessionScripts/config.json`。以下代码是一个示例 `config.json` 文件，它指定了名为“`test-session-start`”的会话启动脚本和名为“`test-session-stop`”的会话结束脚本及其运行时参数。确保 `config.json` 中引用的脚本具有运行权限，并确保定义了命令解释器（例如 \$1\$1/bin/bash）。

```
{
     "SessionStart": {
          "Executables": [
               {
                    "Context": "system",
                    "Filename": "/opt/appstream/SessionScripts/test-session-start",
                    "Arguments": "arg1",
                    "S3LogEnabled": true
               }
          ],
          "WaitingTime": 30
     },
     "SessionTermination": {
          "Executables": [
               { 
                    "Context": "system",
                    "Filename": "/opt/appstream/SessionScripts/test-session-stop", 
                    "Arguments": "arg2", 
                    "S3LogEnabled": true
               }
          ],
          "WaitingTime": 30
     }
}
```

# 使用适用于 Linux 的 Image Assistant CLI 工具
<a name="image-assistant-cli"></a>

在基于 Linux 的映像生成器上，您可以使用 Image Assistant CLI 工具**AppStreamImageAssistant**来创建和管理您的 WorkSpaces 应用程序映像。该工具位于 `/usr/local/appstream/image-assistant/AppStreamImageAssistant`，符号链接位于 `/bin/AppStreamImageAssistant`。这款适用于 Linux 的 CLI 工具支持的操作中，有许多与适用于 Windows 的 Image Assistant CLI 工具支持的操作相同。有关这些操作的更多信息，请参阅[用于创建和管理您的 Amazon WorkSpaces 应用程序映像的图像助手 CLI 操作](cli-operations-managing-creating-image-image-assistant.md)。

# 启用和禁用网络摄像头支持
<a name="webcam-support"></a>

WorkSpaces 应用程序通过将本地网络摄像头视频输入重定向到 WorkSpaces 应用程序流式传输会话来支持实时音频-视频 (AV)。此功能使您的用户能够在 WorkSpaces 应用程序流式传输会话中使用本地网络摄像头进行视频和音频会议。借助实时 AV 和对实时音频的支持，您的用户无需退出应用程序流式传输会话，即可使用熟悉的视频和音频会议 WorkSpaces 应用程序进行协作。

要使用此功能，必须使用使用 2022 年 9 月 21 日当天或之后发布的 Linux WorkSpaces 应用程序代理的 Linux 应用程序映像。 WorkSpaces 

**注意**  
由 Rocky Linux 或 Red Hat Enterprise Linux 提供支持的 stream.standard.small 实例不支持实时 AV。用户不会在客户端工具栏上看到“摄像头”和“麦克风”图标。

Linux 流式传输会话默认启用实时 AV 功能。要在 Linux 映像生成器上为用户配置网络摄像头权限，请创建 `/etc/appstream/appstream.conf` 并添加以下内容：

**注意**  
指定 **1** 可启用网络摄像头，指定 **0** 可禁用网络摄像头。

```
[webcam]
permission = 1
```

# 为主文件夹启用和禁用大量文件同步模式
<a name="heavy-file-sync"></a>

您可以为组织启用 “ Amazon Simple Storage Service 主文件夹” 选项。当您为 WorkSpaces 应用程序堆栈启用 Amazon S3 主文件夹时，该堆栈的用户可以在应用程序流式传输会话期间访问永久存储文件夹。您的用户不必进行任何额外配置即可访问其主文件夹。用户在其主文件夹中存储的数据会自动备份到您的 Amazon S3 存储桶中 AWS 账户，并在随后的会话中可供这些用户使用。有关更多信息，请参阅 [为 WorkSpaces 应用程序用户启用和管理主文件夹](home-folders.md)。

为了确保流畅的体验并解决一些现有限制，即当用户将大型文本文件从流媒体实例保存到主文件夹时，可能会出现文件同步不一致的情况，如果在使用 WorkSpaces 应用程序时将大文件上传到 Amazon S3 是常见的用户场景，则应用程序管理员可以启用 he **avy\$1sync** 配置选项。 WorkSpaces 启用此选项意味着可能会给主文件夹文件同步过程增加一些延迟，但可以保证与 Amazon S3 的所有同步的完整性。

该功能在 2024 年 9 月 12 日当天或之后发布的所有红帽企业 Linux WorkSpaces 镜像以及使用 Linux WorkSpaces 应用程序代理的 Linux 应用程序镜像上都可用。

对于 Red Hat Enterprise Linux 和 Amazon Linux 流式传输会话，默认禁用大量同步功能。要在 Red Hat Enterprise Linux 或 Amazon Linux 映像生成器上为用户配置大量同步权限，请创建 `/etc/appstream/appstream.conf`，并添加以下内容：

**注意**  
指定 **1** 可启用大量同步，指定 **0** 可禁用大量同步。

```
[storage]
heavy_sync = 1
```

# 教程：创建基于 Linux 的 WorkSpaces 自定义应用程序镜像
<a name="tutorial-create-linux-image"></a>

本教程介绍如何创建基于 Linux 的自定义 Amazon Appl WorkSpaces ications 镜像，其中包含可以流式传输给用户的应用程序。

**重要**  
不要在映像生成器中创建名为“as2-streaming-user”的用户。这是实例集的保留用户名。如果您在 WorkSpaces 应用程序工作流程之外创建此用户名，则可能会在 Fleets 中遇到流式传输问题。

**Topics**
+ [步骤 1：在映像生成器上安装 Linux 应用程序](#tutorial-linux-image-install)
+ [步骤 2：生成应用程序优化清单文件](#tutorial-linux-image-manifest)
+ [步骤 3：创建 WorkSpaces 应用程序应用程序目录](#tutorial-linux-image-catalog)
+ [步骤 4：创建默认应用程序设置和环境变量](#tutorial-linux-image-create-default-app-settings)
+ [步骤 5：测试应用程序和设置](#tutorial-linux-image-test-applications)
+ [步骤 6：完成映像的创建](#tutorial-linux-image-finish-create-image)
+ [步骤 7（可选）：标记和复制映像](#tutorial-linux-image-tag-copy)
+ [步骤 8：清除](#tutorial-linux-image-finish)

## 步骤 1：在映像生成器上安装 Linux 应用程序
<a name="tutorial-linux-image-install"></a>

在此步骤中，您将连接 Linux 映像生成器并在该映像生成器上安装您的应用程序。

**在映像生成器上安装应用程序**

1. 通过执行以下任一操作来连接到映像生成器：
   + [使用 WorkSpaces 应用程序控制台](managing-image-builders-connect-console.md)（仅适用于 Web 连接）
   + [创建直播 URL](managing-image-builders-connect-streaming-URL.md)（用于 Web 或 WorkSpaces 应用程序客户端连接）
**注意**  
您将以 ImageBuilderAdmin 用户身份登录到 Amazon Linux GNOME 桌面并拥有根管理员权限。

1. 安装所需的应用程序。例如，要从公有 yum 存储库安装 Chromium 浏览器，请先打开终端应用程序，然后运行以下命令：

   **[ImageBuilderAdmin]\$1 sudo yum update && sudo yum install chromium.x86\$164** 
**注意**  
仅从您信任的站点下载并安装应用程序。

## 步骤 2：生成应用程序优化清单文件
<a name="tutorial-linux-image-manifest"></a>

在此步骤中，您将为步骤 1 中安装的每个应用程序生成一个清单文件。

**生成清单文件以优化应用程序的启动性能**

1. 确保您尝试优化的应用程序（如 Chromium）已启动并正在运行。

1. 在终端窗口中运行以下命令，以列出与应用程序相关的进程：

   **[ImageBuilderAdmin]\$1 ps -ef \$1 grep chromium **

1. 从上面命令的输出中找到根父 PID。以下是示例输出，根父 PID 为 16712：  
**Example**  

   ```
   [ImageBuilderAdmin]$ ps -ef | grep chromium
   
   ImageBu+ 16712 4128 0 Aug26 ? 00:00:44 /usr/lib64/chromium- browser/chromium-browser --enable-plugins --enable-extensions -- enable-user- scripts --enable-printing --enable-gpu-rasterization -- enable-sync --auto-ssl- client-auth
   
   ImageBu+ 16726 16712 0 Aug26 ? 00:00:00 /usr/lib64/chromium- browser/chromium-browser --type=zygote --no-zygote-sandbox ImageBu+ 16727 16712 0 Aug26 ? 00:00:00 /usr/lib64/chromium- browser/chromium- browser --type=zygote
   
   ImageBu+ 16731 16727 0 Aug26 ? 00:00:00 /usr/lib64/chromium- browser/chromium-browser --type=zygot
   ```

1. 保持应用程序运行，并确保使用用户所需的初始组件。这就确保了优化过程能够捕获这些组件。

1. 创建包含以下内容的脚本文件（如 `~/getfilestool.sh`）：

   ```
   #!/bin/bash
   ## usage getfilestool.sh $pid
   lsof -p $(pstree -p $1 | grep -o '([0-9]\+)' | grep -o '[0-9]\+' | tr '\012' ,)|grep REG | sed -n '1!p' | awk '{print $9}'|awk 'NF'
   ```

1. 通过运行以下命令验证是否可以运行该文件：

   **[ImageBuilderAdmin]\$1 chmod u\$1x \$1/getfilestool.sh** 

1. 运行以下命令，从上述步骤 3 中找到的根父进程中捕获所有正在运行的文件，并将其保存到临时清单文件：

   **[ImageBuilderAdmin]\$1 sudo \$1/getfilestool.sh 16712 > /tmp/chromium-manifest.txt **

1. 验证优化清单的内容，该清单是每个应用程序的以行分隔的文本文件。

## 步骤 3：创建 WorkSpaces 应用程序应用程序目录
<a name="tutorial-linux-image-catalog"></a>

在此步骤中，您将使用映像生成器`AppStreamImageAssistant`上的 CLI 工具，通过为映像指定应用程序来创建应用程序目录。 WorkSpaces 对于您计划流式传输的每个应用程序，可以指定名称、显示名称、要启动的可执行文件和要显示的图标。

**创建 WorkSpaces 应用程序应用程序目录**

1. 在映像生成器桌面上，从侧面板或通过打开应用程序网格打开**终端**。

1. 运行 **AppStreamImageAssistant --help** 以查看可用命令列表。您将使用这些命令来添加应用程序和创建映像。

1. 运行以下命令将已安装的应用程序（例如 Chromium）添加到应用程序用户的 WorkSpaces 应用程序列表中：

   ```
   AppStreamImageAssistant add-application \
    --name Chromium \
    --absolute-app-path /usr/lib64/chromium-browser/chromium-browser \
    --display-name Chromium \
    --absolute-icon-path /usr/share/icons/hicolor/256x256/apps/chromium-browser.png \
    --absolute-manifest-path /tmp/chromium-manifest.txt
   ```

   或者，运行以下命令：

   ```
   AppStreamImageAssistant add-application \
    --name="Chromium" \
    --absolute-app-path="/usr/lib64/chromium-browser/chromium-browser" \
    --display-name="Chromium" \
    --absolute-icon-path="/usr/share/icons/hicolor/256x256/apps/chromium-browser.png" \
    --absolute-manifest-path="/tmp/chromium-manifest.txt"
   ```

1. 要添加更多应用程序，请对每个其他应用程序重复步骤 3。

1. 要查看已添加到目录中的应用程序列表以及图标路径和启动参数等元数据，请运行以下命令：

   **AppStreamImageAssistant list-applications**

1. 要从目录中删除应用程序，请运行以下命令：

   **AppStreamImageAssistant remove-application –-name *application\$1name***

## 步骤 4：创建默认应用程序设置和环境变量
<a name="tutorial-linux-image-create-default-app-settings"></a>

在此步骤中，您将为应用程序用户创建默认的应用程序设置和环境变量。 WorkSpaces 这样做可以让您的用户在应用程序流式传输会话期间快速开始使用 WorkSpaces 应用程序，而无需自己创建或配置这些设置。

**为用户创建默认应用程序和环境变量**

1. 启动要为其创建默认设置的应用程序。例如，在终端窗口中，运行以下命令启动 Chromium 浏览器：

    **[ImageBuilderAdmin]\$1 chromium-browser**

1. 配置应用程序的设置。例如，将 Chromium 浏览器的主页设置为 **https://aws.amazon.com**。

1. 确保 Chromium 应用程序已关闭，然后运行以下命令将 Chromium 的配置复制到 **/etc/skel**：

   **[ImageBuilderAdmin]\$1 sudo mkdir /etc/skel/.config**

   **[ImageBuilderAdmin]\$1 sudo cp -R \$1/.config/chromium /etc/skel/.config** 

1. 设置环境变量并将其添加到脚本文件中。例如，运行以下命令：

   **[ImageBuilderAdmin]\$1 echo "export *FOO*=*BAR*" \$1 sudo tee -a /etc/profile.d/myenvvars.sh** 

   **[ImageBuilderAdmin]\$1 sudo chmod \$1x /etc/profile.d/myenvvars.sh** 

## 步骤 5：测试应用程序和设置
<a name="tutorial-linux-image-test-applications"></a>

在此步骤中，请验证您添加的应用程序是否正常运行，以及默认应用程序设置和环境变量是否按预期运行。

**在映像生成器上测试您的应用程序和默认设置**

1. 创建一个没有根权限的测试用户。例如，在**终端**窗口中，运行以下命令以在映像生成器上创建 **test-user**：

   **[ImageBuilderAdmin]\$1 sudo useradd -m test-user**

   **[ImageBuilderAdmin]\$1 echo -e 'Pa55w0rdas2\$1\$1\$1\$1nPa55w0rdas2\$1\$1\$1\$1n' \$1 sudo passwd test-user** 

1. 切换到测试用户：

   **[ImageBuilderAdmin]\$1 su - test-user**

1. 以测试用户身份启动应用程序（例如 Chromium）：

   **[test-user]\$1 /usr/bin/chromium-browser** 

1. 确认测试用户可以使用默认设置（例如，Chromium 主页为 https://aws.amazon.com/）。

1. 验证测试用户是否可以使用环境变量。例如，运行以下命令：

   **[test-user]\$1 echo \$1*FOO***

   此命令应在终端中显示输出 ***BAR***。

1. 使用此映像生成器创建映像之前，请运行以下命令以删除测试用户：

   **\$1 logout test user**

   **[test-user]\$1 logout**

   **\$1 kill test user's running processes**

   **[ImageBuilderAdmin]\$1 sudo killall -u test-user**

   **\$1 delete user**

   **[ImageBuilderAdmin]\$1 sudo userdel -r test-user**

## 步骤 6：完成映像的创建
<a name="tutorial-linux-image-finish-create-image"></a>

在此步骤中，选择映像名称并完成映像的创建。

**创建映像**

1. 在**终端**窗口中，通过运行 **AppStreamImageAssistant create-image** 从映像生成器创建映像。此映像包含您已安装和注册的应用程序，以及您已配置的所有会话脚本和默认应用程序设置。

   要查看可用选项列表，请运行 **AppStreamImageAssistant create-image --help**。有关更多信息，请参阅[使用镜像助手 CLI 操作以编程方式创建您的 Amazon WorkSpaces 应用程序映像](programmatically-create-image.md)中的 **create-image** 操作。

1. 远程会话在片刻之后断开连接。当 **Lost Connectivity (连接丢失)** 消息出现时，关闭浏览器选项卡。在创建映像时，映像生成器状态将显示为 **Snapshotting (正在拍摄快照)**。在此过程完成之前，您无法连接到映像生成器。

1. 返回到控制台并导航到 **Images**、**Image Registry**。验证您的新映像是否出现在列表中。

   创建映像时，控制台的映像注册表中的映像状态将显示为 **Pending (待处理)**。您无法连接到处于**待处理**状态的映像。

1. 请选择**刷新**图标来更新状态。在创建映像后，映像状态将更改为 **Available (可用)**，并且映像生成器将自动停止。

   要继续创建映像，请启动映像生成器并从控制台连接到该生成器，或创建新的映像生成器。

## 步骤 7（可选）：标记和复制映像
<a name="tutorial-linux-image-tag-copy"></a>

您可以在创建映像期间或创建映像后向映像添加一个或多个标签。您也可以在同一区域内复制该映像，或者将该映像复制到同一 Amazon Web Services 账户中的新区域。复制源图像会生成相同但不同的目标图像。 AWS 但是，不会复制任何用户定义的标签。此外，您只能复制您创建的自定义映像，而不能复制由 AWS提供的基本映像。

**注意**  
您可以同时将最多两个映像复制到一个目标。如果将映像复制到的目标达到映像限制，您将收到一条错误。在这种情况下，要复制映像，您必须先从目标中删除映像。在目标低于映像配额（也称为限制）后，开始从源区域复制映像。有关更多信息，请参阅 [亚马逊 WorkSpaces 应用程序服务配额](limits.md)。

**向现有映像添加标签**

1. 在导航窗格中，选择 **Images** (映像) 和 **Image Registry** (映像注册表)。

1. 在映像列表中，选择要添加标签的映像。

1. 请依次选择**标签**、**添加/编辑标签**、**添加标签**。为标签指定键和值，然后选择**保存**。

有关更多信息，请参阅 [标记您的 Amazon WorkSpaces 应用程序资源](tagging-basic.md)。

**复制映像**

通过跨地理位置不同的区域复制映像，您可以基于同一映像从多个区域流式传输应用程序。通过在离用户更近的地方流式传输应用程序，可以改善用户使用应用程序流式传输 WorkSpaces 应用程序的体验。

1. 在导航窗格中，选择 **Images** (映像) 和 **Image Registry** (映像注册表)。

1. 在映像列表中，选择要复制的映像。

1. 选择 **Actions** (操作) 和 **Copy** (复制)。

1. 在 **Copy Image** (复制映像) 对话框中，指定以下信息，然后选择 **Copy Image:** (复制映像：)
   + 对于 **Destination region** (目标区域) 中，选择要将新映像复制到的区域。
   + 对于 **Name** (名称)，指定映像在复制到目标时将具有的名称。
   + 对于可选的 **Description** (描述)，指定映像在复制到目标时将具有的描述。

1. 要检查复制操作的进度，请返回控制台并导航到 **Images** (映像) 和 **Image Registry** (映像注册表)。使用导航栏切换到目标区域 (如果适用)，并确认您的新映像显示在映像列表中。

   新映像首次显示在控制台的映像注册表中时，其状态为 **Copying** (正在复制)。成功创建映像后，映像的状态将变为 **Available**，这意味着您可以使用映像启动堆栈并流式传输您的应用程序。

## 步骤 8：清除
<a name="tutorial-linux-image-finish"></a>

最后，您可以停止运行中的映像生成器以释放资源并避免您的账户产生意外费用。建议您停止任何未使用的、运行中的映像生成器。有关更多信息，请参阅[WorkSpaces 应用程序定价](https://aws.amazon.com/appstream2/pricing/)。

**停止运行中的映像生成器**

1. 在导航窗格中，选择 **Images** 和 **Image Builders**，然后选择运行中的映像生成器实例。

1. 依次选择 **Actions** 和 **Stop**。

# 教程：为 Linux 映像启用日语支持
<a name="enable-japanese-support-linux"></a>

本教程介绍如何为 Linux 映像启用日语支持。这使映像上的应用程序能够显示日语字符，并使流媒体用户可以在映像的流式传输会话中使用日语输入法。

**Topics**
+ [步骤 1：安装日语字体和输入法](#tutorial-japanese-font)
+ [步骤 2：设置系统时区](#tutorial-japanese-zone)
+ [步骤 3：设置系统区域设置和显示语言](#tutorial-japanese-locale)
+ [步骤 4：配置输入法](#tutorial-japanese-input)
+ [步骤 5：设置键盘布局](#tutorial-japense-keyboard)
+ [步骤 6：在映像生成器上验证](#tutorial-japense-verify)
+ [步骤 7：创建映像](#tutorial-japanese-create)

## 步骤 1：安装日语字体和输入法
<a name="tutorial-japanese-font"></a>

在此步骤中，您将连接 Linux 映像生成器并安装您选择的字体和输入法包。

**安装日语字体和输入法**

1. 通过执行以下任一操作来连接到映像生成器：
   + [使用 WorkSpaces 应用程序控制台](managing-image-builders-connect-console.md)（仅适用于 Web 连接）
   + [创建直播 URL](managing-image-builders-connect-streaming-URL.md)（用于 Web 或 WorkSpaces 应用程序客户端连接）
**注意**  
您将以 ImageBuilderAdmin 用户身份登录到 Amazon Linux GNOME 桌面，并拥有根管理员权限。

1. 安装所需的字体和输入法。为此，请打开终端应用程序，然后运行以下命令：

   **sudo yum install vlgothic-p-fonts.noarch**

   **sudo yum install ibus-kkc.x86\$164**

1. 除了上述命令外，对于 Rocky Linux 和 Red Hat Enterprise Linux，请运行以下命令：

   **sudo yum install glibc-langpack-ja**

## 步骤 2：设置系统时区
<a name="tutorial-japanese-zone"></a>

要设置系统时区，请运行以下命令：

**sudo timedatectl set-timezone "Asia/Tokyo"**

## 步骤 3：设置系统区域设置和显示语言
<a name="tutorial-japanese-locale"></a>

要设置系统区域设置和显示语言，请运行以下命令。

**设置系统区域设置和显示语言**

1. 运行命令 **sudo vim /etc/cloud/cloud.cfg** 以更新 `cloud-init config` 文件，将 **locale** 更改为 **locale: ja\$1JP.utf8**，然后保存并关闭该文件。

1. 通过运行 **sudo localectl set-locale LANG=ja\$1JP.utf8** 更新系统设置。

1. 通过运行 **sudo gsettings set org.gnome.system.locale region "ja\$1JP.utf8"** 更新 Gnome Shell 设置。

## 步骤 4：配置输入法
<a name="tutorial-japanese-input"></a>

为要添加到映像中的应用程序配置输入法。有关如何安装应用程序、生成清单文件和创建默认设置的更多信息，请参阅[教程：创建基于 Linux 的 WorkSpaces 自定义应用程序镜像](tutorial-create-linux-image.md)。在此步骤中，我们假设您已经安装了 Firefox 应用程序，它位于 `/usr/local/firefox/firefox`。

**配置输入法**

1. 通过运行命令 **sudo vim /usr/local/bin/update-input-method.sh** 创建脚本，并将以下内容添加到该脚本：

   ```
   #!/bin/bash
   
   function start_process()
   {
       command=$1
       process_name=$2
   
       process_count=$(pgrep $process_name -c)
       echo "$(date) current $process_name count: $process_count"
       while [ $process_count -lt 1 ]
       do
           echo "$(date) starting $process_name"
           eval $command
           sleep 1
           process_count=$(pgrep $process_name -c)
       done
       echo "$(date) $process_name started"
   }
   
   start_process "ibus-daemon --xim &" "ibus-daemon"
   start_process "/usr/libexec/ibus-engine-kkc --ibus &" "ibus-engine-kkc"
   
   gsettings set org.gnome.desktop.input-sources sources "[('ibus','kkc'), ('xkb', 'us')]"
   gsettings set org.gnome.desktop.wm.keybindings switch-input-source "['<Control>space']"
   gsettings set org.gnome.desktop.wm.keybindings switch-input-source-backward "['<Shift><Control>space']"
   
   echo "$(date) updated input source and switch shortcut"
   ```

   在上面的脚本中，第一个输入源（‘ibus’, ‘kkc’）是默认的输入法。您可以通过更改输入源的顺序来更改默认输入法。此外，“Control\$1Space”和“Shift\$1Control\$1Space”指定为切换输入法的快捷键组合。您可以指定自己的按键组合，供用户在流式传输会话期间切换输入法时使用。

1. 创建将添加到映像中用于启动应用程序（Firefox）的脚本。为此，请运行命令**sudo vim /usr/local/bin/firefox-jp.sh**，然后将以下内容添加到脚本中：

   ```
   #!/bin/bash
   
   # Gather required environment variables from the GNOME shell session
   while IFS= read -r -d $'\0' env_var; do
       case "$env_var" in
           DBUS_SESSION_BUS_ADDRESS=*|\
           GTK_IM_MODULE=*|\
           QT_IM_MODULE=*|\
           XMODIFIERS=*|\
           XAUTHORITY=*)
               echo "$env_var"
               export "$env_var"
               ;;
       esac
   done < "/proc/$(pgrep -u as2-streaming-user gnome-shell | head -n1)/environ"
   
   /usr/local/bin/update-input-method.sh > /var/tmp/update-input-method.log 2>&1 &
   
   /usr/local/firefox/firefox &
   ```

1. 通过运行以下命令为两个脚本添加运行权限：

   **sudo chmod \$1x /usr/local/bin/update-input-method.sh**

   **sudo chmod \$1x /usr/local/bin/firefox-jp.sh**

1. 如果您已经为应用程序创建了优化清单文件，请运行以下命令将应用程序启动脚本添加到应用程序目录：

   ```
   sudo AppStreamImageAssistant add-application \
   --name firefox \
   --absolute-app-path /usr/local/bin/firefox-jp.sh \
   --display-name firefox \
   --absolute-icon-path /usr/local/firefox/browser/chrome/icons/default/default128.png \
   --absolute-manifest-path /tmp/firefox-manifest.txt
   ```

或者，也可以通过将脚本 update-input-method .sh 作为单独的应用程序添加到图像的应用程序目录中来配置输入法。在流式传输会话期间，您的用户可以启动此应用程序以启用日语输入，并在同一会话中使用指定快捷键切换输入法。

## 步骤 5：设置键盘布局
<a name="tutorial-japense-keyboard"></a>

设置键盘布局，使其与用户在流式传输会话中使用的键盘相匹配。例如，您可以使用命令 **localectl list-keymaps** 列出所有可用的键盘映射，并使用命令 **sudo localectl set-keymap jp106** 将键盘映射设置为包含 106 个键的日语键盘。

## 步骤 6：在映像生成器上验证
<a name="tutorial-japense-verify"></a>

要在映像生成器上验证，请先运行命令 **sudo shutdown -r now** 重启映像生成器。重启后，再次连接到映像生成器，并验证包括时区、区域设置、语言和输入法在内的一切是否都能按预期运行。

## 步骤 7：创建映像
<a name="tutorial-japanese-create"></a>

在映像生成器上创建映像。有关更多信息，请参阅 [教程：创建基于 Linux 的 WorkSpaces 自定义应用程序镜像](tutorial-create-linux-image.md)。确保创建默认应用程序设置，包括您刚刚配置的区域设置。有关更多信息，请参阅[创建基于 Linux 的映像](create-linux-based-images.md)中的“为用户创建默认应用程序设置”。

根据此映像创建的所有 Linux 实例集实例都将具有您为该映像配置的默认时区、区域设置、语言和输入法设置。