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的实验失败告终。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/47933.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

(最新亲测有效)python中操作json文件追加数据

一、前言 最近想用json存储接口关联的变量数据&#xff0c;查了一下网上许多伙伴的文章&#xff0c;最后总是某个地方容易报错。最后发现还是大部分网友摘抄别人的细节问题&#xff0c;所以自己记录一下。 二、操作流程 这里我也是初学者自学&#xff0c;暂时了解到的一些内容&…

STM32 产生Hard Fault 调试方法

STM32 产生hard-fault 调试方法 当STM32 产生Hard Fault的时候可以打印出一些重要的寄存器信息&#xff0c;然后定位代码出错的地方。 https://github.com/ferenc-nemeth/arm-hard-fault-handler 下面是核心代码。 void HardFault_Handler(void) {__asm volatile("TST …

全面了解不同GPU算力型号的价格!

这两年人工智能&#xff08;AI&#xff09;、机器学习&#xff08;ML&#xff09;、深度学习和高性能计算&#xff08;HPC&#xff09;领域的快速发展&#xff0c;GPU算力已成为不可或缺的资源。企业、研究机构乃至个人开发者越来越依赖于GPU加速计算来处理大规模数据集和复杂模…

如何将大模型应用到自己的业务中?7种大模型应用方式和代表论文总结

如何将大模型应用落地到自己的业务或工作中&#xff1f;这篇文章整理了7种目前业内最常用的大模型应用方法&#xff0c;以及各个方法的代表论文。通过对各种应用大模型方法的特点对比&#xff0c;找到最适合自己场景的应用方法。 1 Pretrain-Finetune 直接针对下游任务进行全…

Linux介绍和文件管理

一Linux的起源 1.Unix Dennis Ritchie和Ken Thompson发明了C语言&#xff0c;而后写出了Unix的内核 2.Minix MINIX是一种基于微 内核架构的类UNIX计算机操作系统&#xff0c;由 Andrew S. Tanenbaum发明 3.Linux内核 芬兰赫尔辛基大学的研究生Linus Torvalds基于Gcc、 ba…

分布式存储之 ceph 管理操作

一.资源池 Pool 管理 我们已经完成了 Ceph 集群的部署&#xff0c;但是我们如何向 Ceph 中存储数据呢&#xff1f;首先我们需要在 Ceph 中定义一个 Pool 资源池。Pool 是 Ceph 中存储 Object 对象抽象概念。我们可以将其理解为 Ceph 存储上划分的逻辑分区&#xff0c;Pool 由…

ELK日志收集

一、什么是ELK ELK 是由 Elasticsearch、Logstash、Kibana 三个开源软件的组成的一个组合体&#xff0c;ELK 是 elastic 公司研发的一套完整的日志收集、分析和展示的企业级解决方案。 ELK 的好处&#xff1a; ELK 组件在大数据运维系统中&#xff0c;主要可解决的问题如下&…

适用于 Android 的恢复应用程序合集分享

丢失重要文件或数据从来都不是一件有趣的事。这种情况可能发生在您的计算机和笔记本电脑上&#xff0c;也可能发生在您的 Android 智能手机或平板电脑上。然而&#xff0c;尽管 Android 用户可能认为在这种情况下他们可用的选择较少&#xff0c;但用于 Android 数据恢复的应用程…

自定义注解 + Redis 实现业务的幂等性

1.实现幂等性思路 实现幂等性有两种方式&#xff1a; ⭐ 1. 在数据库层面进行幂等性处理&#xff08;数据库添加唯一约束&#xff09;. 例如&#xff1a;新增用户幂等性处理&#xff0c;username 字段可以添加唯一约束. ⭐ 2. 在应用程序层面进行幂等性处理. 而在应用程序…

C#医学影像管理系统源码(VS2013)

目录 一、概述 二、系统功能 系统维护 工作站 三、功能介绍 影像采集 统计模块 专业阅片 采集诊断报告 报告管理 一、概述 医学影像存储与传输系统&#xff08;PACS&#xff09;是一种集成了影像存储、传输、管理和诊断功能的系统。它基于数字化成像技术、计算机技术和…

