diff --git a/docs/source/getting_started/index.rst b/docs/source/getting_started/index.rst index 05d921d9e3f3e1a377754eca818cb864fb7da186..70c7e1dfb624a2da9cbbc43f61a87ab25dfb3d70 100644 --- a/docs/source/getting_started/index.rst +++ b/docs/source/getting_started/index.rst @@ -29,17 +29,17 @@ openEuler Embedded是基于openEuler社区面向嵌入式场景的Linux版本。 - 内核镜像 **zImage**: 基于openEuler社区Linux 5.10代码构建得到。相应的内核配置可通过如下链接获取: - `arm(cortex a15) `_ - - `arm(cortex a57) `_, + - `arm(cortex a57) `_, 针对aarch64架构,额外增加了镜像自解压功能,可以参见相应的 `patch `_ -- 根文件系统镜像(依据具体需求,以下二选一) +- 根文件系统镜像(依据具体需求,以下二选一)`` - **initrd_tiny**:极简根文件系统镜像,只包含基本功能。包含 busybox 和基本的 glibc 库。该镜像功能简单,但内存消耗很小,适合探索 Linux内核相关功能。 - **initrd**:标准根文件系统镜像,在极简根文件系统镜像的基础上,进行了必要安全加固,增加了audit、cracklib、OpenSSH、Linux PAM、shadow、iSula容器等软件包。该镜像适合进行更加丰富的功能探索。 -- sdk工具 +- SDK(Software Development Kit)工具 - - **openeuler*.sh**:用户编译内核ko及用户态程序的sdk包 + - **openeuler*.sh**:openEuler Embedded SDK自解压安装包,SDK包含了进行开发(用户态程序、内核模块啦.ko等)所必需的工具、库和头文件等。 运行镜像 @@ -49,11 +49,19 @@ openEuler Embedded是基于openEuler社区面向嵌入式场景的Linux版本。 .. note:: - - 建议使用QEMU5.0以上版本运行镜像,由于一些额外功能(网络、共享文件系统)需要依赖QEMU的virtio-net, virtio-fs等特性,如未在QEMU中使能,则运行时可能会产生错误,此时可能需要从源码重新编译QEMU。 + - 建议使用qemu 5.0以上版本运行镜像,由于一些额外功能(网络、共享文件系统)需要依赖qemu的virtio-net, virtio-fs等特性,如未在qemu中使能,则运行时可能会产生错误,此时可能需要从源码重新编译qemu。 - 运行镜像时,建议把内核镜像和根文件系统镜像放在同一目录下,后续说明以标准根文件系统为例(initrd)。 +qemu的下载与安装可以参考 `qemu官方网站 `_ , 或者下载 `源码 `_ 单独编译安装。安装好后可以运行如下命令 +确认: + +.. code-block:: console + + qemu-system-aarch64 --version + + 极简运行场景 ============== @@ -63,13 +71,13 @@ openEuler Embedded是基于openEuler社区面向嵌入式场景的Linux版本。 .. code-block:: console - qemu-system-arm -M virt-4.0 -cpu cortex-a15 -nographic -kernel zImage -initrd initrd + qemu-system-arm -M virt-4.0 -m 1G -cpu cortex-a15 -nographic -kernel zImage -initrd initrd 针对aarch64(ARM Cortex A57),运行如下命令: .. code-block:: console - qemu-system-aarch64 -M virt-4.0 -cpu cortex-a57 -nographic -kernel zImage -initrd initrd + qemu-system-aarch64 -M virt-4.0 -m 1G -cpu cortex-a57 -nographic -kernel zImage -initrd initrd 由于标准根文件系统镜像进行了安全加固,因此第一次启动时,需要为登录用户名root设置密码,且密码强度有相应要求, 需要数字、字母、特殊字符组合最少8位,例如openEuler@2021。当使用极简根文件系统镜像时,系统会自动登录, 无需输入用户名和密码。 @@ -89,13 +97,13 @@ qemu运行成功并登录后,将会呈现openEuler Embedded的Shell。 .. code-block:: console - qemu-system-arm -M virt-4.0 -cpu cortex-a15 -nographic -kernel zImage -initrd initrd -device virtio-9p-device,fsdev=fs1,mount_tag=host -fsdev local,security_model=passthrough,id=fs1,path=/tmp + qemu-system-arm -M virt-4.0 -m 1G -cpu cortex-a15 -nographic -kernel zImage -initrd initrd -device virtio-9p-device,fsdev=fs1,mount_tag=host -fsdev local,security_model=passthrough,id=fs1,path=/tmp 针对aarch64(ARM Cortex A57),运行如下命令: .. code-block:: console - qemu-system-aarch64 -M virt-4.0 -cpu cortex-a57 -nographic -kernel zImage -initrd initrd -device virtio-9p-device,fsdev=fs1,mount_tag=host -fsdev local,security_model=passthrough,id=fs1,path=/tmp + qemu-system-aarch64 -M virt-4.0 -m 1G -cpu cortex-a57 -nographic -kernel zImage -initrd initrd -device virtio-9p-device,fsdev=fs1,mount_tag=host -fsdev local,security_model=passthrough,id=fs1,path=/tmp 2. **映射文件系统** @@ -124,7 +132,7 @@ qemu运行成功并登录后,将会呈现openEuler Embedded的Shell。 使能网络场景 =============== -通过qemu的virtio-net和宿主机上的虚拟网卡,可以实现宿主机和openEuler embedded之间的网络通信。 +通过qemu的virtio-net和宿主机上的虚拟网卡,可以实现宿主机和openEuler Embedded之间的网络通信。 1. **启动qemu** @@ -132,13 +140,13 @@ qemu运行成功并登录后,将会呈现openEuler Embedded的Shell。 .. code-block:: console - qemu-system-arm -M virt-4.0 -cpu cortex-a15 -nographic -kernel zImage -initrd initrd -device virtio-net-device,netdev=tap0 -netdev tap,id=tap0,script=/etc/qemu-ifup + qemu-system-arm -M virt-4.0 -m 1G -cpu cortex-a15 -nographic -kernel zImage -initrd initrd -device virtio-net-device,netdev=tap0 -netdev tap,id=tap0,script=/etc/qemu-ifup 针对aarch64(ARM Cortex A57),运行如下命令: .. code-block:: console - qemu-system-aarch64 -M virt-4.0 -cpu cortex-a57 -nographic -kernel zImage -initrd initrd -device virtio-net-device,netdev=tap0 -netdev tap,id=tap0,script=/etc/qemu-ifup + qemu-system-aarch64 -M virt-4.0 -m 1G -cpu cortex-a57 -nographic -kernel zImage -initrd initrd -device virtio-net-device,netdev=tap0 -netdev tap,id=tap0,script=/etc/qemu-ifup 2. **宿主上建立虚拟网卡** @@ -151,7 +159,7 @@ qemu运行成功并登录后,将会呈现openEuler Embedded的Shell。 通过qemu-ifup脚本,宿主机上将创建名为tap0的虚拟网卡,地址为192.168.10.1。 -3. **配置openEuler embedded网卡** +3. **配置openEuler Embedded网卡** openEuler Embedded登陆后,执行如下命令: @@ -172,44 +180,66 @@ openEuler Embedded登陆后,执行如下命令: .. note:: - 如需openEuler embedded借助宿主机访问互联网,则需要在宿主机上建立网桥,此处不详述,如有需要,请自行查阅相关资料。 + 如需openEuler Embedded借助宿主机访问互联网,则需要在宿主机上建立网桥,此处不详述,如有需要,请自行查阅相关资料。 -基于openEuler embedded的sdk应用开发 +基于openEuler Embedded的SDK应用开发 ******************************************** -当前发布的镜像除了体验openEuler Embedded的基本功能外,还可以进行基本的应用开发,也即在openEuler embedded上运行用户自己的程序。 +当前发布的镜像除了体验openEuler Embedded的基本功能外,还可以进行基本的应用开发,也即在openEuler Embedded上运行用户自己的程序。 + +安装SDK +============= -**1 执行sdk脚本** - | 例如 ``sh openeuler-glibc-x86_64-openeuler-image-aarch64-qemu-aarch64-toolchain-22.03.sh`` - | 根据提示输入工具链的安装路径,默认路径是"/opt/openeuler//"; - | 若不设置,则按默认路径安装;也可以配置相对路径或绝对路径 +1. **执行SDK自解压安装脚本** - 执行样例: +运行如下命令: - # ``sh ./openeuler-glibc-x86_64-openeuler-image-armv7a-qemu-arm-toolchain-22.03.sh`` +.. code-block:: console - | openEuler embedded(openEuler Embedded Reference Distro) SDK installer version 22.03 - | ================================================================ - | Enter target directory for SDK (default: /opt/openeuler/22.03): **sdk** - | You are about to install the SDK to "/usr1/openeuler/sdk". Proceed [Y/n]? **y** - | Extracting SDK...............................................done - | Setting it up...SDK has been successfully set up and is ready to be used. - | Each time you wish to use the SDK in a new shell session, you need to source the environment setup script e.g. - | $ . /usr1/openeuler/sdk/environment-setup-armv7a-openeuler-linux-gnueabi + sh openeuler-glibc-x86_64-openeuler-image-aarch64-qemu-aarch64-toolchain-22.03.sh -**2 source环境变量设置脚本** - | 前一步执行结束最后已打印source命令 - | 例如以上: - | ``. /usr1/openeuler/myfiles/sdk/environment-setup-armv7a-openeuler-linux-gnueabi`` +根据提示输入工具链的安装路径,默认路径是 :file:`/opt/openeuler//`; +若不设置,则按默认路径安装;也可以配置相对路径或绝对路径 -**3 使用sdk编译** - | 例如: ``arm-openeuler-linux-gnueabi-gcc -v`` 查看gcc版本 +一个例子如下: -使用sdk编译hello world样例: -1). **准备代码** -以构建一个hello world程序为例,运行在openEuler根文件系统镜像中。 + +.. code-block:: console + + sh ./openeuler-glibc-x86_64-openeuler-image-armv7a-qemu-arm-toolchain-22.03.sh`` + openEuler embedded(openEuler Embedded Reference Distro) SDK installer version 22.03 + ================================================================ + Enter target directory for SDK (default: /opt/openeuler/22.03): sdk + You are about to install the SDK to "/usr1/openeuler/sdk". Proceed [Y/n]? y + Extracting SDK...............................................done + Setting it up...SDK has been successfully set up and is ready to be used. + Each time you wish to use the SDK in a new shell session, you need to source the environment setup script e.g. + $ . /usr1/openeuler/sdk/environment-setup-armv7a-openeuler-linux-gnueabi + +2. **设置SDK环境变量** + +前一步执行结束最后已打印source命令,运行即可 + +.. code-block:: console + + . /usr1/openeuler/myfiles/sdk/environment-setup-armv7a-openeuler-linux-gnueabi + +3. **查看是否安装成功** + +运行如下命令,查看是否安装成功、环境设置成功 + +.. code-block:: console + + arm-openeuler-linux-gnueabi-gcc -v + +使用SDK编译hello world样例 +============================= + +1. **准备代码** + +以构建一个hello world程序为例,运行在openEuler Embedded根文件系统镜像中。 创建一个hello.c文件,源码如下: @@ -231,20 +261,20 @@ openEuler Embedded登陆后,执行如下命令: add_executable(hello hello.c) -2). **编译生成二进制** +2. **编译生成二进制** 进入hello.c文件所在目录,使用工具链编译, 命令如下: -:: +.. code-block:: console cmake .. make -把编译好的hello程序拷贝到/tmp/某个目录下(例如/tmp/myfiles/)。 +把编译好的hello程序拷贝到openEuler Embedded系统的/tmp/某个目录下(例如/tmp/myfiles/)。如何拷贝可以参考前文所述共享文件系统场景 -3). **运行用户态程序** +3. **运行用户态程序** -在openEuler系统中运行hello程序。 +在openEuler Embedded系统中运行hello程序。 .. code-block:: console