当前位置: 首页 > news >正文

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 &#xff0c;jammy版本是22.04&#xff0c;本次的目的就是将FreeBSD jail子系统里的Ubuntu 从20.04升级到22.04 。这个focal 子系统是通过cbsd克隆得到的。使用CBSD克隆复制Ubuntu jail子系统环境-CSDN博客 do-release-upgrade升级没成功&#xff0c;用de…...

2024年7月20日(星期六)骑行支里山

2024年7月20日 (星期六&#xff09;骑行支里山&#xff0c;早8:00到8:30&#xff0c;大观公园门口集合&#xff0c;9:00准时出发【因迟到者&#xff0c;骑行速度快者&#xff0c;可自行追赶偶遇。】 偶遇地点:大观公园门口集合 &#xff0c;家住东&#xff0c;南&#xff0c;北…...

Python:正则表达式相关整理

最近因为一些原因频繁使用正则表达式&#xff0c;因为以前系统整理过关于正则表达式的相关知识&#xff0c;所以这里仅记录使用期间遇到的问题。 本文内容基于re包 1. match和search方法的区别 在Python中&#xff0c;re.search和re.match都是用于匹配字符串的正则表达式函数&a…...

ChatGPT对话:有关花卉数据集

【编者按】编者准备研究基于深度学习的花卉识别&#xff0c;首先需要花卉数据集。 后续&#xff0c;编者不断会记录研究花卉识别过程中的技术知识&#xff0c;敬请围观 1问&#xff1a;推荐一下用于深度学习的花卉数据集 ChatGPT 以下是一些用于深度学习的优秀花卉数据集&am…...

特征向量及算法

数据挖掘流程 加载数据 把需要的模型数据先计算出来 特征工程 提取数据特征&#xff0c;对特征数据进行清洗转化 数据的筛选和清洗数据转化 类型转为 性别 男&#xff0c;女 ----> 1,0特征交叉 性别/职业/收入 —> 新特这 优质男性程序员 将多个特征值组合在一起特征筛选…...

cpp 强制转换

一、static_cast static_cast 是 C 中的一个类型转换操作符&#xff0c;用于在类的层次结构中进行安全的向上转换&#xff08;从派生类到基类&#xff09;或进行不需要运行时类型检查的转换。它主要用于基本数据类型之间的转换、对象指针或引用的向上转换&#xff08;即从派生…...

MySQL字符串魔法:拼接、截取、替换与定位的艺术

在数据的世界里&#xff0c;MySQL作为一把强大的数据处理利剑&#xff0c;其字符串处理功能犹如魔术师手中的魔法棒&#xff0c;让数据变换自如。今天&#xff0c;我们就来一场关于MySQL字符串拼接、截取、替换以及查找位置的奇幻之旅&#xff0c;揭开这些操作的神秘面纱。 介绍…...

在 Windows 上开发.NET MAUI 应用_1.安装开发环境

开发跨平台的本机 .NET Multi-platform App UI (.NET MAUI) 应用需要 Visual Studio 2022 17.8 或更高版本&#xff0c;或者具有 .NET MAUI 扩展的最新 Visual Studio Code。要开始在 Windows 上开发本机跨平台 .NET MAUI 应用&#xff0c;请按照安装步骤安装 Visual Studio 20…...

深度学习驱动智能超材料设计与应用

在深度学习与超材料融合的背景下&#xff0c;不仅提高了设计的效率和质量&#xff0c;还为实现定制化和精准化的治疗提供了可能&#xff0c;展现了在材料科学领域的巨大潜力。深度学习可以帮助实现超材料结构参数的优化、电磁响应的预测、拓扑结构的自动设计、相位的预测及结构…...

Netty UDP

Netty在UDP&#xff08;用户数据报协议&#xff0c;User Datagram Protocol&#xff09;通信中的应用非常广泛&#xff0c;特别是在对实时性要求较高、对数据准确性要求相对较低的场景中&#xff0c;如视频传输、语音通信等。以下是对Netty在UDP通信中的详细解析&#xff1a; …...

Spring Framework各种jar包官网下载2024年最新下载官方渠道。

Spring其实就是一个大家族&#xff0c;它包含了Spring Framework&#xff0c;Spring Boot等一系列技术&#xff0c;它其实就是由许许多多的jar包构成&#xff0c;我们要使用Spring的框架&#xff0c;就要去下载支持这个框架的jar包即可。 1.官网下载Spring Framework的jar包 官…...

【Unity】RPG2D龙城纷争(十三)升级系统

更新日期:2024年7月16日。 项目源码:第五章发布(正式开始游戏逻辑的章节) 索引 简介一、升级系统数据集1.升级公式2.获得经验值公式3.预览所有等级经验值二、为关卡配置升级系统三、玩家角色获得经验事件四、玩家角色升级事件五、计算玩家角色获得经验值六、计算玩家角色是…...

保障低压设备安全!中国星坤连接器精密工艺解析!

在现代电子设备中&#xff0c;连接器扮演着至关重要的角色&#xff0c;它们是电子系统之间沟通的桥梁。随着技术的发展&#xff0c;对连接器的需求也在不断提升&#xff0c;特别是在低电压应用领域。中国星坤最新推出的低压连接器&#xff0c;以其精密性和安全性&#xff0c;为…...

中国星坤X0800HI系列线对板连接器:创新技术连接,引领智能家居未来!

近日&#xff0c;中国星坤推出的X0800HI系列线对板连接器&#xff0c;凭借其独特的设计和卓越的性能&#xff0c;引起了业界的广泛关注。 X0800HI系列线对板连接器在极小空间内实现了线对板的W-B连接&#xff0c;这不仅解决了传统连接方式中剥线和焊接的繁琐步骤&#xff0c;还…...

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数据库字段类型&#xff0c;用于存储二进制数据&#xff0c;可以存储最大长度的二进制数据。以下是关于 varbinary(max) 的说明&#xff1a; 存储容量: 可以存储最大…...

orcad导出pdf 缺少title block

在OrCAD中导出PDF时没有Title Block 最后确认问题在这里&#xff1a; 要勾选上Title Block Visible下面的print...

XML 验证器:确保数据完整性和准确性的关键工具

XML 验证器&#xff1a;确保数据完整性和准确性的关键工具 引言 在当今数字化时代&#xff0c;数据的有效管理和交换至关重要。XML&#xff08;可扩展标记语言&#xff09;作为一种用于存储和传输数据的语言&#xff0c;广泛用于各种应用程序和系统之间。为确保XML数据的完整…...

opencv学习:图像视频的读取截取部分图像数据颜色通道提取合并颜色通道边界填充数值计算图像融合

一、计算机眼中的图像 1.图像操作 构成像素点的数字在0~255之间 RGB叫做图像的颜色通道 h500&#xff0c;w500 2.灰度图像 3. 彩色图像 4.图像的读取 5.视频的读取 cv2.VideoCapture()--在OpenCV中&#xff0c;可以使用VideoCapture来读取视频文件&#xff0c;或是摄像头数…...

数据结构——单链表详解(超详细)(2)

前言&#xff1a; 上一篇文章小编简单的介绍了单链表的概念和一些函数的实现&#xff0c;不过为了保证文章的简洁&#xff0c;小编把它分成了两篇来写&#xff0c;这一篇小编紧接上一篇文章继续写单链表函数功能的实现&#xff1a; 目录&#xff1a; 1.单链表剩余函数的编写 1.…...

eNSP-Cloud(实现本地电脑与eNSP内设备之间通信)

说明&#xff1a; 想象一下&#xff0c;你正在用eNSP搭建一个虚拟的网络世界&#xff0c;里面有虚拟的路由器、交换机、电脑&#xff08;PC&#xff09;等等。这些设备都在你的电脑里面“运行”&#xff0c;它们之间可以互相通信&#xff0c;就像一个封闭的小王国。 但是&#…...

生成xcframework

打包 XCFramework 的方法 XCFramework 是苹果推出的一种多平台二进制分发格式&#xff0c;可以包含多个架构和平台的代码。打包 XCFramework 通常用于分发库或框架。 使用 Xcode 命令行工具打包 通过 xcodebuild 命令可以打包 XCFramework。确保项目已经配置好需要支持的平台…...

idea大量爆红问题解决

问题描述 在学习和工作中&#xff0c;idea是程序员不可缺少的一个工具&#xff0c;但是突然在有些时候就会出现大量爆红的问题&#xff0c;发现无法跳转&#xff0c;无论是关机重启或者是替换root都无法解决 就是如上所展示的问题&#xff0c;但是程序依然可以启动。 问题解决…...

Cursor实现用excel数据填充word模版的方法

cursor主页&#xff1a;https://www.cursor.com/ 任务目标&#xff1a;把excel格式的数据里的单元格&#xff0c;按照某一个固定模版填充到word中 文章目录 注意事项逐步生成程序1. 确定格式2. 调试程序 注意事项 直接给一个excel文件和最终呈现的word文件的示例&#xff0c;…...

Java 8 Stream API 入门到实践详解

一、告别 for 循环&#xff01; 传统痛点&#xff1a; Java 8 之前&#xff0c;集合操作离不开冗长的 for 循环和匿名类。例如&#xff0c;过滤列表中的偶数&#xff1a; List<Integer> list Arrays.asList(1, 2, 3, 4, 5); List<Integer> evens new ArrayList…...

【HarmonyOS 5.0】DevEco Testing:鸿蒙应用质量保障的终极武器

——全方位测试解决方案与代码实战 一、工具定位与核心能力 DevEco Testing是HarmonyOS官方推出的​​一体化测试平台​​&#xff0c;覆盖应用全生命周期测试需求&#xff0c;主要提供五大核心能力&#xff1a; ​​测试类型​​​​检测目标​​​​关键指标​​功能体验基…...

SCAU期末笔记 - 数据分析与数据挖掘题库解析

这门怎么题库答案不全啊日 来简单学一下子来 一、选择题&#xff08;可多选&#xff09; 将原始数据进行集成、变换、维度规约、数值规约是在以下哪个步骤的任务?(C) A. 频繁模式挖掘 B.分类和预测 C.数据预处理 D.数据流挖掘 A. 频繁模式挖掘&#xff1a;专注于发现数据中…...

【JavaSE】绘图与事件入门学习笔记

-Java绘图坐标体系 坐标体系-介绍 坐标原点位于左上角&#xff0c;以像素为单位。 在Java坐标系中,第一个是x坐标,表示当前位置为水平方向&#xff0c;距离坐标原点x个像素;第二个是y坐标&#xff0c;表示当前位置为垂直方向&#xff0c;距离坐标原点y个像素。 坐标体系-像素 …...

大学生职业发展与就业创业指导教学评价

这里是引用 作为软工2203/2204班的学生&#xff0c;我们非常感谢您在《大学生职业发展与就业创业指导》课程中的悉心教导。这门课程对我们即将面临实习和就业的工科学生来说至关重要&#xff0c;而您认真负责的教学态度&#xff0c;让课程的每一部分都充满了实用价值。 尤其让我…...

算法:模拟

1.替换所有的问号 1576. 替换所有的问号 - 力扣&#xff08;LeetCode&#xff09; ​遍历字符串​&#xff1a;通过外层循环逐一检查每个字符。​遇到 ? 时处理​&#xff1a; 内层循环遍历小写字母&#xff08;a 到 z&#xff09;。对每个字母检查是否满足&#xff1a; ​与…...