大模型+编程,未来程序员躺平还是失业?

自然语言大模型编程可以更好地理解用户的需求&#xff0c;然后输出对应代码。 最近英伟达让AI自动写代码的开源神器已上线&#xff0c;Nvidia推出了Code Llama在线体验页面&#xff0c;Code Llama 是 Llama 2 的代码专用版本&#xff0c;无需注册&#xff0c;无需本地部署&…

Jangow

关于靶场环境配置&#xff0c;确实这个靶场存在很大的问题&#xff0c;不仅仅是网络的配置问题&#xff0c;更重要的是明知道如何修改网络环境配置&#xff0c;但是键盘存在很大的问题。许多字符输入不一致。 Vulnhub靶场&#xff0c;Jangow靶机环境找不到ip解决方法。_jangow…

基于springboot新生宿舍管理系统

系统背景 在当今高等教育日益普及的时代背景下&#xff0c;高校作为知识传播与创新的重要基地&#xff0c;其基础设施的智能化管理显得尤为重要。新生宿舍作为大学生活的起点&#xff0c;不仅是学生日常生活与学习的重要场所&#xff0c;也是培养学生独立生活能力和团队合作精神…

hive动态分区导致xceivercount超限,hdfs无法创建新连接

目录 一、事件复盘&#xff1a; 二、解决方案&#xff1a; 三、讨论 一、事件复盘&#xff1a; hdfs无法创建新的文件&#xff0c;xceivercount超过最大设置&#xff0c;平时每个datanode只有100个左右的连接&#xff0c;突然达到8000以上。 事故原因&#xff0c;跨多天的…

学懂C语言(八):深入理解 register 寄存器的含义

寄存器是计算机处理器内部非常快速的一种存储设备。与普通的内存&#xff08;RAM&#xff09;相比&#xff0c;处理器访问寄存器的速度要快得多&#xff0c;因为它们位于处理器内部&#xff0c;而不是通过系统总线外部访问。这种速度优势使得寄存器非常适合用来存储那些需要频繁…

Ubuntu 24.04 LTS 桌面安装MT4或MT5 (MetaTrader)教程

运行脚本即可在 Ubuntu 24.04 LTS Noble Linux 上轻松安装 MetaTrader 5 或 4 应用程序&#xff0c;使用 WineHQ 进行外汇交易。 MetaTrader 4 (MT4) 或 MetaTrader 5 是用于交易外汇对和商品的流行平台。它支持各种外汇经纪商、内置价格分析工具以及通过专家顾问 (EA) 进行自…

架构以及架构中的组件

架构以及架构中的组件 Transform Transform 以下的代码包含&#xff1a; 标准化的示例残差化的示例 # huggingface # transformers# https://www.bilibili.com/video/BV1At4y1W75x?spm_id_from333.999.0.0import copy import math from collections import namedtupleimport …

C++派生类对基类成员的访问

派生类继承了基类的全部数据成员和除了构造、析构函数之外的全部成员函数&#xff0c;但是这些成员在派生类中的访问属性在派生类的过程中是可以调整的&#xff0c;继承方式控制了基类中具有的不同访问属性。 基类的成员有公有&#xff08;public&#xff09;、保护&am…

项目实用linux 操作详解-轻松玩转linux

我之前写过完整的linux系统详解介绍&#xff1a; LInux操作详解一&#xff1a;vmware安装linux系统以及网络配置 LInux操作详解二&#xff1a;linux的目录结构 LInux操作详解三&#xff1a;linux实际操作及远程登录 LInux操作详解四&#xff1a;linux的vi和vim编辑器 LInux操作…

VPN以及GRE和MGRE

VPN VPN — 是虚拟专用网络 通俗地说&#xff0c;就是通过虚拟的手段&#xff0c;将两个独立的网络&#xff0c;穿越一个公共网络进行连接&#xff0c;实现点到点专线的效果&#xff08;可以理解为&#xff1a;一个分公司通过公网和总公司建立点到点的专线连接&#xff09; 现…