Copilot帮我救回了变砖的甲骨文实例

news2024/9/20 16:48:50

        最近,我的一个美国凤凰城的甲骨文永久免费的amd实例失联了,主要原因东西装多了就反应慢了,还常常断线,寻思干脆 dd个新的系统算了,但dd就后悔了,原来那些开放的端口都关闭了,仅留了一个ssh服务的22端口,于是就开始折腾,终于,在第三次dd后就失联变砖了。

图1.失联的实例在ssh终端上连接时的反应

        这是个最基础的amd实例,是永久免费的,如果终止它直接放弃还是有些心不甘,再说现在申请也不一定能申请到。所以决定救砖。

        甲骨文实例的救砖最有效方法的就是用另一个同区的实例挂上失联实例的引导卷,再在引导卷上安装新的系统,最后再把引导卷还原到失联的实例上,重新用新的系统引导,让失联的实例恢复联系。我就采用这个救砖方案。由于本人对linux不熟悉,准备让windows 11的人工智能机器人Copilot参与救砖,同时也看看它到底有多智能。

        我的实例变砖过程让我对网上dd系统映像文件的纯净性产生了怀疑,谁都不知道选择的系统映像文件有没有后门, 也许你dd的系统除你以外还存在一个影子用户,他随时能登录你的系统。而且都说dd后系统的稳定性也较原来差多了,失联变砖的可能也变大了。因此我决定要找个真正纯净的系统重新安装。这个容易,在ubuntu的官网上有很多版本的系统映像文件供我们选择,可以用网站的finder选择合适你的系统,但甲骨文的只有4个文件,总之选个你熟悉能用的就好。 ubuntu的官方映像文件的下载网址:

https://ubuntu.com/server/docs/tutorials#download

图2、ubuntu官网上的部分(22.04版本)系统文件列表

        就甲骨文实例的抢救方案我咨询了一下copilot,我选择了两种样式来比较,一种是精确样式,一种是更有创造力样式,两种回答的结果见图3.和图4.紫色的是更有创造力样式,蓝绿色的是精确。

图3.更有创造力样式的回答   

 

 图4.精确样式的回答

        我认为更有创造力样式的回答更具体,所以,后面我决定用更有创造力样式,现在开始救砖了。

        一、分离和附加失联实例的引导卷

        首先要做的就是分离和引导失联实例的引导卷,具体这样做:

第一步,停止失联实例,图5所示的是停止的失联实例;

 图5.失联实例停止示意

       第二步,打开失联实例的详细信息,所图6所示,点击左列选项的“引导卷”,在打开的页面中,点开引导卷最右边的三个点,选择分离引导卷,在弹出的对话框中,点击左下方的分离引导卷,如图7,命令执行完后可看到显示已分离,如图8、图9。

图6.选择左列引导卷 

图7.分离引导卷选项  

图8.点击分离引导卷 

 

图9.引导卷分离成功后的显示信息 

        第三步,在正常运行的实例上附加上刚才从失联实例分离出来的引导卷,在正常实例的详细信息页面,选择附加的块存储卷,然后在新打开的页面上选择左下方的附加块存储卷,再在打开的对话中首先选择刚分离出来的引导卷的名称,再选择半虚拟化附加类型。

图10.正常实例详细信息中点击附加的块存储卷 

 

 图11.选择刚刚从失联实例分离出来的引导卷附加

 

图12.附加成功后的信息 

        第四步,打开正常实例的ssh终端,扩用lsblk命令查看附加卷的连接情况,执行命令后能看到有sda和sdb两个卷,如图13所示。其中sdb是失联实例的引导卷,所以后绪操作都应与此分区相关,对sda分区的操作要极其小心,以避免损坏正常运行的实例。

