jail子系统里升级Ubuntu focal到jammy
Ubuntu focal是20.04 ,jammy版本是22.04,本次的目的就是将FreeBSD jail子系统里的Ubuntu 从20.04升级到22.04 。这个focal 子系统是通过cbsd克隆得到的。使用CBSD克隆复制Ubuntu jail子系统环境-CSDN博客
do-release-upgrade升级没成功,用debootstrap重装升级成功!
说明,有三个系统:FreeBSD宿主机,FreeBSD jail子系统, Ubuntu jail 子系统
安装好后,可以从宿主机进入FreeBSD或Ubuntu jail子系统。在FreeBSD jail子系统里可以安装多个Ubuntu jail子系统,并进入该子系统。
Ubuntu jail子系统里升级focal到jammy
使用do-release-upgrade升级(失败)
参考Install Ubuntu 22.04 Jammy in FreeBSD Jail | The FreeBSD Forums
在FreeBSD宿主机进入Ubuntu jail 子系统,使用命令:
jexec focal_to_jammy chroot /compat/ubuntu /bin/bash
子系统是以前克隆的focal版本,依次执行升级命令:
apt install update-manager-core
do-release-upgrade -d
没升级成功。
用-d选项的话没有错误信息,去掉-d选项,有报错信息,见后面调试部分。最终没有用这种方法升级成功。
使用debootstrap升级
使用cbsd jlogin focal_to_jammy 进入FreeBSD jail子系统,这时候是处于FreeBSD系统下,有pkg指令,所以:
先pkg安装debootstrap
pkg install debootstrap
执行debootstrap 下载jammy
debootstrap jammy /compat/jammy
这样FreeBSD jail子系统里的操作就结束了,后面就是进入jammy jail子系统进行操作了。
进入jammy jail子系统
从FreeBSD jail子系统执行chroot进入jammy子系统
focal_to_jammy:/root@[9:37] # chroot /compat/jammy/ /bin/bash
groups: cannot find name for group ID 0
groups: cannot find name for group ID 5
I have no name!@focal_to_jammy:/#
如果顺利,到了这一步就可以结束了,但是:
发现这个jammy子系统里又没有apt
怎么老碰到这个问题?
debootstrap安装jammy时的输出,有apt这个包啊
I: Retrieving apt 2.4.5
I: Validating apt 2.4.5
I: Extracting base-files...
I: Extracting base-passwd...
I: Extracting bash...
发现确实没有解开apt的包
第二次使用--include=apt选项
debootstrap --include=apt jammy /compat/jammy
I: Validating adduser 3.118ubuntu5
I: Validating apt 2.4.5
I: Validating apt-utils 2.4.5
还是没有Extracting解开apt 包。话说debootstrap就这么节俭吗? 连个apt包都不给? 还是说只有FreeBSD下的这个debootstrap不给?
看看jammy里的/usr/bin 目录,里面就是没有apt !
jammy jail子系统里手工安装apt
以前手工安装apt,会碰到依赖库的问题,操作很繁琐,这回找到了一个最方便的方法
dpkg --force-depends -Ei /var/cache/apt/archives/*.deb
jammy jail子系统里所有的deb包放在/var/cache/apt/archives目录,
只要使用这一条命令就能装好apt包,使用命令
dpkg --force-depends -Ei /var/cache/apt/archives/*.deb
过程中问到键盘设置啥的, 还有pam的配置改变要不要覆盖:
One or more of the files │
│ /etc/pam.d/common-{auth,account,password,session} have been locally │
│ modified. Please indicate whether these local changes should be │
│ overridden using the system-provided configuration. If you decline this │
│ option, you will need to manage your system's authentication │
│ configuration by hand. │
│ │
│ Override local changes to /etc/pam.d/common-*? │
│ │
│ <Yes> <No>
因为是新系统,本地没啥,所以选择了Yes覆盖
后面还有设置时区shanghai 等
安装完成后,终于有了APT
但是刚开始使用apt会报错
apt update 报错问题解决
apt update
Get:1 http://archive.ubuntu.com/ubuntu jammy InRelease [270 kB]
0% [Working]/usr/bin/apt-key: 95: cannot create /dev/null: Permission denied
/usr/bin/apt-key: 95: cannot create /dev/null: Permission denied
/usr/bin/apt-key: 95: cannot create /dev/null: Permission denied
E: gpgv, gpgv2 or gpgv1 required for verification, but neither seems installed
Err:1 http://archive.ubuntu.com/ubuntu jammy InRelease
gpgv, gpgv2 or gpgv1 required for verification, but neither seems installed
Reading package lists... Done
W: GPG error: http://archive.ubuntu.com/ubuntu jammy InRelease: gpgv, gpgv2 or gpgv1 required for verification, but neither seems installed
E: The repository 'http://archive.ubuntu.com/ubuntu jammy InRelease' is not signed.
N: Updating from such a repository can't be done securely, and is therefore disabled by default.
N: See apt-secure(8) manpage for repository creation and user configuration details.
看里面讲到 /dev/null: Permission denied,就给它666权限:
执行chmod 666 /dev/null
将/dev/null设为666
chmod 666 /dev/null
然后update 搞定,但是upgrade报错
apt upgrade
Reading package lists... Done
Building dependency tree... Done
You might want to run 'apt --fix-broken install' to correct these.
The following packages have unmet dependencies:
dash : Depends: dpkg (>= 1.19.1) but it is not installed
grep : Depends: dpkg (>= 1.15.4) but it is not installed or
install-info but it is not installed
gzip : Depends: dpkg (>= 1.15.4) but it is not installed or
install-info but it is not installed
perl-base : PreDepends: dpkg (>= 1.17.17) but it is not installed
python3-minimal : Depends: dpkg (>= 1.13.20) but it is not installed
readline-common : Depends: dpkg (>= 1.15.4) but it is not installed or
install-info but it is not installed
E: Unmet dependencies. Try 'apt --fix-broken install' with no packages (or specify a solution).
尝试apt --fix-broken install修复apt upgrade报错问题
按照报错提示,输入
apt --fix-broken install
修复完成,apt install wget ,成功!
现在看看版本:
lsb_release -a
lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 22.04 LTS
Release: 22.04
Codename: jammy
成功升级到jammy版本!
总结
本来想用下面两条执行将focal升级到jammy,但是没有成功。
apt install update-manager-core
do-release-upgrade -d
最终还是使用了debootstrap 老办法升级成功。
debootstrap安装jammy
pkg install debootstrapdebootstrap jammy /compat/jammychroot /compat/jammy/ /bin/bash chmod 666 /dev/nulldpkg --force-depends -Ei /var/cache/apt/archives/*.debapt updateapt --fix-broken installapt upgrade# 看版本lsb_release -a
调试
do-release-upgrade -d提示set Prompt=norma
do-release-upgrade -d
Checking for a new Ubuntu release
There is no development version of an LTS available.
To upgrade to the latest non-LTS development release
set Prompt=normal in /etc/update-manager/release-upgrades.
在/etc/update-manager/release-upgrades文件里,将Prompt=lts修改成Prompt=normal
结果执行后没什么反应:
root@focal_to_jammy:/# do-release-upgrade -d
Checking for a new Ubuntu release
Upgrades to the development release are only
available from the latest supported release.
将do-release-upgrade -d的-d去掉后提示
do-release-upgrade
Checking for a new Ubuntu release
Get:1 Upgrade tool signature [833 B]
Get:2 Upgrade tool [1270 kB]
Fetched 1271 kB in 0s (0 B/s)
authenticate 'jammy.tar.gz' against 'jammy.tar.gz.gpg'
extracting 'jammy.tar.gz'Reading cacheChecking package managerA fatal error occurred Please report this as a bug and include the files
/var/log/dist-upgrade/main.log and /var/log/dist-upgrade/apt.log in
your report. The upgrade has aborted.
Your original sources.list was saved in
/etc/apt/sources.list.distUpgrade. Traceback (most recent call last): File "/tmp/ubuntu-release-upgrader-fdy6hyrf/jammy", line 8, in
<module>
sys.exit(main()) File
"/tmp/ubuntu-release-upgrader-fdy6hyrf/DistUpgrade/DistUpgradeMain.py",
line 241, in main
if app.run(): File
"/tmp/ubuntu-release-upgrader-fdy6hyrf/DistUpgrade/DistUpgradeController.py",
line 2042, in run
return self.fullUpgrade() File
"/tmp/ubuntu-release-upgrader-fdy6hyrf/DistUpgrade/DistUpgradeController.py",
line 1807, in fullUpgrade
if not self.prepare(): File
"/tmp/ubuntu-release-upgrader-fdy6hyrf/DistUpgrade/DistUpgradeController.py",
line 414, in prepare
self._sshMagic() File
"/tmp/ubuntu-release-upgrader-fdy6hyrf/DistUpgrade/DistUpgradeController.py",
line 273, in _sshMagic
is_child_of_process_name("sshd")): File "/tmp/ubuntu-release-upgrader-fdy6hyrf/DistUpgrade/utils.py",
line 118, in is_child_of_process_name
with open(stat_file) as stat_f: FileNotFoundError: [Errno 2] No such file or directory:
'/proc/35020/stat'
发现source.list文件只有一行,不知道是否这个原因
/etc/apt# cat sources.list
deb http://archive.ubuntu.com/ubuntu focal main
添加了清华源,问题依旧。查看报错,发现/proc下没有东西,且ps报错
在ps -aux的时候报错Error, do this: mount -t proc proc /proc
ps -aux
Error, do this: mount -t proc proc /proc
按照提示mount -t proc proc /proc
结果报错
mount -t proc proc /proc
mount: /proc: permission denied.
root@focal_to_jammy:/# mount
mount: failed to read mtab: No such file or directory
root@focal_to_jammy:/# df
df: cannot read table of mounted file systems: No such file or directory
在/etc/fstab里加上配置:
devfs /compat/linux/dev devfs rw,late 0 0
tmpfs /compat/linux/dev/shm tmpfs rw,late,size=1g,mode=1777 0 0
fdescfs /compat/linux/dev/fd fdescfs rw,late,linrdlnk 0 0
linprocfs /compat/linux/proc linprocfs rw,late 0 0
linsysfs /compat/linux/sys linsysfs rw,late 0 0
问题依旧。
这样在FreeBSD的jail里,想要focal升级到jammy Ubuntu的实验失败告终。
相关文章:
jail子系统里升级Ubuntu focal到jammy
Ubuntu focal是20.04 ,jammy版本是22.04,本次的目的就是将FreeBSD jail子系统里的Ubuntu 从20.04升级到22.04 。这个focal 子系统是通过cbsd克隆得到的。使用CBSD克隆复制Ubuntu jail子系统环境-CSDN博客 do-release-upgrade升级没成功,用de…...
2024年7月20日(星期六)骑行支里山
2024年7月20日 (星期六)骑行支里山,早8:00到8:30,大观公园门口集合,9:00准时出发【因迟到者,骑行速度快者,可自行追赶偶遇。】 偶遇地点:大观公园门口集合 ,家住东,南,北…...
Python:正则表达式相关整理
最近因为一些原因频繁使用正则表达式,因为以前系统整理过关于正则表达式的相关知识,所以这里仅记录使用期间遇到的问题。 本文内容基于re包 1. match和search方法的区别 在Python中,re.search和re.match都是用于匹配字符串的正则表达式函数&a…...
ChatGPT对话:有关花卉数据集
【编者按】编者准备研究基于深度学习的花卉识别,首先需要花卉数据集。 后续,编者不断会记录研究花卉识别过程中的技术知识,敬请围观 1问:推荐一下用于深度学习的花卉数据集 ChatGPT 以下是一些用于深度学习的优秀花卉数据集&am…...
特征向量及算法
数据挖掘流程 加载数据 把需要的模型数据先计算出来 特征工程 提取数据特征,对特征数据进行清洗转化 数据的筛选和清洗数据转化 类型转为 性别 男,女 ----> 1,0特征交叉 性别/职业/收入 —> 新特这 优质男性程序员 将多个特征值组合在一起特征筛选…...
cpp 强制转换
一、static_cast static_cast 是 C 中的一个类型转换操作符,用于在类的层次结构中进行安全的向上转换(从派生类到基类)或进行不需要运行时类型检查的转换。它主要用于基本数据类型之间的转换、对象指针或引用的向上转换(即从派生…...
MySQL字符串魔法:拼接、截取、替换与定位的艺术
在数据的世界里,MySQL作为一把强大的数据处理利剑,其字符串处理功能犹如魔术师手中的魔法棒,让数据变换自如。今天,我们就来一场关于MySQL字符串拼接、截取、替换以及查找位置的奇幻之旅,揭开这些操作的神秘面纱。 介绍…...
在 Windows 上开发.NET MAUI 应用_1.安装开发环境
开发跨平台的本机 .NET Multi-platform App UI (.NET MAUI) 应用需要 Visual Studio 2022 17.8 或更高版本,或者具有 .NET MAUI 扩展的最新 Visual Studio Code。要开始在 Windows 上开发本机跨平台 .NET MAUI 应用,请按照安装步骤安装 Visual Studio 20…...
深度学习驱动智能超材料设计与应用
在深度学习与超材料融合的背景下,不仅提高了设计的效率和质量,还为实现定制化和精准化的治疗提供了可能,展现了在材料科学领域的巨大潜力。深度学习可以帮助实现超材料结构参数的优化、电磁响应的预测、拓扑结构的自动设计、相位的预测及结构…...
Netty UDP
Netty在UDP(用户数据报协议,User Datagram Protocol)通信中的应用非常广泛,特别是在对实时性要求较高、对数据准确性要求相对较低的场景中,如视频传输、语音通信等。以下是对Netty在UDP通信中的详细解析: …...
Spring Framework各种jar包官网下载2024年最新下载官方渠道。
Spring其实就是一个大家族,它包含了Spring Framework,Spring Boot等一系列技术,它其实就是由许许多多的jar包构成,我们要使用Spring的框架,就要去下载支持这个框架的jar包即可。 1.官网下载Spring Framework的jar包 官…...
【Unity】RPG2D龙城纷争(十三)升级系统
更新日期:2024年7月16日。 项目源码:第五章发布(正式开始游戏逻辑的章节) 索引 简介一、升级系统数据集1.升级公式2.获得经验值公式3.预览所有等级经验值二、为关卡配置升级系统三、玩家角色获得经验事件四、玩家角色升级事件五、计算玩家角色获得经验值六、计算玩家角色是…...
保障低压设备安全!中国星坤连接器精密工艺解析!
在现代电子设备中,连接器扮演着至关重要的角色,它们是电子系统之间沟通的桥梁。随着技术的发展,对连接器的需求也在不断提升,特别是在低电压应用领域。中国星坤最新推出的低压连接器,以其精密性和安全性,为…...
中国星坤X0800HI系列线对板连接器:创新技术连接,引领智能家居未来!
近日,中国星坤推出的X0800HI系列线对板连接器,凭借其独特的设计和卓越的性能,引起了业界的广泛关注。 X0800HI系列线对板连接器在极小空间内实现了线对板的W-B连接,这不仅解决了传统连接方式中剥线和焊接的繁琐步骤,还…...
SPring Boot整合第三方框架
springboot整合第三方框架 1. 整合mybatis 1.1引入依赖——pom.xml配置文件 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instanc…...
读取sqlserver数据库中varbinary(max)类型的内容,并将图片信息显示在前端页面
目录 1.varbinary(max)的说明 2.图片显示 3.总结 1.varbinary(max)的说明 varbinary(max) 是一种SQL Server数据库字段类型,用于存储二进制数据,可以存储最大长度的二进制数据。以下是关于 varbinary(max) 的说明: 存储容量: 可以存储最大…...
orcad导出pdf 缺少title block
在OrCAD中导出PDF时没有Title Block 最后确认问题在这里: 要勾选上Title Block Visible下面的print...
XML 验证器:确保数据完整性和准确性的关键工具
XML 验证器:确保数据完整性和准确性的关键工具 引言 在当今数字化时代,数据的有效管理和交换至关重要。XML(可扩展标记语言)作为一种用于存储和传输数据的语言,广泛用于各种应用程序和系统之间。为确保XML数据的完整…...
opencv学习:图像视频的读取截取部分图像数据颜色通道提取合并颜色通道边界填充数值计算图像融合
一、计算机眼中的图像 1.图像操作 构成像素点的数字在0~255之间 RGB叫做图像的颜色通道 h500,w500 2.灰度图像 3. 彩色图像 4.图像的读取 5.视频的读取 cv2.VideoCapture()--在OpenCV中,可以使用VideoCapture来读取视频文件,或是摄像头数…...
数据结构——单链表详解(超详细)(2)
前言: 上一篇文章小编简单的介绍了单链表的概念和一些函数的实现,不过为了保证文章的简洁,小编把它分成了两篇来写,这一篇小编紧接上一篇文章继续写单链表函数功能的实现: 目录: 1.单链表剩余函数的编写 1.…...
龙虎榜——20250610
上证指数放量收阴线,个股多数下跌,盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型,指数短线有调整的需求,大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的:御银股份、雄帝科技 驱动…...
国防科技大学计算机基础课程笔记02信息编码
1.机内码和国标码 国标码就是我们非常熟悉的这个GB2312,但是因为都是16进制,因此这个了16进制的数据既可以翻译成为这个机器码,也可以翻译成为这个国标码,所以这个时候很容易会出现这个歧义的情况; 因此,我们的这个国…...
rknn优化教程(二)
文章目录 1. 前述2. 三方库的封装2.1 xrepo中的库2.2 xrepo之外的库2.2.1 opencv2.2.2 rknnrt2.2.3 spdlog 3. rknn_engine库 1. 前述 OK,开始写第二篇的内容了。这篇博客主要能写一下: 如何给一些三方库按照xmake方式进行封装,供调用如何按…...
FastAPI 教程:从入门到实践
FastAPI 是一个现代、快速(高性能)的 Web 框架,用于构建 API,支持 Python 3.6。它基于标准 Python 类型提示,易于学习且功能强大。以下是一个完整的 FastAPI 入门教程,涵盖从环境搭建到创建并运行一个简单的…...
定时器任务——若依源码分析
分析util包下面的工具类schedule utils: ScheduleUtils 是若依中用于与 Quartz 框架交互的工具类,封装了定时任务的 创建、更新、暂停、删除等核心逻辑。 createScheduleJob createScheduleJob 用于将任务注册到 Quartz,先构建任务的 JobD…...
macOS多出来了:Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用
文章目录 问题现象问题原因解决办法 问题现象 macOS启动台(Launchpad)多出来了:Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用。 问题原因 很明显,都是Google家的办公全家桶。这些应用并不是通过独立安装的…...
Java 加密常用的各种算法及其选择
在数字化时代,数据安全至关重要,Java 作为广泛应用的编程语言,提供了丰富的加密算法来保障数据的保密性、完整性和真实性。了解这些常用加密算法及其适用场景,有助于开发者在不同的业务需求中做出正确的选择。 一、对称加密算法…...
12.找到字符串中所有字母异位词
🧠 题目解析 题目描述: 给定两个字符串 s 和 p,找出 s 中所有 p 的字母异位词的起始索引。 返回的答案以数组形式表示。 字母异位词定义: 若两个字符串包含的字符种类和出现次数完全相同,顺序无所谓,则互为…...
Ubuntu Cursor升级成v1.0
0. 当前版本低 使用当前 Cursor v0.50时 GitHub Copilot Chat 打不开,快捷键也不好用,当看到 Cursor 升级后,还是蛮高兴的 1. 下载 Cursor 下载地址:https://www.cursor.com/cn/downloads 点击下载 Linux (x64) ,…...
spring Security对RBAC及其ABAC的支持使用
RBAC (基于角色的访问控制) RBAC (Role-Based Access Control) 是 Spring Security 中最常用的权限模型,它将权限分配给角色,再将角色分配给用户。 RBAC 核心实现 1. 数据库设计 users roles permissions ------- ------…...
