.. _linux_jail_init: ========================== Linux Jail初始化(Ubuntu) ========================== 和 :ref:`jail_init` 初始化类似,我想要一个能够方便环线的开发、测试环境,来模拟大规模集群的部署和开发。 和 :ref:`jail_init` 不同的是, :ref:`linux_jail` 多了一步 ``chroot`` ,并且进入 :ref:`debian` / :ref:`ubuntu_linux` 系统之后所有的操作相当于在一个Linux系统中完成: .. literalinclude:: linux_jail/jexec_chroot :caption: 进入Linux Jail的Ubuntu环境 注意,在 :ref:`linux_jail` 中的Linux系统是没有 :ref:`systemd` 补全apt ========= .. note:: 这段可能是 ``debootstrap`` 的问题导致的, `Setting up a (Debian) Linux jail on FreeBSD `_ 提示在初次进入Linux Jail中,需要执行安装包补全: .. literalinclude:: linux_jail_init/dpkg_install :caption: 补全系统安装 通过 ``debootstrap`` 部署在 ``/compat/ubuntu`` 目录的 :ref:`ubuntu_linux` 系统是一个非常精简的Ubuntu系统,只有 ``129M`` ,仅包含Linux核心系统 比较奇怪,虽然 ``debootstrap`` 显示安装了 ``apt 2.4.5`` ,但是我 ``chroot /comapt/ubuntu /bin/bash`` 之后却显示找不到 ``apt`` 命令。 .. warning:: 我最终采用 :ref:`linux_jail_ubuntu-base` ,使用Ubuntu官方提供的core系统,绕开了这个问题。 Jail层设置 ============ .. note:: 我发现在Linux层(debian)无法激活sshd服务,但是可以在Jail层激活FreeBSD的sshd服务,所以还是和 :ref:`jail_init` 一样做ssh初始化 ssh初始化 ----------- jail中需要安装 ``sudo`` ,这里采用 :ref:`freebsd_init` 中步骤,安装 :ref:`devops` 相关工具 .. literalinclude:: ../../startup/freebsd_init/devops :caption: 为 ``d2l`` jail 安装sudo .. literalinclude:: ../../startup/freebsd_init/user :caption: 在jail内部创建admin Linux层设置 ============= - 进入 ``d2l`` Linux jail,并 ``chroot`` : .. literalinclude:: linux_jail_archive/jexec_chroot :caption: ``jexec`` 结合 ``chroot`` 将访问 :ref:`debian` 系统Linux二进制兼容 需要确保检查当前确实是Linux环境: .. literalinclude:: linux_jail_archive/uname :caption: 使用 ``uname`` 检查Linux环境 输出类似: .. literalinclude:: linux_jail_archive/uname_output :caption: 使用 ``uname`` 检查Linux环境输出 安装必要软件包 ------------------ 类似 :ref:`debian_init` ,但针对 :ref:`linux_jail` 环境附加安装一些软件包 .. literalinclude:: linux_jail_init/devops :caption: 安装Linux Jail软件包 admin帐号 ------------ - 在 Linux jail中创建用户组和用户admin: .. literalinclude:: linux_jail_init/admin :caption: Linux jail中创建用户组和用户admin ssh登录(可选) ================ 完成上述 jail 层 和 linux 层设置之后,现在可以在host上通过 ssh 先登录到 jail 中,然后再 ``chroot`` 进入Linux: .. literalinclude:: linux_jail_init/ssh_admin :caption: ssh 先登录到 jail 中,然后再 ``chroot`` 进入Linux 安装python virtualenv(可选) ============================ .. literalinclude:: linux_jail_init/install_python :caption: 安装python .. literalinclude:: ../../../python/startup/virtualenv/venv :language: bash :caption: venv初始化 - 激活: .. literalinclude:: ../../../python/startup/virtualenv/venv_active :language: bash :caption: 激活venv 安装Conda(可选) =================== .. note:: :ref:`install_conda` 包含了完整 :ref:`python` 运行环境,所以主机(jail)环境不需要安装Python - `Anaconda Download `_ 提供了Anaconda和Miniconda安裝下載(腳本) .. literalinclude:: ../../../machine_learning/startup/install_conda/install_miniconda :caption: 安裝miniconda - 在同意了license之后,按照提示进行安装 .. literalinclude:: ../../../machine_learning/startup/install_conda/install_miniconda_interact :caption: 交互方式安装 :emphasize-lines: 11,26 参考 =========== - `Setting up a (Debian) Linux jail on FreeBSD `_