图13.查看挂卷情况

         下面就要选择新的系统安装什么版本的ubuntu,官方网站上的版本很多,最新的都到ubuntu24.04,选择哪个版本还是问问Copilot吧。它的建议对我的选择还有一点参考意义的,我最后选了ubuntu22.04,也就是ubuntu cloud img里的jammy类,因为官方对它的支持时间周期较长。不过,通过它的回答也让我搞明白了LTS原来是指有更长的维护时间更稳定的性能,与copilot关于版本选择的对话看图14.

 图14.Copilot对选择ubuntu版本的建议

       二、处理失联实例引导卷分区

          这段操作是在正常实例的ssh终端上进行的,登录后开始。

         处理过程有三个步骤,一是建立引导卷的分区并进行格式化操作,二是预设用户ssh终端登录密钥,三是把新的操作系统安装到引导卷分区里。看原来其他人的救砖过程好像没有重新分区这一步,我觉得失联变砖的实例哪里损坏是未知的,不排除分区损坏的可能,所以重新分区再安装系统应该是更彻底的措施了。新的分区有三个,它们是sdb1,4M大小,文件类型是BISO boot;sdb2,106M大小,文件类型是EFI system;sdb3,46.5G大小,文件类型是Linux filesystem。

        图15显示了在sdb中设置sdb1分区过程与系统的全部交互,其余两个分区跟此过程类似,需要注意的是一次应该把三个分区全部做完,如果没做完三个分区就退出对话后就要重新做。图16是三个分区全部做完后的分区信息。

 图15.sdb1分区过程

 

图16.三个分区完成后的信息 

        重新分区完成后,需要对新的分区进行格式化操作,EFI system区格式化成f32类型,Linux filesystem区格式化成ext4类型,用mkfs命令进行格式操作。图17显示了这两个分区的格式化过程。

图17.格式化sdb2和sdb3的过程 

          然后建立文件夹,存放安装新系统所需的文件,取名为my-img,放到home文件夹下:

mkdir /home/my-img

        在新建的文件夹的空白区点右键,选上传,把保存在本地的失联实例的公钥传到这里,就是扩展名为key.pub的那个文件放进来, 下步就要选择安装的映像文件下载到本地,我在众多版本和文件格式中选择了看起熟悉些的jammy-server-cloudimg-amd64.img映像,用这个命令下载:

cd /home/my-img

&& wget https://cloud-images.ubuntu.com/jammy/20231201/jammy-server-cloudimg-amd64.img

下载完成后my-img文件夹里就有两个文件了,如图18所示。

图18.下载完成后my-img文件夹的内容 

        接着我让Copilot帮我写码,具体要求是:系统的运行环境为ubuntu 20.04,系统安装文件名为jammy-server-cloudimg-amd64.img,放在/home/my-img/文件夹里,用linux shell代码写一段脚本,把这个系统映像文件安装到/dev/sdb分区,预设系统的用户名为ubuntu,此用户ssh登录时用名为ssh-key-2023-09-07.key.pub的密钥文件,这个文件也放在/home/my-img文件夹里。

Copilot的回答如图19-21所示。

图19.copilot写的代码之一

图20.copilot写的代码之二

 图21.copilot写的代码之三

        Copilot的回复是一个完整的可直接运行的bash文件,因为我对linux的命令系统并不熟悉,看不出这个sh文件是否能管用,我决定还是逐条运行看看效果吧。

        在执行第三命令时出错了,我问copilot怎么处理,它的回应如图22:

图22.copilot修改代码建议

        于是,我修改了mount命令格式:

mount -t ext4 /dev/sdb;

但错误依旧,我再试试重新分区,仍然不行,最后用另一个挂载命令解决了问题:

guestmount -a /dev/sdb1 -i /mnt

执行如图23所示。

图23.挂载成功示意图

        但是往下的操作就行不通了,我无法进入挂载映像的根目录,因此无法在映像系统中执行创造用户名和ssh登录密钥设置的操作。那么,我试了把这个img映橡文件直接dd到sdb分区,再到甲骨文控制台从正常实例分离它,失联实例附加这个卷,然后再启动。

        失联实例附加回这个引导卷后,从控制台连接显示启动实例后进入UEFI shell提示符界面,没有fs0:的正常启动加载,看来这样dd到sdb分区的img映像系统没有运行哦。在甲骨文控制台连接窗口看到的信息如图24所示。

