Linux Jail初始化
和 Jail环境初始化 初始化类似,我想要一个能够方便环线的开发、测试环境,来模拟大规模集群的部署和开发。
和 Jail环境初始化 不同的是, FreeBSD Linux Jail 多了一步 chroot
,并且进入 Debian 系统之后所有的操作相当于在一个Linux系统中完成
Jail层设置
备注
我发现在Linux层(debian)无法激活sshd服务,但是可以在Jail层激活FreeBSD的sshd服务,所以还是和 Jail环境初始化 一样做ssh初始化
ssh初始化
jail中需要安装 sudo
,这里采用 FreeBSD初始化 中步骤,安装 DevOps 相关工具
为
d2l
jail 安装sudo
# 如果保持物理主机纯净,将所有日常工作、开发和维护环境都迁移到虚拟机和Jail中,那么只安装以下最少软件
# tmux 建议同时安装 terminfo-db 以获取terminfo数据库
pkg install sudo tmux terminfo-db
# 如果直接在物理主机工作,可以补充安装git等工具
# pkg install sudo tmux terminfo-db bash git-lite tree
在jail内部创建admin
# 创建uid为1000的admin组
# 物理主机安装可以跳过,因为installer有一个交互步骤完成了这个工作
pw groupadd admin -g 501
# 创建admin用户
# 物理主机安装可以跳过,因为installer有一个交互步骤完成了这个工作
pw useradd admin -g 501 -u 501 -d /home/admin -m -s /bin/sh
# 将admin用户加入wheel组
pw groupmod wheel -m admin
# 为admin设置密码,不过不是必须的,可以设置ssh key登录
# 物理主机安装可以跳过,因为installer有一个交互步骤完成了这个工作
passwd admin
# 修改 /usr/local/etc/sudoers 设置wheel组用户(也就是admin)无需密码sudo
# %wheel ALL=(ALL:ALL) NOPASSWD: ALL
echo "%wheel ALL=(ALL:ALL) NOPASSWD: ALL" >> /usr/local/etc/sudoers
# 设置自动启动ssh
sysrc sshd_enable="YES"
Linux层设置
进入
d2l
Linux jail,并chroot
:
需要确保检查当前确实是Linux环境:
使用
uname
检查Linux环境uname -s -r -m
输出类似:
使用
uname
检查Linux环境输出Linux 5.15.0 x86_64
安装必要软件包
类似 Debian精简系统初始化 ,但针对 FreeBSD Linux Jail 环境附加安装一些软件包
安装Linux Jail软件包
# dnsutils: dig nslookup
# netcat: nc
apt install sudo file dnsutils netcat-openbsd unzip
admin帐号
在
d2l
Linux jail中创建用户组和用户admin:
Linux jail中创建用户组和用户admin
# 创建uid为1000的admin组
groupadd -g 1000 admin
# 创建admin用户 (/home/admin目录已经存在)
useradd -g 1000 -u 1000 -d /home/admin -s /bin/bash admin
# 安装sudo
apt install -y sudo curl
# 设置admin组用户(也就是admin)无需密码sudo
echo "%admin ALL=(ALL:ALL) NOPASSWD: ALL" >> /etc/sudoers.d/admin
# set TIMEZONE to Shanghai
unlink /etc/localtime
ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
ssh登录
完成上述 jail 层 和 linux 层设置之后,现在可以在host上通过 ssh 先登录到 jail 中,然后再 chroot
进入Linux:
ssh 先登录到 jail 中,然后再
chroot
进入Linux# 以 admin 用户身份登录 d2l jail之后
sudo chroot /compat/debin /bin/bash
# 这里可能需要在host主机上修订 /usr/local/jails/containers/d2l/compat/debian/etc/profile (默认是600)
# chmod 644 /usr/local/jails/containers/d2l/compat/debian/etc/profile
# 然后再次sudo成admin用户(Linux系统)
sudo - admin
# 接下来就可以在Linux中正常操作
安装python virtualenv(可选)
安装python
# 安装python
sudo apt install python3 python3-pip
venv初始化
cd ~
python3 -m venv venv3
激活:
激活venv
# bash 使用 activate
source venv3/bin/activate
# csh 使用 activate.csh
# source venv3/bin/activate.csh
安装Conda(可选)
Anaconda Download 提供了Anaconda和Miniconda安裝下載(腳本)
安裝miniconda
# x86_64版本
curl https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh -o Miniconda3-latest-Linux-x86_64.sh
# ARM 64位版本
# curl https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-aarch64.sh -o Miniconda3-latest-Linux-aarch64.sh
# 修订运行权限并安装
chmod 755 Miniconda3-latest-Linux-x86_64.sh
./Miniconda3-latest-Linux-x86_64.sh
在同意了license之后,按照提示进行安装
交互方式安装
Do you accept the license terms? [yes|no]
>>> yes
Miniconda3 will now be installed into this location:
/home/admin/miniconda3
- Press ENTER to confirm the location
- Press CTRL-C to abort the installation
- Or specify a different location below
[/home/admin/miniconda3] >>> /home/admin/conda
...
Downloading and Extracting Packages:
Preparing transaction: done
Executing transaction: done
installation finished.
Do you wish to update your shell profile to automatically initialize conda?
This will activate conda on startup and change the command prompt when activated.
If you'd prefer that conda's base environment not be activated on startup,
run the following command when conda is activated:
conda config --set auto_activate_base false
You can undo this by running `conda init --reverse $SHELL`? [yes|no]
[no] >>> yes
no change /home/admin/conda/condabin/conda
no change /home/admin/conda/bin/conda
no change /home/admin/conda/bin/conda-env
no change /home/admin/conda/bin/activate
no change /home/admin/conda/bin/deactivate
no change /home/admin/conda/etc/profile.d/conda.sh
no change /home/admin/conda/etc/fish/conf.d/conda.fish
no change /home/admin/conda/shell/condabin/Conda.psm1
no change /home/admin/conda/shell/condabin/conda-hook.ps1
no change /home/admin/conda/lib/python3.12/site-packages/xontrib/conda.xsh
no change /home/admin/conda/etc/profile.d/conda.csh
modified /home/admin/.bashrc
==> For changes to take effect, close and re-open your current shell. <==
Thank you for installing Miniconda3!