江苏做网站公司排名,wordpress mdui,最世网络建设网站可以吗,网站开发背景及意义简介
FreeBSD、CBSD、Jail和Ubuntu#xff0c;四者的组合方案可以说是强强联合#xff0c;极具性价比和竞争力#xff01;同时安装简单方便#xff0c;整体方案非常先进。
CBSD是为FreeBSD jail子系统、bhyve、QEMU/NVMM和Xen编写的管理层。该项目定位为一个综合解决方案…
简介
FreeBSD、CBSD、Jail和Ubuntu四者的组合方案可以说是强强联合极具性价比和竞争力同时安装简单方便整体方案非常先进。
CBSD是为FreeBSD jail子系统、bhyve、QEMU/NVMM和Xen编写的管理层。该项目定位为一个综合解决方案的单一集成工具用于使用预定义的软件集以最少的配置快速构建和部署计算机虚拟环境。
FreeBSD jail系统容器本身是FreeBSD子系统的低资源解决方案但是因为FreeBSD支持Linux模拟就使得jail容器也支持了Linux比如可以在jail里建立Ubuntu子系统。整个解决方案非常丝滑简单方便。
一、安装cbsd
pkg安装
pkg install cbsd
CBSD初始化 如果是使用zfs系统需要先执行
/sbin/zfs create -o mountpoint/usr/jails -o atimeoff zroot/jails 然后进行初始化即可
env workdir/usr/jails /usr/local/cbsd/sudoexec/initenv
具体安装可以参考官网CBSD — FreeBSD Jail and Bhyve Management Tools
还有这篇文档 jail管理器CBSD实践FreeBSD-CSDN博客
二、使用CBSD菜单方式安装Ubuntu子系统
创建Ubuntu子系统
使用命令
cbsd jconstruct-tui
进入菜单后配置profile选择ubuntu_jammy
名字jname 自定义比如ubjammy
其它使用默认即可如下图 然后选择“2 GO”按回车很快就创建成功了
Please wait: this will take a while...
Applying custom skel system dir template from: /usr/local/cbsd/share/Linux-jail-ubuntu-jammy-system-skel
customskel dir specified but not found: /usr/local/cbsd/share/Linux-jail-ubuntu-jammy-skelTo edit VM properties use: cbsd jconfig jnameubjammy
To start VM use: cbsd jstart ubjammy
To stop VM use: cbsd jstop ubjammy
To remove VM use: cbsd jremove ubjammy
For attach VM console use: cbsd jlogin ubjammyCreating ubjammy complete: Enjoy!
jcreate done in 9 seconds可以看到6秒创建好了。使用cbsd jls可以看到还是关机状态于是使用cbsd jstart ubjammy命令开机
cbsd jstart ubjammy
Check environment script: 00.check_distribution.sh
populate jails data from: /usr/jails/basejail/base_amd64_amd64_jammy ...
Applying custom skel dir template from: /usr/jails/basejail/base_amd64_amd64_jammy
Default NIC automatically selected: web
set resource limit: [ ]
jail renice: 1
Starting jail: ubjammy, parallel timeout5
ubjammy: created
CBSD setup: jail ipfw counters num: 107/108
jstart done in 6 seconds
开机速度也很快只需要6秒就开机成功
登录Ubuntu子系统
这里要注意使用常规登录方法是不行的
cbsd jlogin ubjammy
Welcome to Ubuntu 22.04.4 LTS (GNU/Linux 5.15.0 x86_64)* Documentation: https://help.ubuntu.com* Management: https://landscape.canonical.com* Support: https://ubuntu.com/proThis system has been minimized by removing packages and content that are
not required on a system that users do not log into.To restore this content, you can run the unminimize command.The programs included with the Ubuntu system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by
applicable law.Cannot execute /bin/bash: No such file or directory常规登录会报错没有/bin/bash文件而导致无法登到虚拟子系统。这时候要用jail原装命令“jexec ubjammy sh”登录
rootfbhost:~ # jexec ubjammy sh
# uname -a
Linux ubjammy.my.domain 5.15.0 FreeBSD 14.1-RELEASE releng/14.1-n267679-10e31f0946d8 GENERIC x86_64 x86_64 x86_64 GNU/Linux登录之后通过使用uname命令可以看到这是一台5.15.0内核版本Linux系统到这里安装就算完成了 装好apt管理软件
装好内核后并不能干什么事情因为我们习惯了在Ubuntu下使用apt来管理软件所以要
首先更新apt
apt update
然后就可以越快的玩耍拉
三、使用CBSD命令方式安装Ubuntu子系统
可以直接用一条命令创建Linux子系统但是如果需要Ubuntu子系统则需要创建好之后再到里面安装Ubuntu虚拟子系统。
先用命令创建Linux虚拟子系统
使用命令创建
cbsd jcreate jnameubu jprofileubuntu_focal allow_raw_sockets1 一会儿就创建好了。注意如果想后面装哪个版本的Ubuntu就要在jprofile这里调用哪个版本的配置文件怀疑如果不一致后面库会发生不一致的问题实际上这里应该影响后面网上下载base.txz库的链接。所以这里的例子是Ubuntu的focal版本。
cbsd jcreate jnameubu jprofileubuntu_focal allow_raw_sockets1
Please wait: this will take a while...
Applying skel dir template from: /usr/jails/share/FreeBSD-jail-skelTo edit VM properties use: cbsd jconfig jnameubu
To start VM use: cbsd jstart ubu
To stop VM use: cbsd jstop ubu
To remove VM use: cbsd jremove ubu
For attach VM console use: cbsd jlogin ubuCreating ubu complete: Enjoy!
/usr/jails/jails/ubu/etc already mounted
/usr/jails/jails/ubu/root already mounted
/usr/jails/jails/ubu/tmp already mounted
/usr/jails/jails/ubu/home already mounted
/usr/jails/jails/ubu/usr/local already mounted
/usr/jails/jails/ubu/compat already mounted
/usr/jails/jails/ubu/var already mounted
jcreate done in 1 minutes and 9 seconds启动子系统
cbsd jstart ubu
Default NIC automatically selected: web
set resource limit: [ ]
jail renice: 1
Starting jail: ubu, parallel timeout5
ubu: created
ELF ldconfig path: /lib /usr/lib /usr/lib/compat /usr/local/lib /usr/local/lib/compat/pkg /usr/local/lib/compat/pkg
32-bit compatibility ldconfig path: /usr/lib32 /usr/lib32
Updating motd:.
Creating and/or trimming log files.
Clearing /tmp (X related).
Updating /var/run/os-release done.
Starting syslogd.
Starting cron.Fri Jun 14 14:17:01 CST 2024
CBSD setup: jail ipfw counters num: 99/100
jstart done in 5 seconds登录Linux子系统
与进入菜单方式安装的Ubuntu子系统不同命令方式建立的子系统既可以使用jexec指令进入也可以用常规的cbsd指令进入。
使用jexec 指令直接进入Linux子系统
jexec ubu chroot /compat/linux /bin/bash
bash-4.2# uname -a
Linux ubu.my.domain 5.15.0 FreeBSD 14.1-RELEASE releng/14.1-n267679-10e31f0946d8 GENERIC x86_64 x86_64 x86_64 GNU/Linux使用cbsd命令需要两步
首先使用cbsd进入FreeBSD虚拟子系统
cbsd jlogin ubu
这时候系统是FreeBSD的。进入FreeBSD虚拟子系统后再执行chroot进入Linux子系统
chroot /compat/linux/ /bin/bash
这样就进入了Linux子系统但是如果想用Ubuntu还需要手工安装Ubuntu子系统。
手工安装Ubuntu子系统
在FreeBSD子系统里面安装Ubuntu子系统
首先安装debootstrap
pkg install debootstrap 然后使用debootstrap安装Ubuntu
debootstrap focal /compat/ubuntu
安装好后
执行chroot进入Ubuntu子系统
chroot /compat/ubuntu /bin/bash
groups: cannot find name for group ID 0
groups: cannot find name for group ID 5
I have no name!ubu:/# uname -a
Linux ubu.my.domain 5.15.0 FreeBSD 14.1-RELEASE releng/14.1-n267679-10e31f0946d8 GENERIC x86_64 x86_64 x86_64 GNU/Linux好了Ubuntu子系统就安装好了。
登录ubuntu子系统
要使用这个子系统可以直接在宿主FreeBSD主机使用命令进入
jexec ubu chroot /compat/ubuntu /bin/bash
检查一下确实是Ubuntu linux
rootubu:/# uname -a
Linux ubu.my.domain 5.15.0 FreeBSD 14.1-RELEASE releng/14.1-n267679-10e31f0946d8 GENERIC x86_64 x86_64 x86_64 GNU/Linux这样不需要再进入FreeBSD子系统周转管理起来特别简单方便。当然可以采用先登录FreeBSD子系统再进入Ubuntu子系统的方法
rootfbhost:~ # cbsd jlogin ubu
Last login: Sun Jun 16 19:21:31 on pts/1
FreeBSD 14.1-RELEASE (GENERIC) releng/14.1-n267679-10e31f0946d8
ubu:/root[19:33] # chroot /compat/ubuntu/ /bin/bash
rootubu:/# uname -a
Linux ubu.my.domain 5.15.0 FreeBSD 14.1-RELEASE releng/14.1-n267679-10e31f0946d8 GENERIC x86_64 x86_64 x86_64 GNU/Linux由于jail是特别轻量级的容器所以Ubuntu子系统竟然连apt也没有装.....其实这里是误会了正常安装的话都是有apt的我没有安装出来是因为使用的base.txz里面没装apt啥都没装
如果没有apt那么要装apt也是一个费脑筋的活。
四、安装Ubuntu子系统下的apt管理软件
可以参考这个文档FreeBSD jail虚拟容器里装ubuntu系统没有apt命令怎么办-CSDN博客
一般大家不会碰到我这个问题我是因为使用的base.txz里面没装apt啥都没装导致的。
不过万一碰到了没有apt的情况可以使用如下方法安装
首先进入Ubuntu子系统
jexec ubu chroot /compat/ubuntu /bin/bash
或
rootfbhost:~ # cbsd jlogin ubu
Last login: Sun Jun 16 19:21:31 on pts/1
FreeBSD 14.1-RELEASE (GENERIC) releng/14.1-n267679-10e31f0946d8
ubu:/root[19:33] # chroot /compat/ubuntu/ /bin/bash
rootubu:/# uname -a
Linux ubu.my.domain 5.15.0 FreeBSD 14.1-RELEASE releng/14.1-n267679-10e31f0946d8 GENERIC x86_64 x86_64 x86_64 GNU/Linux
直接进入/var/cache/apt/archivers目录dpkg安装所有deb包
进入目录
cd /var/cache/apt/archives
然后使用dpkg -i 命令安装所有deb包
dpkg -i *.deb
这样就不用一个一个安装deb包了当然如果能精确控制最好但是对大多数项目不需要这一点半点的空间即使对单片机也不在乎这区区几十几百M的空间了
3 修复dpkg和apt
修复dpkg
dpkg --configure -a
修复apt
apt --fix-broken install
最后apt update一下完活拉
apt update
五、总结
FreeBSD、CBSD、Jail和Ubuntu四者的组合方案可以说是强强联合极具性价比和竞争力同时安装简单方便整体方案非常先进。
但是第一次实践的时候估计会走一些弯路因为说明书实在太简单了忽略了很多细节这导致新手会踩好几个坑。好消息就是坑被我踩过了大家可以愉快的实践拉 调试
apt update 报错
apt update
Hit:1 http://archive.ubuntu.com/ubuntu jammy InRelease
Hit:2 http://security.ubuntu.com/ubuntu jammy-security InRelease
Hit:3 http://archive.ubuntu.com/ubuntu jammy-updates InRelease
Hit:4 http://archive.ubuntu.com/ubuntu jammy-backports InRelease
E: Dynamic MMap ran out of room. Please increase the size of APT::Cache-Start. Current value: 25165824. (man 5 apt.conf)
Reading package lists... Error!
E: Dynamic MMap ran out of room. Please increase the size of APT::Cache-Start. Current value: 25165824. (man 5 apt.conf)
E: Error occurred while processing libsurgescript0.5.4.4 (NewVersion1)
E: Problem with MergeList /var/lib/apt/lists/archive.ubuntu.com_ubuntu_dists_jammy_universe_binary-amd64_Packages
E: The package lists or status file could not be parsed or opened.尝试更新dpkg
dpkg --configure -a
没反应
尝试修复apt
apt --fix-broken install
E: Dynamic MMap ran out of room. Please increase the size of APT::Cache-Start. Current value: 25165824. (man 5 apt.conf)
Reading package lists... Error!
E: Dynamic MMap ran out of room. Please increase the size of APT::Cache-Start. Current value: 25165824. (man 5 apt.conf)
E: Error occurred while processing libsurgescript0.5.4.4 (NewVersion1)
E: Problem with MergeList /var/lib/apt/lists/archive.ubuntu.com_ubuntu_dists_jammy_universe_binary-amd64_Packages
E: The package lists or status file could not be parsed or opened.
这好象是因为空间不够造成的。
先搁置。
有时候因为中文空格或拼写错误导致命令会报错
比如
rootubu:/var/cache/apt/archives# cd /var/cache/apt/archivers
bash: cd: /var/cache/apt/archivers: No such file or directory
这是拼写错误。
有时候是因为中文空格这时候把命令中间的空格在终端重新输入一下即可。