图24.未救援成功的控制台信息

        粗略地看了下ubuntu官网的安装指南文本,感觉它的系统映像文件是以本地虚拟机安装思路为主的,比如用户和登录密码的设置是在虚拟机里的安装过程有设置对话,系统安装也是在本地虚拟机上使用安装向导进行的。因此,甲骨文实例救砖成功必须解决两个问题,一是登录问题,二是安装问题。用ssh终端安装时没有用户设置的交互对话,解决方案只能是预设用户名和密钥。安装则是找到linux的工具,它能创建ssh连接时能自动启动的分区结构,实现系统映像文件的自动安装。显然刚才那样直接把img映像dd到sdbX分区重新启动,如果分区的文件类型和位置出错,则安装程序不会自动装载。

        关于预设用户问题,查询了一下,Ubuntu系统预设用户名和密钥问题有人讨论过,比如图25,这个方法跟copilot给出的方法类似,但是要在系统安装启动时按功能组合键进入sudo bash的shell,再用超级用户权限执行设置相关的命令,设置新的用户名和密码。不过,我找到了更便捷的方法。

图25.系统安装启动时设置用户名和密码

       这个更便捷预设用户名和密钥的方法是修改cloud映像的配置文件cloud.cfg,把失联实例的ssh登录密钥加进这个文件,于是顺序执行下述命令:

IMG_FILE=/home/my-img/jammy-server-cloudimg-amd64.img

MOUNT_POINT=/mnt/img

mkdir -p $MOUNT_POINT

guestmount -a $IMG_FILE -i $MOUNT_POINT

        上面4条命令执行完后终端如图26所示。

 图26.挂载操作图示

然后执行编辑文件命令,并在打开的cloud.cfg文件中,找到system_info段,添加一个ssh_authorized_keys:语句,再选中放置在/home/my-img/文件夹下的密钥文件,如图27:

图27.选中密钥文件点右键用文件编辑器打开

点右键在打开方式中选文本编辑器,在打开的密钥文件中选全部内容,点右键复制,如图28:

图28.选中密钥全部内容复制

再将复制的内容粘贴到刚才加的ssh_authorized_keys:语句下,如图29所示,因用户名为原实例默认用户名ubuntu,所以没有修改,然后保存退出编辑。这里要注意的是添加内容的格式绝对不能错,如果格式不正确在安装后会出现ssh错误导致无法登录。

图29.cloud.cfg文件编辑后内容

接下来卸下挂载并删除挂载点,执行以下命令:

guestunmount $MOUNT_POINT

rmdir $MOUNT_POINT

致此,在系统img映像文件中预设用户名和密钥工作已经完成了。 接下来就是把系统正确地安装到/dev/sdb分区。

       关于ubuntu官方系统映像img格式的文件在ssh终端的安装方法我没有找到,但在某次安装实验中,所选的映像文件是vhd.tar.gz格式的,copilot提出的安装脚本是把tar.gz文件解压成raw文件,然后再用qemu命令把解压的文件传进引导卷分区,这次安装操作成功了,经过实验,这个命令也能对img格式的安装文件起到效果,无需再费尽心机地寻找类UltraISO的linux工具了。直接执行命令qemu并根据你的具体映像文件选择合适的参数就能把img文件正确的安装到sdb分区了:

 在系统传递完成后,剩下的操作要在甲骨文的平台上进行了。

       三、失联实例挂回重装系统的引导卷并重启

       首先进入正常实例的详细信息,点击附加的块存储卷,再点卷右边三点选分离,成功后显示如图30。

图30.正在分离的重装系统后的引导卷

然后切换到失联实例的详细信息,选左列的引导卷,再点卷右边的三个点打开后选附加引导卷,如图31。

图31.引导卷附加回原失联实例

再重启失联实例,重启成功后在finalshell上用与预设公钥配对的私钥(即扩展名为key的密钥文件)和ubuntu用户名设置新建连接,完成后登录成功,如图32所示。

        这个系统与dd安装系统及非官方网站下载安装系统的最大差别就是安全性和稳定性得到保障,纯净性比甲骨文云的原生系统要高,又可以愉快地玩耍了!

