IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> OpenStack 镜像修改密码 -> 正文阅读

[系统运维]OpenStack 镜像修改密码

1. 场景

查看操作虚拟机镜像的文件系统

  • 查看/修改 windows 镜像密码
  • 查看/修改 linux 镜像密码、cloud-init 文件
  • 其他

2. 环境

环境版本备注
OSCentOS7.9
libguestfs1.40.2-10.el7.x86_64
libguestfs-tools1.40.2-10.el7.noarch
libguestfs-winsupport7.2-3.el7.x86_64实际安装了这个包也没法兼容 ntfs 文件系统
ntfs-3g2017.3.23-11.el7.x86_64挂载 ntfs 文件系统
kpartx0.4.9-134.el7_9.x86_64根据分区表将分区映射为不同的 lvm 设备

3. 操作

3.1. Linux

修改 cloud-init 配置使得用该镜像启动的虚拟机可以通过 root 用户 ssh

# 使用 `guestfish` 命令连接虚拟磁盘
guestfish -a CentOS-7-x86_64-GenericCloud.qcow2
# 启动虚拟磁盘
run
# 列举文件系统
list-filesystems
# 挂载要操作的分区到/ 我们要修改的 cloud-init, 一般在/dev/sda1
mount /dev/sda1 /
# 修改文件
vi /etc/cloud/cloud.cfg
# 修改完之后退出
exit

这样就算修改完成了,再次启动磁盘上的内容就是我们修改过的。

3.2. Windows

windows 比较麻烦点,上面版本的 libguestfs-tools 不支持 ntfs

我们使用 kpartx 先将磁盘分区映射到服务器的 lvm 然后使用 loop 设备挂载

kpartx 可以映射 raw 格式镜像,无法映射 qcow2 格式镜像,qcow2 格式镜像要么转换成 raw 格式镜像再映射,要么使用 nbd 映射

3.2.1. raw 镜像

# qcow2 to raw
qemu-img convert -f qcow2 -O raw xxxx.qcow2 xxxx.raw
# kpartx mapper
kpartx -av xxxx.raw
# 输出入下
add map loop1p1 (253:16): 0 1024000 linear /dev/loop1 2048
add map loop1p2 (253:17): 0 40914944 linear /dev/loop1 1026048
# 映射的 loop 设备在 /dev/mapper/ 下,使用 dmsetup 命令也可以看到
# 一般 c 盘在loop1p2
# 挂载前安装 ntfs-3g 否则无法挂载
mount /dev/mapper/loop1p2  /mnt/
cd /mnt/
# 查看 windows 密码,前提镜像密码是通过 ec2-config 设置的
cat Program\ Files/Bingosoft/Ec2Config/SysPrepInit.cmd
# 看到的密码就是这个经想的密码了,如果要修改修改这里也就相当于修改了镜像
# 搞完之后 umount,delete mapper
cd -
umount /mnt
kpartx -dv xxx.raw

如果如果没有EC2 文件的话,一样的也是挂载到宿主机上,然后找到C盘的windows/system32/sethc.exe文件,把这个文件改为其他名字,然后把cmd.exe复制一份成这个文件。然后开机后连按5次shift键,就会跳出cmd界面了。然后用net user administrator 123456重置下密码。

3.2.2. qcow2

qcow2 镜像使用 nbd 驱动挂载, nbd 要先重新编译到内核里面,否则下面操作无法继续

这种方式我没有实操,参照mounting-raw-and-qcow2-images

# 加载内核
modprobe nbd max_part=63
# 连接镜像
qemu-nbd -c /dev/nbd0 disk1.qcow2
# 挂载
mount /dev/nbd0p1 /mnt/t01
# 如果是 lvm 的话关联一个 llop 设备到 lvm 分区
losetup /dev/loop0 /dev/nbd0p2
# 在 /dev/mapper 中找到 lvm 也可以使用 lvdisplay 显示 lvm vgdisplay 显示 vg vgchange 激活 vg
ls -l /dev/mapper
# 挂载
mount /dev/mapper/vg_volgroupname-lv_logicalgroupname /mnt/t02
# 操作
...
# 卸载
umount /mnt/t02
umount /mnt/t01
# deactivate 卷组
vgchange -an vg_volgroupname
# 删除 loop 设备
losetup -d /dev/loop0
# 卸载 ndb
qemu-nbd -d /dev/nbd0
# 删除 nbd 模块
rmmod nbd

4. 参考

https://www.linuxunbound.com/2016/07/mounting-raw-and-qcow2-images/

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章           查看所有文章
加:2021-08-21 15:51:09  更:2021-08-21 15:53:02 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 9:30:40-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码