图32.救砖成功后失联实例登录成功

        回顾这次救砖的过程,copilot起到的作用不可忽视,每当我遇到问题时,copilot都会给我回答,尽管有的回答不是那么准确,有的回答对我问题的理解有偏差,但至少给了我一个方向、思路和参考建议,尤其是它用qemu命令的方法把映像文件格式转换后传到附加卷很少见,也是ssh端能安装成功的基础。在对话时,如果你觉得copilot的回答不满意,可以断开-连接后再提同样的问题,也许会有不同的答案。

        总体来说,我觉得copilot的智能水平超出了我的想像,它对我提供的帮助是其他搜索引擎无法相比的。它写的代码基本上不会出现语法和逻辑上的错误,它缺少是环境和条件对代码执行的支持程度和效果评估的了解,这个也是人工干预主要内容。相信它会越来越聪明,人工干预也会越来越少。

        就这些了,希望上面的内容对你有帮助。

最后让copilot帮我画了张标题图:

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

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

相关文章

25G/100G校园网解决方案

不断增长的视频流媒体、人工智能(AI)和云应用的流量需求推动了对更快速、更高容量校园网络解决方案的需求。这就是为什么25G/100G以太网解决方案正在迅速发展的原因。 什么是25G/100G以太网解决方案? 在25G/100G校园网络中,通常…

5路开关量转继电器 Modbus TCP远程I/O模块 YL95 RJ-45网络接口通信

特点: ● 五路开关量输入,五路继电器输出 ● 支持Modbus TCP 通讯协议 ● 内置网页功能,可以通过网页查询电平状态 ● 可以通过网页设定继电器输出状态 ● DI信号输入,DO输出及电源之间互相隔离 ● 宽电源供电范围&#x…

【23真题】成都理工826真题及解析!

哈喽大家好,现在这个时间节点,有很多同学开始刷真题了!所以23真题系列正式启动!小马哥将全面发布23真题及详细解析! 今天分享的是23年成都理工大学826的信号与系统回忆版试题及解析。 小马哥Tips: 本套试…

yolov5单目测距+速度测量+目标跟踪(算法介绍和代码)

要在YOLOv5中添加测距和测速功能,您需要了解以下两个部分的原理: 单目测距算法 单目测距是使用单个摄像头来估计场景中物体的距离。常见的单目测距算法包括基于视差的方法(如立体匹配)和基于深度学习的方法(如神经网…

nodejs 使用 ws/socket.io 模块 websocket 即时通讯

源码 koa-mongodb-template ws 模块 下载 npm install ws简单使用 服务端代码 const WebSocket require("ws"); const WebSocketServer WebSocket.WebSocketServer;const wss new WebSocketServer({ port: 8080 });// 监听客户端连接 wss.on("connectio…

Python Pandas 通过loc/iloc修改局部数据(第9讲)

Python Pandas 通过loc/iloc修改局部数据(第9讲)         🍹博主 侯小啾 感谢您的支持与信赖。☀️ 🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ…

一款视频行为分析系统,可轻松开发安全行为检测

系列版本介绍 基于视频行为分析系统v4系列版本可以在不用考虑流媒体音视频开发,编解码开发,界面开发等情况下, 只需要训练自己的模型,开发自己的行为算法插件,就可以轻松开发出任何你想要的安全行为检测,比…

【MYSQL】--MySQL的安装以及基础

💖作者:小树苗渴望变成参天大树🎈 🎉作者宣言:认真写好每一篇博客💤 🎊作者gitee:gitee✨ 💞作者专栏:C语言,数据结构初阶,Linux,C 动态规划算法🎄 如 果 你 …

【Python秘技】用Python实现千图成像,千字成像,编程炫技必备!

一个千图成像,千字成像的程序,开源给大家玩玩。 用她的名字组成她的照片会不会很酷呢? 后续会完善更多功能,打包为程序。 源代码在这里:https://github.com/w-x-x-w/Thousand-Image-Generator 讲解在这里&#xff…

建筑模板怎么选?

在建筑领域,选择合适的模板材料对于确保工程质量、提高施工效率和控制成本至关重要。目前,常见的建筑模板主要有钢模板、塑料模板和木模板三种类型,每种都有其独特的优势和局限性。本文将对这些模板类型进行分析,并特别推荐广西生…

生物化学 荒诞医学史笔记:重金属(暂记)

“理论基础” 四液说 根据希罗多德的说法,古埃及人为了维持自身健康,每月都会使用催吐剂。希波克拉底也提倡定期呕吐。之后的好几千年中,这种建议不断出现。直到最近几十年,催吐剂还被认为是医学处方的重要组 成部分。 大…

这个食堂管理大招,再不知道就晚了!

随着社会的不断发展,餐饮行业也在不断创新和进步。在这个数字化时代,智能技术为各行各业提供了更高效、便捷的解决方案。 食堂作为人们日常生活中不可或缺的一部分,也迎来了智能化的时代。智慧收银系统不仅提高了食堂的运营效率,还…

论文Rebuttal常见格式与模板之中篇

论文Rebuttal常见格式与模板之中篇 前言5. Rebuttal可能遇到的问题5.4 实验不充分5.5 语法,结构,参考文献遗漏等问题5.6 非热点问题,研究意义? 6. 针对AC Message下篇笔记链接Rebuttal模板的好文 前言 这里承接上一篇笔记&#x…

WEB渗透—PHP反序列化(五)

Web渗透—PHP反序列化 课程学习分享(课程非本人制作,仅提供学习分享) 靶场下载地址:GitHub - mcc0624/php_ser_Class: php反序列化靶场课程,基于课程制作的靶场 课程地址:PHP反序列化漏洞学习_哔哩…

原知因,正成为中产群体“精准抗衰”新选择

惧怕衰老,渴望长寿,是全人类的共同属性。而在现代生命科学的加持下,科学家们的勇气也前所未有的可畏,人类长寿基因发现者Nir Barzilai就是其中最具代表性的一位。作为人类史上首个抗衰老临床研究TAME的负责人,这位大佬…

初学gitrepo的种种

经过各种折腾之后,发现git其实还是很简单的; 首先你需要两台机器,一台作为服务器,一台作为开发机器,开发机器从服务器上拉取代码。 目 目录 git建仓 开发机器拉取代码 初始化仓代码 repo管理 repo工具的下载 …

Apollo开放平台9.0让自动驾驶开发者轻松上手

文章目录 平台架构:基础环境:开始使用:体验心得: 在自动驾驶技术飞速发展的今天,成为这个领域的一名开发者是一次挑战、一次冒险,更是一次心灵之旅。作为这个领域的先锋之一,Apollo开放平台9.0于12月19日发…

关于PBR策略路由的基础实验

策略路由是基于策略实现数据流量转发,不基于路由表。 // 网络结构实现 lsw: 配置三层交换机 vlan batch 10 20 30 int g0/0/2 port link-type access port default vlan 10 int g0/0/3 port link-type access port default vlan 20 int g0/0/1 port link-type acce…

【Linux基础】4. 目录管理

文章目录 【 1. 处理目录的常用命令 】【 2. ls列出目录 】【 3. cp切换目录 】【 4. pwd显示目前所在的目录 】【 5. mkdir创建新目录 】【 6. rmdir删除空的目录 】【 7. cp复制文件或目录】【 8. rm移除文件或目录 】【 9. mv移动文件与目录或修改名称 】 Linux 的目录结构为…

关于“Python”的核心知识点整理大全28

目录 11.1.5 添加新测试 11.2 测试类 11.2.1 各种断言方法 unittestModule中的断言方法: ​编辑11.2.2 一个要测试的类 survey.py language_survey.py 11.2.3 测试 AnonymousSurvey 类 test_survey.py 往期快速传送门👆(在文章最后&…